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.

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
- Android Studio'nun yeni bir sürümü (3.4 veya daha yeni)
- Play Store'un yüklü olduğu Android Studio Emulator veya fiziksel bir Android cihaz (5.0 veya sonraki sürümler)
- Kotlin ile Android geliştirme hakkında temel düzeyde bilgi sahibi olma
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
- Firebase konsoluna gidin.
- Create New Project'i (Yeni Proje Oluştur) seçin ve projenize "ML Kit Codelab" adını verin.
Android uygulamasını kurma
- Android uygulamamızı Firebase projesine ekleyin. Android paket adı:
com.google.firebase.codelab.mlkit.automl google-services.jsonyapılandırma dosyasını indirip Android uygulamasındaandroid/mlkit-automl/app/google-services.jsonkonumuna yerleştirin.
iOS uygulamasını kurma
- iOS uygulamamızı Firebase projesine ekleyin. iOS paket kimliği:
com.google.firebase.codelab.mlkit.automl GoogleService-Info.plistyapılandırma dosyasını indirin veios/mlkit-automl/GoogleService-Info.plistkonumundaki 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.

4. Model eğitin
Eğitim veri kümesini yükleme
- Firebase konsolunda, yeni oluşturduğunuz projeyi açın.
- ML Kit > AutoML'i seçin.
- Bazı karşılama ekranları görebilirsiniz. Uygun yerlerde Başlayın'ı seçin.
- Kurulum işlemi tamamlandıktan sonra Veri kümesi ekle'yi seçin ve "Çiçekler" olarak adlandırın.
- 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.
- Oluştur'u seçin.
- Çiçek eğitim veri kümesini içe aktarmak için önceki adımda indirdiğiniz
flower_photos.zipdosyasını yükleyin. - İçe aktarma görevinin tamamlanması için birkaç dakika bekleyin.
- Artık veri kümesinin doğru şekilde içe aktarıldığını onaylayabilirsiniz.
- Eğitim veri kümesindeki tüm görüntüler etiketlendiğinden model eğitme işlemine devam edebilirsiniz.

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.

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

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.

Android uygulaması
- Android Studio'yu açın.
- Android uygulamasını
android/mlkit-automl/bölümünden içe aktarın. - (İsteğe bağlı) İndirdiğiniz modeli ayıklayın ve içeriğini örnek uygulamaya dahil edilen modele kopyalayın.

- Şimdi Android Studio araç çubuğunda Run'ı (
) tıklayın ve farklı çiçek türlerini tanıyabildiğini doğrulayın.

iOS uygulaması
- Terminal'i açın ve
ios/mlkit-automl/klasörüne gidin. - Cocoapods üzerinden bağımlılıkları indirmek için
pod installkomutunu çalıştırın. - Proje çalışma alanını Xcode'da açmak için
open MLVisionExample.xcworkspace/komutunu çalıştırın. - (İsteğe bağlı) İndirdiğiniz modeli çıkarın ve içeriğini, örnek uygulamada
ios/ml-automl/Resources/automl/
altında bulunan modelin üzerine kopyalayın. - Şimdi Xcode araç çubuğunda Çalıştır'ı (
) tıklayın ve farklı çiçek türlerini tanıyabildiğini doğrulayın.

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
- Firebase konsoluna gidin.
- Daha önce oluşturduğunuz "ML Kit AutoML Codelab" projesini seçin.
- ML Kit > AutoML'i seçin.
- Daha önce oluşturduğunuz "Çiçekler" veri kümesini seçin.
- Eğitim görevinin tamamlandığını onaylayın ve modeli seçin.
- Yayınla'yı seçin ve "mlkit_flowers" adını verin.

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.

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ı
ImageClassifier.ktadresine gidip bu bloğu bulun.
val remoteModel = FirebaseRemoteModel.Builder(REMOTE_MODEL_NAME).build()
- 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.
- Şimdi uygulamayı yeniden çalıştırmak için Android Studio araç çubuğunda Çalıştır'ı (
) tıklayın.
iOS uygulaması
ImageClassifier.swiftadresine gidin ve bu bloku bulun.
return RemoteModel(
name: Constant.remoteAutoMLModelName,
allowsModelUpdates: true,
initialConditions: initialConditions,
updateConditions: updateConditions
)
- 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.
- Şimdi uygulamayı yeniden çalıştırmak için Xcode araç çubuğunda Çalıştır'ı (
) 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