MediaPipe Nesne Dedektörü görevi, resimlerdeki veya videolardaki birden fazla nesne sınıfının varlığını ve konumunu algılamanızı sağlar. Örneğin, bir nesne detektörü bir resimdeki köpeklerin yerini belirleyebilir. Bu görev, makine öğrenimi (ML) modeliyle görüntü verileri üzerinde çalışır, statik verileri veya sürekli video akışını girdi olarak kabul eder ve algılama sonuçlarının listesini çıkarır. Her algılama sonucu, resim veya videoda görünen bir nesneyi temsil eder.
Başlayın
Üzerinde çalıştığınız platform için bu uygulama rehberlerinden birini izleyerek bu görevi kullanmaya başlayın:
- Android - Kod örneği - Kılavuz
- Python - Kod örneği - Kılavuz
- Web - Kod örneği - Kılavuz
- iOS - Kod örneği - Kılavuz
Bu platforma özel kılavuzlar, önerilen bir model ve önerilen yapılandırma seçeneklerinin yer aldığı kod örneği de dahil olmak üzere, bu görevin temel bir şekilde uygulanması konusunda size yol gösterir.
Görev ayrıntıları
Bu bölümde, bu görevin yetenekleri, girişleri ve çıkışları açıklanmaktadır.
Özellikler
- Resim işleme: İşleme resim döndürme, yeniden boyutlandırma, normalleştirme ve renk alanı dönüştürme işlemlerini içerir.
- Harita yerel ayarını etiketle - Görünen adlar için kullanılan dili ayarlayın
- Puan eşiği - Sonuçları tahmin puanlarına göre filtreleyin.
- Üst-k algılama - Sayı algılama sonuçlarını filtreleyin.
- Etiket izin verilenler listesi ve ret listesi - Algılanan kategorileri belirtin.
Görev girişleri | Görev çıkışları |
---|---|
Object Detector API, aşağıdaki veri türlerinden birinin girişini kabul eder:
|
Object Detector API, algılanan nesneler için aşağıdaki sonuçları verir:
|
Yapılandırma seçenekleri
Bu görev aşağıdaki yapılandırma seçeneklerine sahiptir:
Seçenek Adı | Açıklama | Değer Aralığı | Varsayılan Değer |
---|---|---|---|
running_mode |
Görevin çalışma modunu ayarlar. Üç mod vardır: RESİM: Tek resimli girişler için mod. VİDEO: Bir videonun kodu çözülmüş karelerine yönelik mod. LIVE_STREAM: Kamera gibi giriş verilerini içeren bir canlı yayın modu. Bu modda, sonuçları eşzamansız olarak almak üzere bir işleyici ayarlamak için resultListener çağrılmalıdır. |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
display_names |
Varsa görev modelinin meta verilerinde sağlanan görünen adlar için kullanılacak etiketlerin dilini ayarlar. İngilizce için varsayılan değer en şeklindedir. TensorFlow Lite Metadata Writer API'yi kullanarak özel modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz
|
Yerel ayar kodu | en |
max_results |
İsteğe bağlı olarak döndürülecek en yüksek puanlı algılama sonuçlarının isteğe bağlı maksimum sayısını ayarlar. | Pozitif sayılar | -1 (tüm sonuçlar döndürülür) |
score_threshold |
Model meta verilerinde belirtilen eşiği (varsa) geçersiz kılan tahmin puanı eşiğini ayarlar. Bu değerin altındaki sonuçlar reddedilir. | Tüm kayan | Belirlenmedi |
category_allowlist |
İsteğe bağlı olarak izin verilen kategori adları listesini ayarlar. Boş değilse kategori adı bu grupta yer almayan algılama sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yoksayılır.
Bu seçenek, category_denylist ile birlikte kullanılamaz ve her iki sonucun da kullanılması hataya neden olur. |
Herhangi bir dize | Belirlenmedi |
category_denylist |
İzin verilmeyen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse kategori adı bu kümede yer alan algılama sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yoksayılır. Bu seçenek category_allowlist ile birlikte kullanılamaz ve her iki sonucun da kullanılması hataya neden olur. |
Herhangi bir dize | Belirlenmedi |
Modeller
Object Detector API için bir nesne algılama modelinin indirilmesi ve proje dizininizde depolanması gerekir. Hâlihazırda bir modeliniz yoksa önerilen varsayılan modelle başlayın. Bu bölümde sunulan diğer modeller, gecikme ile doğruluk arasında bir fark vardır.
EfficientDet-Lite0 modeli (Önerilen)
EfficientDet-Lite0 modeli, 320x320 giriş boyutuna ve BiFPN özellik ağına sahip bir EfficientNet-Lite0 omurgasını kullanır. Model, 1,5 milyon nesne örneği ve 80 nesne etiketi içeren büyük ölçekli bir nesne algılama veri kümesi olan COCO veri kümesi ile eğitildi. Desteklenen etiketlerin tam listesini inceleyin. EfficientDet-Lite0; int8, float16 veyafloat32 olarak mevcuttur. Bu model, gecikme ve doğruluk arasında denge sağladığı için önerilir. Hem doğruluk oranı yüksek hem de birçok kullanım alanı için yeterince hafiftir.
Model adı | Giriş şekli | Nicelleştirme türü | Sürümler |
---|---|---|---|
EfficientDet-Lite0 (int8) | 320 x 320 | int8 | En son |
EfficientDet-Lite0 (kayan 16) | 320 x 320 | kayan nokta 16 | En son |
EfficientDet-Lite0 (kayan 32) | 320 x 320 | Yok (float32) | En son |
EfficientDet-Lite2 modeli
EfficientDet-Lite2 modeli, 448x448 giriş boyutuna ve BiFPN özellik ağına sahip bir EfficientNet-Lite2 omurgasını kullanır. Model, 1,5 milyon nesne örneği ve 80 nesne etiketi içeren büyük ölçekli bir nesne algılama veri kümesi olan COCO veri kümesi ile eğitildi. Desteklenen etiketlerin tam listesini inceleyin. EfficientDet-Lite2; int8, float16 veya float32 modeli olarak sunulur. Bu model genellikle EfficientDet-Lite0'dan daha doğru sonuç verir, ancak aynı zamanda daha yavaştır ve daha fazla bellek kullanır. Bu model, doğruluğun hız ve boyuta göre daha önemli olduğu kullanım alanları için uygundur.
Model adı | Giriş şekli | Nicelleştirme türü | Sürümler |
---|---|---|---|
EfficientDet-Lite2 (int8) | 448 x 448 | int8 | En son |
EfficientDet-Lite2 (kayan 16) | 448 x 448 | kayan nokta 16 | En son |
EfficientDet-Lite2 (kayan noktalı 32) | 448 x 448 | Yok (float32) | En son |
SSD MobileNetV2 modeli
SSD MobileNetV2 modeli, 256x256 giriş boyutuna ve SSD özellik ağına sahip MobileNetV2 omurgasını kullanır. Model, 1,5 milyon nesne örneği ve 80 nesne etiketi içeren büyük ölçekli bir nesne algılama veri kümesi olan COCO veri kümesi ile eğitildi. Desteklenen etiketlerin tam listesini inceleyin. SSD MobileNetV2, int8 ve float 32 modeli olarak sunulur. Bu model, EfficientDet-Lite0'dan daha hızlı ve hafiftir ancak genellikle daha az doğrudur. Bu model, bir miktar doğruluktan ödün veren hızlı ve hafif bir model gerektiren kullanım alanları için uygundur.
Model adı | Giriş şekli | Nicelleştirme türü | Sürümler |
---|---|---|---|
SSDMobileNet-V2 (int8) | 256 x 256 | int8 | En son |
SSDMobileNet-V2 (float 32) | 256 x 256 | Yok (float32) | En son |
Model gereksinimleri ve meta veriler
Bu bölümde, bu görevle kullanmak üzere bir model oluşturmaya karar verirseniz özel model gereksinimleri açıklanmaktadır. Özel modeller TensorFlow Lite biçiminde olmalı ve modelin işletim parametrelerini açıklayan meta verileri içermelidir.
Tasarım gereksinimleri
Giriş | Şekil | Açıklama |
---|---|---|
Resim girin | Float32 tensörü şekil tensörü[1, yükseklik, genişlik, 3] | Normalleştirilmiş giriş görüntüsü. |
Çıkış | Şekil | Açıklama |
---|---|---|
detection_boxes |
Şeklin float32 tensörü [1, num_boxes, 4] | Algılanan her nesnenin kutu konumu. |
detection_classes |
Şeklin Float32 tensörü [1, num_boxes] | Algılanan her nesne için sınıf adlarının dizinleri. |
detection_scores |
kayan32 şekil tensörü [1, num_boxes] | Algılanan her nesne için tahmin puanları. |
num_boxes |
1 boyutundaki Float32 tensörü | Algılanan kutuların sayısı. |
Meta veri gereksinimleri
Parametre | Açıklama | Açıklama |
---|---|---|
input_norm_mean |
Giriş tensör normalleştirmesinde kullanılan ortalama değer. | Normalleştirilmiş giriş görüntüsü. |
input_norm_std |
Giriş tensörü normalleştirmesinde kullanılan alan normu. | Algılanan her nesnenin kutu konumu. |
label_file_paths |
Kategori tensörü etiket dosyalarına giden yollar. Modelde herhangi bir etiket dosyası yoksa boş bir liste iletin. | Algılanan her nesne için sınıf adlarının dizinleri. |
score_calibration_md |
Sınıflandırma tensöründeki puan kalibrasyon işlemi hakkında bilgi. Modelde puan kalibrasyonu kullanılmıyorsa bu parametre gerekli değildir. |
Algılanan her nesne için tahmin puanları. |
num_boxes |
1 boyutundaki Float32 tensörü | Algılanan kutuların sayısı. |
Görev karşılaştırmaları
Yukarıda, önceden eğitilmiş modellerle ilgili görev karşılaştırmaları aşağıda verilmiştir. Gecikme sonucu, CPU / GPU kullanılarak Pixel 6'da elde edilen ortalama gecikmedir.
Model Adı | CPU Gecikmesi | GPU Gecikmesi |
---|---|---|
EfficientDet-Lite0 float32 modeli | 61,30 ms. | 27,83 ms. |
EfficientDet-Lite0 float16 modeli | 53,97 ms. | 27,97 ms. |
EfficientDet-Lite0 int8 modeli | 29,31 ms. | - |
EfficientDet-Lite2 float32 modeli | 197,98 ms. | 41,15 ms. |
EfficientDet-Lite2 float16 modeli | 198,77 ms. | 47,31 ms. |
EfficientDet-Lite2 int8 modeli | 70,91 ms. | - |
SSD MobileNetV2 float32 modeli | 36,30 ms. | 24,01 ms. |
SSD MobileNetV2 float16 modeli | 37,35 ms. | 28,16 ms. |