Inizia a usare YOLOv5 🚀 in Docker#
Benvenuto nella guida introduttiva a Docker per Ultralytics YOLOv5! Questo tutorial fornisce istruzioni dettagliate per configurare ed eseguire YOLOv5 all'interno di un container Docker. Docker ti consente di eseguire YOLOv5 in un ambiente isolato e coerente, semplificando il deployment e la gestione delle dipendenze su sistemi diversi. Questo approccio sfrutta la containerizzazione per riunire l'applicazione e le sue dipendenze in un unico pacchetto.
Per metodi di configurazione alternativi, consulta le nostre guide per Notebook Colab
, GCP Deep Learning VM o Amazon AWS. Per una panoramica generale sull'uso di Docker con i modelli Ultralytics, consulta la guida introduttiva a Docker di Ultralytics.
Prerequisiti#
Prima di iniziare, assicurati di aver installato quanto segue:
- Docker: scarica e installa Docker dal sito web ufficiale di Docker. Docker è essenziale per creare e gestire container.
- Driver NVIDIA (necessari per il supporto GPU): assicurati di aver installato i driver NVIDIA versione 455.23 o superiore. Puoi scaricare i driver più recenti dal sito web di NVIDIA.
- NVIDIA Container Toolkit (necessario per il supporto GPU): questo toolkit consente ai container Docker di accedere alle GPU NVIDIA della macchina host. Per istruzioni dettagliate, segui la guida ufficiale all'installazione di NVIDIA Container Toolkit.
Configurare NVIDIA Container Toolkit (utenti GPU)#
Per prima cosa, verifica che i driver NVIDIA siano installati correttamente eseguendo:
nvidia-smiQuesto comando dovrebbe mostrare informazioni sulle GPU e sulla versione del driver installato.
Poi installa NVIDIA Container Toolkit. I comandi seguenti sono tipici dei sistemi basati su Debian, come Ubuntu, e di quelli basati su RHEL, come Fedora/CentOS; consulta però la guida ufficiale riportata sopra per le istruzioni specifiche della tua distribuzione:
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
| sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
| sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.listAggiorna gli elenchi dei pacchetti e installa NVIDIA Container Toolkit:
sudo apt-get updatesudo apt-get install -y nvidia-container-toolkitVerificare i dispositivi CDI con Docker#
Esegui nvidia-ctk cdi list per verificare che i dispositivi GPU CDI siano disponibili (il servizio nvidia-cdi-refresh del toolkit genera e mantiene automaticamente la specifica con toolkit >= 1.18):
nvidia-ctk cdi listDovresti visualizzare voci come nvidia.com/gpu=0 e nvidia.com/gpu=all. Su Linux, le richieste di dispositivi CDI richiedono Docker >= 28.2.0 e NVIDIA Container Toolkit >= 1.18. Il flag legacy --gpus all può causare la perdita dell'accesso alla GPU dopo il ricaricamento dei daemon host: aggiorna quindi gli host Linux meno recenti e usa invece --device.
Passaggio 1: scarica l'immagine Docker di YOLOv5#
Ultralytics fornisce immagini ufficiali di YOLOv5 su Docker Hub. Il tag latest segue il commit più recente del repository, così avrai sempre la versione più aggiornata. Scarica l'immagine con il comando seguente:
# Define the image name with tag
t=ultralytics/yolov5:latest
# Pull the latest YOLOv5 image from Docker Hub
sudo docker pull $tPuoi consultare tutte le immagini disponibili nel repository Ultralytics YOLOv5 su Docker Hub.
Passaggio 2: esegui il container Docker#
Dopo aver scaricato l'immagine, puoi eseguirla come container.
Usare solo la CPU#
Per eseguire un container interattivo usando solo la CPU, usa il flag -it. Il flag --ipc=host consente di condividere lo spazio dei nomi IPC dell'host, caratteristica importante per l'accesso alla memoria condivisa.
# Run an interactive container instance using CPU
sudo docker run -it --ipc=host $tUsare la GPU#
Per abilitare l'accesso alla GPU all'interno del container, usa il flag --device nvidia.com/gpu=... CDI. È necessario che NVIDIA Container Toolkit sia installato correttamente.
# Run with access to all available GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all $t
# Run with access to specific GPUs (e.g., GPUs 2 and 3)
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 $tPer maggiori dettagli sulle opzioni dei comandi, consulta la documentazione del comando Docker run.
Montare directory locali#
Per lavorare con i tuoi file locali (dataset, pesi del modello ecc.) all'interno del container, usa il flag -v per montare una directory host nel container:
# Mount /path/on/host (your local machine) to /path/in/container (inside the container)
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container $tSostituisci /path/on/host con il percorso effettivo sulla tua macchina e /path/in/container con il percorso desiderato all'interno del container Docker (ad esempio, /usr/src/datasets).
Passaggio 3: usa YOLOv5 🚀 nel container Docker#
Ora ti trovi all'interno del container Docker di YOLOv5 in esecuzione! Da qui puoi eseguire i comandi standard di YOLOv5 per varie attività di machine learning e deep learning, come il rilevamento degli oggetti.
# Train a YOLOv5 model on your custom dataset (ensure data is mounted or downloaded)
python train.py --data your_dataset.yaml --weights yolov5s.pt --img 640 # Start training
# Validate the trained model's performance (Precision, Recall, mAP)
python val.py --weights path/to/your/best.pt --data your_dataset.yaml # Validate accuracy
# Run inference on images or videos using a trained model
python detect.py --weights yolov5s.pt --source path/to/your/images_or_videos # Perform detection
# Export the trained model to various formats like ONNX, CoreML, or TFLite for deployment
python export.py --weights yolov5s.pt --include onnx coreml tflite # Export modelPer istruzioni dettagliate, consulta i tutorial Esegui il training su dati personalizzati ed Esportazione del modello.
Scopri di più sulle metriche di valutazione, come precisione, richiamo e mAP. Approfondisci i diversi formati di esportazione, come ONNX, CoreML e TFLite, ed esplora le varie opzioni di deployment del modello. Ricordati di gestire efficacemente i pesi del modello.

Hai configurato ed eseguito correttamente YOLOv5 all'interno di un container Docker.
Domande frequenti#
I worker del dataloader PyTorch condividono i tensori tramite la memoria condivisa, mentre il valore predefinito di Docker, 64 MB, è insufficiente.
--ipc=hostcondivide il segmento di memoria dell'host;--shm-size=8gè un'alternativa se preferisci mantenere isolato il container.Esegui
nvidia-smisull'host per verificare che il driver funzioni, controlla che NVIDIA Container Toolkit sia installato connvidia-ctk cdi liste assicurati di usare Docker 28.2 o versioni successive affinché--device nvidia.com/gpu=allvenga accettato.Monta le directory host usando
-v /path/on/host:/path/in/containere punta--datae--projectai percorsi montati. I file scritti altrove nel container vengono eliminati quando il container viene rimosso.Sì, ma il container deve poter accedere a un server di visualizzazione. Consulta le istruzioni per X11 e Wayland nella guida Docker di Ultralytics. Se non è disponibile un display, salva i risultati con
--save-txtoppure con l'output predefinitoruns/detect/.