Optical Flow – Typical Use-Cases
Optical Flow biedt voordelen voor use-cases zoals
- Object tracking voor intelligente videoanalyse
- Video frame interpolatie, en extrapolatie
- Stereo-diepteschatting
- Herkenning van video-acties
Object tracking voor intelligente videoanalyse
Tot een paar jaar geleden was voor intelligente videoanalyse (IVA) het fysiek bekijken en handmatig analyseren van de opgenomen video’s vereist. Dankzij de snelle ontwikkelingen op het gebied van computervisie en deep learning-technieken is het grootste deel van deze analyse nu geautomatiseerd. Met behulp van computervisie-algoritmen kunnen interessante objecten/personen/voertuigen van beveiligingscamerabeelden worden geïdentificeerd en over de videoframes worden gevolgd. GPU’s zijn een natuurlijke keuze van platform voor het uitvoeren van deze toepassingen vanwege de hoge computationele complexiteit en parallellisme-eisen. De meest gebruikelijke methode bestaat erin de interessante objecten/personen/voertuigen in elk videoframe te detecteren en te identificeren en een algoritme uit te voeren om de objecten in opeenvolgende frames te correleren en zo hun bewegingen te volgen. Deze methode is weliswaar nauwkeurig, maar heeft te kampen met extreem hoge computationele complexiteitseisen, aangezien de objectdetectie/identificatie een rekenintensieve bewerking is (waarbij doorgaans gebruik wordt gemaakt van neurale netwerkinferentie).
De hardware optical flow engine vermindert de computationele complexiteitseisen aanzienlijk door te helpen bij het volgen van objecten. Zodra bijvoorbeeld een object door de detector is gedetecteerd/geïdentificeerd, kan het in opeenvolgende videoframes worden getraceerd door een algoritme op basis van GPU’s hardware optical flow. Hierdoor hoeft het detectiealgoritme niet meer elk frame te worden uitgevoerd, wat resulteert in een enorme vermindering van de computationele complexiteit. De detector kan nu elk Kth frame worden uitgevoerd zonder dat dit ten koste gaat van de nauwkeurigheid (K > 1, gewoonlijk K = 4). Dit laat de GPU’s CUDA cores vrij om inferentie uit te voeren op extra kanalen of andere rekenintensieve taken.
Optical Flow SDK 2.0 bevat een object tracker bibliotheek gebaseerd op optische stroming, samen met broncode en kant-en-klare API. In onze experimenten is gebleken dat de optical flow-gebaseerde objecttracker het GPU-gebruik tot 80% vermindert in vergelijking met enkele van de populairste algoritmen, zonder afbreuk te doen aan de nauwkeurigheid van de tracking.
interpolatie en extrapolatie van videoframes
Optical flow kan ook zeer effectief worden gebruikt voor het interpoleren of extrapoleren van de videoframes in realtime. Dit kan nuttig zijn bij het verbeteren van de vloeiendheid van videoweergave, het genereren van slow-motion video’s of het verminderen van de schijnbare latentie in VR-ervaring, zoals gebruikt door Oculus (details)
Optical Flow functionaliteit in Turing en Ampere GPU’s versnelt deze use-cases door de intensieve berekening van flowvectoren over te dragen aan een speciale hardware-engine op het GPU-silicium, waardoor GPU- en CPU-cycli vrijkomen voor andere taken. Deze hardwarefunctionaliteit is onafhankelijk van CUDA-kernen.
FAQ
A: Raadpleeg nadat u de SDK hebt gedownload de “ReadMe.txt” waarin de minimaal vereiste versie van het beeldschermstuurprogramma staat vermeld. U moet de juiste stuurprogramma’s installeren, anders start de SDK niet en dit is het eerste wat u moet controleren als er een initialisatiefout optreedt.
A: De clienttoepassing moet de mogelijkheden opvragen met behulp van de capability API voordat een functie wordt ingeschakeld.
A: Wij raden alle ontwikkelaars van toepassingen ten zeerste aan om de programmeergidsen in detail door te nemen voordat zij een toepassing schrijven. In het bijzonder kunt u voor enkele hints over deze vraag de volgende sectie in de documentatie raadplegen:
- “Guidelines for Efficient Usage of NVOF API” in NVOF API Programming Guide, opgenomen in de Optical Flow SDK
A: De Optical Flow SDK bevat voorbeelden die speciaal zijn ontworpen om optimale prestaties te leveren. U kunt de prestaties meten met behulp van een van de voorbeelden.
A: NVOF API stelt API’s beschikbaar waarmee gebruikers de maximale API-versies kunnen opvragen die door het onderliggende stuurprogramma worden ondersteund. Afhankelijk van de maximale API-versie die door het stuurprogramma wordt ondersteund, kan de toepassing tijdens runtime code starten die is gecompileerd met de juiste API.
A: Raadpleeg de NVOFA-toepassingsnotitie in de SDK-documentatie om een idee te krijgen van de prestaties. De prestaties zijn afhankelijk van veel factoren, waaronder: GPU in gebruik en zijn kloksnelheid, gebruikte instellingen (voor bijv. preset, rastergrootte en functies zoals ROI), beschikbare geheugenbandbreedte, applicatieontwerp.
Support
In onze forumgemeenschap kunnen ontwikkelaars vragen stellen, ervaringen delen en deelnemen aan discussies met NVIDIA en andere experts op dit gebied.
Kijk hier naar de forums.
Aanvullende bronnen
- NVIDIA Video Codec SDK
- DeepStream SDK for Intelligent Video Analytics
- Deep Learning Software
- GitHub – NVIDIA Optische stroom in OpenCV
- GTC 2020 Session – NVIDIA Video Technologies: Video Codec en Optical Flow SDK
- GTC 2020 Session – Video Codec SDK en Optical Flow SDK op NVIDIA GPU’s effectief gebruiken
- NVIDIA DevBlog – 5 december 2019 – Versnellen van OpenCV: Optical Flow Algoritmes met NVIDIA Turing GPU’s
- NVIDIA Developer News – 23 augustus 2019 – Onderzoekers van VideoGorillas gebruiken AI om gearchiveerde content te remasteren naar 4K-resolutie en hoger
- Oculus Developer blog – 23 mei, 2019 – ASW en Passthrough+ met NVIDIA Optical Flow
- NVIDIA DevBlog – 13 februari 2019 – Een introductie tot de NVIDIA Optical Flow SDK