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ırması denir. Bir görüntü sınıflandırma modeli, çeşitli görüntü sınıflarını tanımak için eğitilmiştir. Örneğin, bir modeli üç farklı hayvan türünü temsil eden fotoğrafları tanıması için eğitebilirsiniz: tavşanlar, hamsterlar ve köpekler. TensorFlow Lite, mobil uygulamalarınızda dağıtabileceğiniz optimize edilmiş önceden eğitilmiş modeller sağlar. Burada TensorFlow kullanarak görüntü sınıflandırma hakkında daha fazla bilgi edinin.

Aşağıdaki görüntü, Android'deki görüntü 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ı keşfetmeniz önerilir.

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

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

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

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

Android/iOS dışında bir platform kullanıyorsanız veya TensorFlow Lite API'lerine zaten aşinaysanız, başlangıç ​​modelini ve destekleyici dosyaları (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 modeli, görüntüler ve bunlarla ilişkili etiketlerle beslenir. Her etiket, modelin tanımayı öğreneceği farklı bir kavramın veya sınıfın adıdır.

Yeterli eğitim verisi (genellikle etiket başına yüzlerce veya binlerce görüntü) verildiğinde, bir görüntü sınıflandırma modeli, yeni görüntülerin eğitildiği 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ı belirlemek için aktarım öğrenimini 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ğitildiği hayvan türlerinin her birini temsil eden görüntünün olasılıklarını çıkaracaktı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şkilendirerek, 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 Softmax'a bakın).

belirsiz sonuçlar

Çıktı olasılıkları her zaman 1'e eşit olacağından, bir görüntünün modelin üzerinde eğitildiği sınıflardan herhangi birine ait olduğu güvenle tanınmazsa, herhangi bir değer önemli ölçüde daha büyük olmadan etiketler arasında dağıtılan olasılığı görebilirsiniz.

Örneğin, aşağıdakiler belirsiz bir sonucu gösterebilir:

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, tümü orijinal veri kümesinde 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, çeşitli modeller arasındaki bazı ödünleşimlerin yanı sıra bireysel mimarileri de göz önünde bulundurmanız gerekir. Bu model ödünleşimlerinden bazıları performans, doğruluk ve model boyutu gibi ölçütlere dayanmaktadır. Örneğin, bir tıbbi görüntüleme uygulaması için daha yavaş, daha doğru bir modeli tercih ederken, bir barkod tarayıcı oluşturmak için daha hızlı bir modele ihtiyacınız olabilir. Sağlanan görüntü sınıflandırma modellerinin değişen boyutlarda girdi 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 eder. Tüm modeller piksel başına üç renk kanalı (kırmızı, yeşil ve mavi) gerektirir. Nicelleştirilmiş 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 tek etiketi temsil etme olasılığının en yüksek olduğunu tahmin etmek. 1000 görüntü sınıfını tanımak için eğitilirler. Sınıfların tam listesi için zip modelindeki etiketler dosyasına bakın. Bir modeli yeni sınıfları tanıyacak şekilde eğitmek istiyorsanız, bkz. Modeli özelleştir . 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 özneye karşı arka plana karşı (bkz. Bölümleme )
Başlangıç ​​modelini hedef cihazınızda çalıştırdıktan sonra, performans, doğruluk ve model boyutu arasında en uygun dengeyi bulmak için farklı modelleri deneyebilirsiniz.

Modeli özelleştir

Sağlanan önceden eğitilmiş modeller, 1000 görüntü sınıfını tanımak üzere eğitilmiştir. Sınıfların tam listesi için zip modelindeki etiketler dosyasına bakın. Orijinal kümede olmayan sınıfları tanımak için bir modeli yeniden eğitmek için transfer öğrenimini de kullanabilirsiniz. Örneğin, orijinal eğitim verilerinde ağaç olmamasına rağmen, farklı ağaç türleri arasında ayrım yapmak için modeli yeniden eğitebilirsiniz. Bunu yapmak için, eğitmek istediğiniz her yeni etiket için bir dizi eğitim görüntüsüne ihtiyacınız olacak. TFLite Model Maker ile veya TensorFlow ile çiçekleri tanıyın kod laboratuvarında aktarım öğrenimini nasıl gerçekleştireceğinizi öğrenin.

Performans karşılaştırmaları

Model performansı, bir modelin belirli bir donanım parçası üzerinde çıkarım yapması için geçen süre cinsinden ölçülür. Zaman ne kadar düşük olursa, model o kadar hızlı olur. İhtiyacınız olan performans uygulamanıza bağlıdır. Performans, gerçek zamanlı video gibi uygulamalar için önemli olabilir, burada her kareyi bir sonraki kare çizilmeden önce analiz etmek önemli olabilir (örneğin, 30 fps 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 nicelleştirdi. Performans kıyaslama numaraları, kıyaslama aracıyla oluşturulur.
Model adı Model boyutu Cihaz NNAPI İşlemci
Mobilenet_V1_1.0_224_quant 4.3 Mb Piksel 3 (Android 10) 6ms 13 ms*
Piksel 4 (Android 10) 3,3 ms 5ms*
iPhone XS (iOS 12.4.1) 11 ms**

* 4 iplik kullanılmıştır.

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

Model doğruluğu

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

En alakalı doğruluk metrikleri İlk-1 ve İlk-5'tir. İlk 1, modelin çıktısında en yüksek olasılığa sahip etiket olarak doğru etiketin ne sıklıkta göründüğünü ifade eder. İlk 5, model çı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 ile %89,9 arasında nicelleştirdi.

Model boyutu

Disk üzerindeki bir modelin boyutu, performansına ve doğruluğuna göre değişir. Boyut, mobil geliştirme için (uygulama indirme boyutlarını etkileyebileceği durumlarda) veya donanımla çalışırken (mevcut depolamanın sınırlı olabileceği durumlarda) önemli olabilir.

TensorFlow Lite nicelleştirilmiş MobileNet modellerinin boyutları 0,5 ile 3,4 MB arasında değişir.

Daha fazla okuma ve kaynaklar

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