Liderzy opinii
Stosowanie sztucznej inteligencji w przetwarzaniu wideo w czasie rzeczywistym: Podstawy i więcej

Przez Maksyma Tatariantsa, inżyniera ds. nauki o danych w firmie MobiDev.
Nie ma nic nowego w stosowaniu sztucznej inteligencji (AI) w przetwarzaniu wideo. Jeśli spojrzymy poza przetwarzanie obrazów – jest to jeden z najczęstszych przypadków użycia AI. A podobnie jak przetwarzanie obrazów, przetwarzanie wideo wykorzystuje ugruntowane techniki, takie jak wizja komputerowa, rozpoznawanie obiektów, uczenie maszynowe i głębokie uczenie, aby udoskonalić ten proces.
Niezależnie od tego, czy używasz wizji komputerowej i NLP w edycji wideo i generowaniu, rozpoznawaniu obiektów w automatycznym otagowaniu zawartości wideo, uczeniu maszynowym w celu usprawnienia analizy wideo z użyciem AI, lub głębokim uczeniu, aby przyspieszyć usunięcie tła w czasie rzeczywistym, przypadki użycia nadal rosną z dnia na dzień.
Czytaj dalej, aby dowiedzieć się, jaki podejście możesz zastosować, gdy chodzi o stosowanie AI w przetwarzaniu wideo.
Podstawy przetwarzania wideo w czasie rzeczywistym
Zacznijmy od podstaw. Przetwarzanie wideo w czasie rzeczywistym jest niezbędną technologią w systemach nadzoru, wykorzystujących rozpoznawanie obiektów i twarzy. Jest to również proces, który napędza oprogramowanie do inspekcji wizualnej z użyciem AI w sektorze przemysłowym.
Więc, jak działa przetwarzanie wideo? Przetwarzanie wideo obejmuje szereg kroków, w tym dekodowanie, obliczenia i kodowanie. Oto, co musisz wiedzieć:
- Dekodowanie: Proces wymagany do przekonwertowania wideo z pliku skompresowanego z powrotem do jego surowego formatu.
- Obliczenia: Konkretna operacja wykonywana na surowym kadrze wideo.
- Kodowanie: Proces ponownego przekonwertowania przetworzonej ramki z powrotem do jej oryginalnego skompresowanego stanu.
Teraz, celem każdego zadania przetwarzania wideo jest ukończenie tych kroków jak najszybciej i najdokładniej, jak to możliwe. Najłatwiejsze sposoby, aby to osiągnąć, to: współpraca i optymalizacja algorytmu pod kątem szybkości. W prostych słowach? Musisz wykorzystać podział plików i architekturę potoku.
Czym jest podział pliku wideo?
Podział pliku wideo pozwala algorytmom działać jednocześnie, pozwalając im używać wolniejszych, bardziej dokładnych modeli. Jest to osiągane przez podział wideo na oddzielne części, które są następnie przetwarzane w tym samym czasie.
Możesz myśleć o podziale wideo jako o formie wirtualnej generacji plików, a nie generacji podplików.
Pomimo tego, podział pliku wideo nie jest najlepszym rozwiązaniem dla przetwarzania wideo w czasie rzeczywistym. Dlaczego? Ten proces utrudnia wstrzymanie, wznowienie i przewinięcie pliku podczas jego przetwarzania.
Czym jest architektura potoku?
Inną opcją jest architektura potoku. Ten proces działa w celu podziału i równoległego wykonywania zadań podczas przetwarzania, a nie samodzielnego podziału wideo.
Oto szybki przykład, jak wygląda architektura potoku w praktyce i jak może być wykorzystana w systemie nadzoru wideo do wykrywania i rozmywania twarzy w czasie rzeczywistym.
W tym przykładzie potok podzielił zadania na dekodowanie, wykrywanie twarzy, rozmywanie twarzy i kodowanie. A jeśli chcesz poprawić szybkość potoku, możesz użyć technik głębokiego uczenia.
Jak działa dekodowanie i kodowanie?
Co z dekodowaniem i kodowaniem? Istnieją dwa sposoby, aby te procesy wykonać: oprogramowanie i sprzęt.
Możesz już znać pojęcie przyspieszania sprzętowego. Ten proces jest możliwy dzięki dekoderom i koderym zainstalowanym w najnowszych kartach graficznych NVIDIA, a także rdzeniom CUDA.
Więc, jakie opcje masz dostępne, gdy chodzi o przyspieszanie sprzętowe dla procesów kodowania i dekodowania? Oto niektóre z popularniejszych opcji:
- Kompilacja OpenCV z obsługą CUDA: Kompilacja OpenCV z obsługą CUDA optymalizuje zarówno dekodowanie, jak i obliczenia potokowe, które wykorzystują OpenCV. Pamiętaj, że będziesz musiał napisać je w C++, ponieważ wrapper Pythona nie obsługuje tego. Ale w sytuacjach, które wymagają zarówno dekodowania, jak i obliczeń numerycznych z użyciem GPU bez kopiowania z pamięci CPU, nadal jest to jeden z lepszych wyborów.
- Kompilacja FFmpeg lub GStreamer z obsługą kodeków NVDEC/NVENC: Inną opcją jest użycie wbudowanego dekodera i kodera NVIDIA, który jest częścią niestandardowych instalacji FFmpeg i Gstreamer. Jednak sugerujemy użycie FFmpeg, jeśli to możliwe, ponieważ wymaga mniej konserwacji. Ponadto większość bibliotek jest napędzana przez FFmpeg, co oznacza, że automatycznie zwiększysz wydajność biblioteki, zastępując ją.
- Użycie ramówka przetwarzania wideo NVIDIA: Ostateczną opcją jest użycie wrappera Pythona do dekodowania ramki bezpośrednio do tensora PyTorch na GPU. Opcja ta usuwa dodatkowe kopiowanie z CPU do GPU.
Wykrywanie i rozmywanie twarzy
Modele wykrywania obiektów (SSD lub RetinaFace) są popularną opcją do wykrywania twarzy. Rozwiązania te służą do lokalizacji twarzy człowieka w kadrze. A na podstawie naszego doświadczenia, tendencja jest taka, że wolimy model śledzenia twarzy Caffe i model wykrywania obiektów TensorFlow, ponieważ dawały one najlepsze wyniki. Ponadto oba są dostępne za pomocą biblioteki OpenCV modułu dnn.
Więc, co dalej, gdy twarz zostanie wykryta? Następnie system oparty na Pythonie i OpenCV ujawni prostokąty i wyświetli zaufanie wykrycia. Na końcu algorytm rozmywania jest stosowany do wyciętych obszarów.
Jak zbudować oprogramowanie do przetwarzania wideo w czasie rzeczywistym z użyciem AI?
Nie jest żadnym sekretem, że przetwarzanie wideo, kodeki, które je napędzają, oraz wymagany sprzęt i oprogramowanie są dość techniczne.
Jednak to nie oznacza, że nie możesz użyć tych narzędzi, aby zbudować własne oprogramowanie do przetwarzania wideo w czasie rzeczywistym.
Oto krótkie podsumowanie, co musisz zrobić:
- Zacznij od dostosowania swojej sieci neuronowej, aby wykonać wymagane zadania.
- Skonfiguruj swoją infrastrukturę chmurową, aby obsłużyć przetwarzanie wideo i skalować się w razie potrzeby.
- Zbuduj oprogramowanie, aby scalić proces i zintegrować konkretny przypadek użycia, takie jak aplikacje mobilne i panele administracyjne lub internetowe.
Tworzenie oprogramowania MVP do podobnego przetwarzania wideo może zająć do czterech miesięcy przy użyciu wstępnie wytrenowanej sieci neuronowej i prostych warstw aplikacji. Jednak zakres i czas trwania zależą od szczegółów każdego projektu. W większości przypadków ma sens rozpoczęcie od rozwoju Proof of Concept, aby zbadać szczegóły projektu i znaleźć optymalny przepływ.














