Leader di pensiero
Applicazione dell’Intelligenza Artificiale all’Elaborazione di Video in Tempo Reale: Le Basi e Oltre

Di Maksym Tatariants, Data Science Engineer presso MobiDev.
Non c’è nulla di nuovo nell’utilizzo dell’intelligenza artificiale (AI) nell’elaborazione di video. Se si guarda oltre l’elaborazione di immagini, è uno dei casi d’uso più comuni per l’AI. E proprio come l’elaborazione di immagini, l’elaborazione di video utilizza tecniche consolidate come visione artificiale, riconoscimento di oggetti, apprendimento automatico e apprendimento profondo per migliorare questo processo.
Indipendentemente dal fatto che si utilizzino visione artificiale e NLP nella modifica di video e generazione, riconoscimento di oggetti nella creazione automatica di tag per i contenuti video, apprendimento automatico per semplificare l’analisi di video AI o apprendimento profondo per accelerare l’rimozione dello sfondo in tempo reale, i casi d’uso continuano a crescere di giorno in giorno.
Continua a leggere per scoprire quale approccio puoi adottare quando si tratta di utilizzare l’AI nell’elaborazione di video.
Le Basi dell’Elaborazione di Video in Tempo Reale
Iniziamo con le basi. L’elaborazione di video in tempo reale è una tecnologia essenziale nei sistemi di sorveglianza che utilizzano il riconoscimento di oggetti e di volti. È anche il processo che alimenta il software di ispezione visiva AI nel settore industriale.
Quindi, come funziona l’elaborazione di video? L’elaborazione di video comporta una serie di passaggi, che includono la decodifica, il calcolo e la codifica. Ecco cosa devi sapere:
- Decodifica: Il processo necessario per convertire un video da un file compresso nel suo formato grezzo.
- Calcolo: Un’operazione specifica eseguita su un frame video grezzo.
- Codifica: Il processo di riconversione del frame elaborato nel suo stato compresso originale.
Ora, l’obiettivo di qualsiasi compito di elaborazione di video è completare questi passaggi il più velocemente e accuratamente possibile. I modi più facili per raggiungere questo obiettivo includono: lavorare in parallelo e ottimizzare l’algoritmo per la velocità. In parole semplici? Devi sfruttare la divisione dei file e l’architettura del flusso di lavoro.
Che Cos’è la Divisione dei File Video?
La divisione dei file video consente agli algoritmi di lavorare contemporaneamente, consentendo loro di utilizzare modelli più lenti e precisi. Ciò si ottiene dividendo i video in parti separate che vengono quindi elaborate contemporaneamente.
Puoi pensare alla divisione dei video come a una forma di generazione di file virtuali anziché di generazione di sottofile.
Nonostante ciò, la divisione dei file video non è l’opzione migliore per l’elaborazione di video in tempo reale. Perché esattamente? Questo processo rende difficile mettere in pausa, riprendere e riavvolgere un file mentre viene elaborato.
Che Cos’è l’Architettura del Flusso di Lavoro?
L’altra opzione è l’architettura del flusso di lavoro. Questo processo lavora per dividere e parallelizzare i compiti eseguiti durante l’elaborazione, anziché dividere semplicemente il video.
Ecco un esempio rapido di come funziona l’architettura del flusso di lavoro nella pratica e di come può essere utilizzata in un sistema di sorveglianza video per rilevare e sfocare i volti in tempo reale.
In questo esempio, il flusso di lavoro ha diviso i compiti in decodifica, rilevamento dei volti, sfocatura dei volti e codifica. E se si desidera migliorare la velocità del flusso di lavoro, è possibile utilizzare le tecniche di apprendimento profondo del flusso di lavoro.
Decodifica e Codifica Spiegate
E la decodifica e la codifica? Ci sono due modi per completare questi processi: software e hardware.
Potresti già conoscere il concetto di accelerazione hardware. Questo processo è reso possibile grazie ai decoder e agli encoder installati nelle schede grafiche NVIDIA più recenti, nonché ai core CUDA.
Quindi, quali opzioni hai a disposizione per l’accelerazione hardware per i processi di codifica e decodifica? Ecco alcune delle opzioni più popolari:
- Compilare OpenCV con il supporto CUDA: La compilazione di OpenCV con il supporto CUDA ottimizza sia la decodifica che i calcoli della pipeline che utilizzano OpenCV. Tieni presente che dovrai scrivere in C++ poiché il wrapper Python non supporta questa funzionalità. Tuttavia, in situazioni che richiedono sia la decodifica che i calcoli numerici con una GPU senza copiare dalla memoria CPU, è ancora una delle scelte migliori disponibili.
- Compilare FFmpeg o GStreamer con il supporto dei codec NVDEC/NVENC: Un’altra opzione è utilizzare il decoder e l’encoder NVIDIA integrati con installazioni personalizzate di FFmpeg e Gstreamer. Tuttavia, consigliamo di utilizzare FFmpeg se possibile, poiché richiede meno manutenzione. Inoltre, la maggior parte delle librerie è alimentata da FFmpeg, il che significa che migliorerai automaticamente le prestazioni della libreria sostituendola.
- Utilizzare il Framework di Elaborazione Video NVIDIA: L’ultima opzione è utilizzare un wrapper Python per decodificare il frame direttamente in un tensore PyTorch sulla GPU. Questa opzione rimuove la copia extra dalla CPU alla GPU.
Rilevamento e Sfocatura dei Volti
I modelli di rilevamento di oggetti (SSD o RetinaFace) sono un’opzione popolare per completare il rilevamento dei volti. Queste soluzioni lavorano per localizzare il volto umano in un frame. E in base alla nostra esperienza, tendiamo a preferire i modelli di riconoscimento facciale Caffe e i modelli di riconoscimento di oggetti TensorFlow, poiché hanno fornito i migliori risultati. Inoltre, entrambi sono disponibili utilizzando la libreria OpenCV modulo dnn.
Quindi, cosa succede dopo che un volto è stato rilevato? Successivamente, il sistema basato su Python e OpenCV rivelerà le aree di delimitazione e la fiducia di rilevamento. Infine, viene applicato un algoritmo di sfocatura alle aree ritagliate.
Come Puoi Costruire un Software di Elaborazione di Video in Tempo Reale con Intelligenza Artificiale?
Non è un segreto che l’elaborazione di video, i codec che lo alimentano e sia l’hardware che il software necessari siano abbastanza tecnici per natura.
Tuttavia, ciò non significa che non puoi utilizzare questi strumenti per costruire il tuo software di elaborazione di video in tempo reale.
Ecco una breve panoramica di cosa devi fare:
- Inizia regolando la tua rete neurale pre-addestrata per completare i compiti richiesti.
- Configura la tua infrastruttura cloud per gestire l’elaborazione di video e scalare secondo necessità.
- Crea un avvocato software per condensare il processo e integrare casi d’uso specifici come applicazioni mobili e pannelli amministrativi o web.
Sviluppare un MVP per un software di elaborazione di video simile può richiedere fino a quattro mesi utilizzando una rete neurale pre-addestrata e strati di applicazione semplici. Tuttavia, l’ambito e la tempistica dipendono dai dettagli di ogni progetto. Nella maggior parte dei casi, ha senso iniziare con lo sviluppo della Proof of Concept per esplorare i dettagli del progetto e trovare un flusso ottimale.














