Klasyfikacja wideo

Klasyfikacja wideo to zadanie uczenia maszynowego polegające na określeniu, co reprezentuje wideo. Model klasyfikacji wideo jest szkolony na zestawie danych wideo, który zawiera zestaw unikalnych klas, takich jak różne akcje lub ruchy. Model odbiera klatki wideo jako dane wejściowe i wyprowadza prawdopodobieństwo, że każda klasa jest reprezentowana w wideo.

Modele klasyfikacji wideo i klasyfikacji obrazów wykorzystują obrazy jako dane wejściowe do przewidywania prawdopodobieństwa tych obrazów należących do wstępnie zdefiniowanych klas. Jednak model klasyfikacji wideo przetwarza również relacje przestrzenno-czasowe między sąsiednimi klatkami w celu rozpoznania działań na wideo.

Na przykład model rozpoznawania akcji wideo można wytrenować w celu identyfikacji ludzkich działań, takich jak bieganie, klaskanie i machanie. Poniższy obraz przedstawia dane wyjściowe modelu klasyfikacji wideo w systemie Android.

Zrzut ekranu przykładu Androida

Zaczynaj

Jeśli używasz platformy innej niż Android lub Raspberry Pi, lub jeśli znasz już interfejsy API TensorFlow Lite , pobierz model klasyfikacji wideo dla początkujących i pliki pomocnicze. Możesz także zbudować własny, niestandardowy potok wnioskowania, korzystając z biblioteki obsługi TensorFlow Lite .

Pobierz model startowy z metadanymi

Jeśli jesteś nowy w TensorFlow Lite i pracujesz z systemem Android lub Raspberry Pi, zapoznaj się z poniższymi przykładowymi aplikacjami, które pomogą Ci zacząć.

Android

Aplikacja na Androida wykorzystuje tylną kamerę urządzenia do ciągłej klasyfikacji wideo. Wnioskowanie odbywa się za pomocą interfejsu API Java TensorFlow Lite . Aplikacja demonstracyjna klasyfikuje klatki i wyświetla przewidywane klasyfikacje w czasie rzeczywistym.

Przykład Androida

Malina Pi

Przykład Raspberry Pi wykorzystuje TensorFlow Lite z Pythonem do wykonywania ciągłej klasyfikacji wideo. Podłącz Raspberry Pi do kamery, takiej jak Pi Camera, aby przeprowadzić klasyfikację wideo w czasie rzeczywistym. Aby wyświetlić wyniki z kamery, podłącz monitor do Raspberry Pi i użyj SSH, aby uzyskać dostęp do powłoki Pi (aby uniknąć podłączenia klawiatury do Pi).

Przed rozpoczęciem skonfiguruj Raspberry Pi z Raspberry Pi OS (najlepiej zaktualizowanym do Bustera).

Przykład Raspberry Pi

Opis modelu

Mobilne sieci wideo ( MoViNets ) to rodzina wydajnych modeli klasyfikacji wideo zoptymalizowanych pod kątem urządzeń mobilnych. Sieci MoViNet wykazują najnowocześniejszą dokładność i wydajność na kilku dużych zestawach danych rozpoznawania akcji wideo, dzięki czemu doskonale nadają się do zadań rozpoznawania akcji wideo .

Istnieją trzy warianty modelu MoviNet dla TensorFlow Lite: MoviNet-A0 , MoviNet-A1 i MoviNet-A2 . Warianty te zostały wytrenowane za pomocą zestawu danych Kinetics-600, aby rozpoznać 600 różnych ludzkich działań. MoviNet-A0 to najmniejszy, najszybszy i najmniej dokładny. MoviNet-A2 jest największym, najwolniejszym i najdokładniejszym. MoviNet-A1 to kompromis pomiędzy A0 i A2.

Jak to działa

Podczas szkolenia model klasyfikacji wideo jest dostarczany z filmami i powiązanymi z nimi etykietami . Każda etykieta to nazwa odrębnego pojęcia lub klasy, którą model nauczy się rozpoznawać. W przypadku rozpoznawania działań wideo filmy będą przedstawiać działania człowieka, a etykiety będą powiązanymi działaniami.

Model klasyfikacji wideo może nauczyć się przewidywać, czy nowe filmy należą do którejkolwiek z klas przewidzianych podczas szkolenia. Ten proces nazywa się wnioskowaniem . Możesz także użyć uczenia transferu, aby zidentyfikować nowe klasy filmów, korzystając z istniejącego modelu.

Model to model przesyłania strumieniowego, który odbiera ciągłe wideo i reaguje w czasie rzeczywistym. Gdy model odbiera strumień wideo, identyfikuje, czy w wideo są reprezentowane klasy ze zbioru danych uczących. Dla każdej klatki model zwraca te klasy wraz z prawdopodobieństwem, że wideo reprezentuje klasę. Przykładowy wynik w danym momencie może wyglądać następująco:

Akcja Prawdopodobieństwo
taniec na placu 0,02
nawlekanie igły 0,08
kręcące się palce 0,23
Macha ręką 0,67

Każda akcja w danych wyjściowych odpowiada etykiecie w danych uczących. Prawdopodobieństwo oznacza prawdopodobieństwo wyświetlenia akcji w filmie.

Wejścia modelu

Model przyjmuje jako wejście strumień klatek wideo RGB. Rozmiar wejściowego wideo jest elastyczny, ale idealnie pasuje do rozdzielczości treningu modelu i liczby klatek na sekundę:

  • MoviNet-A0 : 172 x 172 przy 5 fps
  • MoviNet-A1 : 172 x 172 przy 5 fps
  • MoviNet-A1 : 224 x 224 przy 5 fps

Oczekuje się, że wejściowe filmy wideo będą miały wartości kolorów w zakresie od 0 do 1, zgodnie z typowymi konwencjami wprowadzania obrazu .

Wewnętrznie model analizuje również kontekst każdej klatki, wykorzystując informacje zebrane w poprzednich klatkach. Osiąga się to poprzez pobranie stanów wewnętrznych z danych wyjściowych modelu i wprowadzenie ich z powrotem do modelu dla nadchodzących klatek.

Wyjścia modelowe

Model zwraca serię etykiet i odpowiadających im wyników. Wyniki są wartościami logitowymi, które reprezentują przewidywania dla każdej klasy. Te wyniki można przekonwertować na prawdopodobieństwa za pomocą funkcji softmax ( tf.nn.softmax ).

    exp_logits = np.exp(np.squeeze(logits, axis=0))
    probabilities = exp_logits / np.sum(exp_logits)

Wewnętrznie dane wyjściowe modelu obejmują również stany wewnętrzne z modelu i przesyłają je z powrotem do modelu dla nadchodzących ramek.

Testy wydajności

Liczby testów wydajności są generowane za pomocą narzędzia do testów porównawczych . MoviNets obsługuje tylko procesor.

Wydajność modelu jest mierzona przez czas potrzebny do uruchomienia wnioskowania na danym sprzęcie. Niższy czas oznacza szybszy model. Dokładność jest mierzona tym, jak często model poprawnie klasyfikuje klasę w filmie.

Nazwa modelu Rozmiar Precyzja * Urządzenie PROCESOR **
MoviNet-A0 (skwantowana liczba całkowita) 3,1 MB 65% Piksel 4 5 ms
Piksel 3 11 ms
MoviNet-A1 (skwantowana liczba całkowita) 4,5 MB 70% Piksel 4 8 ms
Piksel 3 19 ms
MoviNet-A2 (skwantowana liczba całkowita) 5,1 MB 72% Piksel 4 15 ms
Piksel 3 36 ms

* Dokładność Top-1 zmierzona na zestawie danych Kinetics-600 .

** Opóźnienie mierzone podczas pracy na procesorze z 1 wątkiem.

Dostosowanie modelu

Wstępnie wytrenowane modele są wytrenowane w celu rozpoznawania 600 ludzkich działań z zestawu danych Kinetics-600 . Możesz również użyć uczenia transferu, aby ponownie nauczyć model rozpoznawania ludzkich działań, które nie znajdują się w oryginalnym zestawie. Aby to zrobić, potrzebujesz zestawu filmów szkoleniowych dla każdego z nowych działań, które chcesz włączyć do modelu.

Aby uzyskać więcej informacji na temat dostrajania modeli na danych niestandardowych, zobacz samouczek MoViNets Repo i MoViNets .

Dalsze czytanie i zasoby

Skorzystaj z następujących zasobów, aby dowiedzieć się więcej o pojęciach omawianych na tej stronie: