Yolo Vision Shenzhen
Shenzhen
Iscriviti ora

Containerizzazione con Docker per ottimizzare il deployment dei modelli

Abirami Vina

5 minuti di lettura

5 febbraio 2025

Scopri come l'utilizzo di Docker per la containerizzazione rende più efficiente e semplice il deployment di modelli di computer vision come Ultralytics YOLO11.

Il processo di creazione di una soluzione di computer vision prevede più passaggi della semplice fase di training e test di un modello. Infatti, una delle parti più entusiasmanti della creazione di modelli all'avanguardia è vederli avere un impatto in ambienti reali. L'utilizzo della Vision AI per risolvere problemi porta naturalmente al deployment in produzione dei modelli di computer vision che sviluppi.

Il deployment di un modello prevede diverse fasi, tra cui l'ottimizzazione dei modelli per affidabilità, scalabilità e prestazioni in diverse condizioni. Un workflow di deployment ben strutturato colma il divario tra lo sviluppo del modello e l'ottenimento di un impatto significativo che faccia la differenza. 

Spesso, quando si distribuiscono modelli di computer vision come Ultralytics YOLO11, ci sono diverse tecniche e opzioni di deployment tra cui scegliere, e dipende dall'applicazione specifica che si sta creando. Ad esempio, tecniche come la containerizzazione possono semplificare il workflow di deployment. 

La containerizzazione aiuta a impacchettare un modello e le sue dipendenze, come librerie, framework e configurazioni, in un'unica unità autonoma chiamata container. Uno dei modi più efficienti e popolari per farlo è con Docker, una piattaforma open-source che semplifica la creazione, la spedizione e l'esecuzione di applicazioni containerizzate.

In questo articolo, esploreremo come la containerizzazione e Docker semplificano il deployment dei modelli, garantendo scalabilità ed efficienza senza interruzioni nelle applicazioni Vision AI del mondo reale.

Cos'è il deployment di un modello?

Il deployment di un modello è la fase finale del ciclo di vita del machine learning, in cui il modello addestrato viene introdotto in un ambiente di produzione per fare previsioni nel mondo reale. Un deployment di successo è una parte fondamentale affinché il modello funzioni in modo affidabile in condizioni pratiche. 

Ad esempio, si consideri un modello di computer vision progettato per identificare le targhe automobilistiche per la riscossione automatizzata del pedaggio. Anche se può raggiungere un'elevata precisione in un ambiente controllato con dataset ben etichettati, il suo deployment su telecamere stradali può introdurre problemi di latenza dovuti a fattori quali l'elaborazione di immagini ad alta risoluzione, i ritardi di rete, le limitazioni hardware e i vincoli di inferenza in tempo reale. 

Previsioni lente potrebbero portare a ritardi nell'elaborazione dei pedaggi, congestione o anche mancate rilevazioni. Strategie di deployment del modello adeguate possono aiutare a ridurre la latenza, migliorare l'efficienza e supportare prestazioni affidabili in applicazioni del mondo reale.

__wf_reserved_inherit
Fig. 1. Rilevamento di targhe automobilistiche tramite YOLO11.

Inoltre, ci sono diverse considerazioni da tenere a mente quando si distribuiscono i modelli. Una è la scalabilità, dove i modelli funzionano bene durante il training, ma possono avere difficoltà a gestire dati su larga scala.

Un altro aspetto sono le discrepanze ambientali, come le differenze hardware, quando un modello viene addestrato su GPU (Graphics Processing Units) ad alte prestazioni ma distribuito su dispositivi con potenza di elaborazione limitata. Queste incongruenze nel deployment possono portare a un comportamento imprevisto del modello. Soluzioni avanzate come la containerizzazione possono essere utilizzate per affrontare queste sfide.

Containerizzazione

La containerizzazione può essere paragonata alla preparazione del tuo pranzo al sacco, che contiene tutto il necessario per un pasto, come cibo, posate e condimenti. Puoi mangiare ovunque senza preoccuparti di trovare una cucina o utensili specifici. 

Allo stesso modo, la containerizzazione impacchetta un modello con tutte le sue dipendenze, come librerie, framework e configurazioni, in un'unica unità chiamata container. Questi container assicurano che il modello funzioni in modo coerente fornendo le stesse dipendenze su qualsiasi sistema, indipendentemente dall'ambiente sottostante. A differenza delle macchine virtuali, che trasportano interi sistemi operativi, i container sono leggeri e portabili, il che li rende un'alternativa efficiente.

__wf_reserved_inherit
Fig. 2. Una panoramica della containerizzazione.

Ecco alcuni dei principali vantaggi della containerizzazione:

  • Controllo della versione: con la containerizzazione, diverse versioni di un modello o di uno stack software possono coesistere, consentendo facili rollback e aggiornamenti senza interrompere i sistemi di produzione.
  • Sicurezza: i container isolano le applicazioni dal sistema sottostante, riducendo il rischio di conflitti, vulnerabilità e accessi non autorizzati.
  • Deployment rapido: le immagini container preconfigurate consentono deployment rapidi e ripetibili, riducendo i tempi di configurazione e minimizzando gli errori di deployment.

Docker: semplificare la containerizzazione

Sebbene la containerizzazione sia un ottimo modo per eseguire applicazioni in ambienti isolati, la sua configurazione può essere complicata. È qui che entra in gioco Docker. Docker è una piattaforma open-source che semplifica la creazione, il deployment e la gestione di applicazioni containerizzate.

Fornisce un ambiente coerente e isolato, insieme agli strumenti e ai framework necessari per testare il modello. In particolare, Docker è noto per il suo solido ecosistema e la facilità d'uso. Semplifica il processo di deployment dei modelli di IA, funzionando senza problemi con le piattaforme cloud e consentendo ai modelli di IA di essere eseguiti in modo efficiente sui dispositivi edge per risultati più rapidi.

Molti settori lo utilizzano attivamente per distribuire e gestire in modo efficiente applicazioni containerizzate. Il deployment di modelli basato su Docker generalmente prevede tre componenti principali:

  • Dockerfile: Un file di configurazione basato su testo che funge da progetto per la creazione di un'immagine Docker. Contiene tutte le istruzioni necessarie, tra cui l'immagine di base, le dipendenze richieste, le impostazioni dell'ambiente e i comandi per eseguire il modello.
  • Immagini Docker: File di pacchetti preconfigurati che includono tutto il necessario per l'esecuzione del modello, come codice, librerie, ambienti di runtime e dipendenze. Queste immagini assicurano che il modello venga eseguito con la stessa configurazione su qualsiasi sistema.
  • Container Docker: Istanze in esecuzione di immagini Docker che forniscono un ambiente isolato e sicuro per l'esecuzione del modello. All'interno di questo ambiente, il modello può essere addestrato, testato e ottimizzato senza interferire con altre applicazioni o con il sistema host.
__wf_reserved_inherit
Fig. 3. Comprensione dei componenti chiave di Docker.

Esplorazione di un'applicazione di computer vision tramite Docker

Supponiamo che una città voglia implementare un sistema di monitoraggio del traffico utilizzando la computer vision per rilevare e classificare i veicoli in tempo reale. Implementare questo sistema in più posizioni, ognuna con hardware e condizioni di rete diversi, può essere impegnativo. Problemi di compatibilità, conflitti di dipendenze e ambienti incoerenti possono portare a prestazioni inaffidabili.

Utilizzando Docker, gli sviluppatori possono impacchettare l'intero modello di computer vision, insieme alle sue dipendenze (come i framework di IA come TensorFlow e gli script personalizzati), in un container. Ciò garantisce che il modello venga eseguito in modo coerente in diversi ambienti, dallo sviluppo locale ai server basati su cloud o anche ai dispositivi edge installati sulle telecamere del traffico.

__wf_reserved_inherit
Fig. 4. Come funziona Docker.

Ad esempio, implementando modelli di computer vision containerizzati Docker in più incroci, la città può analizzare il flusso del traffico, rilevare violazioni e ottimizzare i semafori. Poiché Docker facilita un ambiente standardizzato in tutte le posizioni, la manutenzione è più semplice, gli aggiornamenti sono fluidi e le prestazioni rimangono coerenti.

Deployment di YOLO11 tramite Docker

YOLO11, con la sua capacità di eseguire complesse attività di computer vision, può essere utilizzato in vari settori, come produzione, sanità, guida autonoma e agricoltura. 

Ad esempio, YOLO11 può elaborare feed video in applicazioni di fitness per tracciare esercizi come i push-up utilizzando la stima della posa. Rilevando i movimenti del corpo e contando le ripetizioni in tempo reale, aiuta a migliorare il monitoraggio dell'allenamento e l'analisi delle prestazioni.

__wf_reserved_inherit
Fig. 5. Monitoraggio di un allenamento tramite YOLO11.

Se vogliamo implementare un modello di questo tipo in applicazioni reali, dobbiamo gestire le dipendenze, ottimizzare l'hardware e garantire prestazioni coerenti in diversi ambienti. L'utilizzo di Docker semplifica questo processo impacchettando YOLO11 con tutte le librerie e le configurazioni necessarie, rendendo il deployment più efficiente, scalabile e affidabile.

Ecco una rapida occhiata ai vantaggi del deployment di YOLO11 tramite Docker:

  • Manutenzione semplificata: Docker semplifica il processo di aggiornamento e manutenzione di YOLO11 e delle sue dipendenze. Gli aggiornamenti possono essere applicati all'immagine del container senza influire sul sistema host, garantendo una gestione del modello fluida ed efficiente.
  • Collaborazione semplificata: Sviluppatori e ricercatori possono condividere facilmente container Docker preconfigurati, assicurando che i team lavorino con lo stesso ambiente ed evitando problemi di compatibilità.
  • Efficienza delle risorse: A differenza delle macchine virtuali tradizionali, i container Docker condividono il sistema operativo host, riducendo il sovraccarico e migliorando l'utilizzo delle risorse, il che è fondamentale per le attività di inferenza in tempo reale.

Applicazioni YOLO11 che possono essere implementate tramite Docker

Analizziamo alcuni esempi di applicazioni di computer vision che possono essere create utilizzando YOLO11 e Docker. 

Monitoraggio del traffico tramite YOLO11

In precedenza, abbiamo discusso del monitoraggio del traffico tramite computer vision. È interessante notare che il supporto di YOLO11 per il tracciamento degli oggetti può aiutare a costruire un sistema completo di gestione del traffico. Come funziona?

YOLO11 può analizzare i feed video in diretta dalle telecamere del traffico per rilevare e tracciare i veicoli in tempo reale. Identificando continuamente le posizioni, le velocità e i modelli di movimento dei veicoli, il sistema può monitorare i livelli di congestione, rilevare le violazioni del codice della strada (come il passaggio col rosso o le svolte illegali) e ottimizzare i semafori in base ai dati in tempo reale.

Inoltre, l'implementazione di YOLO11 su dispositivi edge o piattaforme cloud con l'ausilio di Docker garantisce un'elaborazione efficiente e la scalabilità, rendendolo uno strumento prezioso per la gestione del traffico nelle smart city.

__wf_reserved_inherit
Fig. 6. Tracciamento e conteggio dei veicoli tramite YOLO11.

Fisioterapia avanzata con YOLO11

Nel settore sanitario, la fisioterapia è fondamentale per la riabilitazione, e una postura e un movimento corretti sono essenziali per un recupero efficace. Il feedback in tempo reale da un sistema di monitoraggio del paziente basato sulla visione artificiale può aiutare i terapisti a individuare problemi come angoli articolari errati o squilibri muscolari. 

Ad esempio, se un paziente sta eseguendo un'elevazione della spalla ma non solleva il braccio all'altezza corretta o sta compensando con una postura scorretta, il sistema può rilevare questi errori e fornire correzioni immediate. Ciò consente ai terapisti di adattare i trattamenti in tempo reale.

Le capacità di stima della posa di YOLO11 possono essere utilizzate per rilevare i punti chiave del corpo e analizzare i movimenti articolari. Può elaborare feed video in diretta per fornire feedback istantaneo, aiutando i terapisti a correggere la postura, migliorare la precisione dei movimenti e prevenire infortuni. Ciò semplifica la creazione di piani di trattamento personalizzati in base ai progressi di ciascun paziente.

__wf_reserved_inherit
Fig. 7. Un esempio di monitoraggio della fisioterapia con YOLO11.

Per quanto riguarda l'implementazione di questo tipo di soluzione, l'utilizzo di Docker può garantire un funzionamento regolare in diversi ambienti, sia nelle cliniche che per il monitoraggio remoto dei pazienti. Docker semplifica l'implementazione, migliora la scalabilità e mantiene la coerenza del sistema, rendendo gli strumenti di fisioterapia basati sull'intelligenza artificiale più affidabili e accessibili.

Punti chiave

L'implementazione di un modello di computer vision è un passo fondamentale per portarlo dallo sviluppo all'uso nel mondo reale. Un processo di implementazione fluido assicura che il modello addestrato funzioni in modo affidabile nelle applicazioni pratiche. Strumenti come Docker e la containerizzazione hanno semplificato questo processo, eliminando molte sfide tradizionali. 

Grazie alla loro natura leggera, portatile e scalabile, queste tecnologie stanno cambiando il modo in cui modelli come YOLO11 vengono costruiti e implementati. Utilizzando la containerizzazione, le aziende possono risparmiare tempo, ridurre i costi e migliorare l'efficienza, garantendo al contempo che i modelli funzionino in modo coerente in diversi ambienti.

Unisciti alla nostra community e consulta il nostro repository GitHub per saperne di più sull'IA. Leggi le varie applicazioni della computer vision nel settore sanitario e dell'IA nella produzione. Esplora le nostre opzioni di licenza YOLO per iniziare con la Vision AI.

Costruiamo insieme il futuro
dell'AI!

Inizia il tuo viaggio con il futuro del machine learning

Inizia gratis
Link copiato negli appunti