Thought leaders
Het Toepassen van AI bij Real-Time Video Processing: De Basis en Meer

Door Maksym Tatariants, Data Science ingenieur bij MobiDev.
Er is niets nieuws aan het gebruik van kunstmatige intelligentie (AI) bij videoverwerking. Als je verder kijkt dan beeldverwerking – het is een van de meest voorkomende use cases voor AI. En net als beeldverwerking, gebruikt videoverwerking gevestigde technieken zoals computer vision, objectherkenning, machine learning en diepe leer om dit proces te verbeteren.
Of je nu computer vision en NLP gebruikt in video-editing en generatie, objectherkenning in video-inhoudsautotagging taken, machine learning om AI-videoanalyse te vereenvoudigen, of diepe leer om achtergrondverwijdering in real-time te versnellen, de use cases blijven dagelijks groeien.
Lees verder om te leren welke aanpak je kunt volgen bij het gebruik van AI in videoverwerking.
De Basis van Real-Time Video Processing
Laten we beginnen met de basis. Real-time video processing is een essentiële technologie in bewakingsystemen die object- en gezichtsherkenning gebruiken. Het is ook het proces dat AI-visuele inspectiesoftware in de industriële sector aandrijft.
Dus, hoe werkt videoverwerking? Videoverwerking omvat een reeks stappen, waaronder decoderen, berekenen en encoderen. Hier is wat je moet weten:
- Decoderen: Het proces dat nodig is om een video van een gecomprimeerd bestand terug te converteren naar zijn ruwe formaat.
- Berekenen: Een specifieke bewerking die op een ruwe videoframe wordt uitgevoerd.
- Encoderen: Het proces van het terug converteren van het verwerkte frame naar zijn oorspronkelijke gecomprimeerde staat.
Nu is het doel van elke videoverwerkingstaak om deze stappen zo snel en nauwkeurig mogelijk te voltooien. De eenvoudigste manieren om dit te bereiken, zijn door parallel te werken en de algoritme te optimaliseren voor snelheid. In eenvoudige bewoordingen? Je moet bestandssplitsing en pijplijnarchitectuur gebruiken.
Wat is Video Bestand Splitsing?
Video bestand splitsing laat de algoritmes gelijktijdig werken, waardoor ze langzamere, nauwkeurigere modellen kunnen gebruiken. Dit wordt bereikt door video’s in afzonderlijke delen te splitsen die vervolgens tegelijkertijd worden verwerkt.
Je kunt aan video splitsing denken als een vorm van virtuele bestandgeneratie in plaats van subbestandgeneratie.
Ondanks dit, is video bestand splitsing niet de beste optie voor real-time video processing. Waarom precies? Dit proces maakt het moeilijk om een bestand te pauzeren, te hervatten en terug te spoelen terwijl het wordt verwerkt.
Wat is Pijplijnarchitectuur?
De andere optie is pijplijnarchitectuur. Dit proces werkt om taken te splitsen en te paralleliseren die tijdens de verwerking worden uitgevoerd, in plaats van de video zelf te splitsen.
Hier is een snel voorbeeld van hoe pijplijnarchitectuur er in de praktijk uitziet en hoe het kan worden gebruikt in een videosurveillancesysteem om gezichten in real-time te detecteren en te vervagen.
In dit voorbeeld heeft de pijplijn de taken gesplitst in decoderen, gezichtsdetectie, gezichtsvervaging en encoderen. En als je de pijplijn wilt versnellen, kun je diepe leer technieken gebruiken.
Decoderen en Encoderen Uitgelegd
Wat over decoderen en encoderen? Er zijn twee manieren om deze processen uit te voeren: software en hardware.
Je bent misschien al bekend met het concept van hardwareversnelling. Dit proces is mogelijk gemaakt door decoders en encoders die zijn geïnstalleerd in de nieuwste NVIDIA grafische kaarten, evenals de CUDA-kernen.
Dus, welke opties heb je beschikbaar voor hardwareversnelling voor de encoderen- en decoderenprocessen? Hier zijn enkele van de meest populaire opties:
- OpenCV compileren met CUDA-ondersteuning: Het compileren van OpenCV met CUDA-optimaliseert zowel decoderen als pijplijnberekeningen die OpenCV gebruiken. Houd er rekening mee dat je ze in C++ moet schrijven, omdat de Python-wrapper dit niet ondersteunt. Maar in situaties waarin zowel decoderen als numerieke berekeningen met een GPU zonder kopiëren van CPU-geheugen nodig zijn, is het nog steeds een van de betere keuzes.
- FFmpeg of GStreamer compileren met NVDEC/NVENC-codecsondersteuning: Een andere optie is om de ingebouwde NVIDIA-decoder en -encoder te gebruiken die zijn opgenomen in aangepaste installaties van FFmpeg en Gstreamer. Echter, we raden aan om FFmpeg te gebruiken als dat mogelijk is, omdat het minder onderhoud vereist. Bovendien worden de meeste bibliotheken aangedreven door FFmpeg, wat betekent dat je automatisch de prestaties van de bibliotheek verbetert door het te vervangen.
- Gebruik NVIDIA Video Processing Framework: De laatste optie is om een Python-wrapper te gebruiken om het frame rechtstreeks in een PyTorch-tensor op de GPU te decoderen. Deze optie verwijdert extra kopiëren van de CPU naar de GPU.
Gezichtsdetectie en Vervaging
Objectdetectiemodellen (SSD’s of RetinaFace) zijn een populaire optie voor het voltooien van gezichtsdetectie. Deze oplossingen werken om het menselijk gezicht in een frame te lokaliseren. En op basis van onze ervaring, geven we de voorkeur aan de Caffe Face-tracking en TensorFlow-objectdetectiemodellen, omdat ze de beste resultaten opleverden. Bovendien zijn ze beide beschikbaar met behulp van de OpenCV-bibliotheek dnn-module.
Dus, wat is de volgende stap nadat een gezicht is gedetecteerd? Vervolgens zal het Python- en OpenCV-gebaseerde systeem omlijning en detectiebetrouwbaarheid onthullen. Ten slotte wordt een vervagingsalgoritme toegepast op de bijgesneden gebieden.
Hoe Kun Je AI-Gestuurde Live Video Processing Software Bouwen?
Het is geen geheim dat videoverwerking, de codecs die het aandrijven en zowel de hardware als de software die nodig zijn, vrij technisch van aard zijn.
Toch betekent dit niet dat je deze tools niet kunt gebruiken om je eigen live video processing software te bouwen.
Hier is een korte samenvatting van wat je moet doen:
- Begin met het aanpassen van je vooraf getrainde neurale netwerk om de taken te voltooien die nodig zijn.
- Configureer je cloud-infrastructuur om videoverwerking te verwerken en te schalen zoals nodig.
- Bouw een softwarelaag om het proces te condenseren en specifieke use cases zoals mobiele applicaties en admin- of webpanels te integreren.
Het ontwikkelen van een MVP voor soortgelijke videoverwerkingssoftware kan tot vier maanden duren met behulp van een vooraf getraind neurale netwerk en eenvoudige toepassingslagen. Echter, het bereik en de tijdslijn hangen af van de details van elk project. In de meeste gevallen is het zinvol om te beginnen met Proof of Concept-ontwikkeling om de projectspecificaties te onderzoeken en een optimale stroom te vinden.














