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.
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:
- Android – przykładowy kod – Przewodnik
- Python – przykładowy kod – Przewodnik
- Sieć – przykładowy kod – Przewodnik
- iOS – przykładowy kod – Przewodnik
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:
|
W przypadku wykrytych obiektów interfejs Object Detector API zwraca te wyniki:
|
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 (zalecany)
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 |