Tankeledere
Å bruke AI i sanntids video-behandling: Grunnleggende og mer

Av Maksym Tatariants, Data Science-ingeniør hos MobiDev.
Det er ingen nyhet å bruke kunstig intelligens (AI) i video-behandling. Hvis du ser bort fra bildebehandling – er det en av de vanligste bruksområdene for AI. Og likt bildebehandling, bruker video-behandling etablerte tekniker som computer vision, objektgjenkjenning, maskinlæring og dypt læring for å forbedre denne prosessen.
Uansett om du bruker computer vision og NLP i video-redigering og generering, objektgjenkjenning i video-innhold auto-merking oppgaver, maskinlæring for å strømlinje AI-videoanalyse, eller dypt læring for å påskynde sanntids bakgrunnsfjerning, bruksområdene fortsetter å vokse dag for dag.
Les videre for å lære hva tilnærming du kan ta når det gjelder å bruke AI i video-behandling.
Grundleggende om sanntids video-behandling
La oss starte med grunnleggende. Sanntids video-behandling er en essensiell teknologi i overvåkningssystemer som bruker objekt- og ansiktsgjenkjenning. Det er også prosessen som driver AI-visuell inspeksjon programvare i den industrielle sektoren.
Så, hvordan fungerer video-behandling? Video-behandling innebærer en rekke trinn, som inkluderer dekoding, beregning og koding. Her er hva du må vite:
- Dekoding: Prosessen som kreves for å konvertere en video fra en komprimert fil tilbake til sin råformat.
- Beregning: En spesifikk operasjon som utføres på en rå video-ramme.
- Koding: Prosessen med å konvertere den bearbeidede rammen tilbake til sin opprinnelige komprimerte tilstand.
Nå, målet med enhver video-behandlingsoppgave er å fullføre disse trinnene så raskt og nøyaktig som mulig. De enkleste måtene å oppnå dette inkluderer: å arbeide parallelt og å optimalisere algoritmen for hastighet. I enkle ord? Du må utnytte fil-delning og pipeline-arkitektur.
Hva er video-fil-delning?
Video-fil-delning tillater algoritmene å arbeide samtidig, og lar dem bruke langsommere, mer nøyaktige modeller. Dette oppnås ved å dele videoer inn i separate deler som deretter bearbeides samtidig.
Du kan tenke på video-delning som en form for virtuell fil-generering i stedet for under-fil-generering.
Til tross for dette, er video-fil-delning ikke den beste valget for sanntids video-behandling. Hvorfor? Denne prosessen gjør det vanskelig å pause, gjenoppta og spole tilbake en fil mens den bearbeides.
Hva er pipeline-arkitektur?
Det andre alternativet er pipeline-arkitektur. Denne prosessen arbeider for å dele og parallellisere oppgavene som utføres under bearbeiding, i stedet for å dele videoen direkte.
Her er et raskt eksempel på hva pipeline-arkitektur ser ut som i praksis, og hvordan den kan brukes i et video-overvåkningssystem for å detektere og uskarpe ansikter i sanntid.
I dette eksempelet har pipeline delt oppgavene inn i dekoding, ansiktsgjenkjenning, ansikt-uskarpning og koding. Og hvis du ønsker å forbedre pipeline-hastigheten, kan du bruke pipeline dypt læringsteknikker.
Dekoding og koding forklart
Hva med dekoding og koding? Det finnes to måter å fullføre disse prosessene på: programvare og maskinvare.
Du kjenner kanskje allerede til konseptet maskinvare-akselerasjon. Denne prosessen er mulig takket være dekodere og koderere installert i de nyeste NVIDIA -grafikkortene, samt CUDA-kjernene.
Så, hva valg har du når det gjelder maskinvare-akselerasjon for koding- og dekoding-prosessene? Her er noen av de mer populære alternativene:
- Kompilér OpenCV med CUDA-støtte: Kompilering av OpenCV med CUDA optimaliserer både dekoding og pipeline-beregninger som bruker OpenCV. Husk at du må skrive dem i C++ siden Python-omslaget ikke støtter dette. Men i situasjoner som krever både dekoding og numeriske beregninger med en GPU uten å kopiere fra CPU-minne, er det fortsatt ett av de bedre valgene.
- Kompilér FFmpeg eller GStreamer med NVDEC/NVENC-kodek-støtte: Et annet alternativ er å bruke den innebygde NVIDIA-dekoderen og kodereren som følger med tilpassede installasjoner av FFmpeg og Gstreamer. Men vi anbefaler å bruke FFmpeg hvis mulig, siden det krever mindre vedlikehold. Og de fleste bibliotekene er drevet av FFmpeg, så du vil automatisk forbedre bibliotekets ytelse ved å erstatte det.
- Bruk NVIDIA Video Processing Framework: Det siste alternativet er å bruke en Python-omslag for å dekodere rammen direkte til en PyTorch-tensor på GPU-en. Dette alternativet fjerner ekstra kopiering fra CPU til GPU.
Ansiktsgjenkjenning og uskarpning
Objektgjenkjenningmodeller (SSDs eller RetinaFace) er et populært valg for å fullføre ansiktsgjenkjenning. Disse løsningene arbeider for å lokalisere det menneskelige ansiktet i en ramme. Og basert på vår erfaring, foretrekker vi Caffe Face-tracking og TensorFlow-objektgjenkjenningmodeller siden de ga de beste resultater. I tillegg er begge tilgjengelige ved hjelp av OpenCV-biblioteket dnn-modul.
Så, hva skjer etter at et ansikt er gjenkjent? Deretter vil Python og OpenCV-basert system avsløre avgrensning og gjenkjenningssikkerhet. Til slutt brukes en uskarpningsalgoritme på avkortede områder.
Hvordan kan du bygge AI-drevet sanntids video-behandlingsprogramvare?
Det er ingen hemmelighet at video-behandling, kodekene som driver den, og både maskinvare og programvare som kreves, er ganske tekniske i naturen.
Likevel betyr det ikke at du ikke kan bruke disse verktøyene til å bygge din egen sanntids video-behandlingsprogramvare.
Her er en kort gjennomgang av hva du må gjøre:
- Start med å justere din forhånds-trente neurale nettverk for å fullføre oppgavene som kreves.
- Konfigurer din sky-infrastruktur for å håndtere video-behandling og skaler som nødvendig.
- Bygg en programvare-løsning for å kondensere prosessen og integrere spesifikke bruksområder som mobilapplikasjoner og admin- eller web-paneler.
Utvikling av en MVP for lignende video-behandlingsprogramvare kan ta opp til fire måneder med en forhånds-trent neural nettverk og enkle programvareløsninger. Men omfanget og tidsrammen avhenger av hver prosjekts detaljer. I de fleste tilfeller er det meningsfullt å starte med Proof of Concept-utvikling for å utforske prosjektets spesifikke og finne en optimal flyt.














