آموزش و استقرار مدل طبقه‌بندی تصویر روی دستگاه با AutoML Vision در کیت ML

1. مقدمه

پیشرفت اخیر در یادگیری ماشینی، تشخیص اشیاء در تصاویر را برای کامپیوترها نسبتاً آسان کرده است. در این لبه کد، ما شما را در یک سفر انتها به انتها با ساخت یک مدل طبقه‌بندی تصویر که می‌تواند انواع مختلف اشیاء را تشخیص دهد، راهنمایی می‌کنیم، سپس مدل را در برنامه اندروید و iOS پیاده‌سازی می‌کنیم. ML Kit و AutoML به شما این امکان را می‌دهند که مدل را در مقیاس بدون هیچ گونه تخصص در یادگیری ماشین بسازید و اجرا کنید.

کیت ML چیست؟

ML Kit یک SDK تلفن همراه است که تخصص یادگیری ماشین Google را در یک بسته قدرتمند و در عین حال کاربردی آسان به برنامه‌های Android و iOS می‌آورد. چه در زمینه یادگیری ماشینی تازه کار یا با تجربه باشید، می توانید به راحتی عملکرد مورد نیاز خود را تنها در چند خط کد پیاده سازی کنید. چندین API وجود دارد که می تواند متن، چهره و غیره را تشخیص دهد که می توانید از آنها استفاده کنید. با این حال، اگر نیاز به تشخیص اشیایی دارید که توسط API ها پشتیبانی نمی شوند، مانند تشخیص انواع گل ها از یک تصویر، باید مدل خود را آموزش دهید. اینجاست که AutoML می تواند به شما کمک کند.

AutoML چیست؟

Cloud AutoML مجموعه‌ای از محصولات یادگیری ماشینی است که به توسعه‌دهندگان با تخصص یادگیری ماشینی محدود امکان می‌دهد تا با استفاده از پیشرفته‌ترین یادگیری انتقال Google و فناوری جستجوی معماری عصبی، مدل‌های باکیفیت خاص را برای نیازهای تجاری خود آموزش دهند.

در این کد لبه از AutoML Vision Edge در کیت ML برای آموزش مدل طبقه بندی گل استفاده می کنیم. این مدل در فضای ابری آموزش داده می‌شود، اما سپس توسط برنامه همراه یا دانلود می‌شود تا استنتاج‌ها را به‌طور کامل روی دستگاه اجرا کند.

93f21fd287496e4e.png

چیزی که یاد خواهید گرفت

  • نحوه آموزش یک مدل طبقه بندی تصویر با استفاده از AutoML Vision Edge در کیت ML.
  • نحوه اجرای آن در یک نمونه برنامه اندروید یا iOS با استفاده از ML Kit SDK.

آنچه شما نیاز دارید

برای برنامه اندروید

  • نسخه جدید اندروید استودیو (نسخه 3.4+)
  • شبیه ساز Android Studio با Play Store یا دستگاه فیزیکی اندروید (نسخه 5.0+)
  • دانش اولیه توسعه اندروید در Kotlin

برای برنامه iOS

  • نسخه اخیر XCode (نسخه 10.2+)
  • شبیه ساز iOS یا یک دستگاه فیزیکی iOS (نسخه 9.0+)
  • CocoaPods
  • دانش اولیه توسعه iOS در سوئیفت

2. راه اندازی

کد و مجموعه داده آموزشی را دانلود کنید

یک بایگانی فشرده را دانلود کنید که حاوی کد منبع این کد لبه و مجموعه داده آموزشی است. آرشیو را در دستگاه محلی خود استخراج کنید.

پروژه کنسول Firebase را ایجاد کنید

  1. به کنسول Firebase بروید.
  2. Create New Project را انتخاب کنید و نام پروژه خود را "ML Kit Codelab" بگذارید.

برنامه اندروید را راه اندازی کنید

  1. برنامه اندروید ما را به پروژه Firebase اضافه کنید. نام بسته اندروید: com.google.firebase.codelab.mlkit.automl
  2. فایل پیکربندی google-services.json را دانلود کنید و آن را در برنامه Android به android/mlkit-automl/app/google-services.json قرار دهید.

برنامه iOS را راه اندازی کنید

  1. برنامه iOS ما را به پروژه Firebase اضافه کنید. شناسه بسته iOS: com.google.firebase.codelab.mlkit.automl
  2. فایل پیکربندی GoogleService-Info.plist را دانلود کنید و دستورالعمل ها را برای قرار دادن آن در برنامه iOS در ios/mlkit-automl/GoogleService-Info.plist دنبال کنید.

3. مجموعه داده های آموزشی را آماده کنید

برای آموزش یک مدل برای تشخیص انواع مختلف اشیاء، باید مجموعه ای از تصاویر را تهیه کنید و به هر یک از آنها برچسب بزنید. ما یک آرشیو از عکس‌های گل دارای مجوز خلاقیت مشترک ایجاد کرده‌ایم که می‌توانید در این کد لبه استفاده کنید.

مجموعه داده یک فایل فشرده به نام flower_photos.zip است که در آرشیو zip که در مرحله قبل دانلود کردید گنجانده شده است.

مجموعه داده را کاوش کنید

اگر فایل flower_photos.zip را استخراج کنید، می بینید که مجموعه داده شامل تصاویری از 5 نوع گل است: قاصدک، گل مروارید، لاله، آفتابگردان و گل رز که در پوشه هایی به نام گل ها سازماندهی شده اند. این یک راه مفید برای ایجاد یک مجموعه داده آموزشی برای تغذیه به AutoML و آموزش یک مدل طبقه بندی تصویر است.

200 تصویر برای هر نوع گل در این مجموعه آموزشی وجود دارد. برای آموزش یک مدل فقط به حداقل 10 تصویر در هر کلاس نیاز دارید. با این حال، تصاویر آموزشی بیشتر به طور کلی به مدل های بهتر منجر می شود.

e5772b6527a6048d.png6c4443d31cd5653e.png

4. یک مدل آموزش دهید

مجموعه داده های آموزشی را بارگذاری کنید

  1. از کنسول Firebase ، پروژه ای را که ایجاد کرده اید باز کنید.
  2. ML Kit > AutoML را انتخاب کنید.
  3. ممکن است چند صفحه خوش آمد ببینید. در صورت لزوم Get Started را انتخاب کنید.
  1. پس از اتمام مراحل راه اندازی، افزودن مجموعه داده را انتخاب کنید و نام آن را "Flowers" بگذارید.
  2. در Model object ، طبقه بندی Single-label را انتخاب کنید، زیرا داده های آموزشی فقط حاوی یک برچسب در هر تصویر هستند.
  3. ایجاد را انتخاب کنید.
  4. فایل flower_photos.zip را که در مرحله قبل دانلود کردید برای وارد کردن مجموعه داده آموزش گل آپلود کنید.
  5. چند دقیقه صبر کنید تا کار واردات تمام شود.
  6. اکنون می توانید تأیید کنید که مجموعه داده به درستی وارد شده است.
  7. از آنجایی که تمام تصاویر در مجموعه داده آموزشی برچسب گذاری شده اند، می توانید به آموزش یک مدل ادامه دهید.

cdb18b61f890934f.png

یک مدل طبقه بندی تصویر را آموزش دهید

از آنجایی که مدل ما بر روی یک دستگاه تلفن همراه با قدرت محاسباتی و فضای ذخیره‌سازی محدود اجرا می‌شود، باید نه تنها دقت مدل، بلکه اندازه و سرعت آن را نیز مد نظر داشته باشیم. همیشه بین دقت مدل، تأخیر (یعنی مدت زمان لازم برای طبقه بندی یک تصویر) و اندازه مدل وجود دارد. به طور کلی یک مدل با دقت بالاتر نیز بزرگتر است و طبقه بندی یک تصویر بیشتر طول می کشد.

AutoML چندین گزینه را در اختیار شما قرار می دهد: می توانید برای دقت بهینه سازی کنید یا برای تأخیر و اندازه مدل بهینه سازی کنید یا بین آنها تعادل برقرار کنید. شما همچنین می توانید انتخاب کنید که چه مدت به مدل اجازه آموزش دهید. مجموعه داده های بزرگتر باید برای مدت طولانی تری آموزش ببینند.

dd6b7eaa2dd5a9de.png

اگر می‌خواهید خودتان مدل را آموزش دهید، در اینجا مراحل وجود دارد.

  1. مدل قطار را انتخاب کنید.
  2. گزینه عمومی هدف و 1 ساعت محاسبه زمان آموزش را انتخاب کنید.
  3. کمی صبر کنید (احتمالا چند ساعت) تا کار آموزشی تمام شود.
  4. پس از اتمام کار آموزشی، معیارهای ارزیابی در مورد نحوه عملکرد مدل آموزش دیده را مشاهده خواهید کرد.

73f98fbed5ae5ee5.png

5. از مدل در اپلیکیشن های موبایل استفاده کنید

آماده سازی

  • این کد لبه شامل هر دو برنامه نمونه اندروید و iOS است که نحوه استفاده از مدل طبقه‌بندی تصاویر را که قبلاً در یک برنامه تلفن همراه آموزش دادیم، نشان می‌دهد. این دو اپلیکیشن دارای ویژگی های مشابهی هستند. شما می توانید پلتفرمی را که بیشتر با آن آشنا هستید انتخاب کنید.
  • قبل از ادامه، لطفاً مطمئن شوید که برنامه های نمونه را دانلود کرده و آنها را در مرحله 2 پیکربندی کرده اید.
  • لطفاً همچنین مطمئن شوید که محیط محلی شما به گونه ای تنظیم شده است که قادر به ساخت برنامه برای پلتفرمی که انتخاب کرده اید (اندروید/iOS) باشد.

دانلود مدل طبقه بندی تصاویر

  • اگر در مرحله قبل مدلی را آموزش داده اید، دانلود را انتخاب کنید تا مدل را دریافت کنید.
  • اگر مدلی را آموزش نداده اید یا کار آموزشی شما هنوز تمام نشده است، می توانید از مدلی که در برنامه های نمونه موجود است استفاده کنید.

مدل را به برنامه(های) نمونه اضافه کنید

شما فقط باید مدل را به برنامه های نمونه اضافه کنید و آنها خارج از جعبه کار خواهند کرد. برای راهنمایی کامل در مورد نحوه ادغام ML Kit AutoML به برنامه خود، لطفاً به مستندات ما ( Android ، iOS ) مراجعه کنید. کدی که با ML Kit SDK تعامل دارد، به ترتیب در فایل ImageClassifier.kt و ImageClassifier.swift قرار دارد، بنابراین می‌توانید از آنجا شروع کنید و نحوه عملکرد برنامه‌ها را بررسی کنید.

دو گزینه برای استقرار مدل وجود دارد: محلی و راه دور.

  • مدل محلی عمدتاً برای بسته‌بندی مدل طبقه‌بندی تصویر در باینری برنامه شما استفاده می‌شود، اگرچه می‌توان یک مدل ذخیره‌شده در حافظه محلی نیز ارائه داد. با بسته‌بندی، این مدل بلافاصله پس از دانلود برنامه شما از App Store / Play Store در دسترس کاربران شما قرار می‌گیرد و بدون اتصال به اینترنت کار می‌کند.
  • مدل از راه دور به این معنی است که مدل در Firebase میزبانی می شود و تنها زمانی که برای اولین بار مورد نیاز باشد در دستگاه کاربر شما دانلود می شود. پس از آن، مدل به صورت آفلاین نیز کار خواهد کرد.

2e71ed2c7cb8757c.png

برنامه اندروید

  1. اندروید استودیو را باز کنید.
  2. وارد کردن برنامه اندروید تحت android/mlkit-automl/
  3. (اختیاری) مدلی را که دانلود کرده اید استخراج کنید و محتوای آن را روی مدلی که در برنامه نمونه موجود است کپی کنید. 10cf6b1e0f34de29.png
  4. حالا روی Run کلیک کنید ( c8b8a080b7ead886.png ) در نوار ابزار اندروید استودیو و بررسی کنید که می تواند انواع گل ها را تشخیص دهد!

2e71ed2c7cb8757c.png

برنامه iOS

  1. Terminal را باز کنید و به پوشه ios/mlkit-automl/ بروید
  2. pod install برای دانلود وابستگی ها از طریق Cocoapods اجرا کنید
  3. برای باز کردن فضای کاری پروژه در Xcode open MLVisionExample.xcworkspace/ باز کنید.
  4. (اختیاری) مدلی را که دانلود کرده‌اید استخراج کنید و محتوای آن را روی مدلی کپی کنید که در برنامه نمونه در ios/ml-automl/Resources/automl/ موجود است. cd291fe04bcdc6ee.png
  5. حالا روی Run کلیک کنید ( 16629f86bbeb4208.png ) در نوار ابزار Xcode و بررسی کنید که می تواند انواع مختلف گل را تشخیص دهد!

65172c3f35336d4e.png

6. (اختیاری) از مدل از راه دور استفاده کنید

مدل راه دور ML Kit به شما این امکان را می دهد که مدل های Tensorflow Lite را در باینری برنامه خود قرار ندهید، اما در صورت نیاز آن را به صورت درخواستی از Firebase دانلود کنید. مدل های راه دور دارای مزایای متعددی نسبت به مدل های محلی هستند:

  • باینری برنامه کوچکتر
  • امکان به روز رسانی مدل ها بدون به روز رسانی برنامه
  • تست A/B با چندین نسخه از یک مدل

در این مرحله یک مدل از راه دور منتشر می کنیم و از آن در برنامه های نمونه استفاده می کنیم. لطفاً مطمئن شوید که آموزش مدل خود را در مرحله 4 این کد لبه به پایان رسانده اید.

مدل را منتشر کنید

  1. به کنسول Firebase بروید.
  2. پروژه "ML Kit AutoML Codelab" را که قبلا ایجاد کردید انتخاب کنید.
  3. ML Kit > AutoML را انتخاب کنید.
  4. مجموعه داده "Flowers" را که قبلا ایجاد کرده اید انتخاب کنید.
  5. تأیید کنید که کار آموزشی به پایان رسیده است، سپس مدل را انتخاب کنید.
  6. Publish را انتخاب کنید و نام آن را "mlkit_flowers" بگذارید. b63a58b83e814acd.png

با مدل ریموت گل ها را بشناسید

برنامه‌های نمونه برای استفاده از مدل از راه دور در صورت موجود بودن پیکربندی شده‌اند. پس از اینکه مدل راه دور را منتشر کردید، فقط باید برنامه ها را مجددا اجرا کنید تا دانلود مدل آغاز شود. با نگاه کردن به مقدار «Source» در پاورقی صفحه برنامه، می‌توانید تأیید کنید که برنامه از مدل راه دور استفاده می‌کند. اگر کار نکرد، بخش «عیب‌یابی» را در زیر ببینید.

7c8292293fd858ad.pngde359886ccecef2.png

عیب یابی

اگر برنامه نمونه همچنان از مدل محلی استفاده می کند، لطفاً بررسی کنید که نام مدل راه دور به درستی در کد تنظیم شده باشد.

برنامه اندروید

  1. به ImageClassifier.kt بروید و این بلوک را پیدا کنید.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. بررسی کنید که نام مدل تنظیم شده در کد با نام مدلی که قبلاً از طریق Firebase Console منتشر کرده اید مطابقت داشته باشد.
  2. حالا روی Run کلیک کنید ( c8b8a080b7ead886.png ) در نوار ابزار Android Studio برای اجرای مجدد برنامه.

برنامه iOS

  1. به ImageClassifier.swift بروید و این بلوک را پیدا کنید،
return RemoteModel(
  name: Constant.remoteAutoMLModelName,
  allowsModelUpdates: true,
  initialConditions: initialConditions,
  updateConditions: updateConditions
)
  1. بررسی کنید که نام مدل تنظیم شده در کد با نام مدلی که قبلاً از طریق Firebase Console منتشر کرده اید مطابقت داشته باشد
  2. حالا روی Run کلیک کنید ( 16629f86bbeb4208.png ) در نوار ابزار Xcode برای اجرای مجدد برنامه.

7. تبریک می گویم!

شما یک سفر انتها به پایان آموزش یک مدل طبقه بندی تصویر با داده های آموزشی خود را با استفاده از AutoML انجام داده اید و سپس با استفاده از ML Kit از مدل در یک برنامه تلفن همراه استفاده کنید.

لطفاً اسناد ما را مشاهده کنید تا نحوه ادغام AutoML Vision Edge در کیت ML را با برنامه خود بیاموزید.

همچنین می‌توانید برنامه‌های نمونه ML Kit ما را امتحان کنید تا سایر ویژگی‌های Firebase ML Kit را ببینید.

نمونه های اندروید

نمونه های iOS