Optical Flow – typiska användningsområden
Optical Flow är fördelaktigt för användningsområden som
- Objektspårning för intelligenta videoanalyser
- Videobildinterpolering, och extrapolering
- Djupbedömning av stereodjup
- Videohandlingsigenkänning
Objektspårning för intelligent videoanalys
Inte förrän för några år sedan krävdes det fysisk visning och manuell analys av de inspelade filmerna för att göra intelligenta videoanalyser (IVA). Tack vare den snabba utvecklingen inom datorseende och djupinlärningstekniker är de flesta av dessa analyser nu automatiserade. Att identifiera objekt/personer/fordon av intresse från övervakningskameror och spåra dem över videoframarna kan uppnås med hjälp av algoritmer för datorseende. GPU:er är ett naturligt val av plattform för att köra dessa tillämpningar på grund av den höga beräkningskomplexiteten och kraven på parallellitet. Den vanligaste metoden är att upptäcka och identifiera de intressanta objekten/personerna/fordonen i varje videobild och köra en algoritm för att korrelera objekten i på varandra följande bilder för att spåra deras rörelse. Denna metod är visserligen exakt, men lider av extremt höga krav på beräkningskomplexitet, eftersom objektdetektering/identifiering är en beräkningskrävande operation (vanligtvis med hjälp av neurala nätverksinferenser).
Den optiska flödesmotorn i maskinvaran lindrar kraven på beräkningskomplexitet avsevärt genom att hjälpa till med spårningen av objekt. När ett objekt väl har upptäckts/identifierats av detektorn kan det till exempel spåras i på varandra följande videoframar med hjälp av en algoritm baserad på GPU:s hårdvaruoptiska flöde. Detta eliminerar behovet av att köra detektionsalgoritmen varje bildruta, vilket resulterar i en massiv minskning av beräkningskomplexiteten. Detektorn kan nu köra varje K:e bildruta utan att kompromissa med noggrannheten (K > 1, vanligtvis K = 4). Detta gör att GPU:ns CUDA-kärnor blir fria att köra inferens på ytterligare kanaler eller andra beräkningsintensiva uppgifter.
Optical Flow SDK 2.0 innehåller ett bibliotek för objektspårning baserat på optiskt flöde, tillsammans med källkod och färdiga API. I våra experiment har den optiska flödesbaserade objektspåraren visat sig minska GPU-användningen med upp till 80 %, jämfört med några av de mest populära algoritmerna utan att kompromissa med spårningens noggrannhet.
Videoramarmsinterpolering och -extrapolering
Optiskt flöde kan också användas mycket effektivt för att interpolera eller extrapolera videoramar i realtid. Detta kan vara användbart för att förbättra smidigheten vid videouppspelning, generera slow-motion-videor eller minska den synliga latensen i VR-upplevelser, som används av Oculus (detaljer)
Optical Flow-funktionaliteten i Turing- och Ampere-GPU:erna påskyndar dessa användningsområden genom att den intensiva flödesvektorsberäkningen avlastas till en särskild hårdvarumotor på GPU:s kisel, och därmed frigörs GPU- och CPU-cykler för andra uppgifter. Denna funktionalitet i hårdvara är oberoende av CUDA-kärnor.
FAQ
A: När du har laddat ner SDK:n hänvisar du till ”ReadMe.txt”, där den minsta erforderliga versionen av drivrutinen för skärmen anges. Du måste installera rätt drivrutiner, annars kommer SDK inte att starta och detta är det första du bör kontrollera om initialiseringen misslyckas.
S: Klientprogrammet bör fråga efter kapaciteterna med hjälp av API:et för kapaciteter innan du aktiverar någon funktion.
S: Vi rekommenderar starkt att alla applikationsutvecklare går igenom programmeringsguiderna i detalj innan de skriver en applikation. Om du vill ha några tips om den här frågan kan du läsa följande avsnitt i dokumentationen:
- ”Guidelines for Efficient Usage of NVOF API” i NVOF API Programming Guide, som ingår i Optical Flow SDK
A: Optical Flow SDK innehåller exempel som är särskilt utformade för att ge optimal prestanda. Du kan mäta prestanda med något av exemplen.
A: NVOF API exponerar API:er som gör det möjligt för användare att fråga efter de maximala API-versioner som stöds av den underliggande drivrutinen. Beroende på vilken maximal API-version som stöds av drivrutinen kan programmet starta kod vid körning som kompilerats med lämpligt API.
S: Se NVOFA-tillämpningsnoten som ingår i SDK-dokumentationen för att få en uppfattning om prestanda. Prestandan beror på många faktorer, varav några är följande: GPU som används och dess klockfrekvens, inställningar som används (för t.ex. förinställning, rutstorlek och funktioner som ROI), tillgänglig minnesbandbredd, applikationsdesign.
Support
Vårt forum är en plats där utvecklare kan ställa frågor, dela erfarenheter och delta i diskussioner med NVIDIA och andra experter inom området.
Kontrollera forumet här.
Tillkommande resurser
- NVIDIA Video Codec SDK
- DeepStream SDK for Intelligent Video Analytics
- Deep Learning Software
- GitHub – NVIDIA Optical flow in OpenCV
- GTC 2020 Session – NVIDIA Video Technologies: Video Codec and Optical Flow SDK
- GTC 2020 Session – Using Video Codec SDK and Optical Flow SDK on NVIDIA GPUs Effectively
- NVIDIA DevBlog – December 5, 2019 – Accelerate OpenCV: Optical Flow Algorithms with NVIDIA Turing GPUs
- NVIDIA Developer News – August 23, 2019 – Researchers at VideoGorillas Use AI to Remaster Archived Content to 4K Resolution and Above
- Oculus Developer Blog – May 23, 2019 – ASW och Passthrough+ med NVIDIA Optical Flow
- NVIDIA DevBlogg – 13 februari 2019 – Introduktion till NVIDIA Optical Flow SDK