Przewodnik po zadaniach wykrywania obiektów

Zadanie wykrywania obiektów MediaPipe umożliwia wykrywanie obecności i lokalizacji wielu klas obiektów w obrazach lub filmach. Na przykład detektor obiektów może zlokalizować psy na obrazie. To zadanie działa na danych obrazu z modelem systemów uczących się, a jako dane wejściowe akceptuje dane statyczne lub ciągły strumień wideo i generuje listę wyników wykrywania. Każdy wynik wykrywania reprezentuje obiekt widoczny na obrazie lub filmie.

Wypróbuj!

Rozpocznij

Zacznij od wykonania tego zadania, postępując zgodnie z instrukcjami podanymi w jednym z przewodników po implementacji w przypadku platformy, na której pracujesz:

Z tych przewodników dla poszczególnych platform dowiesz się, jak wykonać podstawowe zadania opisane w tym zadaniu. Znajdziesz w nich zalecany model i przykładowy kod z zalecanymi opcjami konfiguracji.

Szczegóły działania

W tej sekcji opisujemy możliwości, dane wejściowe i wyjściowe związane z tym zadaniem.

Funkcje

  • Przetwarzanie obrazu wejściowego – przetwarzanie obejmuje obrót obrazu, zmianę jego rozmiaru, normalizację i konwersję przestrzeni kolorów.
  • Język mapy etykiety – ustaw język wyświetlanych nazw.
  • Próg wyniku – filtrowanie wyników na podstawie wyników prognozy.
  • Wykrywanie Top-K – filtruje wyniki wykrywania liczb.
  • Lista dozwolonych i odrzuconych etykiet – pozwala określić wykryte kategorie.
Dane wejściowe zadań Wyniki działania
Interfejs Object Detector API akceptuje dane wejściowe jednego z tych typów danych:
  • nieruchome obrazy;
  • Zdekodowane klatki wideo
  • Kanał z obrazem na żywo
W przypadku wykrytych obiektów interfejs Object Detector API zwraca te wyniki:
  • 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. Są 3 tryby:

IMAGE: tryb wprowadzania pojedynczych obrazów.

WIDEO: tryb dekodowanych klatek filmu.

TRANSMISJA NA ŻYWO: tryb transmisji danych wejściowych na żywo, np. z kamery. W tym trybie należy wywołać metodę resultListener, aby skonfigurować odbiornik, który będzie odbierał wyniki asynchronicznie.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
display_names Ustawia język etykiet, które mają być używane w przypadku nazw wyświetlanych w metadanych modelu zadania (jeśli są dostępne). Wartość domyślna w języku angielskim to en. Za pomocą TensorFlow Lite MetadataWriter API możesz dodawać zlokalizowane etykiety do metadanych modelu niestandardowego. Kod języka en
max_results Określa opcjonalną maksymalną liczbę wyników wykrywania o najwyższych wynikach do zwrócenia. 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 istnieją). Wyniki poniżej tej wartości zostały odrzucone. Dowolna liczba zmiennoprzecinkowa Nie ustawiono
category_allowlist Ustawia opcjonalną listę dozwolonych nazw kategorii. Jeśli pole nie jest puste, wyniki wykrywania, których nazwy kategorii nie ma w tym zbiorze, zostaną odfiltrowane. Zduplikowane i nieznane nazwy kategorii są ignorowane. Ta opcja wzajemnie się wyklucza, category_denylist i ich użycie kończy się błędem. Dowolne ciągi Nie ustawiono
category_denylist Ustawia opcjonalną listę niedozwolonych nazw kategorii. Jeśli pole nie jest puste, wyniki wykrywania, których nazwa kategorii znajduje się w tym zbiorze, zostaną odfiltrowane. Zduplikowane i nieznane nazwy kategorii są ignorowane. Ta opcja wzajemnie się wyklucza z category_allowlist, a korzystanie z obu daje błąd. Dowolne ciągi Nie ustawiono

Modele

Interfejs Object Detector API wymaga pobrania modelu wykrywania obiektów i zapisania go w katalogu projektu. Jeśli nie masz jeszcze modelu, zacznij od domyślnego, zalecanego modelu. Inne modele przedstawione w tej sekcji różnią się opóźnieniami i dokładnością.

Model EfficientDet-Lite0 korzysta z sieci szkieletowej EfficientNet-Lite0 o rozmiarze wejściowym 320 x 320 oraz sieci cech BiFPN. Model został wytrenowany z użyciem zbioru danych COCO, dużego zbioru danych do wykrywania obiektów, który zawiera 1,5 miliona instancji obiektów i 80 etykiet obiektów. Zobacz pełną listę obsługiwanych etykiet. Format EfficientDet-Lite0 jest dostępny w formacie int8, float16 lub float32. Ten model jest zalecany, ponieważ zapewnia równowagę między czasem oczekiwania a dokładnością. Jest precyzyjne i wystarczająco lekkie w wielu przypadkach.

Nazwa modelu Wprowadź kształt Typ kwantyzacji Wersje
EfficientDet-Lite0 (int8) 320 x 320 int8 Najnowsze
EfficientDet-Lite0 (liczba zmiennoprzecinkowa 16) 320 x 320 liczba zmiennoprzecinkowa 16 Najnowsze
EfficientDet-Lite0 (liczba zmiennoprzecinkowa 32) 320 x 320 Brak (float32) Najnowsze

Model EfficientDet-Lite2

Model EfficientDet-Lite2 korzysta z sieci szkieletowej EfficientNet-Lite2 o rozmiarze wejściowym 448 x 448 oraz sieci cech BiFPN. Model został wytrenowany z użyciem zbioru danych COCO, dużego zbioru danych do wykrywania obiektów, który zawiera 1,5 miliona instancji obiektów i 80 etykiet obiektów. Zobacz pełną listę obsługiwanych etykiet. Model EfficientDet-Lite2 jest dostępny jako model int8, float16 lub float32. Ten model jest zwykle dokładniejszy niż EfficientDet-Lite0, ale jest też wolniejszy i zużywa więcej pamięci. Ten model jest odpowiedni w przypadkach użycia, w których dokładność jest ważniejsza dla szybkości i rozmiaru.

Nazwa modelu Wprowadź kształt Typ kwantyzacji Wersje
EfficientDet-Lite2 (int8) 448 x 448 int8 Najnowsze
EfficientDet-Lite2 (liczba zmiennoprzecinkowa 16) 448 x 448 liczba zmiennoprzecinkowa 16 Najnowsze
EfficientDet-Lite2 (liczba zmiennoprzecinkowa 32) 448 x 448 Brak (float32) Najnowsze

Model SSD MobileNetV2

Model SSD MobileNetV2 używa sieci szkieletowej MobileNetV2 z siecią wejściową 256 x 256 i siecią SSD. Model został wytrenowany z użyciem zbioru danych COCO, dużego zbioru danych do wykrywania obiektów, który zawiera 1,5 miliona instancji obiektów i 80 etykiet obiektów. Zobacz pełną listę obsługiwanych etykiet. Dysk SSD MobileNetV2 jest dostępny jako model typu int8 i zmiennoprzecinkowy 32. Ten model jest szybszy i lżejszy niż EfficientDet-Lite0, ale ogólnie jest mniej dokładny. Ten model jest odpowiedni w przypadkach użycia, które wymagają szybkiego, lekkiego modelu, który wymaga pewnej dokładności.

Nazwa modelu Wprowadź kształt Typ kwantyzacji Wersje
SSDMobileNet-V2 (int8) 256 x 256 int8 Najnowsze
SSDMobileNet-V2 (liczba zmiennoprzecinkowa 32) 256 x 256 Brak (float32) Najnowsze

Wymagania i metadane modelu

Jeśli chcesz utworzyć model do użycia w ramach tego zadania, w tej sekcji opisano wymagania dotyczące modeli niestandardowych. Modele niestandardowe muszą być w formacie TensorFlow Lite i muszą zawierać metadane opisujące parametry operacyjne modelu.

Wymagania dotyczące projektu

Dane wejściowe Kształt Opis
Obraz wejściowy Tensor kształtu Float32[1, wysokość, szerokość, 3] Znormalizowany obraz wejściowy.
Wyniki Kształt Opis
detection_boxes Tensor kształtu Float32 [1, liczba_boxów, 4] Lokalizacja pola każdego wykrytego obiektu.
detection_classes Tensor kształtu Float32 [1, liczba_boxów] Indeksy nazw klas dla każdego wykrytego obiektu.
detection_scores float32 tensor kształtu [1, liczba_boxów] Wyniki prognozy dla każdego wykrytego obiektu.
num_boxes Tensor Float32 rozmiaru 1 Liczba wykrytych pól.

Wymagania dotyczące metadanych

Parametr Opis Opis
input_norm_mean Średnia wartość używana w normalizacji tensora wejściowego. Znormalizowany obraz wejściowy.
input_norm_std Norma pola używana w normalizacji tensora wejściowego. Lokalizacja pola każdego wykrytego obiektu.
label_file_paths Ścieżki do plików etykiet tensorów kategorii. Jeśli model nie ma żadnych plików etykiet, przekaż pustą listę. Indeksy nazw klas dla każdego wykrytego obiektu.
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 prognozy dla każdego wykrytego obiektu.
num_boxes Tensor Float32 rozmiaru 1 Liczba wykrytych pól.

Testy porównawcze działań

Oto porównania zadań dla powyższych wytrenowanych modeli. Wynik opóźnienia to średnie opóźnienie na Pixelu 6 z wykorzystaniem procesora / GPU.

Nazwa modelu Czas oczekiwania procesora Opóźnienie GPU
Model EfficientDet-Lite0 float32 61,30 ms 27,83 ms
Model EfficientDet-Lite0 float16 53,97 ms 27,97 ms
Model Int8 EfficientDet-Lite0 29,31 ms -
Model EfficientDet-Lite2 float32 197,98 ms 41,15 ms
Model EfficientDet-Lite2 float16 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