ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

YOLOv5 Docker 镜像快速入门:环境准备、容器启动与训练推理全流程实战

YOLOv5 Docker 镜像快速入门:环境准备、容器启动与训练推理全流程实战 YOLOv5 Docker 镜像快速入门环境准备、容器启动与训练推理全流程实战【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10本指南以 Ultralytics 官方 YOLOv5 Docker 快速上手教程为核心完整讲解如何在 Docker 容器中搭建并运行 YOLOv5 目标检测环境。从驱动与运行时前置条件、镜像拉取、三种典型容器启动方式基础交互、本地数据挂载、GPU 加速到容器内完成训练、验证、推理与模型导出的完整流程读完即可在自己机器上复现一套隔离、可复现的深度学习开发环境。前置条件运行 YOLOv5 容器前需要准备什么在拉取镜像之前请先确认本机满足以下三项核心前置条件这也是官方教程明确要求的版本基线NVIDIA 驱动Nvidia Driver版本455.23 或更高。驱动决定了 CUDA 运行时与容器内 GPU 直通的兼容性可从 NVIDIA 官网下载对应型号的驱动并安装。NVIDIA-Dockernvidia-dockerDocker 的 GPU 运行时扩展负责让容器能够访问宿主机 GPU。当前主流的 NVIDIA Container Toolkit 即由其演进而来。Docker EngineDocker CE版本19.03 或更高。Docker 19.03 起原生支持--gpus参数这是容器内使用 GPU 的基础。验证 GPU 环境是否就绪安装完成后可以先执行以下两步验证环境# 确认 NVIDIA 驱动与 GPU 可见 nvidia-smi # 确认 Docker 已注册 nvidia 运行时 docker info | grep -i runtime如果nvidia-smi正常输出 GPU 信息且docker info的 runtime 列表中包含nvidia说明容器 GPU 支持已就绪。在 Ubuntu 系发行版上可通过 docs/en/guides/docker-quickstart.md 中记载的步骤安装 nvidia-docker2 并重启 Docker 服务curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - distribution$(lsb_release -cs) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update sudo apt-get install -y nvidia-docker2 sudo systemctl restart docker说明本文以 YOLOv5 官方 Docker 快速上手指南为骨架当前仓库YOLOv10同属 Ultralytics YOLO 体系docker/ 目录下同样提供了一整套可直接构建使用的 Dockerfile下文会结合这些源码文件展开原理层面的补充。Step 1拉取 YOLOv5 Docker 镜像Ultralytics 官方在 Docker Hub 上维护了ultralytics/yolov5仓库。Docker Autobuild自动构建机制保证ultralytics/yolov5:latest标签始终与仓库最新提交保持同步因此直接拉取 latest 即可获得当前最新版本sudo docker pull ultralytics/yolov5:latest该镜像以官方 PyTorch 镜像为基础、预装了 CUDA/CUDNN 运行时开箱即用省去本机逐项安装 CUDA、cuDNN、PyTorch 等依赖的繁琐步骤。从本仓库 docker/Dockerfile 可以看出同一套镜像构建体系的具体做法例如以pytorch/pytorch:2.2.0-cuda12.1-cudnn8-runtime为基础镜像、构建时通过git clone拉取仓库源码并以可编辑模式安装依赖后文会详细拆解。Step 2运行 Docker 容器镜像拉取完成后即可启动容器。根据使用场景的不同官方教程给出了三种典型启动方式。基础容器交互式会话使用-it参数启动一个交互式容器实例进入容器内的 Bash 终端sudo docker run --ipchost -it ultralytics/yolov5:latest-it分配伪终端pseudo-TTY并保持 stdin 打开使你能够与容器交互、执行命令。--ipchost将容器的进程间通信IPC命名空间共享为宿主机命名空间这对 PyTorch 等多进程间的共享内存协同至关重要多 GPU 分布式训练场景下尤为关键。带本地文件访问的容器挂载数据卷训练 COCO 等数据集时数据通常存放在宿主机。使用-vvolume 挂载参数将本地目录映射进容器例如把当前目录下的datasets挂载到容器内的/usr/src/datasetssudo docker run --ipchost -it -v $(pwd)/datasets:/usr/src/datasets ultralytics/yolov5:latest$(pwd)会自动展开为当前工作目录的绝对路径。挂载后容器内即可直接读写宿主机的数据集文件训练产出权重、日志也能留在宿主机上避免容器销毁导致数据丢失。带 GPU 访问的容器启用全部 GPU使用--gpus all参数将宿主机全部 GPU 暴露给容器sudo docker run --ipchost -it --gpus all ultralytics/yolov5:latest容器内执行nvidia-smi即可确认 GPU 可见。若只想使用指定编号的 GPU例如物理 GPU 2、3 号容器内将依次显示为 0、1可参考 docker/Dockerfile 中记录的用法传入设备列表sudo docker run -it --ipchost --gpus device2,3 ultralytics/yolov5:latest提示上述--ipchost与--gpus参数可以自由组合例如 GPU 数据挂载一条命令即可完成sudo docker run -it --ipchost --gpus all -v $(pwd)/datasets:/usr/src/datasets ultralytics/yolov5:latest这也是 docker/Dockerfile 使用示例区给出的推荐组合。各启动参数速查参数作用典型场景-it分配伪终端、保持 stdin 打开交互式进入容器命令行--ipchost共享宿主机 IPC 命名空间保证进程间共享内存PyTorch 训练、多进程数据加载-v 本地:容器挂载数据卷双向共享文件读取数据集、保存权重与日志--gpus all暴露全部 GPU 给容器GPU 训练与推理--gpus device2,3只暴露指定 GPU 设备多卡环境下的资源隔离Step 3在容器内使用 YOLOv5进入容器后就可以直接在容器内完成训练、验证、推理与导出全流程。官方教程给出的核心命令如下# 在自有数据上训练模型 python train.py # 验证已训练模型的 Precision、Recall 与 mAP python val.py --weights yolov5s.pt # 使用已训练模型对图片或视频执行推理 python detect.py --weights yolov5s.pt --source path/to/images # 将模型导出为其他格式用于部署 python export.py --weights yolov5s.pt --include onnx coreml tflite推理源source支持的类型YOLOv5 快速上手教程 还给出了detect.py丰富的输入源支持容器内外用法一致可结合实际替换--sourcepython detect.py --weights yolov5s.pt --source 0 # webcam 摄像头 img.jpg # 单张图片 vid.mp4 # 视频文件 screen # 屏幕截图 path/ # 目录 list.txt # 图片列表文件 path/*.jpg # glob 通配 https://youtu.be/LNwODJXcvt4 # YouTube 视频 rtsp://example.com/media.mp4 # RTSP / RTMP / HTTP 流训练参数参考在容器内同样可以复现官方 COCO 训练基准docs/en/yolov5/quickstart_tutorial.md以 V100-16GB 为例不同模型尺度对应的推荐批大小如下python train.py --data coco.yaml --epochs 300 --weights --cfg yolov5n.yaml --batch-size 128 yolov5s 64 yolov5m 40 yolov5l 24 yolov5x 16条件允许时尽量使用更高的--batch-size或使用--batch-size -1开启 AutoBatch 自动探测可用显存来设置批大小。镜像内部结构探秘从 Dockerfile 看镜像构成虽然本指南面向 YOLOv5 官方镜像但当前仓库 docker/Dockerfile 完整展示了 Ultralytics 官方镜像的构建体系可以帮助理解这类镜像预装了什么、为什么开箱即用。关键构成如下基础镜像从pytorch/pytorch:2.2.0-cuda12.1-cudnn8-runtime起步天然携带 CUDA 12.1 与 cuDNN 8 运行时随后通过pip install nvidia-tensorrt额外装入 TensorRT。字体资源构建时下载Arial.ttf、Arial.Unicode.ttf到/root/.config/Ultralytics/保证绘制标注框与中文/Unicode 文本时不缺字体。系统依赖安装gcc git zip curl htop libgl1 libglib2.0-0 libpython3-dev gnupg g libusb-1.0-0 build-essential等包其中libgl1、libglib2.0-0是 OpenCV 图像处理所需的系统库g、libusb-1.0-0则用于编译tflite_support、lap等扩展包。工作目录与源码WORKDIR /usr/src/ultralytics构建时通过git clone拉取仓库最新代码注释中说明直接COPY会带来 git 权限问题因此改用 clone并以pip install -e .[export]可编辑模式安装同时预置yolov8n.pt权重。预执行导出构建阶段预先运行edgetpu、ncnn等格式的导出命令借此触发对应导出依赖包的自动安装AutoInstall并修复首次导出的失败问题。运行环境变量设置OMP_NUM_THREADS1以及MKL_THREADING_LAYERGNU——后者用于规避分布式训练中常见的MKL_THREADING_LAYERINTEL is incompatible with libgomp.so.1报错详见 docker/Dockerfile。这些构建细节解释了为什么官方镜像在容器内直接执行train.py、export.py等脚本时绝大多数依赖都已就绪。扩展玩法镜像变体、GPU 选择与容器管理官方镜像变体除了默认的 GPU 训练镜像docs/en/guides/docker-quickstart.md 与 docs/en/quickstart.md 还记载了多个针对不同平台的官方镜像变体当前仓库 docker/ 目录下均有对应 Dockerfile镜像标签Dockerfile适用场景ultralytics/ultralytics:latestdocker/DockerfileGPU 训练基于 PyTorch CUDA 镜像ultralytics/ultralytics:latest-cpudocker/Dockerfile-cpu无 GPU 环境面向 ONNX/OpenVINO 等 CPU 推理ultralytics/ultralytics:latest-arm64docker/Dockerfile-arm64ARM64 架构设备如树莓派ultralytics/ultralytics:latest-jetsondocker/Dockerfile-jetsonNVIDIA Jetson 嵌入式平台ultralytics/ultralytics:latest-pythondocker/Dockerfile-python最小化 Python 轻量环境ultralytics/ultralytics:latest-condadocker/Dockerfile-conda基于 Miniconda3以 conda 方式安装包以 CPU 镜像为例docker/Dockerfile-cpu 从ubuntu:23.10起步PyTorch 通过--extra-index-url https://download.pytorch.org/whl/cpu安装 CPU 版本并创建python - python3符号链接适合纯推理部署。若你希望从源码构建而非拉取镜像也可在仓库根目录执行类似sudo docker build -f docker/Dockerfile -t ultralytics/ultralytics:latest .常用容器管理命令docker/Dockerfile 使用示例区还提供了一批实用的容器管理命令# 停止所有运行中的容器 sudo docker kill $(sudo docker ps -q) # 按镜像过滤停止容器 sudo docker kill $(sudo docker ps -qa --filter ancestorultralytics/yolov5:latest) # 清理悬空镜像、容器与卷 sudo docker system prune -a --volumes容器内分布式训练容器内也支持 PyTorch DDP 多卡训练可参考 docker/Dockerfile 中的示例直接运行python -m torch.distributed.run --nproc_per_node 2 --master_port 1 train.py --epochs 3常见问题与排查建议容器内看不到 GPU依次检查nvidia-smi是否正常、nvidia-docker2 是否安装并重启 Docker、运行命令是否带--gpus all最后用docker info | grep -i runtime确认 nvidia 运行时存在。分布式训练报MKL_THREADING_LAYERINTEL is incompatible with libgomp.so.1官方镜像已通过环境变量MKL_THREADING_LAYERGNU规避见 docker/Dockerfile自建镜像时需注意同样设置。中文/特殊字符标注缺字官方镜像预置了 Arial Unicode 字体自建镜像时注意下载 docker/Dockerfile 中的字体资源。数据集访问不到检查-v挂载路径是否填写正确挂载点建议使用$(pwd)展开的绝对路径容器内数据默认挂载位置可参考官方教程的/usr/src/datasets约定。延伸阅读YOLOv5 快速上手教程容器内命令的完整背景PyTorch Hub 推理、detect.py 多源输入、训练参数。YOLOv5 环境概览同一套环境体系下的 Colab、GCP、AWS、Azure 等其他快速上手入口对应文档分别为 GCP 快速上手、AWS 快速上手 与 AzureML 快速上手。Docker 快速上手指南面向 Ultralytics 全系的 Docker 环境搭建细节。Ultralytics 安装指南pip / conda / git clone / Docker 四种安装方式对比。【免费下载链接】yolov10YOLOv10: Real-Time End-to-End Object Detection [NeurIPS 2024]项目地址: https://gitcode.com/GitHub_Trending/yo/yolov10创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表