Tankeledere

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

mm
Legg til Unite.AI blant dine foretrukne kilder på Google

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:

  1. Start med å justere din forhånds-trente neurale nettverk for å fullføre oppgavene som kreves.
  2. Konfigurer din sky-infrastruktur for å håndtere video-behandling og skaler som nødvendig.
  3. 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.

Maksym er ivrig etter å tilegne seg nye innsikter og erfaringer innen Data Science og Machine Learning. Han er spesielt interessert i Deep Learning-baserte teknologier og deres anvendelse i forretningsrelaterte brukstilfeller.