NVIDIA Optical Flow SDK

Optical Flow – Typowe przypadki użycia

Optical Flow przynosi korzyści w takich przypadkach użycia jak

  • Śledzenie obiektów dla inteligentnej analizy wideo
  • Interpolacja klatek wideo, i ekstrapolacja
  • Estymacja głębi stereo
  • Rozpoznawanie akcji w wideo

Śledzenie obiektów dla inteligentnej analizy wideo

Jeszcze kilka lat temu inteligentna analiza wideo (IVA) wymagała fizycznego przeglądania i ręcznej analizy przechwyconych filmów. Dzięki szybkiemu rozwojowi technik widzenia komputerowego i głębokiego uczenia, większość takich analiz jest obecnie zautomatyzowana. Identyfikację interesujących obiektów/osób/pojazdów z nagrań kamer bezpieczeństwa i śledzenie ich na przestrzeni klatek wideo można osiągnąć za pomocą algorytmów wizji komputerowej. Układy GPU są naturalnym wyborem platformy do uruchamiania tych aplikacji ze względu na wysoką złożoność obliczeniową i wymagania dotyczące równoległości. Najczęściej stosowaną metodą jest wykrywanie i identyfikacja interesujących obiektów/osób/pojazdów w każdej klatce wideo i uruchamianie algorytmu korelującego obiekty w kolejnych klatkach w celu śledzenia ich ruchu. Ta metoda, choć dokładna, cierpi z powodu niezwykle wysokich wymagań dotyczących złożoności obliczeniowej, ponieważ wykrywanie/identyfikacja obiektów jest operacją intensywną obliczeniowo (zazwyczaj wykorzystującą wnioskowanie za pomocą sieci neuronowych).

Sprzętowy silnik przepływu optycznego znacznie łagodzi wymagania dotyczące złożoności obliczeniowej, pomagając w śledzeniu obiektów. Na przykład, po wykryciu/zidentyfikowaniu obiektu przez detektor, może on być śledzony w kolejnych klatkach wideo przez algorytm oparty na sprzętowym przepływie optycznym GPU. Eliminuje to konieczność uruchamiania algorytmu detekcji co klatkę, co skutkuje znacznym zmniejszeniem złożoności obliczeniowej. Detektor może być teraz uruchamiany co K-tą klatkę bez utraty dokładności (K > 1, typowo K = 4). Dzięki temu rdzenie CUDA procesora graficznego są wolne i mogą być wykorzystane do wnioskowania na dodatkowych kanałach lub do innych zadań wymagających dużej mocy obliczeniowej.

Optical Flow SDK 2.0 zawiera bibliotekę śledzenia obiektów opartą na przepływie optycznym, wraz z kodem źródłowym i gotowym do użycia API. W naszych eksperymentach śledzący obiekt oparty na przepływie optycznym wykazał, że w porównaniu z niektórymi najpopularniejszymi algorytmami może zmniejszyć wykorzystanie procesora graficznego nawet o 80%, bez pogorszenia dokładności śledzenia.


Interpolacja i ekstrapolacja klatek wideo

Przepływ optyczny może być również bardzo efektywnie wykorzystywany do interpolacji lub ekstrapolacji klatek wideo w czasie rzeczywistym. Może to być przydatne w poprawie płynności odtwarzania wideo, generowaniu filmów w zwolnionym tempie lub zmniejszaniu widocznego opóźnienia w doświadczeniach VR, jak w przypadku produktów firmy Oculus (szczegóły)

Funkcja przepływu optycznego w procesorach graficznych Turing i Ampere przyspiesza te zastosowania poprzez odciążenie dedykowanego silnika sprzętowego w krzemie procesora graficznego od intensywnych obliczeń wektora przepływu, uwalniając tym samym cykle GPU i CPU dla innych zadań. Ta funkcjonalność sprzętowa jest niezależna od rdzeni CUDA.

FAQ

A: Po pobraniu SDK, proszę zapoznać się z plikiem „ReadMe.txt”, który zawiera listę minimalnych wymaganych wersji sterowników wyświetlacza. Należy zainstalować odpowiednie sterowniki, w przeciwnym razie SDK nie uruchomi się i jest to pierwsza rzecz, którą należy sprawdzić w przypadku niepowodzenia inicjalizacji.

A: Aplikacja kliencka powinna odpytywać możliwości za pomocą API możliwości przed włączeniem jakiejkolwiek funkcji.

A: Zdecydowanie zalecamy wszystkim programistom aplikacji szczegółowe zapoznanie się z przewodnikami programowania przed napisaniem jakiejkolwiek aplikacji. W szczególności, aby uzyskać wskazówki dotyczące tego pytania, prosimy o zapoznanie się z następującą sekcją w dokumentacji:

  1. „Guidelines for Efficient Usage of NVOF API” w NVOF API Programming Guide, zawartym w Optical Flow SDK

A: Optical Flow SDK zapewnia próbki zaprojektowane specjalnie w celu zapewnienia optymalnej wydajności. Można zmierzyć wydajność przy użyciu dowolnej próbki.

A: Interfejs API NVOF udostępnia interfejsy API, które umożliwiają użytkownikom uzyskanie informacji o maksymalnych wersjach API obsługiwanych przez sterownik bazowy. W zależności od maksymalnej wersji API obsługiwanej przez sterownik, aplikacja może uruchomić kod w trybie runtime skompilowany z odpowiednim API.

A: Proszę odnieść się do noty aplikacyjnej NVOFA zawartej w dokumentacji SDK, aby zorientować się w wydajności. Wydajność zależy od wielu czynników, z których niektóre obejmują: używany układ GPU i jego prędkość zegara, używane ustawienia (dla np. presetu, rozmiaru siatki i funkcji takich jak ROI), dostępną przepustowość pamięci, projekt aplikacji.

Pomoc techniczna

Nasza społeczność forum jest miejscem, w którym programiści mogą zadawać pytania, dzielić się doświadczeniami i brać udział w dyskusjach z firmą NVIDIA i innymi ekspertami w tej dziedzinie.
Sprawdź fora tutaj.

Dodatkowe zasoby

  • NVIDIA Video Codec SDK
  • DeepStream SDK for Intelligent Video Analytics
  • Deep Learning Software
  • GitHub – NVIDIA Optical flow in OpenCV
  • Sesja GTC 2020 – NVIDIA Video Technologies: Video Codec i Optical Flow SDK
  • Sesja GTC 2020 – Efektywne wykorzystanie Video Codec SDK i Optical Flow SDK na procesorach graficznych NVIDIA
  • NVIDIA DevBlog – 5 grudnia 2019 – Przyspiesz OpenCV: Optical Flow Algorithms with NVIDIA Turing GPUs
  • NVIDIA Developer News – 23 sierpnia 2019 – Naukowcy z VideoGorillas wykorzystują AI do remasteringu zarchiwizowanych treści do rozdzielczości 4K i wyższej
  • Oculus Developer blog – 23 maja, 2019 – ASW i Passthrough+ z NVIDIA Optical Flow
  • NVIDIA DevBlog – February 13, 2019 – An Introduction to the NVIDIA Optical Flow SDK

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.