Tankeledere

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

mm
Føj Unite.AI til dine foretrukne kilder på Google

Skrevet af Maksym Tatariants, Data Science-ingeniør hos MobiDev.

Der er intet nyt i at bruge kunstig intelligens (AI) i 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 video-indhold automatisk mærkning opgaver, maskinlæring til at strømlinje AI-video-analyse, eller dyb læring til at fremskynde realtids baggrundsfjernelse, brugsområderne fortsætter med at vokse 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 essentiel teknologi i overvågnings-systemer, der bruger objekt- og ansigts-genkendelse. Det er også den proces, der driver AI-visuel inspektion software i den industrielle sektor.

Så, hvordan fungerer video-behandling? Video-behandling indebærer en række trin, der inkluderer afkodning, beregning og kodning. Her er, hvad du skal 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 med 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 præcist som muligt. De letteste måder at opnå dette på inkluderer at arbejde parallelt og optimere algoritmen for hastighed. I simple termer? Du skal udnytte fil-delning og pipeline-arkitektur.

Hvad er video-fil-delning?

Video-fil-delning tillader algoritmerne at arbejde samtidigt, så de kan bruge langsommere, mere præcise modeller. Dette opnås ved at dele videoer i separate dele, der derefter behandles på samme tid.

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

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

Hvad er pipeline-arkitektur?

Den anden mulighed er pipeline-arkitektur. Denne proces arbejder med at dele og parallellisere opgaverne, der udføres under behandlingen, i stedet for at dele 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, ansigts-detektion, ansigts-uskæring og kodning. Og hvis du vil 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 med 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:

  • Kompilér OpenCV med CUDA-understøttelse: Kompilér OpenCV med CUDA-optimerer både afkodning og pipeline-beregninger, der bruger OpenCV. Husk, 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.
  • Kompilér 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. Men vi foreslår 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 forbedrer 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’en. Denne mulighed fjerner ekstra kopiering fra CPU til GPU.

Ansigt-detektion og -uskæring

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

Så, hvad sker der herefter, efter at et ansigt er blevet detekeret? Herefter vil Python- og OpenCV-baseret system afsløre rammer og detektions-sikkerhed. Til sidst anvendes en uskæring-algoritme på 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.

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 tilpasse din forudtrænede neurale netværk til at udføre de opgaver, der kræves.
  2. Konfigurer din cloud-infrastruktur til at håndtere video-behandling og skalerer efter behov.
  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 ved hjælp af 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 projektspecifikke detaljer 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.