ML Kit'teki AutoML Vision ile cihaz üzerinde görüntü sınıflandırma modelini eğitin ve dağıtın

1. Giriş

Makine öğreniminde son zamanlarda kaydedilen ilerleme, bilgisayarların görüntülerdeki nesneleri tanımasını nispeten daha kolay hale getirmiştir. Bu codelab'de, farklı nesne türlerini tanıyabilen ve ardından modeli Android ve iOS uygulamasına dağıtabilen bir görüntü sınıflandırma modeli oluşturma sürecini baştan sona anlatacağız. ML Kit ve AutoML, makine öğrenimi uzmanlığı olmadan modeli geniş ölçekte derleyip dağıtmanıza olanak tanır.

Makine Öğrenimi Kiti nedir?

ML Kit, Google'ın makine öğrenimi uzmanlığını güçlü ancak kullanımı kolay bir pakette Android ve iOS uygulamalarına getiren bir mobil SDK'dır. İster yeni ister deneyimli bir makine öğrenimine sahip olun, ihtiyacınız olan işlevi yalnızca birkaç satır kodla kolayca uygulayabilirsiniz. Metinleri, yüzleri vb. tanıyabilen, kullanıma hazır olarak kullanabileceğiniz çeşitli API'ler vardır. Ancak resimdeki farklı çiçek türlerini tanımak gibi API'ler tarafından desteklenmeyen nesneleri tanımanız gerekiyorsa kendi modelinizi eğitmeniz gerekir. AutoML bu konuda size yardımcı olabilir.

AutoML nedir?

Cloud AutoML, makine öğrenimi uzmanlığı sınırlı düzeyde olan geliştiricilerin, Google'ın son teknoloji ürünü öğrenim aktarma ve Nöral Mimarili Arama teknolojisinden faydalanarak yüksek kaliteli modelleri eğitmelerine olanak tanıyan bir makine öğrenimi ürünleri paketidir.

Bu codelab'de, çiçek sınıflandırma modeli eğitmek için ML Kit'te AutoML Vision Edge'i kullanacağız. Model bulutta eğitilir ancak daha sonra, çıkarımları tamamen cihaz üzerinde çalıştırmak için uygulama tarafından paketlenir veya indirilir.

93f21fd287496e4e.png

Neler öğreneceksiniz?

  • ML Kit'te AutoML Vision Edge kullanarak görüntü sınıflandırma modeli eğitme.
  • ML Kit SDK'sını kullanarak örnek bir Android veya iOS uygulamasında çalıştırma.

Gerekenler

Android uygulaması için

iOS uygulaması için

  • XCode'un yeni sürümü (v10.2+)
  • iOS simülatörü veya fiziksel iOS cihazı (v9.0+)
  • CocoaPods
  • Swift'te iOS uygulaması geliştirmeyle ilgili temel bilgiler

2. Kurulum

Kodu ve eğitim veri kümesini indirme

Bu codelab'in kaynak kodunu ve eğitim veri kümesini içeren bir posta arşivi indirin. Arşivi yerel makinenizde çıkarın.

Firebase konsol projesi oluşturma

  1. Firebase konsoluna gidin.
  2. Create New Project'i (Yeni Proje Oluştur) seçin ve projenize "ML Kit Codelab" adını verin.

Android uygulamasını kurma

  1. Android uygulamamızı Firebase projesine ekleyin. Android paket adı: com.google.firebase.codelab.mlkit.automl
  2. google-services.json yapılandırma dosyasını indirin ve android/mlkit-automl/app/google-services.json adresindeki Android uygulamasına ekleyin.

iOS uygulamasını kurma

  1. iOS uygulamamızı Firebase projesine ekleyin. iOS paket kimliği: com.google.firebase.codelab.mlkit.automl
  2. GoogleService-Info.plist yapılandırma dosyasını indirin ve dosyayı ios/mlkit-automl/GoogleService-Info.plist adresindeki iOS uygulamasına yerleştirmek için talimatları uygulayın.

3. Eğitim veri kümesini hazırlama

Bir modeli farklı nesne türlerini tanıyacak şekilde eğitmek için bir dizi görüntü hazırlamanız ve her birini etiketlemeniz gerekir. Bu codelab'de kullanmanız için Creative-commons lisanslı çiçek fotoğraflarının yer aldığı bir arşiv oluşturduk.

Veri kümesi, önceki adımda indirdiğiniz zip arşivinde bulunan flower_photos.zip adlı bir zip dosyası olarak paketlenir.

Veri kümesini keşfetme

flower_photos.zip dosyasını ayıklarsanız veri kümesinin 5 çiçek türü resmini içerdiğini görürsünüz: karahindiba, papatya, lale, ayçiçeği ve güller, çiçeklerin adında bulunan klasörlerde düzenlenir. Bu, AutoML'e feed göndermek ve görüntü sınıflandırma modelini eğitmek için eğitim veri kümesi oluşturmanın kullanışlı bir yoludur.

Bu eğitim veri kümesinde her çiçek türü için 200 görüntü vardır. Model eğitmek için sınıf başına en az 10 görüntüye ihtiyacınız vardır. Ancak daha fazla eğitim görüntüsü, genellikle daha iyi modellerin ortaya çıkmasını sağlar.

e5772b6527a6048d.png 6c4443d31cd5653e.png

4. Model eğitin

Eğitim veri kümesini yükle

  1. Firebase konsolunda, yeni oluşturduğunuz projeyi açın.
  2. ML Kit'i seçin > AutoML.
  3. Bazı karşılama ekranları görebilirsiniz. Uygun durumlarda Başlayın'ı seçin.
  1. Kurulum işlemi tamamlandıktan sonra Veri kümesi ekle'yi seçin ve "Çiçekler" olarak adlandırın.
  2. Model hedefi bölümünde, eğitim verileri her görüntü için yalnızca bir etiket içerdiğinden Tek etiketli sınıflandırma'yı seçin.
  3. Oluştur'u seçin.
  4. Çiçek eğitimi veri kümesini içe aktarmak için önceki adımda indirdiğiniz flower_photos.zip dosyasını yükleyin.
  5. İçe aktarma görevinin tamamlanması için birkaç dakika bekleyin.
  6. Artık veri kümesinin doğru şekilde içe aktarıldığını onaylayabilirsiniz.
  7. Eğitim veri kümesindeki tüm görüntüler etiketlendiğinden, model eğitmeye devam edebilirsiniz.

cdb18b61f890934f.png

Görüntü sınıflandırma modeli eğitme

Modelimiz sınırlı bilgi işlem gücüne ve depolama alanına sahip bir mobil cihazda çalışacağından, yalnızca modelin doğruluğuna değil, boyutuna ve hızına da dikkat etmemiz gerekiyor. Model doğruluğu, gecikme (yani bir görüntünün sınıflandırılması için gereken süre) ve model boyutu arasında her zaman denge bulunur. Genellikle, doğruluğu daha yüksek olan bir model de daha büyüktür ve görüntünün sınıflandırılması daha uzun sürer.

AutoML size birkaç seçenek sunar: Doğruluk için optimizasyon yapmayı, gecikme ve model boyutu için optimizasyon yapmayı ya da bunlar arasında denge kurmayı seçebilirsiniz. Modelin eğitilmesi için izin vereceğiniz süreyi de seçebilirsiniz. Daha büyük veri kümelerinin daha uzun süre eğitilmesi gerekir.

dd6b7eaa2dd5a9de.png

Modeli kendiniz eğitmek istiyorsanız şu adımları uygulayın.

  1. Eğitim modeli'ni seçin.
  2. Genel amaçlı seçeneğini ve 1 işlem saati eğitim süresini belirleyin.
  3. Eğitim görevinin tamamlanması için biraz zaman (muhtemelen birkaç saat) bekleyin.
  4. Eğitim görevi tamamlandıktan sonra, eğitilen modelin nasıl performans gösterdiğine dair değerlendirme metriklerini görürsünüz.

73f98fbed5ae5ee5.png

5. Modeli mobil uygulamalarda kullanma

Hazırlık

  • Bu codelab'de, daha önce bir mobil uygulamada eğittiğimiz görüntü sınıflandırma modelinin nasıl kullanılacağını gösteren Android ve iOS örnek uygulaması bulunmaktadır. İki uygulamanın özellikleri benzerdir. Daha aşina olduğunuz platformu seçebilirsiniz.
  • Devam etmeden önce lütfen örnek uygulamaları indirdiğinizden ve 2. adımda yapılandırdığınızdan emin olun.
  • Ayrıca lütfen yerel ortamınızın, seçtiğiniz platforma (Android/iOS) yönelik uygulama derlemeye uygun şekilde ayarlandığından emin olun.

Görüntü sınıflandırma modelini indirin

  • Önceki adımda bir modeli eğittiyseniz modeli almak için İndir'i seçin.
  • Bir modeli eğitmediyseniz veya eğitim göreviniz henüz bitmediyse örnek uygulamalarda bulunan modeli kullanabilirsiniz.

Modeli örnek uygulamalara ekleyin

Modeli yalnızca örnek uygulamalara eklemeniz yeterlidir. Bu uygulamalar hemen kullanılabilir. ML Kit AutoML'i uygulamanıza nasıl entegre edeceğinizle ilgili eksiksiz bir kılavuz için lütfen belgelerimize ( Android, iOS) bakın. ML Kit SDK'sı ile etkileşimde bulunan kod, sırasıyla ImageClassifier.kt ve ImageClassifier.swift dosyasında yer alır. Böylece, uygulamaların nasıl çalıştığını incelemek için bu dosyayı kullanmaya başlayabilirsiniz.

Modeli dağıtmak için yerel ve uzak olmak üzere iki seçenek vardır.

  • Yerel model genellikle uygulama ikili programınızda resim sınıflandırma modelini paketlemek için kullanılır. Bununla birlikte, yerel depolama alanına kaydedilmiş bir model de sağlayabilirsiniz. Paketleme özelliği sayesinde model, kullanıcılarınız App Store / Play Store'dan uygulamanızı indirdikten hemen sonra kullanıma hazır olur ve internet bağlantısı olmadan çalışır.
  • Uzak model, modelin Firebase'de barındırıldığı ve kullanıcınızın cihazına yalnızca ilk kez ihtiyaç olduğunda indirileceği anlamına gelir. Sonrasında, model çevrimdışı olarak da çalışır.

2e71ed2c7cb8757c.png

Android uygulaması

  1. Android Studio'yu açın.
  2. Android uygulamasını android/mlkit-automl/ altına aktarın
  3. (İsteğe bağlı) İndirdiğiniz modeli çıkarın ve içeriğini örnek uygulamada yer alan modelin üzerine kopyalayın. 10cf6b1e0f34de29.png.
  4. Şimdi Android Studio araç çubuğundaki Çalıştır ( c8b8a080b7ead886.png) öğesini tıklayın ve farklı çiçek türlerini tanıyabildiğinizi doğrulayın.

2e71ed2c7cb8757c.png

iOS uygulaması

  1. Terminal'i açın ve ios/mlkit-automl/ klasörüne gidin
  2. Bağımlılıkları Cocoapods aracılığıyla indirmek için pod install komutunu çalıştırın
  3. Proje çalışma alanını Xcode'da açmak için open MLVisionExample.xcworkspace/ komutunu çalıştırın.
  4. (İsteğe bağlı) İndirdiğiniz modeli çıkarın ve içeriğini ios/ml-automl/Resources/automl/cd291fe04bcdc6ee.png altındaki örnek uygulamada bulunan modele kopyalayın.
  5. Şimdi Xcode araç çubuğundaki Çalıştır ( 16629f86bbeb4208.png) öğesini tıklayın ve farklı çiçek türlerini tanıyabildiğini doğrulayın!

65172c3f35336d4e.png

6. (İsteğe bağlı) Uzak modeli kullan

ML Kit'in uzak modeli, Tensorflow Lite modellerini uygulama ikili programınıza dahil etmenize izin vermez. Ancak gerektiğinde Firebase'den isteğe bağlı olarak indirebilirsiniz. Uzaktan modellerin yerel modellere göre bazı avantajları vardır:

  • Daha küçük uygulama ikili programı
  • Uygulamayı güncellemeden modelleri güncelleyebilmek
  • Bir modelin birden çok sürümüyle A/B testi

Bu adımda, bir uzak model yayınlayacağız ve bu modeli örnek uygulamalarda kullanacağız. Lütfen bu codelab'in 4. adımında modelinizi eğitmeyi tamamladığınızdan emin olun.

Modeli yayınlayın

  1. Firebase konsoluna gidin.
  2. "ML Kit AutoML Codelab"i seçin. proje başlatma belgesini kullanacaksınız.
  3. ML Kit'i seçin > AutoML.
  4. "Çiçekler"i seçin. veri kümesiyle eşleştirilir.
  5. Eğitim görevinin tamamlandığını onaylayın, ardından modeli seçin.
  6. Yayınla'yı seçin ve "mlkit_flowers" olarak adlandırın. b63a58b83e814acd.png

Uzaktaki modelle çiçekleri tanı

Örnek uygulamalar, kullanılabiliyorsa uzak modeli kullanacak şekilde yapılandırılmıştır. Uzak modeli yayınladıktan sonra, model indirmeyi tetiklemek için yalnızca uygulamaları yeniden çalıştırmanız gerekir. "Kaynağa" bakarak uygulamanın uzak modeli kullandığını doğrulayabilirsiniz değerini ekleyin. Bkz. "Sorun giderme" başlıklı bölüme bakın.

7c8292293fd858ad.png de359886ccecef2.png

Sorun giderme

Örnek uygulama hâlâ yerel modeli kullanıyorsa lütfen uzak model adının kod içinde doğru şekilde ayarlandığından emin olun.

Android uygulaması

  1. ImageClassifier.kt adresine gidin ve bu bloğu bulun.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. Kodda ayarlanan model adının, daha önce Firebase konsolu aracılığıyla yayınladığınız model adıyla eşleştiğini doğrulayın.
  2. Şimdi uygulamayı yeniden çalıştırmak için Android Studio araç çubuğundaki Çalıştır ( c8b8a080b7ead886.png) seçeneğini tıklayın.

iOS uygulaması

  1. ImageClassifier.swift adresine gidin ve bu bloğu bulun,
return RemoteModel(
  name: Constant.remoteAutoMLModelName,
  allowsModelUpdates: true,
  initialConditions: initialConditions,
  updateConditions: updateConditions
)
  1. Kodda ayarlanan model adının, daha önce Firebase konsolu aracılığıyla yayınladığınız model adıyla eşleştiğini doğrulayın.
  2. Şimdi uygulamayı yeniden çalıştırmak için Xcode araç çubuğundaki Çalıştır ( 16629f86bbeb4208.png) seçeneğini tıklayın.

7. Tebrikler!

AutoML kullanarak kendi eğitim verilerinizle görüntü sınıflandırma modeli eğitmek için uçtan uca bir yolculuk yaptınız ve ardından ML Kit'i kullanarak modeli bir mobil uygulamada kullandınız.

AutoML Vision Edge'i ML Kit'te kendi uygulamanıza nasıl entegre edeceğinizi öğrenmek için lütfen belgelerimize bakın.

Firebase ML Kit'in diğer özelliklerini görmek için ML Kit örnek uygulamalarımızı da deneyebilirsiniz.

Android örnekleri

iOS örnekleri