要将YOLOv5部署到Docker容器中,我们需要完成几个关键步骤。这些步骤包括环境准备、构建Docker镜像、运行容器以及验证模型是否正常工作。以下是全流程操作指南。
在开始之前,确保你的系统已经安装了以下工具:
运行以下命令检查Docker是否可用:
docker --version
如果未安装,请根据Docker官方文档进行安装。
YOLOv5的官方代码托管在GitHub上。使用以下命令克隆仓库:
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
Dockerfile是定义容器环境的核心文件。在yolov5
目录下创建一个名为Dockerfile
的文件,并添加以下内容:
# 使用官方的Python基础镜像
FROM python:3.8-slim
# 设置工作目录
WORKDIR /app
# 复制当前目录下的所有文件到容器中的/app目录
COPY . .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露端口(如果需要通过HTTP接口访问)
EXPOSE 8080
# 设置默认命令
CMD ["python", "detect.py", "--source", "0"]
FROM python:3.8-slim
:基于轻量级的Python 3.8镜像。WORKDIR /app
:设置容器内的工作目录为/app
。COPY . .
:将主机上的当前目录复制到容器的/app
目录。RUN pip install --no-cache-dir -r requirements.txt
:安装YOLOv5所需的Python依赖。EXPOSE 8080
:暴露端口以供外部访问(如果需要)。CMD ["python", "detect.py", "--source", "0"]
:启动YOLOv5的目标检测脚本,默认使用摄像头作为输入源。在YOLOv5目录下运行以下命令来构建Docker镜像:
docker build -t yolov5 .
-t yolov5
:为镜像指定名称yolov5
。.
:表示使用当前目录下的Dockerfile。构建过程可能会花费一些时间,具体取决于网络速度和硬件性能。
构建完成后,可以使用以下命令启动容器:
docker run -it --rm -p 8080:8080 yolov5
-it
:以交互模式运行容器。--rm
:容器退出后自动删除。-p 8080:8080
:将主机的8080端口映射到容器的8080端口(如果需要)。yolov5
:运行名为yolov5
的镜像。运行后,YOLOv5将启动目标检测脚本,默认使用摄像头作为输入源。
如果使用的是摄像头作为输入源(--source 0
),你应该能够看到实时的目标检测结果。
修改Dockerfile中的默认命令或运行容器时指定参数。例如,检测一张图片:
docker run -it --rm -v $(pwd)/data:/app/data yolov5 python detect.py --source /app/data/image.jpg --weights yolov5s.pt
-v $(pwd)/data:/app/data
:将主机的data
目录挂载到容器的/app/data
目录。--source /app/data/image.jpg
:指定输入图片路径。--weights yolov5s.pt
:使用预训练的yolov5s.pt
模型。如果你有自己的训练好的模型权重文件,可以将其放在data
目录下,并通过--weights
参数加载。
如果你想部署自己训练的YOLOv5模型,只需将训练好的.pt
文件放入容器中,并通过--weights
参数加载即可。
为了提高推理速度,可以考虑以下优化措施:
如果需要将YOLOv5部署到云端(如AWS、Google Cloud等),可以将Docker镜像上传到Docker Hub或其他容器注册表,并在云服务器上拉取运行。
graph TD; A[准备环境] --> B[克隆YOLOv5仓库]; B --> C[创建Dockerfile]; C --> D[构建Docker镜像]; D --> E[运行Docker容器]; E --> F[验证模型];