Przewodnik po zadaniach wykrywania obiektów

Kot i pies wyróżnione za pomocą ramek ograniczających z prawidłowo przypisanymi etykietami

Zadanie MediaPipe Object Detector umożliwia wykrywanie obecności i lokalizacji wielu klas obiektów na obrazach lub filmach. Na przykład detektor obiektów może wykrywać psy na obrazie. To zadanie działa na danych obrazowych z modelem systemów uczących się (ML). Jako dane wejściowe akceptuje dane statyczne lub ciągły strumień wideo, a jako dane wyjściowe – listę wyników wykrywania. Każdy wynik wykrywania reprezentuje obiekt, który pojawia się na obrazie lub w filmie.

Wypróbuj to!

Rozpocznij

Aby zacząć korzystać z tego zadania, postępuj zgodnie z jednym z tych przewodników dotyczących wdrażania na platformie, na której pracujesz:

Te przewodniki dotyczące poszczególnych platform zawierają podstawowe informacje o wdrażaniu tej funkcji, w tym zalecany model i przykład kodu z zalecanymi opcjami konfiguracji.

Szczegóły działania

W tej sekcji opisano możliwości, dane wejściowe i dane wyjściowe tego zadania.

Funkcje

  • Przetwarzanie wejściowego obrazu – przetwarzanie obejmuje obrót, zmianę rozmiaru, normalizację i konwersję przestrzeni barw.
  • Etykieta mapy – lokalizacja – ustaw język używany do wyświetlania nazw.
  • Progień wyniku – filtrowanie wyników według progu wyniku prognozy.
  • Wykrywanie top-k – filtrowanie wyników wykrywania liczby.
  • Lista dozwolonych i odrzuconych etykiet – określ wykrywane kategorie.
Dane wejściowe zadania Dane wyjściowe
Interfejs Object Detector API akceptuje dane wejściowe jednego z tych typów:
  • obrazy nieruchome,
  • Dekodowane klatki wideo
  • Transmisja na żywo
Interfejs Object Detector API zwraca te wyniki dla wykrytych obiektów:
  • Kategoria obiektu
  • Wynik prawdopodobieństwa
  • współrzędne ramki ograniczającej,

Opcje konfiguracji

To zadanie ma te opcje konfiguracji:

Nazwa opcji Opis Zakres wartości Wartość domyślna
running_mode Ustawia tryb działania zadania. Dostępne są 3 tryby:

OBRAZ: tryb dla pojedynczych obrazów wejściowych.

FILM: tryb dekodowanych klatek filmu.

LIVE_STREAM: tryb transmisji na żywo danych wejściowych, takich jak dane z kamery. W tym trybie należy wywołać metodę resultListener, aby skonfigurować odbiornik, który będzie asynchronicznie odbierał wyniki.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names Określa język etykiet, których należy używać do wyświetlanych nazw podanych w metadanych modelu zadania (jeśli są dostępne). Wartość domyślna to en w przypadku języka angielskiego. Możesz dodawać zlokalizowane etykiety do metadanych modelu niestandardowego, korzystając z interfejsu TensorFlow Lite Metadata Writer API. Kod języka en
max_results Ustawia opcjonalną maksymalną liczbę wyników wykrywania o najwyższym wyniku, które mają zostać zwrócone. dowolne liczby dodatnie, -1 (zwracane są wszystkie wyniki).
score_threshold Ustawia próg wyniku prognozy, który zastępuje próg podany w metadanych modelu (jeśli takie istnieją). Wyniki poniżej tej wartości są odrzucane. Dowolna liczba zmiennych typu float Nie ustawiono
category_allowlist Ustawia opcjonalną listę dozwolonych nazw kategorii. Jeśli wyniki wykrywania nie są puste, a nazwa kategorii nie znajduje się w tym zbiorze, zostaną odfiltrowane. Powtarzające się lub nieznane nazwy kategorii są ignorowane. Ta opcja jest wzajemnie wykluczająca się z opcją category_denylist. Użycie obu spowoduje błąd. dowolne ciągi znaków; Nie ustawiono
category_denylist Ustawia opcjonalną listę nazw kategorii, które są niedozwolone. Jeśli nie jest pusty, wyniki wykrywania, których nazwa kategorii znajduje się w tym zbiorze, zostaną odfiltrowane. Powtarzające się lub nieznane nazwy kategorii są ignorowane. Ta opcja jest wzajemnie wykluczająca się z opcją category_allowlist, a użycie obu spowoduje błąd. dowolne ciągi znaków; Nie ustawiono

Modele

Interfejs API Object Detector wymaga, aby model wykrywania obiektów został pobrany i zarchiwizowany w katalogu projektu. Jeśli nie masz jeszcze modelu, zacznij od domyślnego, zalecanego modelu. Pozostałe modele przedstawione w tej sekcji stanowią kompromis między opóźnieniem a dokładnością.

Model EfficientDet-Lite0 korzysta z backbone'u EfficientNet-Lite0 o rozmiarze wejścia 320 x 320 i z sieci cech BiFPN. Model został wytrenowany na zbiorze COCO, czyli dużym zbiorze danych do wykrywania obiektów, który zawiera 1,5 mln instancji obiektów i 80 etykietek obiektów. Zobacz pełną listę obsługiwanych etykiet. Model EfficientDet-Lite0 jest dostępny w wersji int8, float16 lub float32. Ten model jest zalecany, ponieważ zapewnia równowagę między opóźnieniem a dokładnością. Jest on dokładny i wystarczająco lekki, aby sprawdzać się w wielu zastosowaniach.

Nazwa modelu Kształt wejściowy Typ kwantowania Wersje
EfficientDet-Lite0 (int8) 320 x 320 int8 Najnowsze
EfficientDet-Lite0 (float 16) 320 x 320 float 16 Najnowsze
EfficientDet-Lite0 (float 32) 320 x 320 Brak (float32) Najnowsze

model EfficientDet-Lite2.

Model EfficientDet-Lite2 korzysta z backbone'u EfficientNet-Lite2 o rozmiarze wejścia 448 x 448 i z sieci cech BiFPN. Model został wytrenowany na zbiorze COCO, czyli dużym zbiorze danych do wykrywania obiektów, który zawiera 1,5 mln instancji obiektów i 80 etykietek obiektów. Zobacz pełną listę obsługiwanych etykiet. Model EfficientDet-Lite2 jest dostępny jako model int8, float16 lub float32. Ten model jest zazwyczaj dokładniejszy niż EfficientDet-Lite0, ale jest też wolniejszy i bardziej obciążający pamięć. Ten model jest odpowiedni w przypadkach, gdy dokładność ma większy priorytet niż szybkość i rozmiar.

Nazwa modelu Kształt wejściowy Typ kwantowania Wersje
EfficientDet-Lite2 (int8) 448 x 448 int8 Najnowsze
EfficientDet-Lite2 (float 16) 448 x 448 float 16 Najnowsze
EfficientDet-Lite2 (float 32) 448 x 448 Brak (float32) Najnowsze

Model SSD MobileNetV2

Model SSD MobileNetV2 korzysta z backbone’u MobileNetV2 o rozmiarze wejścia 256 × 256 i z sieci cech SSD. Model został wytrenowany na zbiorze COCO, czyli dużym zbiorze danych do wykrywania obiektów, który zawiera 1,5 mln instancji obiektów i 80 etykietek obiektów. Zobacz pełną listę obsługiwanych etykiet. SSD MobileNetV2 jest dostępny jako model int8 i float 32. Ten model jest szybszy i lżejszy niż EfficientDet-Lite0, ale jest też ogólnie mniej dokładny. Ten model jest odpowiedni do zastosowań wymagających szybkiego, lekkiego modelu, który nie jest tak dokładny.

Nazwa modelu Kształt wejściowy Typ kwantowania Wersje
SSDMobileNet-V2 (int8) 256 x 256 int8 Najnowsze
SSDMobileNet-V2 (float 32) 256 x 256 Brak (float32) Najnowsze

Wymagania dotyczące modelu i metadanych

W tej sekcji opisano wymagania dotyczące modeli niestandardowych, jeśli zdecydujesz się utworzyć model do użycia w tym zadaniu. Modele niestandardowe muszą być w formacie TensorFlow Lite i zawierać metadata opisujące parametry operacyjne modelu.

Wymagania dotyczące projektu

Dane wejściowe Kształt Opis
Obraz bazowy Tensor Float32 o kształcie [1, height, width, 3] Znormalizowany obraz wejściowy.
Wyniki Kształt Opis
detection_boxes Tensor float32 o kształcie [1, num_boxes, 4] Lokalizacja pudełka każdego wykrytego obiektu.
detection_classes Tensor Float32 o kształcie [1, num_boxes] Indeksy nazw klas poszczególnych wykrytych obiektów.
detection_scores tensor float32 o kształcie [1, num_boxes] Wyniki przewidywania dla każdego wykrytego obiektu.
num_boxes tensor Float32 o wymiarach 1 Liczba wykrytych pudełek.

Wymagania dotyczące metadanych

Parametr Opis Opis
input_norm_mean Średnia wartość użyta w normalizacji wejściowego tensora. Znormalizowany obraz wejściowy.
input_norm_std Norma pola używana w normalizacji wejściowego tensora. Lokalizacja pudełka każdego wykrytego obiektu.
label_file_paths Ścieżki do plików etykiet tensora kategorii. Jeśli model nie zawiera żadnych plików etykiet, prześlij pustą listę. Indeksy nazw klas poszczególnych wykrytych obiektów.
score_calibration_md Informacje o operacji kalibracji wyniku w tensorze klasyfikacji. Ten parametr nie jest wymagany, jeśli model nie korzysta z kalibracji wyników
.
Wyniki przewidywania dla każdego wykrytego obiektu.
num_boxes tensor Float32 o wymiarach 1 Liczba wykrytych pudełek.

Porównania zadań

Oto punkty odniesienia zadań dla powyższych wytrenowanych modeli. Wynik opóźnienia to średnie opóźnienie na Pixelu 6 z wykorzystaniem procesora CPU lub GPU.

Nazwa modelu Czas oczekiwania procesora Opóźnienie GPU
Model EfficientDet-Lite0 oparty na liczbach zmiennoprzecinkowych 32-bitowych 61,30 ms 27,83 ms
model EfficientDet-Lite0 float16, 53,97 ms 27,97 ms
Model EfficientDet-Lite0 int8 29,31 ms -
Model EfficientDet-Lite2 o typie float32 197,98 ms 41,15 ms
Model EfficientDet-Lite2 oparty na liczbach zmiennoprzecinkowych 16-bitowych 198,77 ms 47,31 ms
Model EfficientDet-Lite2 int8 70,91 ms -
Model SSD MobileNetV2 float32 36,30 ms 24,01 ms
Model SSD MobileNetV2 float16 37,35 ms 28,16 ms