Bir görüntü veya bir video akışı verildiğinde, bir nesne algılama modeli, bilinen bir nesne kümesinden hangisinin mevcut olabileceğini belirleyebilir ve görüntü içindeki konumları hakkında bilgi sağlayabilir.
Örneğin, örnek uygulamanın bu ekran görüntüsü, iki nesnenin nasıl tanındığını ve konumlarının nasıl açıklandığını gösterir:
Başlamak
Bir mobil uygulamada nesne algılamayı nasıl kullanacağınızı öğrenmek için Örnek uygulamaları ve kılavuzları inceleyin .
Android veya iOS dışında bir platform kullanıyorsanız veya TensorFlow Lite API'lerine aşina iseniz, başlangıç nesne algılama modelimizi ve beraberindeki etiketleri indirebilirsiniz.
Meta Veriler ve ilişkili alanlar hakkında daha fazla bilgi için (örneğin:
labels.txt )
labels.txt meta verileri okuma
Kendi göreviniz için özel bir algılama modeli eğitmek istiyorsanız, bkz. Model özelleştirme .
Aşağıdaki kullanım durumları için farklı bir model türü kullanmalısınız:
- Görüntünün büyük olasılıkla hangi tek etiketi temsil ettiğini tahmin etme ( görüntü sınıflandırmasına bakın)
- Bir görüntünün kompozisyonunu tahmin etme, örneğin konuya karşı arka plan ( bölümlemeye bakın)
Örnek uygulamalar ve kılavuzlar
TensorFlow Lite'ta yeniyseniz ve Android veya iOS ile çalışıyorsanız, başlamanıza yardımcı olabilecek aşağıdaki örnek uygulamaları incelemenizi öneririz.
Android
Nesne algılama 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. TensorFlow Lite Interpreter Java API kullanarak kendi özel çıkarım ardışık düzeninizi de oluşturabilirsiniz .
iOS
Modeli TensorFlow Lite Interpreter Swift API'sini kullanarak entegre edebilirsiniz. Aşağıdaki iOS örneğine bakın.
Model Açıklaması
Bir nesne algılama modeli, birden çok nesne sınıfının varlığını ve konumunu algılamak için eğitilir. Örneğin, bir model çeşitli meyve parçalarını içeren görüntülerle birlikte temsil ettikleri meyve sınıfını (örneğin bir elma, bir muz veya bir çilek) belirten bir etiket ve her bir nesnenin nerede göründüğünü belirten verilerle eğitilebilir. görüntü.
Modele sonradan bir görüntü verildiğinde, algıladığı nesnelerin bir listesini, her nesneyi içeren bir sınırlayıcı kutunun konumunu ve algılamanın doğru olduğuna dair güveni gösteren bir puan verir.
Giriş İmzası
Model, girdi olarak bir görüntü alır.
Beklenen görüntünün piksel başına üç kanal (kırmızı, mavi ve yeşil) ile 300x300 piksel olduğunu varsayalım. Bu, modele 270.000 bayt değerinde (300x300x3) düzleştirilmiş bir arabellek olarak beslenmelidir. Model nicelleştirilmişse , her değer 0 ile 255 arasında bir değeri temsil eden tek bir bayt olmalıdır.
Bu ön işlemenin Android'de nasıl yapılacağını anlamak içinörnek uygulama kodumuza bakabilirsiniz.
Çıktı İmzası
Model, 0-4 indislerine eşlenmiş dört dizi çıkarır. 0, 1 ve 2 dizileri, her dizideki bir öğenin her nesneye karşılık geldiği
N algılanan nesneyi açıklar.
|Dizin||İsim Soyisim||Açıklama|
|0||Konumlar||Çok boyutlu dizi [N] [4] kayan nokta değerleri 0 ile 1 arasında, iç diziler sınırlayıcı kutuları temsil ediyor [üst, sol, alt, sağ]|
|1||Sınıflar||N tamsayı dizisi (kayan nokta değerleri olarak çıktı) her biri etiketler dosyasından bir sınıf etiketinin dizinini gösterir|
|2||Skorlar||0 ile 1 arasında, bir sınıfın tespit edilme olasılığını temsil eden N kayan nokta değerleri dizisi|
|3||Tespit sayısı||N'nin tamsayı değeri|
Örneğin, elmaları, muzları ve çilekleri tespit etmek için eğitilmiş bir model düşünün. Bir görüntü sağlandığında, belirli sayıda algılama sonucunu verir - bu örnekte, 5.
|Sınıf||Puan||yer|
|elma||0.92||[18, 21, 57, 63]|
|Muz||0.88||[100, 30, 180, 150]|
|çilek||0.87||[7, 82, 89, 163]|
|Muz||0.23||[42, 66, 57, 83]|
|elma||0.11||[6, 42, 31, 58]|
Güven puanı
Bu sonuçları yorumlamak için, tespit edilen her nesnenin puanına ve konumuna bakabiliriz. Puan, nesnenin gerçekten algılandığına dair güveni gösteren 0 ile 1 arasında bir sayıdır. Sayı 1'e ne kadar yakınsa, model o kadar kendinden emin olur.
Uygulamanıza bağlı olarak, altında tespit sonuçlarını atacağınız bir kesme eşiğine karar verebilirsiniz. Mevcut örnek için, makul bir kesme 0.5 puandır (tespitin geçerli olduğuna dair% 50 olasılık anlamına gelir). Bu durumda, dizideki son iki nesne göz ardı edilir çünkü bu güven puanları 0,5'in altındadır:
|Sınıf||Puan||yer|
|elma||0.92||[18, 21, 57, 63]|
|Muz||0.88||[100, 30, 180, 150]|
|çilek||0.87||[7, 82, 89, 163]|
|Muz||0.23||[42, 66, 57, 83]|
|elma||0.11||[6, 42, 31, 58]|
Kullandığınız sınır, yanlış pozitiflerle (yanlış olarak tanımlanan nesneler veya görüntünün yanlışlıkla nesne olarak tanımlanmayan alanları) veya yanlış negatiflerle (gerçek nesneler olan gerçek nesneler) daha rahat olup olmadığınıza bağlı olmalıdır. güvenleri düşük olduğu için kaçırıldı).
Örneğin, aşağıdaki görüntüde, bir armut (modelin tespit etmek için eğitildiği bir nesne değildir) yanlış bir "kişi" olarak tanımlanmıştır. Bu, uygun bir kesme noktası seçilerek göz ardı edilebilecek bir yanlış pozitif örneğidir. Bu durumda, 0,6'lık (veya% 60) bir kesme, yanlış pozitifliği rahatça dışlayacaktır.
yer
Tespit edilen her nesne için model, konumunu çevreleyen bir sınırlayıcı dikdörtgeni temsil eden dört sayı dizisi döndürecektir. Sağlanan başlangıç modeli için numaralar aşağıdaki şekilde sıralanmıştır:
|[||üst,||ayrıldı,||alt,||sağ||]|
Üst değer, dikdörtgenin üst kenarının görüntünün üst kenarına olan mesafesini piksel cinsinden temsil eder. Sol değer, sol kenarın giriş görüntüsünün solundan mesafesini temsil eder. Diğer değerler, benzer şekilde alt ve sağ kenarları temsil eder.
Performans testleri
|Model adı||Model boyutu||cihaz||GPU||İşlemci|
|COCO SSD MobileNet v1||27 Mb||Pixel 3 (Android 10)||22 ms||46 ms *|
|Pixel 4 (Android 10)||20 ms||29 ms *|
|iPhone XS (iOS 12.4.1)||7,6 ms||11 ms **|
* 4 iplik kullanıldı.
** En iyi performans sonucu için iPhone'da kullanılan 2 iş parçacığı.
Model Özelleştirme
Önceden eğitilmiş modeller
Çeşitli gecikme ve kesinlik özelliklerine sahip mobil cihazlar için optimize edilmiş algılama modelleri Algılama Hayvanat Bahçesi'nde bulunabilir . Her biri aşağıdaki bölümlerde açıklanan giriş ve çıkış imzalarını takip eder.
İndirme
model.tflite çoğu bir
model.tflite dosyası içerir. Eğer yoksa, bu talimatlar kullanılarak bir TensorFlow Lite düz arabellek oluşturulabilir. Dan SSD modelleri TF2 Nesne Algılama Zoo da yönergeleri kullanarak TensorFlow Lite dönüştürülebilir burada . Algılama modellerinin doğrudan TensorFlow Lite Converter kullanılarak dönüştürülemeyeceğine dikkat etmek önemlidir, çünkü mobil uyumlu bir kaynak modeli oluşturmak için ara bir adım gerektirirler. Yukarıda bağlanan komut dosyaları bu adımı gerçekleştirir.
Hem TF1 hem de TF2 dışa aktaran komut dosyaları, daha fazla sayıda çıktı nesnesini veya daha yavaş, daha doğru son işlemeyi etkinleştirebilen parametrelere sahiptir. Desteklenen bağımsız değişkenlerin kapsamlı bir listesini görmek için lütfen komut dosyalarında
--help kullanın.
Şu anda, cihaz üzerinde çıkarım yalnızca SSD modelleriyle optimize edilmiştir. CenterNet ve EfficientDet gibi diğer mimariler için daha iyi destek araştırılmaktadır.
Özelleştirmek için bir model nasıl seçilir?
Her model kendi hassasiyeti (mAP değeri ile ölçülür) ve gecikme özellikleri ile birlikte gelir. Kullanım durumunuz ve amaçlanan donanımınız için en iyi şekilde çalışan bir model seçmelisiniz. Örneğin Edge TPU modelleri, Google'ın Pixel 4'teki Edge TPU'sunda çıkarım yapmak için idealdir.
Modelleri değerlendirmek ve mevcut en verimli seçeneği seçmek için karşılaştırma aracımızı kullanabilirsiniz.
Özel verilerde ince ayar modelleri
Sağladığımız önceden eğitilmiş modeller, 90 sınıf nesneyi algılayacak şekilde eğitilmiştir. Sınıfların tam listesi için model meta verilerindeki etiketler dosyasına bakın.
Orijinal sette olmayan sınıfları tanımak için bir modeli yeniden eğitmek için transfer öğrenimi olarak bilinen bir tekniği kullanabilirsiniz. Örneğin, orijinal eğitim verilerinde yalnızca bir sebze olmasına rağmen modeli birden çok sebze türünü tespit edecek şekilde 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. Önerilen yol, birkaç satır kodla özel veri kümesi kullanarak bir TensorFlow Lite modeli eğitme sürecini basitleştiren TensorFlow Lite Model Maker kitaplığını kullanmaktır. Gerekli eğitim verisi ve süresini azaltmak için aktarım öğrenimini kullanır. Birkaç örnekle önceden eğitilmiş bir modele ince ayar yapma örneği olarak Few-shot detection Colab'dan da öğrenebilirsiniz.
Daha büyük veri kümelerinde ince ayar yapmak için, kendi modellerinizi TensorFlow Nesne Algılama API'si: TF1 , TF2 ile eğitmek için bu kılavuzlara bir göz atın. Eğitildikten sonra, buradaki talimatlarla TFLite uyumlu bir biçime dönüştürülebilirler: TF1 , TF2