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

۱. مقدمه

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

کیت ML چیست؟

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

اتوام‌ال چیست؟

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

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

93f21fd287496e4e.png

آنچه یاد خواهید گرفت

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

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

برای اپلیکیشن اندروید

برای اپلیکیشن iOS

  • نسخه اخیر XCode (نسخه ۱۰.۲+)
  • شبیه‌ساز iOS یا یک دستگاه فیزیکی iOS (نسخه ۹.۰+)
  • کوکوپادز
  • دانش پایه توسعه iOS در Swift

۲. راه‌اندازی

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

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

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

  1. به کنسول فایربیس بروید.
  2. گزینه «ایجاد پروژه جدید » را انتخاب کنید و نام پروژه خود را «ML Kit Codelab» بگذارید.

برنامه اندروید را تنظیم کنید

  1. برنامه اندروید خود را به پروژه Firebase اضافه کنید. نام بسته اندروید: com.google.firebase.codelab.mlkit.automl
  2. فایل پیکربندی google-services.json را دانلود کنید و آن را در برنامه اندروید در مسیر 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 دنبال کنید.

۳. آماده‌سازی مجموعه داده‌های آموزشی

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

مجموعه داده‌ها در یک فایل زیپ به نام flower_photos.zip بسته‌بندی شده‌اند که در فایل زیپی که در مرحله قبل دانلود کردید، موجود است.

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

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

در این مجموعه داده آموزشی، برای هر نوع گل، ۲۰۰ تصویر وجود دارد. برای آموزش یک مدل، فقط به حداقل ۱۰ تصویر در هر کلاس نیاز دارید. با این حال، تصاویر آموزشی بیشتر معمولاً منجر به مدل‌های بهتری می‌شوند.

e5772b6527a6048d.png6c4443d31cd5653e.png

۴. آموزش یک مدل

آپلود مجموعه داده‌های آموزشی

  1. از کنسول Firebase ، پروژه‌ای که ایجاد کرده‌اید را باز کنید.
  2. کیت ML > AutoML را انتخاب کنید.
  3. ممکن است چند صفحه خوشامدگویی ببینید. در صورت لزوم، روی «شروع» کلیک کنید.
  1. پس از اتمام مراحل راه‌اندازی، گزینه‌ی «افزودن مجموعه داده» (Add dataset) را انتخاب کنید و نام آن را «گل‌ها» (Flowers) بگذارید.
  2. در هدف مدل ، طبقه‌بندی تک‌برچسبی را انتخاب کنید، زیرا داده‌های آموزشی فقط شامل یک برچسب برای هر تصویر هستند.
  3. ایجاد را انتخاب کنید.
  4. فایل flower_photos.zip را که در مرحله قبل دانلود کرده‌اید، برای وارد کردن مجموعه داده‌های آموزشی گل، آپلود کنید.
  5. چند دقیقه صبر کنید تا کار وارد کردن تمام شود.
  6. اکنون می‌توانید تأیید کنید که مجموعه داده‌ها به درستی وارد شده‌اند.
  7. از آنجا که تمام تصاویر موجود در مجموعه داده آموزشی برچسب‌گذاری شده‌اند، می‌توانید به آموزش مدل ادامه دهید.

cdb18b61f890934f.png

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

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

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

dd6b7eaa2dd5a9de.png

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

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

73f98fbed5ae5ee5.png

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

آماده سازی

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

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

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

Add the model to the sample app(s)

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

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

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

2e71ed2c7cb8757c.png

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

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

2e71ed2c7cb8757c.png

اپلیکیشن iOS

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

65172c3f35336d4e.png

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

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

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

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

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

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

گل‌ها را با مدل از راه دور تشخیص دهید

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

7c8292293fd858ad.pngde359886ccecef2.png

عیب‌یابی

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

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

  1. به ImageClassifier.kt بروید و این بلوک را پیدا کنید.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. تأیید کنید که نام مدل تنظیم‌شده در کد با نام مدلی که قبلاً از طریق کنسول Firebase منتشر کرده‌اید، مطابقت دارد.
  2. Now click Run ( c8b8a080b7ead886.png ) را در نوار ابزار اندروید استودیو انتخاب کنید تا برنامه دوباره اجرا شود.

اپلیکیشن iOS

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

۷. تبریک می‌گویم!

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

لطفاً برای یادگیری نحوه ادغام AutoML Vision Edge در ML Kit با برنامه خود، به مستندات ما مراجعه کنید.

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

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

نمونه‌های iOS