Connect with us

Leader di pensiero

Applicazione dell’AI all’elaborazione dei video in tempo reale: le basi e altro

mm

Di Maksym Tatariants, Data Science Engineer presso MobiDev.

Non c’è nulla di nuovo nell’utilizzo dell’intelligenza artificiale (AI) nell’elaborazione dei video. Se si guarda oltre l’elaborazione delle immagini, è uno dei casi d’uso più comuni per l’AI. E proprio come l’elaborazione delle immagini, l’elaborazione dei video utilizza tecniche consolidate come computer vision, riconoscimento degli oggetti, apprendimento automatico e deep learning per migliorare questo processo.

Indipendentemente dal fatto che si utilizzino computer vision e NLP nella modifica dei video e generazione, riconoscimento degli oggetti nella creazione automatica di tag per i contenuti video, apprendimento automatico per ottimizzare l’analisi video AI o deep learning 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 dei video.

Le basi dell’elaborazione dei video in tempo reale

Iniziamo con le basi. L’elaborazione dei video in tempo reale è una tecnologia essenziale nei sistemi di sorveglianza che utilizzano il riconoscimento degli oggetti e dei volti. È anche il processo che alimenta il software di ispezione visiva AI nel settore industriale.

Quindi, come funziona l’elaborazione dei video? L’elaborazione dei 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 attività di elaborazione dei video è completare questi passaggi il più velocemente e accuratamente possibile. I modi più semplici per raggiungere questo obiettivo includono: lavorare in parallelo e ottimizzare l’algoritmo per la velocità. In parole semplici? Devi sfruttare la suddivisione dei file e l’architettura a pipeline.

Cosa è la suddivisione dei file video?

La suddivisione dei file video consente agli algoritmi di lavorare contemporaneamente, consentendo loro di utilizzare modelli più lenti e precisi. Ciò viene realizzato dividendo i video in parti separate che vengono elaborate contemporaneamente.

Puoi pensare alla suddivisione dei file video come a una forma di generazione di file virtuali piuttosto che di generazione di sottofile.

Nonostante ciò, la suddivisione dei file video non è l’opzione migliore per l’elaborazione dei video in tempo reale. Perché esattamente? Questo processo rende difficile pausare, riprendere e riavvolgere un file mentre è in elaborazione.

Cosa è l’architettura a pipeline?

L’altra opzione è l’architettura a pipeline. Questo processo lavora per dividere e parallelizzare le attività eseguite durante l’elaborazione, piuttosto che dividere semplicemente il video.

Ecco un esempio rapido di cosa significa l’architettura a pipeline nella pratica e di come può essere utilizzata in un sistema di sorveglianza video per rilevare e sfumare i volti in tempo reale.

In questo esempio, la pipeline ha suddiviso le attività in decodifica, rilevamento dei volti, sfumatura dei volti e codifica. E se vuoi migliorare la velocità della pipeline, puoi utilizzare le tecniche di apprendimento profondo della pipeline.

Decodifica e codifica spiegate

Cosa riguarda 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 supporto CUDA: Compilare OpenCV con 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 funzione. Ma 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 supporto codec NVDEC/NVENC: Un’altra opzione è utilizzare il decoder e l’encoder NVIDIA integrati nelle installazioni personalizzate di FFmpeg e Gstreamer. Tuttavia, suggeriamo 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 aggiuntiva dalla CPU alla GPU.

Rilevamento e sfumatura dei volti

I modelli di rilevamento degli 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 rilevamento dei volti Caffe e di rilevamento degli oggetti TensorFlow, poiché hanno fornito i migliori risultati. Inoltre, entrambi sono disponibili utilizzando la libreria dnn module.

Quindi, cosa succede dopo che un volto è stato rilevato? Successivamente, il sistema basato su Python e OpenCV rivelerà le caselle delimitanti e la fiducia nella rilevazione. Infine, viene applicato un algoritmo di sfumatura alle aree ritagliate.

Come puoi costruire un software di elaborazione video live con AI?

Non è un segreto che l’elaborazione dei video, i codec che la alimentano e sia il software che il hardware richiesti siano abbastanza tecnici.

Tuttavia, ciò non significa che non puoi utilizzare questi strumenti per costruire il tuo software di elaborazione video live.

Ecco una breve panoramica di cosa devi fare:

  1. Inizia regolando la tua rete neurale pre-addestrata per completare le attività richieste.
  2. Configura la tua infrastruttura cloud per gestire l’elaborazione dei video e scalare secondo necessità.
  3. 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 dei 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.

Maksym è desideroso di acquisire nuove conoscenze e esperienze nel campo della Data Science e del Machine Learning. È particolarmente interessato alle tecnologie basate sul Deep Learning e alla loro applicazione ai casi d'uso aziendali.