Connect with us

Tankeledere

Anvendelse af AI til realtidsvideo-behandling: Grundlæggende og mere

mm

Af Maksym Tatariants, Data Science ingeniør hos MobiDev.

Der er ikke noget nyt i at bruge kunstig intelligens (AI) til video-behandling. Hvis du ser beyond billedbehandling – det er en af de mest almindelige brugsområder for AI. Og ligesom billedbehandling, bruger video-behandling etablerede teknikker som computer vision, objektgenkendelse, maskinlæring og dyb læring til at forbedre denne proces. 

Uanset om du bruger computer vision og NLP i video-redigering og generering, objektgenkendelse i videoindhold auto-tagging opgaver, maskinlæring til at strømline AI-videoanalyse, eller dyb læring til at fremskynde realtids baggrundsfjernelse, vokser brugsområderne dag for dag.

Læs videre for at lære, hvilken tilgang du kan tage, når det kommer til at bruge AI i video-behandling.

Grundlæggende om realtidsvideo-behandling

Lad os starte med grundlæggende. Realtidsvideo-behandling er en afgørende teknologi i overvågnings-systemer, der bruger objekt- og ansigtsgenkendelse. Det er også den gå-to-proces, der driver AI-visuel inspektionsoftware i den industrielle sektor.

Så, hvordan fungerer video-behandling? Video-behandling involverer en række trin, der inkluderer afkodning, beregning og kodning. Her er, hvad du behøver at vide:

  • Afkodning: Processen, der er nødvendig for at konvertere en video fra en komprimeret fil tilbage til sin råformat.
  • Beregning: En specifik operation, der udføres på en rå video-ramme.
  • Kodning: Processen til at konvertere den behandlede ramme tilbage til sin oprindelige komprimerede tilstand.

Nu er målet for enhver video-behandlingsopgave at gøre disse trin så hurtigt og nøjagtigt som muligt. De nemmeste måder at opnå dette på inkluderer: at arbejde parallelt og at optimere algoritmen for hastighed. I simple vendinger? Du behøver at udnytte filsplitning og pipeline-arkitektur.

Hvad er video-filsplitning?

Video-filsplitning tillader, at algoritmerne kan arbejde samtidigt, og de kan bruge langsommere, mere nøjagtige modeller. Dette opnås ved at splitte videoer i separate dele, der derefter behandles på samme tid.

Du kan tænke på video-filsplitning som en form for virtuel fil-generering i stedet for under-fil-generering. 

Trods dette er video-filsplitning ikke den bedste mulighed for realtidsvideo-behandling. Hvorfor nøjagtig? Denne proces gør det svært for dig at pause, genoptage og vind en fil, mens den behandles.

Hvad er pipeline-arkitektur?

Den anden mulighed er pipeline-arkitektur. Denne proces arbejder med at splitte og parallellisere opgaverne, der udføres under behandlingen, i stedet for at splitte videoen direkte.

Her er et hurtigt eksempel på, hvordan pipeline-arkitektur ser ud i praksis, og hvordan den kan bruges i et video-overvågnings-system til at detektere og uskærpe ansigter i realtid.

I dette eksempel har pipeline delt opgaverne i afkodning, ansigtsgenkendelse, ansigtsuskarpering og kodning. Og hvis du ønsker at forbedre pipeline-hastigheden, kan du bruge pipeline dyb læringsteknikker.

Afkodning og kodning forklaret

Hvad med afkodning og kodning? Der er to måder, du kan gøre disse processer på: software og hardware.

Du kender måske allerede konceptet hardware-acceleration. Denne proces er mulig takket være afkodere og kodere, der er installeret i de nyeste NVIDIA-grafikkort, samt CUDA-kernerne.

Så, hvilke muligheder har du til rådighed, når det kommer til hardware-acceleration for kodnings- og afkodningsprocesserne? Her er nogle af de mere populære muligheder:

  • Kompiler OpenCV med CUDA-understøttelse: Kompilering af OpenCV med CUDA-optimerer både afkodning og enhver pipeline-beregning, der bruger OpenCV. Husk på, at du skal skrive dem i C++, da Python-værktøjet ikke understøtter dette. Men i situationer, der kræver både afkodning og numeriske beregninger med en GPU uden at kopiere fra CPU-hukommelse, er det stadig en af de bedre valgmuligheder.
  • Kompiler FFmpeg eller GStreamer med NVDEC/NVENC-kodecs-understøttelse: En anden mulighed er at bruge den indbyggede NVIDIA-afkoder og -koder, der er inkluderet i brugerdefinerede installationer af FFmpeg og Gstreamer. Dog foreslår vi at bruge FFmpeg, hvis det er muligt, da det kræver mindre vedligeholdelse. Og de fleste biblioteker er drevet af FFmpeg, hvilket betyder, at du automatisk vil forbedre bibliotekets ydeevne ved at erstatte det.
  • Brug NVIDIA Video Processing Framework: Den sidste mulighed er at bruge en Python-værktøj til at afkode rammen direkte til en PyTorch-tensor på GPU. Denne mulighed fjerner ekstra kopiering fra CPU til GPU.

Ansigtsgenkendelse og uskarpering

Objektgenkendelsesmodeller (SSDs eller RetinaFace) er en populær mulighed for at fuldføre ansigtsgenkendelse. Disse løsninger arbejder med at lokalisere det menneskelige ansigt i en ramme. Og baseret på vores erfaring, tenderer vi til at foretrække Caffe Face-tracking og TensorFlow-objektgenkendelsesmodeller, da de gav de bedste resultater. Og begge er tilgængelige ved hjælp af OpenCV-bibliotekets dnn-modul.

Så, hvad kommer herefter, efter at et ansigt er blevet genkendt? Herefter vil Python- og OpenCV-baseret system afsløre begrænsningsbokse og genkendelses-sikkerhed. Til sidst anvendes en uskarperingsalgoritme til beskåret område.

Hvordan kan du bygge AI-drevet live-video-behandlingssoftware?

Det er ingen hemmelighed, at video-behandling, kodecerne, der driver det, og både hardware og software, der kræves, er ret tekniske af natur.

Alligevel betyder det ikke, at du ikke kan bruge disse værktøjer til at bygge din egen live-video-behandlingssoftware. 

Her er en kort gennemgang af, hvad du skal gøre:

  1. Start med at justere din forudtrænede neurale netværk til at fuldføre de opgaver, der kræves.
  2. Konfigurer din cloud-infrastruktur til at håndtere video-behandling og skaler som nødvendigt.
  3. Byg en software-løsning til at kondensere processen og integrere specifikke brugsområder som mobile applikationer og admin- eller web-paneller.

Udvikling af en MVP for lignende video-behandlingssoftware kan tage op til fire måneder med en forudtrænet neural netværk og simple applikationslag. Men omfanget og tidsrammen afhænger af hvert projekts detaljer. I de fleste tilfælde har det mening at starte med Proof of Concept-udvikling for at udforske projektdetaljerne og finde en optimal proces.

Maksym er ivrig efter at få nye indsigt og erfaring inden for Data Science og Machine Learning. Han er særligt interesseret i Deep Learning-baserede teknologier og deres anvendelse i forretningsrelaterede brugsområder.