Tankeledare

Tillämpning av AI för realtidsvideo bearbetning: Grunden och mer

mm
Lägg till Unite.AI bland dina föredragna källor på Google

Av Maksym Tatariants, Data Science ingenjör på MobiDev.

Det finns ingenting nytt med att använda artificiell intelligens (AI) i video bearbetning. Om du tittar bortom bild bearbetning – det är en av de vanligaste användnings fallen för AI. Och precis som bild bearbetning, använder video bearbetning etablerade tekniker som datorseende, objektigenkänning, maskinlärning och djupinlärning för att förbättra denna process.

Oavsett om du använder datorseende och NLP i video redigering och generering, objektigenkänning i video innehålls auto-tagging uppgifter, maskinlärning för att strömlinje forma AI video analys, eller djupinlärning för att påskynda realtids bakgrunds borttagning, användnings fallen fortsätter att växa för varje dag.

Läs vidare för att lära dig vilken metod du kan använda när det gäller att använda AI i video bearbetning.

Grunden för realtidsvideo bearbetning

Låt oss börja med grunden. Realtidsvideo bearbetning är en essentiell teknik i övervakningssystem som använder objekt- och ansiktsigenkänning. Det är också den process som driver AI visuell inspektion programvara i den industriella sektorn.

Så, hur fungerar video bearbetning? Video bearbetning innefattar en serie steg, som inkluderar avkodning, beräkning och kodning. Här är vad du behöver veta:

  • Avkodning: Processen som krävs för att konvertera en video från en komprimerad fil tillbaka till dess ursprungliga format.
  • Beräkning: En specifik operation som utförs på en rå video ram.
  • Kodning: Processen att omvandla den bearbetade ramen tillbaka till dess ursprungliga komprimerade tillstånd.

Nu, målet med varje video bearbetnings uppgift är att slutföra dessa steg så snabbt och exakt som möjligt. De enklaste sätten att uppnå detta inkluderar: att arbeta parallellt och optimera algoritmen för hastighet. I enkla termer? Du behöver utnyttja fil delning och pipeline arkitektur.

Vad är video fil delning?

Video fil delning tillåter algoritmerna att arbeta samtidigt, vilket gör att de kan använda långsammare, mer exakta modeller. Detta uppnås genom att dela videor i separata delar som sedan bearbetas samtidigt.

Du kan tänka på video delning som en form av virtuell fil generering snarare än under fil generering.

Trots detta, är video fil delning inte den bästa optionen för realtids video bearbetning. Varför exakt? Denna process gör det svårt för dig att pausa, återuppta och backa en fil medan den bearbetas.

Vad är pipeline arkitektur?

Den andra optionen är pipeline arkitektur. Denna process fungerar för att dela och parallellisera uppgifterna som utförs under bearbetning, snarare än att direkt dela videon.

Här är ett snabbt exempel på vad pipeline arkitektur ser ut i praktiken, och hur den kan användas i ett video övervakningssystem för att upptäcka och sudda ut ansikten i realtid.

I detta exempel, har pipeline delat upp uppgifterna i avkodning, ansikts upptäckt, ansikts suddning och kodning. Och om du vill förbättra pipelinens hastighet, kan du använda pipeline djupinlärningstekniker.

Avkodning och kodning förklarad

Vad gäller avkodning och kodning? Det finns två sätt att slutföra dessa processer: programvara och maskinvara.

Du kanske redan är bekant med konceptet maskinvaru acceleration. Denna process är möjlig tack vare avkodare och kodare installerade i de senaste NVIDIA grafikkorten, samt CUDA kärnorna.

Så, vilka alternativ har du tillgängliga när det gäller maskinvaru acceleration för kodnings- och avkodningsprocesserna? Här är några av de mer populära alternativen:

  • Kompilera OpenCV med CUDA stöd: Kompilera OpenCV med CUDA optimerar både avkodning och alla pipeline beräkningar som använder OpenCV. Tänk på att du kommer att behöva skriva dem i C++ eftersom Python omslaget inte stöder detta. Men i situationer som kräver både avkodning och numeriska beräkningar med en GPU utan att kopiera från CPU minne, är det fortfarande ett av de bättre valen.
  • Kompilera FFmpeg eller GStreamer med NVDEC/NVENC codecs stöd: Ett annat alternativ är att använda den inbyggda NVIDIA avkodaren och kodaren som ingår i anpassade installationer av FFmpeg och Gstreamer. Men vi rekommenderar att använda FFmpeg om möjligt, eftersom det kräver mindre underhåll. Dessutom är de flesta bibliotek driven av FFmpeg, vilket innebär att du automatiskt kommer att förbättra bibliotekets prestanda genom att ersätta det.
  • Använd NVIDIA Video Processing Framework: Det sista alternativet är att använda en Python omslag för att avkoda ramen direkt till en PyTorch tensor på GPU. Detta alternativ tar bort extra kopiering från CPU till GPU.

Ansikts upptäckt och suddning

Objekt upptäckts modeller (SSDs eller RetinaFace) är ett populärt alternativ för att slutföra ansikts upptäckt. Dessa lösningar fungerar för att lokalisera det mänskliga ansiktet i en ram. Och baserat på vår erfarenhet, tenderar vi att föredra Caffe Face tracking och TensorFlow objekt upptäckt modeller, eftersom de gav de bästa resultaten. Dessutom är båda tillgängliga med hjälp av OpenCV biblioteket dnn modul.

Så, vad händer efter att ett ansikte har upptäckts? Nästa, kommer Python och OpenCV-baserad system att avslöja begränsnings rutor och upptäckts säkerhet. Slutligen, appliceras en suddnings algoritm på beskurna områden.

Hur kan du bygga AI-drivna live video bearbetnings programvara?

Det är ingen hemlighet att video bearbetning, codec som driver det, och både hårdvara och programvara som krävs är ganska tekniska till sin natur.

Ändå, betyder det inte att du inte kan använda dessa verktyg för att bygga din egen live video bearbetnings programvara.

Här är en kort sammanfattning av vad du behöver göra:

  1. Börja med att justera din förtränade neurala nätverk för att slutföra de uppgifter som krävs.
  2. Konfigurera din moln infrastruktur för att hantera video bearbetning och skala som behövs.
  3. Bygg en programvaru lösning för att kondensera processen och integrera specifika användnings fall som mobilapplikationer och admin eller webb paneler.

Utveckling av en MVP för liknande video bearbetnings programvara kan ta upp till fyra månader med en förtränad neural nätverk och enkla program lager. Men, omfattningen och tids ramen beror på varje projekts detaljer. I de flesta fall, är det meningsfullt att börja med Proof of Concept utveckling för att utforska projektspecifik och hitta en optimal flöde.

Maksym är angelägen om att skaffa sig nya insikter och erfarenheter inom Data Science och Machine Learning. Han är särskilt intresserad av Deep Learning-baserade teknologier och deras tillämpning i affärsrelaterade användningsfall.