Ultralytics YOLO27:
Get Started

通过 Docker 🚀 开始使用 YOLOv5#

欢迎阅读 Ultralytics YOLOv5 Docker 快速入门指南!本教程将分步指导你如何在 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

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

了解更多关于 Precision、Recall 和 mAP 等评估指标的信息。了解 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/ 输出保存结果。

评论