Lideri de opinie
Aplicarea inteligenței artificiale în procesarea video în timp real: Bazele și multe altele

De Maksym Tatariants, inginer de știință a datelor la MobiDev.
Nu există nimic nou în utilizarea inteligenței artificiale (IA) în procesarea video. Dacă ne uităm dincolo de procesarea imaginilor – este unul dintre cele mai comune cazuri de utilizare a IA. Și, la fel ca procesarea imaginilor, procesarea video utilizează tehnici stabilite, cum ar fi viziunea computerizată, recunoașterea obiectelor, învățarea automată și învățarea profundă pentru a îmbunătăți acest proces.
Indiferent dacă utilizați viziunea computerizată și NLP în editarea video și generarea de video, recunoașterea obiectelor în auto-etichetarea conținutului video, învățarea automată pentru a rationaliza analiza video IA sau învățarea profundă pentru a accelera eliminarea fundalului în timp real, cazurile de utilizare continuă să crească de zi cu zi.
Continuați să citiți pentru a afla ce abordare puteți adopta atunci când vine vorba de utilizarea IA în procesarea video.
Bazele procesării video în timp real
Să începem cu bazele. Procesarea video în timp real este o tehnologie esențială în sistemele de supraveghere care utilizează recunoașterea obiectelor și a feței. Este, de asemenea, procesul care alimentează software-ul de inspecție vizuală IA în sectorul industrial.
Deci, cum funcționează procesarea video? Procesarea video implică o serie de pași, care includ decodarea, calculul și codarea. Iată ce trebuie să știți:
- Decodarea: Procesul necesar pentru a converti un video dintr-un fișier comprimat înapoi în formatul său brut.
- Calculul: O operație specifică efectuată pe un cadru video brut.
- Codarea: Procesul de reconvertire a cadrului procesat înapoi în starea sa comprimată originală.
Acum, scopul oricărei sarcini de procesare a video este de a finaliza aceste pași cât mai repede și mai precis posibil. Cele mai ușoare modalități de a realiza acest lucru includ: lucrul în paralel și optimizarea algoritmului pentru viteză. În termeni simpli? Trebuie să utilizați împărțirea fișierelor și arhitectura de conducte.
Ce este împărțirea fișierelor video?
Împărțirea fișierelor video permite algoritmilor să funcționeze simultan, permițându-le să utilizeze modele mai lente, dar mai precise. Acest lucru se realizează prin împărțirea videourilor în părți separate care sunt apoi procesate în același timp.
Puteți considera împărțirea video ca o formă de generare de fișiere virtuale, mai degrabă decât generare de subfișiere.
Cu toate acestea, împărțirea fișierelor video nu este cea mai bună opțiune pentru procesarea video în timp real. De ce? Acest proces face dificilă pauzarea, reluarea și rebobinarea unui fișier în timp ce este procesat.
Ce este arhitectura de conducte?
Cealaltă opțiune este arhitectura de conducte. Acest proces funcționează pentru a împărți și a paraleliza sarcinile efectuate în timpul procesării, mai degrabă decât împărțirea directă a video-ului.
Iată un exemplu rapid al modului în care arhitectura de conducte arată în practică și cum poate fi utilizată într-un sistem de supraveghere video pentru a detecta și a estompa fețele în timp real.
În acest exemplu, conducta a împărțit sarcinile în decodare, detectare a feței, estompare a feței și codare. Și dacă doriți să îmbunătățiți viteza conductei, puteți utiliza tehnici de învățare profundă.
Decodarea și codarea explicată
Ce despre decodare și codare? Există două moduri în care puteți finaliza aceste procese: software și hardware.
Probabil că sunteți deja familiarizați cu conceptul de accelerare hardware. Acest proces este posibil datorită decodificatorilor și codificatorilor instalați în cele mai recente plăci grafice NVIDIA, precum și a nucleelor CUDA.
Deci, ce opțiuni aveți disponibile atunci când vine vorba de accelerarea hardware pentru procesele de codare și decodare? Iată câteva dintre opțiunile mai populare:
- Compilați OpenCV cu suport CUDA: Compilarea OpenCV cu suport CUDA optimizează atât decodarea, cât și orice calcul al conductei care utilizează OpenCV. Țineți minte – veți avea nevoie să scrieți în C++, deoarece învelișul Python nu suportă acest lucru. Dar în situațiile care necesită atât decodarea, cât și calculele numerice cu un GPU fără copierea din memoria CPU, este totuși una dintre cele mai bune opțiuni disponibile.
- Compilați FFmpeg sau GStreamer cu suport pentru codec-urile NVDEC/NVENC: O altă opțiune este de a utiliza decodificatorul și codificatorul NVIDIA încorporat, inclus cu instalațiile personalizate ale FFmpeg și Gstreamer. Cu toate acestea, vă sugerăm să utilizați FFmpeg, deoarece necesită mai puțină întreținere. De asemenea, majoritatea bibliotecilor sunt alimentate de FFmpeg, ceea ce înseamnă că veți îmbunătăți automat performanța bibliotecii prin înlocuirea acesteia.
- Utilizați cadru de procesare video NVIDIA: Ultima opțiune este de a utiliza un înveliș Python pentru a decoda cadrul direct într-un tensor PyTorch pe GPU. Această opțiune elimină copierea suplimentară de la CPU la GPU.
Detectarea și estomparea feței
Modelele de detectare a obiectelor (SSD sau RetinaFace) sunt o opțiune populară pentru detectarea feței. Aceste soluții funcționează pentru a localiza fața umană într-un cadru. Și, pe baza experienței noastre, tendința noastră este să preferăm modelul de urmărire a feței Caffe și modelul de detectare a obiectelor TensorFlow, deoarece au oferit cele mai bune rezultate. De asemenea, ambele sunt disponibile utilizând biblioteca OpenCV modulul dnn.
Ce urmează după ce o față a fost detectată? Următorul, sistemul Python și OpenCV-bazat va dezvălui cutii de delimitare și încredere în detectare. În final, se aplică un algoritm de estompare în zonele tăiate.
Cum puteți construi software de procesare video live cu putere de IA?
Nu este un secret că procesarea video, codec-urile care o alimentează și atât hardware-ul, cât și software-ul necesare sunt destul de tehnice.
Cu toate acestea, acest lucru nu înseamnă că nu puteți utiliza aceste instrumente pentru a construi propriul software de procesare video live.
Iată o scurtă prezentare a ceea ce trebuie să faceți:
- Începeți prin ajustarea rețelei dvs. neurale pre-antrenate pentru a finaliza sarcinile necesare.
- Configurați infrastructura dvs. cloud pentru a gestiona procesarea video și pentru a scala după cum este necesar.
- Construiți un avocat software pentru a condensa procesul și a integra cazuri de utilizare specifice, cum ar fi aplicații mobile și panouri administrative sau web.
Dezvoltarea unui MVP pentru software de procesare video similar poate dura până la patru luni, utilizând o rețea neurală pre-antrenată și straturi de aplicație simple. Cu toate acestea, domeniul de aplicare și calendarul depind de detalii specifice ale fiecărui proiect. În majoritatea cazurilor, are sens să începeți cu dezvoltarea Conceptului de dovadă pentru a explora specificul proiectului și a găsi un flux optim.














