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.
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:
- Android - Kod örneği - Kılavuz
- Python - Kod örneği - Kılavuz
- Web - Kod örneği - Kılavuz
- iOS - Kod örneği - Rehber
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:
|
Nesne Algılama API'si, algılanan nesneler için aşağıdaki sonuçları döndürür:
|
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 (Önerilen)
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 |