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 öğrenimindeki son gelişmeler, bilgisayarların resimlerdeki nesneleri tanımasını nispeten kolaylaştırdı. Bu codelab'de, farklı türlerdeki nesneleri tanıyabilen bir görüntü sınıflandırma modeli oluşturma ve ardından modeli Android ve iOS uygulamasına dağıtma sürecinde size adım adım rehberlik edeceğiz. ML Kiti ve AutoML, makine öğrenimi uzmanlığına gerek kalmadan modeli büyük ölçekte oluşturup dağıtmanıza olanak tanır.

ML Kit nedir?

ML Kit, Google'ın makine öğrenimi uzmanlığını Android ve iOS uygulamalarına taşıyan, güçlü ancak kullanımı kolay bir mobil SDK'dır. Makine öğrenimine yeni başlamış olsanız da deneyimli olsanız da ihtiyacınız olan işlevleri yalnızca birkaç satır kodla kolayca uygulayabilirsiniz. Kullanıma hazır olarak kullanabileceğiniz, metinleri, yüzleri vb. tanıyan çeşitli API'ler vardır. Ancak, API'ler tarafından desteklenmeyen nesneleri (ör. bir resimdeki farklı çiçek türlerini) tanımanız gerekiyorsa kendi modelinizi eğitmeniz gerekir. AutoML bu noktada size yardımcı olabilir.

AutoML nedir?

Cloud AutoML, makine öğrenimi alanındaki uzmanlığı sınırlı düzeyde olan geliştiricilere Google'ın modern öğrenim aktarma ve Neural Architecture Search teknolojisinden yararlanarak iş ihtiyaçlarına uygun şekilde yüksek kaliteli model eğitme olanağı sunan bir makine öğrenimi ürün paketidir.

Bu codelab'de, çiçek sınıflandırma modeli eğitmek için ML Kit'teki AutoML Vision Edge'i kullanacağız. Model bulutta eğitilir ancak daha sonra tamamen cihaz üzerinde çıkarım yapmak 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 nasıl çalıştırılacağı

İhtiyacınız olanlar

Android uygulaması için

iOS uygulaması için

  • XCode'un son sürümü (v10.2+)
  • iOS Simulator veya fiziksel bir iOS cihaz (v9.0+)
  • CocoaPods
  • Swift ile iOS geliştirme hakkında temel bilgiler

2. Kurulum

Kodu ve eğitim veri kümesini indirme

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

Firebase Konsolu 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ı indirip Android uygulamasında android/mlkit-automl/app/google-services.json konumuna yerleştirin.

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 ios/mlkit-automl/GoogleService-Info.plist konumundaki iOS uygulamasına yerleştirme talimatlarını uygulayın.

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

Bir modeli farklı türlerdeki nesneleri tanıyacak şekilde eğitmek için bir dizi görüntü hazırlayıp her birini etiketlemeniz gerekir. Bu codelab'de kullanmanız için Creative Commons lisanslı çiçek fotoğraflarından oluşan 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ı çıkardığınızda veri kümesinin, çiçeklerin adını taşıyan klasörlerde düzenlenmiş 5 çiçek türünün (karahindiba, papatya, lale, ayçiçeği ve gül) resimlerini içerdiğini görürsünüz. Bu, AutoML'ye beslenecek bir eğitim veri kümesi oluşturmanın ve görüntü sınıflandırma modeli eğitmenin pratik bir yoludur.

Bu eğitim veri kümesinde her çiçek türü için 200 resim vardır. Bir modeli eğitmek için sınıf başına en az 10 resim gerekir. Ancak daha fazla eğitim resmi genellikle daha iyi modellerle sonuçlanır.

e5772b6527a6048d.png 6c4443d31cd5653e.png

4. Model eğitin

Eğitim veri kümesini yükleme

  1. Firebase konsolunda, yeni oluşturduğunuz projeyi açın.
  2. ML Kit > AutoML'i seçin.
  3. Bazı karşılama ekranları görebilirsiniz. Uygun yerlerde 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 görüntü başına 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ğitim 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ğitme işlemine devam edebilirsiniz.

cdb18b61f890934f.png

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

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

AutoML size çeşitli seçenekler sunar: Doğruluk için optimizasyon yapmayı, gecikme ve model boyutu için optimizasyon yapmayı veya bu ikisi arasında denge kurmayı seçebilirsiniz. Modelin ne kadar süreyle eğitilmesine izin vereceğinizi 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 aşağıdaki adımları uygulayın.

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

73f98fbed5ae5ee5.png

5. Modeli mobil uygulamalarda kullanma

Hazırlık

  • Bu codelab'de, daha önce eğittiğimiz görüntü sınıflandırma modelinin mobil uygulamada nasıl kullanılacağını gösteren hem Android hem de iOS örnek uygulaması yer almaktadır. İki uygulamanın özellikleri benzerdir. Daha aşina olduğunuz platformu seçebilirsiniz.
  • Devam etmeden önce lütfen örnek uygulamaları indirip 2. adımda yapılandırdığınızdan emin olun.
  • Ayrıca, yerel ortamınızın seçtiğiniz platform (Android/iOS) için uygulamalar oluşturabilecek şekilde ayarlandığından emin olun.

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

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

Modeli örnek uygulamalara ekleme

Modeli örnek uygulamalara eklemeniz yeterlidir. Bu uygulamalar hemen çalışır. 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 ile etkileşimde bulunan kod sırasıyla ImageClassifier.kt ve ImageClassifier.swift dosyalarında yer alır. Bu nedenle, uygulamaların nasıl çalıştığını keşfetmek için bu dosyalardan başlayabilirsiniz.

Modeli dağıtmak için iki seçenek vardır: yerel ve uzaktan.

  • Yerel model, esas olarak görüntü sınıflandırma modelini uygulama ikili programınızda paketlemek için kullanılır. Bununla birlikte, yerel depolama alanına kaydedilmiş bir model de sağlanabilir. Paketleme sayesinde, model uygulamanızı uygulama mağazası veya Play Store'dan indiren kullanıcılarınız tarafından hemen kullanılabilir ve İnternet bağlantısı olmadan çalışır.
  • Uzak model, modelin Firebase'de barındırıldığı ve yalnızca ilk kez ihtiyaç duyulduğunda kullanıcınızın cihazına indirileceği anlamına gelir. Bunun ardından model çevrimdışı olarak da çalışır.

2e71ed2c7cb8757c.png

Android uygulaması

  1. Android Studio'yu açın.
  2. Android uygulamasını android/mlkit-automl/ bölümünden içe aktarın.
  3. (İsteğe bağlı) İndirdiğiniz modeli ayıklayın ve içeriğini örnek uygulamaya dahil edilen modele kopyalayın. 10cf6b1e0f34de29.png
  4. Şimdi Android Studio araç çubuğunda Run'ı ( c8b8a080b7ead886.png) tıklayın ve farklı çiçek türlerini tanıyabildiğini doğrulayın.

2e71ed2c7cb8757c.png

iOS uygulaması

  1. Terminal'i açın ve ios/mlkit-automl/ klasörüne gidin.
  2. Cocoapods üzerinden bağımlılıkları 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, örnek uygulamada ios/ml-automl/Resources/automl/cd291fe04bcdc6ee.png altında bulunan modelin üzerine kopyalayın.
  5. Şimdi Xcode araç çubuğunda Çalıştır'ı ( 16629f86bbeb4208.png) tıklayın ve farklı çiçek türlerini tanıyabildiğini doğrulayın.

65172c3f35336d4e.png

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

ML Kit'in uzaktan model özelliği, Tensorflow Lite modellerini uygulama ikilinizde bulundurmadan gerektiğinde Firebase'den isteğe bağlı olarak indirmenize olanak tanır. Uzak modellerin yerel modellere kıyasla çeşitli avantajları vardır:

  • Daha küçük uygulama ikilisi
  • Uygulamayı güncellemeden modelleri güncelleyebilme
  • Bir modelin birden fazla sürümüyle A/B testi

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

Modeli yayınlama

  1. Firebase konsoluna gidin.
  2. Daha önce oluşturduğunuz "ML Kit AutoML Codelab" projesini seçin.
  3. ML Kit > AutoML'i seçin.
  4. Daha önce oluşturduğunuz "Çiçekler" veri kümesini seçin.
  5. Eğitim görevinin tamamlandığını onaylayın ve modeli seçin.
  6. Yayınla'yı seçin ve "mlkit_flowers" adını verin. b63a58b83e814acd.png

Uzaktan modelle çiçekleri tanıma

Örnek uygulamalar, varsa uzaktan modeli kullanacak şekilde yapılandırılmıştır. Uzak modeli yayınladıktan sonra, modelin indirilmesini tetiklemek için uygulamaları yeniden çalıştırmanız yeterlidir. Uygulama ekranının altbilgisindeki "Kaynak" değerine bakarak uygulamanın uzak modeli kullandığını doğrulayabilirsiniz. Çalışmazsa aşağıdaki "Sorun giderme" bölümüne bakın.

7c8292293fd858ad.png de359886ccecef2.png

Sorun giderme

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

Android uygulaması

  1. ImageClassifier.kt adresine gidip bu bloğu bulun.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
  1. Kodda ayarlanan model adının, daha önce Firebase Console üzerinden 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ğunda Çalıştır'ı ( c8b8a080b7ead886.png) tıklayın.

iOS uygulaması

  1. ImageClassifier.swift adresine gidin ve bu bloku bulun.
return RemoteModel(
  name: Constant.remoteAutoMLModelName,
  allowsModelUpdates: true,
  initialConditions: initialConditions,
  updateConditions: updateConditions
)
  1. Kodda ayarlanan model adının, daha önce Firebase Console üzerinden 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ğunda Çalıştır'ı ( 16629f86bbeb4208.png) tıklayın.

7. Tebrikler!

AutoML'i kullanarak kendi eğitim verilerinizle bir görüntü sınıflandırma modelini eğitme ve ardından ML Kiti'ni kullanarak modeli bir mobil uygulamada kullanma sürecini baştan sona tamamlamış olmalısınız.

AutoML Vision Edge'i ML Kit'te kendi uygulamanıza nasıl entegre edeceğinizi öğrenmek için lütfen dokümanlarımızı inceleyin.

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

Android örnekleri

iOS örnekleri