Ultralytics YOLO27:
Get Started

Começa a usar YOLOv5 🚀 no Docker#

Bem-vindo ao guia de início rápido do Docker para Ultralytics YOLOv5! Este tutorial fornece instruções passo a passo para configurar e executar YOLOv5 num contentor Docker. A utilização do Docker permite executar YOLOv5 num ambiente isolado e consistente, simplificando a implementação e a gestão de dependências em diferentes sistemas. Esta abordagem tira partido da contentorização para empacotar a aplicação e as respetivas dependências em conjunto.

Para conheceres métodos de configuração alternativos, consulta os nossos Notebooks Colab Open In Colab Open In Kaggle, os guias da GCP Deep Learning VM ou da Amazon AWS. Para uma visão geral da utilização do Docker com modelos da Ultralytics, consulta o Guia de início rápido do Docker da Ultralytics.

Pré-requisitos#

Antes de começares, confirma que tens os seguintes componentes instalados:

  1. Docker: transfere e instala o Docker a partir do site oficial do Docker. O Docker é essencial para criar e gerir contentores.
  2. Controladores NVIDIA (necessários para suporte de GPU): confirma que tens instalada a versão 455.23 ou posterior dos controladores NVIDIA. Podes transferir os controladores mais recentes no site da NVIDIA.
  3. NVIDIA Container Toolkit (necessário para suporte de GPU): este kit de ferramentas permite que os contentores Docker acedam às GPUs NVIDIA da máquina anfitriã. Segue o guia oficial de instalação do NVIDIA Container Toolkit para obteres instruções detalhadas.

Configurar o NVIDIA Container Toolkit (utilizadores de GPU)#

Primeiro, confirma que os controladores NVIDIA estão instalados corretamente, executando:

nvidia-smi

Este comando deve apresentar informações sobre as tuas GPU(s) e a versão do controlador instalado.

Em seguida, instala o NVIDIA Container Toolkit. Os comandos abaixo são típicos de sistemas baseados em Debian, como Ubuntu, e de sistemas baseados em RHEL, como Fedora/CentOS, mas consulta o guia oficial indicado acima para obteres instruções específicas da tua distribuição:

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.list

Atualiza as listas de pacotes e instala o NVIDIA Container Toolkit:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

Verificar dispositivos CDI com o Docker#

Executa nvidia-ctk cdi list para garantir que os dispositivos CDI da GPU estão disponíveis (o serviço nvidia-cdi-refresh do toolkit gera e mantém a especificação automaticamente no toolkit >= 1.18):

nvidia-ctk cdi list

Deves ver entradas como nvidia.com/gpu=0 e nvidia.com/gpu=all. No Linux, as solicitações de dispositivos CDI requerem Docker >= 28.2.0 e NVIDIA Container Toolkit >= 1.18. O sinalizador legado --gpus all pode fazer perder o acesso à GPU após recarregamentos do daemon do anfitrião; por isso, atualiza os anfitriões Linux mais antigos e usa --device.

Passo 1: obter a imagem Docker de YOLOv5#

A Ultralytics disponibiliza imagens oficiais de YOLOv5 no Docker Hub. A etiqueta latest acompanha o commit mais recente do repositório, garantindo que tens sempre a versão mais recente. Obtém a imagem com o seguinte comando:

# Define the image name with tag
t=ultralytics/yolov5:latest

# Pull the latest YOLOv5 image from Docker Hub
sudo docker pull $t

Podes consultar todas as imagens disponíveis no repositório de YOLOv5 da Ultralytics no Docker Hub.

Passo 2: executar o contentor Docker#

Depois de obteres a imagem, podes executá-la como um contentor.

Usar apenas CPU#

Para executar uma instância interativa do contentor usando apenas a CPU, usa o sinalizador -it. O sinalizador --ipc=host permite partilhar o espaço de nomes IPC do anfitrião, o que é importante para aceder à memória partilhada.

# Run an interactive container instance using CPU
sudo docker run -it --ipc=host $t

Usar GPU#

Para ativar o acesso à GPU dentro do contentor, usa o sinalizador CDI --device nvidia.com/gpu=... CDI. Para isso, o NVIDIA Container Toolkit tem de estar instalado corretamente.

# 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 $t

Consulta a referência do comando Docker run para obteres mais informações sobre as opções do comando.

Montar diretórios locais#

Para trabalhar com os teus ficheiros locais (conjuntos de dados, pesos de modelos, etc.) dentro do contentor, usa o sinalizador -v para montar um diretório do anfitrião no contentor:

# 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 $t

Substitui /path/on/host pelo caminho real na tua máquina e /path/in/container pelo caminho pretendido dentro do contentor Docker (por exemplo, /usr/src/datasets).

Passo 3: usar YOLOv5 🚀 no contentor Docker#

Agora estás dentro do contentor Docker de YOLOv5 em execução! A partir daqui, podes executar comandos padrão do YOLOv5 para várias tarefas de aprendizagem automática e aprendizagem profunda, como a deteção de objetos.

# 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 model

Consulta os tutoriais Treinar com dados personalizados e Exportação de modelos para obteres instruções detalhadas.

Sabe mais sobre métricas de avaliação, como Precisão, Revocação e mAP. Compreende os diferentes formatos de exportação, como ONNX, CoreML e TFLite, e explora várias opções de implementação de modelos. Não te esqueças de gerir eficazmente os pesos dos modelos.

Running YOLOv5 inside a Docker container on GCP

Configuraste e executaste YOLOv5 num contentor Docker com sucesso.

Perguntas frequentes#

  • Os processos de trabalho do carregador de dados do PyTorch partilham tensores através da memória partilhada, e os 64 MB predefinidos do Docker são insuficientes. --ipc=host partilha o segmento de memória do anfitrião; --shm-size=8g é uma alternativa se preferires manter o contentor isolado.

  • Executa nvidia-smi no anfitrião para confirmar que o controlador funciona, verifica se o NVIDIA Container Toolkit está instalado com nvidia-ctk cdi list e confirma que o Docker é da versão 28.2 ou posterior para aceitar --device nvidia.com/gpu=all.

  • Monte diretórios do host com -v /path/on/host:/path/in/container e aponte --data e --project para os caminhos montados. Os arquivos gravados em outros locais do contêiner são descartados quando ele é removido.

  • Sim, mas o contêiner precisa ter acesso a um servidor de exibição. Consulte as instruções para X11 e Wayland no guia do Docker da Ultralytics. Sem uma tela, salve os resultados com --save-txt ou use a saída padrão runs/detect/.

Comentários