1. مقدمة
بفضل التقدّم الذي تم إحرازه مؤخرًا في مجال تعلُّم الآلة، أصبح بإمكان أجهزة الكمبيوتر التعرّف على العناصر في الصور بسهولة نسبية. في هذا الدرس التطبيقي حول الترميز، سنوضّح لك الخطوات الكاملة لإنشاء نموذج التصنيف الذي يمكنه التعرّف على أنواع مختلفة من العناصر، ثم تفعيل النموذج على تطبيق Android وتطبيق iOS. تتيح لك حزمة تعلُّم الآلة وAutoML إنشاء النموذج وتفعيله على نطاق واسع بدون الحاجة إلى أي خبرة في تعلُّم الآلة.
ما هي حزمة تعلُّم الآلة؟
ML Kit هي حزمة تطوير برامج (SDK) للأجهزة الجوّالة تتيح للمطوّرين الاستفادة من خبرة Google في مجال تعلُّم الآلة في تطبيقات Android وiOS، وذلك من خلال حزمة فعّالة وسهلة الاستخدام. سواء كنت مبتدئًا أو خبيرًا في مجال تعلُّم الآلة، يمكنك بسهولة تنفيذ الوظائف التي تحتاج إليها ببضعة أسطر من الرموز البرمجية. تتوفّر عدة واجهات برمجة تطبيقات يمكنها التعرّف على النصوص والوجوه وما إلى ذلك، ويمكنك استخدامها على الفور. ومع ذلك، إذا كنت بحاجة إلى التعرّف على عناصر غير متاحة في واجهات برمجة التطبيقات، مثل التعرّف على أنواع مختلفة من الزهور من صورة، عليك تدريب نموذجك الخاص. هنا يمكن أن يساعدك AutoML.
ما هي خدمة AutoML؟
Cloud AutoML هي مجموعة من منتجات تعلُّم الآلة تتيح للمطوّرين الذين لديهم خبرة محدودة في تعلُّم الآلة تدريب نماذج عالية الجودة تناسب احتياجات أعمالهم، وذلك من خلال الاستفادة من أحدث تكنولوجيات التعلُّم القائم على نقل المهام وNeural Architecture Search من Google.
في هذا الدرس التطبيقي حول الترميز، سنستخدم AutoML Vision Edge في حزمة تعلّم الآلة لتدريب نموذج لتصنيف الزهور. يتم تدريب النموذج على السحابة الإلكترونية، ولكن يتم بعد ذلك تجميعه أو تنزيله بواسطة التطبيق لتشغيل الاستنتاجات بالكامل على الجهاز فقط.

أهداف الدورة التعليمية
- كيفية تدريب نموذج لتصنيف الصور باستخدام AutoML Vision Edge في حزمة تعلّم الآلة
- كيفية تشغيلها في نموذج تطبيق Android أو iOS باستخدام حزمة تطوير البرامج (SDK) الخاصة بـ حزمة تعلّم الآلة
المتطلبات
بالنسبة إلى تطبيق Android
- إصدار حديث من "استوديو Android" (الإصدار 3.4 أو إصدار أحدث)
- محاكي "استوديو Android" مع "متجر Play" أو جهاز Android فعلي (الإصدار 5.0 أو إصدار أحدث)
- معرفة أساسية بتطوير تطبيقات Android باستخدام لغة Kotlin
بالنسبة إلى تطبيق iOS
- إصدار حديث من XCode (الإصدار 10.2 أو إصدار أحدث)
- محاكي iOS أو جهاز iOS فعلي (الإصدار 9.0 أو الإصدارات الأحدث)
- CocoaPods
- معرفة أساسية بتطوير تطبيقات iOS باستخدام Swift
2. الإعداد
تنزيل الرمز ومجموعة بيانات التدريب
نزِّل أرشيف zip يحتوي على الرمز المصدري لهذا الدرس العملي ومجموعة بيانات تدريب. استخرِج الأرشيف على جهازك.
إنشاء مشروع في "وحدة تحكّم Firebase"
- انتقِل إلى وحدة تحكّم Firebase.
- انقر على إنشاء مشروع جديد، وأدخِل اسم مشروعك "ML Kit Codelab".
إعداد تطبيق Android
- أضِف تطبيق Android إلى مشروع Firebase. اسم حزمة Android:
com.google.firebase.codelab.mlkit.automl - نزِّل ملف الإعداد
google-services.jsonوضعه في تطبيق Android فيandroid/mlkit-automl/app/google-services.json.
إعداد تطبيق iOS
- أضِف تطبيق iOS إلى مشروع Firebase. معرّف حزمة iOS:
com.google.firebase.codelab.mlkit.automl - نزِّل ملف الإعداد
GoogleService-Info.plistواتّبِع التعليمات لوضعه في تطبيق iOS فيios/mlkit-automl/GoogleService-Info.plist.
3- إعداد مجموعة بيانات التدريب
لتدريب نموذج على التعرّف على أنواع مختلفة من العناصر، عليك إعداد مجموعة من الصور وتصنيف كل صورة. لقد أنشأنا أرشيفًا لصور الزهور المرخّصة بموجب "المشاع الإبداعي" لتستخدمها في هذا الدرس التطبيقي حول الترميز.
يتم تجميع مجموعة البيانات في ملف zip باسم flower_photos.zip مضمّن في أرشيف zip الذي نزّلته في الخطوة السابقة.
استكشاف مجموعة البيانات
إذا استخرجت الملف flower_photos.zip، ستلاحظ أنّ مجموعة البيانات تحتوي على صور لـ 5 أنواع من الزهور: الهندباء والأقحوان والزنبق وعباد الشمس والورود، وهي منظَّمة في مجلدات تحمل أسماء الزهور. هذه طريقة مفيدة لإنشاء مجموعة بيانات تدريب لإدخالها إلى AutoML وتدريب نموذج لتصنيف الصور.
تتضمّن مجموعة البيانات التدريبية هذه 200 صورة لكل نوع من أنواع الزهور. تحتاج إلى 10 صور كحدّ أدنى لكل فئة لتدريب نموذج. ومع ذلك، سيؤدي توفير المزيد من صور التدريب بشكل عام إلى الحصول على نماذج أفضل.

4. تدريب نموذج
تحميل مجموعة بيانات التدريب
- من وحدة تحكُّم Firebase، افتح المشروع الذي أنشأته للتو.
- اختَر حزمة تعلّم الآلة > AutoML.
- قد تظهر لك بعض شاشات الترحيب. انقر على البدء حيثما ينطبق ذلك.
- بعد انتهاء عملية الإعداد، انقر على إضافة مجموعة بيانات، وأدخِل الاسم "الزهور".
- في هدف النموذج، اختَر تصنيف بتصنيف واحد لأنّ بيانات التدريب لا تحتوي إلا على تصنيف واحد لكل صورة.
- انقر على إنشاء.
- حمِّل الملف
flower_photos.zipالذي نزّلته في الخطوة السابقة لاستيراد مجموعة بيانات تدريب الزهور. - انتظِر بضع دقائق حتى تنتهي مهمة الاستيراد.
- يمكنك الآن التأكّد من استيراد مجموعة البيانات بشكلٍ صحيح.
- بما أنّه تم تصنيف جميع الصور في مجموعة بيانات التدريب، يمكنك المتابعة لتدريب نموذج.

تدريب نموذج لتصنيف الصور
بما أنّ نموذجنا سيعمل على جهاز جوّال ذي قدرة حوسبة ومساحة تخزين محدودتَين، علينا أن نراعي ليس فقط دقة النموذج، بل أيضًا حجمه وسرعته. يجب دائمًا تحقيق التوازن بين دقة النموذج ووقت الاستجابة (أي المدة التي يستغرقها تصنيف صورة) وحجم النموذج. بشكل عام، يكون النموذج الذي يتمتّع بدقة أعلى أكبر حجمًا ويستغرق وقتًا أطول لتصنيف صورة.
يوفّر لك AutoML عدة خيارات: يمكنك اختيار التحسين من أجل الدقة، أو التحسين من أجل وقت الاستجابة وحجم النموذج، أو تحقيق التوازن بينهما. يمكنك أيضًا اختيار المدة التي تسمح فيها بتدريب النموذج. تحتاج مجموعات البيانات الأكبر إلى التدريب لفترة أطول.

في ما يلي الخطوات التي يجب اتّباعها إذا أردت تدريب النموذج بنفسك.
- اختَر تدريب النموذج.
- اختَر الخيار الاستخدام العام ووقت التدريب ساعة واحدة من وقت الحوسبة.
- انتظِر بعض الوقت (ربما عدة ساعات) حتى تنتهي مهمة التدريب.
- بعد انتهاء مهمة التدريب، ستظهر لك مقاييس التقييم حول مستوى أداء النموذج المدرَّب.

5- استخدام النموذج في تطبيقات الأجهزة الجوّالة
الإعداد
- يحتوي هذا الدرس التطبيقي حول الترميز على تطبيق نموذجي لكل من Android وiOS يوضّح كيفية استخدام نموذج تصنيف الصور الذي درّبناه سابقًا في تطبيق على الأجهزة الجوّالة. ويتضمّن التطبيقان ميزات متشابهة. يمكنك اختيار المنصة التي تعرفها أكثر.
- قبل المتابعة، يُرجى التأكّد من أنّك نزّلت التطبيقات النموذجية وأعددتها في الخطوة 2.
- يُرجى أيضًا التأكّد من إعداد بيئتك المحلية لتتمكّن من إنشاء تطبيقات للنظام الأساسي الذي اخترته (Android أو iOS).
تنزيل نموذج تصنيف الصور
- إذا درّبت نموذجًا في الخطوة السابقة، انقر على تنزيل للحصول على النموذج.
- إذا لم تدرب نموذجًا أو لم تنتهِ مهمة التدريب بعد، يمكنك استخدام النموذج المضمّن في التطبيقات النموذجية.
إضافة النموذج إلى نماذج التطبيقات
ما عليك سوى إضافة النموذج إلى التطبيقات النموذجية وستعمل هذه التطبيقات بدون أي إعدادات إضافية. للحصول على دليل كامل حول كيفية دمج حزمة تعلّم الآلة AutoML في تطبيقك، يُرجى الاطّلاع على مستنداتنا ( Android و iOS). يتم تضمين الرمز البرمجي الذي يتفاعل مع حزمة تطوير البرامج (SDK) الخاصة بحزمة تعلّم الآلة في الملفَين ImageClassifier.kt وImageClassifier.swift على التوالي، لذا يمكنك البدء من هنا لاستكشاف طريقة عمل التطبيقات.
يتوفّر خياران لنشر النموذج: محلي وعن بُعد.
- يُستخدَم النموذج المحلي بشكل أساسي لتجميع نموذج تصنيف الصور في رمز تطبيقك الثنائي، على الرغم من أنّه يمكن أيضًا توفير نموذج محفوظ في مساحة التخزين المحلية. باستخدام الحِزم، يصبح النموذج متاحًا للمستخدمين فور تنزيلهم تطبيقك من App Store أو متجر Play، وسيعمل بدون اتصال بالإنترنت.
- يعني النموذج عن بُعد أنّ النموذج مستضاف على Firebase ولن يتم تنزيله على جهاز المستخدم إلا عند الحاجة إليه للمرة الأولى. بعد ذلك، سيعمل النموذج أيضًا بلا إنترنت.

تطبيق Android
- افتح "استوديو Android".
- استورِد تطبيق Android ضمن
android/mlkit-automl/ - (اختياري) استخرِج النموذج الذي نزّلته وانسخ محتواه إلى النموذج المضمّن في نموذج التطبيق.

- انقر الآن على "تشغيل" (
) في شريط أدوات "استوديو Android" وتأكَّد من إمكانية التعرّف على أنواع مختلفة من الزهور.

تطبيق iOS
- افتح "الوحدة الطرفية" وانتقِل إلى المجلد
ios/mlkit-automl/ - نفِّذ الأمر
pod installلتنزيل التبعيات من خلال Cocoapods - نفِّذ الأمر
open MLVisionExample.xcworkspace/لفتح مساحة عمل المشروع في Xcode. - (اختياري) استخرِج النموذج الذي نزّلته وانسخ محتواه إلى النموذج المضمّن في نموذج التطبيق ضمن
ios/ml-automl/Resources/automl/
. - انقر الآن على "تشغيل" (
) في شريط أدوات Xcode وتأكَّد من أنّ التطبيق يمكنه التعرّف على أنواع مختلفة من الزهور.

6. (اختياري) استخدام نموذج عن بُعد
يتيح لك نموذج ML Kit البعيد عدم تضمين نماذج TensorFlow Lite في رمز تطبيقك الثنائي، ولكن يمكنك تنزيلها عند الطلب من Firebase عند الحاجة. تتضمّن النماذج البعيدة العديد من المزايا مقارنةً بالنماذج المحلية:
- ملف ثنائي أصغر للتطبيق
- إمكانية تحديث النماذج بدون تحديث التطبيق
- إجراء اختبار A/B باستخدام إصدارات متعدّدة من نموذج
في هذه الخطوة، سننشر نموذجًا عن بُعد ونستخدمه في التطبيقات النموذجية. يُرجى التأكّد من أنّك انتهيت من تدريب النموذج في الخطوة 4 من درس تطبيقي حول الترميز هذا.
نشر النموذج
- انتقِل إلى وحدة تحكّم Firebase.
- اختَر مشروع "حزمة تعلّم الآلة AutoML Codelab" الذي أنشأته في وقت سابق.
- اختَر حزمة تعلّم الآلة > AutoML.
- اختَر مجموعة بيانات "الزهور" التي أنشأتها سابقًا.
- تأكَّد من اكتمال مهمة التدريب، ثم اختَر النموذج.
- انقر على نشر وأطلِق عليه الاسم "mlkit_flowers".

التعرّف على الزهور باستخدام النموذج عن بُعد
تم ضبط التطبيقات النموذجية لاستخدام النموذج عن بُعد إذا كان متاحًا. بعد نشر النموذج عن بُعد، ما عليك سوى إعادة تشغيل التطبيقات لتفعيل تنزيل النموذج. يمكنك التأكّد من أنّ التطبيق يستخدم النموذج البعيد من خلال الاطّلاع على قيمة "المصدر" في تذييل شاشة التطبيق. راجِع قسم "تحديد المشاكل وحلّها" أدناه إذا لم ينجح ذلك.

تحديد المشاكل وحلّها
إذا كان التطبيق النموذجي لا يزال يستخدم النموذج المحلي، يُرجى التأكّد من ضبط اسم النموذج البعيد بشكلٍ صحيح داخل الرمز.
تطبيق Android
- انتقِل إلى
ImageClassifier.ktوابحث عن هذه الكتلة.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
- تأكَّد من أنّ اسم النموذج الذي تم ضبطه في الرمز البرمجي يتطابق مع اسم النموذج الذي نشرته سابقًا من خلال Firebase Console.
- انقر الآن على "تشغيل" (
) في شريط أدوات "استوديو Android" لإعادة تشغيل التطبيق.
تطبيق iOS
- انتقِل إلى
ImageClassifier.swiftوابحث عن هذه الكتلة،
return RemoteModel(
name: Constant.remoteAutoMLModelName,
allowsModelUpdates: true,
initialConditions: initialConditions,
updateConditions: updateConditions
)
- تأكَّد من أنّ اسم النموذج الذي تم ضبطه في الرمز البرمجي يتطابق مع اسم النموذج الذي نشرته سابقًا من خلال وحدة تحكّم Firebase
- انقر الآن على "تشغيل" (
) في شريط أدوات Xcode لإعادة تشغيل التطبيق.
7. تهانينا!
لقد أتممت رحلة شاملة لتدريب نموذج لتصنيف الصور باستخدام بيانات التدريب الخاصة بك من خلال AutoML، ثم استخدمت النموذج في تطبيق على الأجهزة الجوّالة باستخدام حزمة تعلّم الآلة.
يُرجى الاطّلاع على المستندات لمعرفة كيفية دمج AutoML Vision Edge في حزمة تعلّم الآلة مع تطبيقك.
يمكنك أيضًا تجربة نماذج تطبيقات حزمة تعلّم الآلة للاطّلاع على ميزات أخرى في Firebase.
عينات Android
عينات iOS