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.
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:
- Android – przykład kodu – przewodnik
- Python – przykład kodu – przewodnik
- Web – przykład kodu – przewodnik
- iOS – przykład kodu – przewodnik
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:
|
Interfejs Object Detector API zwraca te wyniki dla wykrytych obiektów:
|
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 (zalecany)
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 |