Görüntü sınıflandırması

Bir görüntünün neyi temsil ettiğini belirleme görevine görüntü sınıflandırma denir. Bir görüntü sınıflandırma modeli, çeşitli görüntü sınıflarını tanımak için eğitilir. Örneğin, bir modeli üç farklı hayvan türünü temsil eden fotoğrafları tanıyacak şekilde eğitebilirsiniz: tavşanlar, hamsterler ve köpekler. TensorFlow Lite, mobil uygulamalarınızda kullanabileceğiniz optimize edilmiş önceden eğitilmiş modeller sunar. TensorFlow'u kullanarak görüntü sınıflandırma hakkında daha fazla bilgiyi buradan edinebilirsiniz.

Aşağıdaki resim, Android'deki resim sınıflandırma modelinin çıktısını göstermektedir.

Android örneğinin ekran görüntüsü

Başlamak

TensorFlow Lite'ta yeniyseniz ve Android veya iOS ile çalışıyorsanız, başlamanıza yardımcı olabilecek aşağıdaki örnek uygulamaları incelemeniz önerilir.

Görüntü sınıflandırma modellerini yalnızca birkaç satır kodla entegre etmek için TensorFlow Lite Görev Kitaplığı'ndaki kullanıma hazır API'den yararlanabilirsiniz. TensorFlow Lite Destek Kitaplığını kullanarak kendi özel çıkarım işlem hattınızı da oluşturabilirsiniz.

Aşağıdaki Android örneği, her iki yöntemin uygulamasını sırasıyla lib_task_api ve lib_support olarak göstermektedir.

Android örneğini görüntüle

iOS örneğini görüntüle

Android/iOS dışında bir platform kullanıyorsanız veya TensorFlow Lite API'lerine zaten aşina iseniz başlangıç ​​modelini ve destek dosyalarını (varsa) indirin.

Başlangıç ​​modelini indirin

Model Açıklaması

Nasıl çalışır

Eğitim sırasında, bir görüntü sınıflandırma modeline görüntüler ve bunlarla ilişkili etiketler beslenir. Her etiket, modelin tanımayı öğreneceği ayrı bir kavramın veya sınıfın adıdır.

Yeterli eğitim verisi verildiğinde (genellikle etiket başına yüzlerce veya binlerce görüntü), bir görüntü sınıflandırma modeli, yeni görüntülerin üzerinde eğitim aldığı sınıflardan herhangi birine ait olup olmadığını tahmin etmeyi öğrenebilir. Bu tahmin sürecine çıkarım denir. Önceden var olan bir modeli kullanarak yeni görüntü sınıflarını tanımlamak için transfer öğrenmeyi de kullanabileceğinizi unutmayın. Transfer öğrenimi çok büyük bir eğitim veri seti gerektirmez.

Daha sonra modele girdi olarak yeni bir görüntü sağladığınızda, üzerinde eğitim verildiği hayvan türlerinin her birini temsil eden görüntünün olasılıkları çıkarılacaktır. Örnek bir çıktı aşağıdaki gibi olabilir:

Hayvan türü Olasılık
Tavşan 0,07
Hamster 0,02
Köpek 0,91

Çıktıdaki her sayı, eğitim verilerindeki bir etikete karşılık gelir. Çıktıyı modelin eğitildiği üç etiketle ilişkilendirdiğinizde, modelin görüntünün bir köpeği temsil etme olasılığının yüksek olduğunu tahmin ettiğini görebilirsiniz.

Tüm olasılıkların toplamının (tavşan, hamster ve köpek için) 1'e eşit olduğunu fark edebilirsiniz. Bu, birden fazla sınıfa sahip modeller için yaygın bir çıktı türüdür (daha fazla bilgi için bkz . Softmax ).

Belirsiz sonuçlar

Çıktı olasılıklarının toplamı her zaman 1 olacağından, bir görüntünün modelin eğitildiği sınıflardan herhangi birine ait olduğu kesin olarak tanınmıyorsa, olasılığın hiçbir değer önemli ölçüde daha büyük olmadan etiketler boyunca dağıtıldığını görebilirsiniz.

Örneğin, aşağıdakiler belirsiz bir sonuca işaret ediyor olabilir:

Etiket Olasılık
tavşan 0.31
hamster 0,35
köpek 0,34
Modeliniz sıklıkla belirsiz sonuçlar veriyorsa farklı ve daha doğru bir modele ihtiyacınız olabilir.

Bir model mimarisi seçme

TensorFlow Lite, tamamı orijinal veri seti üzerinde eğitilmiş çeşitli görüntü sınıflandırma modelleri sunar. MobileNet, Inception ve NASNet gibi model mimarileri TensorFlow Hub'da mevcuttur. Kullanım durumunuz için en iyi modeli seçmek için, bireysel mimarilerin yanı sıra çeşitli modeller arasındaki bazı ödünleşimleri de dikkate almanız gerekir. Bu model değiş tokuşlarından bazıları performans, doğruluk ve model boyutu gibi ölçümlere dayanmaktadır. Örneğin, bir barkod tarayıcı oluşturmak için daha hızlı bir modele ihtiyacınız olabilirken tıbbi görüntüleme uygulaması için daha yavaş, daha doğru bir modeli tercih edebilirsiniz. Sağlanan görüntü sınıflandırma modellerinin farklı boyutlarda girdileri kabul ettiğini unutmayın. Bazı modellerde bu, dosya adında belirtilir. Örneğin Mobilenet_V1_1.0_224 modeli 224x224 piksellik bir girişi kabul etmektedir. Tüm modeller piksel başına üç renk kanalı (kırmızı, yeşil ve mavi) gerektirir. Nicelenmiş modeller kanal başına 1 bayt gerektirir ve kayan modeller kanal başına 4 bayt gerektirir. Android ve iOS kod örnekleri, tam boyutlu kamera görüntülerinin her model için gerekli formatta nasıl işleneceğini gösterir.

Kullanımlar ve sınırlamalar

TensorFlow Lite görüntü sınıflandırma modelleri, tek etiketli sınıflandırma için kullanışlıdır; yani görüntünün hangi etiketi temsil etme olasılığının en yüksek olduğunu tahmin etmek. 1000 görüntü sınıfını tanıyacak şekilde eğitilmişlerdir. Sınıfların tam listesi için model zip'teki etiketler dosyasına bakın. Yeni sınıfları tanıyacak şekilde bir model eğitmek istiyorsanız bkz. Modeli özelleştirme . Aşağıdaki kullanım durumları için farklı türde bir model kullanmalısınız:
  • Bir görüntüdeki bir veya daha fazla nesnenin türünü ve konumunu tahmin etme (bkz. Nesne algılama )
  • Bir görüntünün kompozisyonunu tahmin etme (örneğin, konu ve arka plan) (bkz. Segmentasyon )
Hedef cihazınızda başlangıç ​​modelini çalıştırdıktan sonra performans, doğruluk ve model boyutu arasındaki en uygun dengeyi bulmak için farklı modellerle denemeler yapabilirsiniz.

Modeli özelleştir

Sağlanan önceden eğitilmiş modeller, 1000 görüntü sınıfını tanıyacak şekilde eğitilmiştir. Sınıfların tam listesi için model zip'teki etiketler dosyasına bakın. Orijinal sette olmayan sınıfları tanımak amacıyla bir modeli yeniden eğitmek için transfer öğrenmeyi de kullanabilirsiniz. Örneğin, orijinal eğitim verilerinde hiç ağaç olmamasına rağmen, farklı ağaç türlerini ayırt etmek için modeli yeniden eğitebilirsiniz. Bunu yapmak için, eğitmek istediğiniz her yeni etiket için bir dizi eğitim görseline ihtiyacınız olacak. TFLite Model Oluşturucuyla veya TensorFlow codelab ile çiçekleri tanıma bölümünde transfer öğreniminin nasıl gerçekleştirileceğini öğrenin.

Performans kıyaslamaları

Model performansı, bir modelin belirli bir donanım parçası üzerinde çıkarım yapması için geçen süre cinsinden ölçülür. Süre ne kadar düşük olursa model o kadar hızlı olur. İhtiyaç duyduğunuz performans uygulamanıza bağlıdır. Performans, bir sonraki kare çizilmeden önce her kareyi analiz etmenin önemli olabileceği gerçek zamanlı video gibi uygulamalar için önemli olabilir (örneğin, 30 fps'lik bir video akışında gerçek zamanlı çıkarım gerçekleştirmek için çıkarım 33 ms'den daha hızlı olmalıdır) . TensorFlow Lite, MobileNet modellerinin performans aralığını 3,7 ms ile 80,3 ms arasında ölçtü. Performans kıyaslama numaraları, kıyaslama aracıyla oluşturulur.
Model adı Modeli boyutu Cihaz NNAPI İşlemci
Mobilenet_V1_1.0_224_quant 4,3 MB Piksel 3 (Android 10) 6ms 13ms*
Piksel 4 (Android 10) 3,3 ms 5 ms*
iPhone XS (iOS 12.4.1) 11 ms**

* 4 konu kullanıldı.

** En iyi performans sonucu için iPhone'da 2 iş parçacığı kullanıldı.

Model doğruluğu

Doğruluk, modelin bir görüntüyü ne sıklıkla doğru şekilde sınıflandırdığına göre ölçülür. Örneğin, doğruluğu %60 olarak belirtilen bir modelin, bir görüntüyü ortalama %60 oranında doğru şekilde sınıflandırması beklenebilir.

En alakalı doğruluk ölçümleri İlk 1 ve İlk 5'tir. İlk-1, modelin çıktısında doğru etiketin ne sıklıkla en yüksek olasılığa sahip etiket olarak göründüğünü ifade eder. İlk 5, modelin çıktısındaki en yüksek 5 olasılıkta doğru etiketin ne sıklıkta göründüğünü ifade eder.

TensorFlow Lite, MobileNet modellerinin İlk 5 doğruluk aralığını %64,4 ila %89,9 arasında ölçtü.

Modeli boyutu

Diskteki bir modelin boyutu, performansına ve doğruluğuna göre değişir. Boyut, mobil geliştirme (uygulama indirme boyutlarını etkileyebileceği durumlarda) veya donanımla çalışırken (kullanılabilir depolama alanının sınırlı olabileceği durumlarda) önemli olabilir.

TensorFlow Lite kuantize edilmiş MobileNet modellerinin boyutları 0,5 ile 3,4 MB arasında değişmektedir.

Daha fazla okuma ve kaynaklar

Görüntü sınıflandırmasıyla ilgili kavramlar hakkında daha fazla bilgi edinmek için aşağıdaki kaynakları kullanın: