Nesne algılama görev kılavuzu

Doğru etiketlenmiş sınırlayıcı kutularla vurgulanmış bir kedi ve köpek

MediaPipe Nesne Algılama görevi, görüntü veya videolardaki birden çok nesne sınıfının varlığını ve konumunu algılamanıza olanak tanır. Örneğin, nesne algılayıcı bir resimdeki köpekleri bulabilir. Bu görev, makine öğrenimi (ML) modeli ile görüntü verilerinde çalışır. Giriş olarak statik verileri veya sürekli video akışını kabul eder ve algılama sonuçlarının listesini döndürür. Her algılama sonucu, görüntü veya videoda görünen bir nesneyi temsil eder.

Deneyin.

Başlayın

Çalıştığınız platformla ilgili aşağıdaki uygulama kılavuzlarından birini uygulayarak bu görevi kullanmaya başlayın:

Bu platforma özel kılavuzlar, önerilen bir model ve önerilen yapılandırma seçeneklerini içeren kod örneği de dahil olmak üzere bu görevin temel uygulama sürecinde size yol gösterir.

Görev ayrıntıları

Bu bölümde, bu görevin özellikleri, girişleri ve çıkışları açıklanmaktadır.

Özellikler

  • Giriş resmi işleme: İşleme, resim döndürme, yeniden boyutlandırma, normalleştirme ve renk alanı dönüştürme işlemlerini içerir.
  • Etiket haritası yerel ayarı: Görünen adlar için kullanılan dili ayarlayın.
  • Skor eşiği: Sonuçları tahmin puanlarına göre filtreleyin.
  • En iyi k algılama: Sayı algılama sonuçlarını filtreleyin.
  • İzin verilenler ve engellenenler listesini etiketleyin: Algılanan kategorileri belirtin.
Görev girişleri Görev çıkışları
Nesne algılama API'si aşağıdaki veri türlerinden birini kabul eder:
  • Sabit resimler
  • Kodu çözülmüş video kareleri
  • Canlı video feed'i
Nesne Algılama API'si, algılanan nesneler için aşağıdaki sonuçları döndürür:
  • Nesnenin kategorisi
  • Olasılık puanı
  • Sınırlayıcı kutu koordinatları

Yapılandırma seçenekleri

Bu görev için aşağıdaki yapılandırma seçenekleri vardır:

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 resim girişleri için kullanılan mod.

VIDEO: Bir videonun kod çözülmüş karelerinin modu.

LIVE_STREAM: Kameradan alınan giriş verilerinin canlı yayını için kullanılan mod. Bu modda, sonuçları asenkron olarak alacak bir dinleyici oluşturmak için resultListener çağrılmalıdır.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names Görevin modelinin meta verilerinde sağlanan görünen adlar için kullanılacak etiketlerin dilini belirler (varsa). Varsayılan değer, İngilizce için en'tir. TensorFlow Lite Meta Veri Yazıcı API'yi kullanarak özel bir modelin meta verilerine yerelleştirilmiş etiketler ekleyebilirsiniz Yer kodu en
max_results Döndürülecek isteğe bağlı maksimum puana sahip algılama sonucu sayısını ayarlar. Tüm pozitif sayılar -1 (tüm sonuçlar döndürülür)
score_threshold Model meta verilerinde (varsa) sağlanan eşiği geçersiz kılan tahmin puanı eşiğini belirler. Bu değerin altındaki sonuçlar reddedilir. Herhangi bir kayan nokta Ayarlanmadı
category_allowlist İzin verilen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse kategori adı bu kümede bulunmayan algılama sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yok sayılır. Bu seçenek, category_denylist ile birbirini hariç tutar ve her ikisinin de kullanılması hatayla sonuçlanır. Herhangi bir dize Ayarlanmadı
category_denylist İzin verilmeyen kategori adlarının isteğe bağlı listesini ayarlar. Boş değilse kategori adı bu grupta bulunan algılama sonuçları filtrelenir. Yinelenen veya bilinmeyen kategori adları yok sayılır. Bu seçenek, category_allowlist ile birlikte kullanılamaz. İkisinin birlikte kullanılması hataya neden olur. Herhangi bir dize Ayarlanmadı

Modeller

Nesne Algılama API'si, bir nesne algılama modelinin indirilip proje dizininizde depolanmasını gerektirir. Henüz bir modeliniz yoksa varsayılan, önerilen modelle başlayın. Bu bölümde sunulan diğer modeller, gecikme ve doğruluk arasında bir denge kurar.

EfficientDet-Lite0 modeli, 320x320 giriş boyutu ve BiFPN özellik ağı içeren bir EfficientNet-Lite0 ana hattı 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ümesiyle eğitildi. Desteklenen etiketlerin tam listesini inceleyin. EfficientDet-Lite0, int8, float16 veya float32 olarak kullanılabilir. Bu model, gecikme ve doğruluk arasında denge sağladığı için önerilir. Hem doğru hem de birçok kullanım alanı için yeterince hafiftir.

Model adı Giriş şekli Kesirli sayılaştırma türü Sürümler
EfficientDet-Lite0 (int8) 320 x 320 int8 En son
EfficientDet-Lite0 (kayan nokta 16) 320 x 320 float 16 En son
EfficientDet-Lite0 (kayan nokta 32) 320 x 320 Yok (float32) En son

EfficientDet-Lite2 modeli

EfficientDet-Lite2 modeli, 448x448 giriş boyutu ve BiFPN özellik ağı içeren bir EfficientNet-Lite2 ana hattı 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ümesiyle eğitildi. Desteklenen etiketlerin tam listesini inceleyin. EfficientDet-Lite2, int8, float16 veya float32 modeli olarak kullanılabilir. Bu model genellikle EfficientDet-Lite0'dan daha doğrudur ancak daha yavaş ve daha fazla bellek kullanır. Bu model, doğruluğun hız ve boyuttan daha önemli olduğu kullanım alanları için uygundur.

Model adı Giriş şekli Kesirli sayılaştırma türü Sürümler
EfficientDet-Lite2 (int8) 448 x 448 int8 En son
EfficientDet-Lite2 (kayan nokta 16) 448 x 448 float 16 En son
EfficientDet-Lite2 (kayan nokta 32) 448 x 448 Yok (float32) En son

SSD MobileNetV2 modeli

SSD MobileNetV2 modeli, 256x256 giriş boyutu ve SSD özellik ağı içeren bir MobileNetV2 ana hattı 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ümesiyle eğitildi. Desteklenen etiketlerin tam listesini inceleyin. SSD MobileNetV2, int8 ve float 32 modeli olarak kullanılabilir. Bu model, EfficientDet-Lite0'dan daha hızlı ve daha hafiftir ancak genellikle daha az doğrudur. Bu model, doğruluktan ödün vererek hızlı ve hafif bir model gerektiren kullanım alanları için uygundur.

Model adı Giriş şekli Kesirli sayılaştırma türü Sürümler
SSDMobileNet-V2 (int8) 256 x 256 int8 En son
SSDMobileNet-V2 (32 bit kayan nokta) 256 x 256 Yok (float32) En son

Model gereksinimleri ve meta veriler

Bu bölümde, bu görevle birlikte kullanılacak bir model oluşturmaya karar verirseniz özel modellerle ilgili şartlar açıklanmaktadır. Özel modeller TensorFlow Lite biçiminde olmalı ve modelin çalışma parametrelerini açıklayan metadata içermelidir.

Tasarım şartları

Giriş Şekil Açıklama
Giriş resmi [1, yükseklik, genişlik, 3] şeklindeki Float32 tenzoru Normalleştirilmiş giriş resmi.
Çıkış Şekil Açıklama
detection_boxes [1, num_boxes, 4] şeklindeki Float32 tenzoru Algılanan her nesnenin kutusu konumu.
detection_classes [1, num_boxes] şeklindeki Float32 tensörü Algılanan her nesnenin sınıf adlarının dizinleri.
detection_scores [1, num_boxes] şeklindeki float32 tenör Algılanan her nesne için tahmin puanları.
num_boxes 1 boyutlu Float32 tenzor Tespit edilen kutuların sayısı.

Meta veri şartları

Parametre Açıklama Açıklama
input_norm_mean Giriş tensör normalleştirmesinde kullanılan ortalama değer. Normalleştirilmiş giriş resmi.
input_norm_std Giriş tensör normalleştirmesinde kullanılan alan normu. Algılanan her nesnenin kutusu konumu.
label_file_paths Kategori tensör etiketi dosyalarının yolları. Modelde etiket dosyası yoksa boş bir liste iletin. Algılanan her nesnenin sınıf adlarının dizinleri.
score_calibration_md Sınıflandırma tenzorundaki puan kalibrasyon işlemiyle ilgili bilgiler. Model puan
kalibrasyonunu kullanmıyorsa bu parametre gerekli değildir.
Algılanan her nesne için tahmin puanları.
num_boxes 1 boyutlu Float32 tenzor Tespit edilen kutuların sayısı.

Görev karşılaştırmaları

Yukarıdaki önceden eğitilmiş modellerin görev karşılaştırmaları aşağıda verilmiştir. Gecikme sonucu, CPU / GPU kullanan Pixel 6'taki 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