Ultralytics YOLO27: 加入候补名单。
开始使用

通过 Docker 🚀 开始使用 YOLOv5#

本教程将逐步说明如何在 Docker 容器中设置并运行 YOLOv5。使用 Docker 可让你在隔离且一致的环境中运行 YOLOv5,简化不同系统间的部署和依赖管理。此方法利用容器化将应用程序及其依赖项打包在一起。

如需采用其他设置方法,可参考我们的 Colab Notebook Open In Colab Open In Kaggle、GCP Deep Learning VM 或 Amazon AWS 指南。若要大致了解如何将 Docker 与 Ultralytics 模型配合使用,请参阅 Ultralytics Docker 快速入门指南。

前置条件#

开始之前,请确保已安装以下组件:

  1. Docker:从 Docker 官方网站下载并安装 Docker。Docker 是创建和管理容器的必备工具。
  2. NVIDIA 驱动程序(GPU 支持所必需):请确保已安装 455.23 或更高版本的 NVIDIA 驱动程序。你可以从 NVIDIA 网站下载最新驱动程序。
  3. NVIDIA Container Toolkit(GPU 支持所必需):此工具包允许 Docker 容器访问主机上的 NVIDIA GPU。请按照官方的 NVIDIA Container Toolkit 安装指南了解详细说明。

设置 NVIDIA Container Toolkit(GPU 用户)#

首先,运行以下命令,确认 NVIDIA 驱动程序已正确安装:

nvidia-smi

此命令应显示 GPU 信息和已安装的驱动程序版本。

接下来,安装 NVIDIA Container Toolkit。以下命令通常适用于 Ubuntu 等基于 Debian 的系统,以及 Fedora/CentOS 等基于 RHEL 的系统;有关特定发行版的说明,请参阅上文链接的官方指南:

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

更新软件包列表并安装 NVIDIA Container Toolkit:

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

使用 Docker 验证 CDI 设备#

运行 nvidia-ctk cdi list,确保 GPU CDI 设备可用(在 toolkit >= 1.18 时,toolkit 的 nvidia-cdi-refresh 服务会自动生成并维护规范):

nvidia-ctk cdi list

你应该会看到 nvidia.com/gpu=0 和 nvidia.com/gpu=all 等条目。在 Linux 上,CDI 设备请求要求 Docker >= 28.2.0 且 NVIDIA Container Toolkit >= 1.18。旧版 --gpus all 标志在主机守护进程重新加载后可能导致 GPU 访问丢失,因此请升级较旧的 Linux 主机并改用 --device。

步骤 1:拉取 YOLOv5 Docker 镜像#

Ultralytics 在 Docker Hub 上提供官方 YOLOv5 镜像。latest 标签会跟踪仓库中的最新提交,确保你始终获取最新版本。使用以下命令拉取镜像:

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

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

你可以在 Ultralytics YOLOv5 Docker Hub 仓库浏览所有可用镜像。

步骤 2:运行 Docker 容器#

拉取镜像后,你就可以将其作为容器运行。

仅使用 CPU#

若要仅使用 CPU 运行交互式容器实例,请使用 -it 标志。--ipc=host 标志允许共享主机 IPC 命名空间,这对共享内存访问很重要。

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

使用 GPU#

若要在容器中启用 GPU 访问,请使用 --device nvidia.com/gpu=... CDI 标志。为此必须正确安装 NVIDIA Container Toolkit。

# 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

有关命令选项的更多详情,请参阅 Docker run 参考。

挂载本地目录#

若要在容器中使用本地文件(数据集、模型权重等),请使用 -v 标志,将主机目录挂载到容器中:

# 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

将 /path/on/host 替换为你计算机上的实际路径,并将 /path/in/container 替换为 Docker 容器内所需的路径(例如 /usr/src/datasets)。

步骤 3:在 Docker 容器中使用 YOLOv5 🚀#

你现在已进入正在运行的 YOLOv5 Docker 容器!接下来,你可以执行标准 YOLOv5 命令,完成机器学习、深度学习和目标检测等各类任务。

# 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

如需了解详细用法,请参阅训练自定义数据和模型导出教程。

val.py 会报告精确率、召回率和 mAP,而 export.py 会为你选择的部署选项生成 ONNX、CoreML 和 TFLite 等格式。

Running YOLOv5 inside a Docker container on GCP

你已成功在 Docker 容器中设置并运行 YOLOv5。

常见问题#

  • PyTorch 数据加载器工作进程会通过共享内存共享张量,而 Docker 默认分配的 64 MB 共享内存太小。--ipc=host 会共享主机的内存段;如果你希望容器保持隔离,也可以使用 --shm-size=8g。

  • 在主机上运行 nvidia-smi 以确认驱动程序正常工作,使用 nvidia-ctk cdi list 验证 NVIDIA Container Toolkit 已安装,并确保 Docker 版本为 28.2 或更高,以便接受 --device nvidia.com/gpu=all。

  • 使用 -v /path/on/host:/path/in/container 挂载主机目录,并将 --data 和 --project 指向挂载路径。容器中其他位置写入的文件会在容器移除时被丢弃。

  • 可以,但容器需要访问显示服务器。请参阅 Ultralytics Docker 指南中的 X11 和 Wayland 说明。如果没有显示服务器,请改用 --save-txt 或默认的 runs/detect/ 输出保存结果。

评论3

提出问题、分享结果,或帮助其他人。

  1. Letícia RamaLetícia Rama

    Hello,

    Is this workflow suitable for other YOLO families, such as YOLO26?

    1. Paula DerrengerPaula DerrengerUltralytics

      Yes—the same Docker concepts apply to YOLO26, but use the current Ultralytics Docker Quickstart and ultralytics/ultralytics images rather than the YOLOv5-specific image. Please continue dropping any setup questions in this discussion so the Ultralytics team can assist.

      1