windows下使用docker封装本地YOLOv5

常用docker命令:

docker images 查看镜像

docker rmi image-id 删除镜像

docker ps -a 查看所有容器

docker rm container-id 删除容器

docker image prune 释放

yolov5封装学习链接

csdn学习链接:用Docker搭建yolov5开发环境_docker yolov5-优快云博客

官方给的链接:Docker Image - Ultralytics YOLO Docs

使用docker封装本地yolov5项目总结

安装docker

官方网址下载,需要邮箱注册

配置镜像源

在设置里面的dockers engine中配置镜像

{

"builder": {

"gc": {

"defaultKeepStorage": "20GB",

"enabled": true

}

},

"experimental": false,

"features": {

"buildkit": true

},

"registry-mirrors": [

"https://docker.mirrors.ustc.edu.cn",

"https://registry.docker-cn.com",

"http://hub-mirror.c.163.com",

"https://mirror.ccs.tencentyun.com"

]

}

更换 image保存路径,不然c盘会炸

更换前需要将images中所有进程停止

这里面的yolov5v1就没有停止,显示的是In use

创建Dockerfile,注意,没有拓展名

#基于的基础镜像

FROM nvcr.io/nvidia/pytorch:24.01-py3

#代码添加到code文件夹

ADD . /usr/src/app/uniform/yolotest

# 设置code文件夹是工作目录

WORKDIR /usr/src/app/uniform/yolotest

# 安装支持

RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt

在Yolov5项目目录的中创建Image(用pycharm的终端、cmd都可以)

由于封装cuda和cudnn总是出问题,最后也没有解决,主要是connect不上,国内镜像都是cpu的torch

然后直接在网上找了一个现成的,里面的python是3.10的

需要先用docker pull一下:docker pull nvcr.io/nvidia/pytorch:24.01-py3

在docker的images中可以看到

然后进行创建

docker build -t yourname .

这里的yourname为自己设定的名字,我这里设定的是yolov5

在docker的bulids和images里面有记录,我这里的images已经删除了

中间一般不会有报错了

Image转为Container

docker run --gpus all -it --name yolov5 -v E:\Users\yolov5:/mnt/ yolov5:last bash

其中:

--gpus all:请求使用所有可用的 GPU 资源。

-it:两个选项的组合:

-i:以交互模式运行容器,保持标准输入流(stdin)打开。

-t:分配一个伪终端,允许用户与容器交互。

-v E:\Users\yolov5:/mnt/:挂载一个卷,将主机上的 E:\Users\yolov5 目录映射到容器内的 /mnt/ 目录。这允许容器访问主机上的文件。mnt可以随意更 换,尽量是没有出现过的地址,不然里面的东西可能会被覆盖

--rm:容器在停止时自动删除。这避免了容器占用的空间。(可以不用)

yolov5:last:指定要运行的 Docker 镜像,yolov5 是镜像的名称,last 是标签。

bash:在容器内运行 bash shell,这样用户可以与容器交互。

如果需要添加或者修改yolov5里面的文件,可以在本地的地址(我这里是 E:\Users\yolov5)进行修改,然后进行cp就可以

在docker里面是可以找到 /mnt/ 目录的, /mnt/ 目录里面的内容就我是主机上的 E:\Users\yolov5 里面的内容

在Docker容器中运行yolov5

我这里的名字为yolov5v1,运行 docker run --gpus all -it --name yolov5v2 -v E:\Users\yolov5:/yolo/ yolov5v1 bash

也可以查看自己的docker :docker ps

出现以下的内容就说明成功了,而且没有报GPU错误

查看文件夹内容:ls

启动:python detect.py

docker commit

环境可能会有一些问题,可以直接在docker里面进行pip安装,(conda是不行的,因为没有将conda封装到yolov5里面),在配置完环境可以运行后,新启一个cmd,将修改好可以运行的images进行commit

docker commit 9f593dbe2e80 yolov5v1

9f593dbe2e80为container的ID,用docker ps可以看到,后面是commit的名字,要和之前的不同

我的是yolov5v1

导出封装的docker到本地

在cmd中,或者pycharm的终端

docker save yolov5v1 -o yolov5v1.tar

过程会比较慢

导出完了会在你的目录下面有

上传服务器

托拉,scp上传方法都可以

然后到目录下sudo docker load -i yolov5v1.tar

就可以了

启动方法和windows一样

但是我这出现了问题

服务器的GPU用不了,目前还在查看问题所在

问题解决

我们尝试了很多方法,进行了排除

1.直接将nvcr.io/nvidia/pytorch:24.01-py3打包放进服务器

显示可以使用cuda,torch-gpu也是可以用的

2.考虑可能nvcr.io/nvidia/pytorch:24.01-py3存在问题

在torch版本显示的时候,出现类似于乱码的问题

因此,去docker官网https://hub.docker.com/r/pytorch/pytorch/tags,重新拉取一个镜像,我拉取的是

记得去查看服务器的cuda版本,这里的版本不能超过服务器显卡的cuda上线

2.1 先将这个直接打包上传服务器(接下来所有操作都在服务器)

上传完了可能没有name,我这边就没有,在REPOSITORY和TAG显示

需要重新命名

docker tag 632278b72312 pytorch:1.13.0-cuda11.6-cudnn8-devel

2.2 将pytorch在docker中运行

运行之后,将本地的yolov5文件放到映射的文件夹,使用cp进行复制到运行的docker中

2.3 配置环境

将requirements.txt文件中torch和torchvision注释,不然可能会重新安装pytorch

2.4 配置完运行train.py出现问题

ImportError: libGL.so.1: cannot open shared object file: No such file or directory

这是opencv出现了问题,解决方法(自测有效)

pip install opencv-python-headless,需要和opencv-python一个版本

下面就可以进行训练了

出现一些其他的问题

在cmd中输入:(docker build -t test .)

ERROR: failed to solve: python:3.8.0: failed to resolve source metadata for docker.io/library/python:3.8.0: failed to authorize: failed to fetch oauth token: Post "https://auth.docker.io/token": dial tcp 199.59.149.236:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

解决方案:docker构建问题_error: failed to solve: python:3.8: failed to reso-优快云博客 先把python3.8.0的docker先pull下来:docker pull python:3.8.0;然后重新进行docker构建,就会跳过大包下载失败的问题。

# YoloPest 智能害虫检测系统 全栈病虫害检测系统,基于 YOLOv12 实现害虫检测功能,包含 FastAPI 后端服务和 React 前端界面,提供图像上传与害虫识别功能。 ![Tech Stack](https://img.shields.io/badge/stack-FastAPI%20%2B%20React%20%2B%20YOLOv12-blue) ## 技术栈 ### 后端 - **FastAPI** - Python 高性能 API 框架 - **YOLOv12** - 目标检测模型(本地定制版) - **SQLAlchemy** - ORM 数据库映射 - **Redis** - 缓存与会话管理 - **Uvicorn** - ASGI 服务器 - **Pydantic** - 数据验证 - **OpenCV** - 图像处理 - **Docker** - 容器化部署 ### 前端 - **React 18** - 组件化 UI 框架 - **TypeScript** - 类型安全 - **Vite** - 现代前端构建工具 - **Ant Design** - UI 组件库 - **React Router** - 客户端路由 - **Axios** - API 请求库 ## 功能特性 - ✅ 用户认证 (登录/注册) - ✅ 图像害虫识别上传与结果展示 - ✅ 视频害虫识别分析 - ✅ 历史记录管理 - ✅ 个人信息管理 - ✅ 自定义 YOLOv12 模型集成 - ✅ 实时检测结果可视化 - ✅ 检测结果统计分析 - ✅ 响应式界面设计 ## 系统架构 ### 核心组件 - **前端应用** - React 单页应用,处理用户交互与结果展示 - **后端 API 服务** - FastAPI 提供 RESTful 接口 - **检测引擎** - 封装 YOLOv12 模型的图像识别服务 - **数据管理** - 用户和检测历史的存储与检索 - **任务队列** - 处理视频等长时间任务 ### 数据流程 1. 用户上传图像/视频 → 前端预处理 2. API 请求 → 后端服务器 3. 后端处理 → 模型推理 4. 结果返回 → 前端展示 5. 数据存储 → 历史记录 ## 快速开始 ### 环境要求 - Python 3.8+ 3.11.5 - Node.js 18+ 18.18.0 - npm 9+ 9.8.1 - Redis 7+ 7.4.2 - Docker 20.10+ (可选) ### 本地开发 #### 后端 ``` cd backend # 创建并激活虚拟环境 python -m venv .venv source .venv/bin/activate # Linux/Mac # 或 .venv\Scripts\activate # Windows # 安装依赖 pip install -r requirements.txt 已安装 # 安装本地修改的YOLOv12 pip install -e ./ultralytics 已安装 # 初始化数据库表结构 python create_tables.py 已创建 # 启动服务 uvicorn main:app --reload ``` 访问 API 文档:http://localhost:8000/docs #### 前端 ```bash cd frontend npm install 已下载 npm run dev ``` 访问应用:http://localhost:5173 ### Docker 部署 ```bash docker-compose up --build ``` 访问前端:http://localhost 访问后端文档:http://localhost:8000/docs ## 项目结构 ``` ├── backend │ ├── app/ # 应用核心代码 │ │ ├── api/ # API路由和处理函数 │ │ ├── core/ # 配置和基础设施 │ │ ├── models/ # 数据库模型 │ │ ├── schemas/ # Pydantic模型 │ │ ├── services/ # 业务逻辑
最新发布
03-26
### 如何使用 Docker 部署 YOLO 模型 #### 准备工作 在开始之前,需要确认本地环境已经安装了 Docker 和 NVIDIA GPU 的驱动程序以及支持 CUDA 的库。默认情况下,在未配置的情况下运行容器可能无法检测到 GPU 资源[^1]。 #### 构建自定义的 YOLO 容器镜像 为了简化开发流程,可以基于现有的基础镜像来构建适合自己的 YOLO 训练或推理环境。以下是具体的实现方法: 1. **编写 `Dockerfile` 文件** 创建一个名为 `Dockerfile` 的文件,并写入以下内容: ```dockerfile FROM nvidia/cuda:11.7-base-ubuntu20.04 # 设置环境变量 ENV DEBIAN_FRONTEND=noninteractive # 更新系统并安装必要的依赖项 RUN apt-get update && \ apt-get install -y --no-install-recommends \ build-essential \ cmake \ git \ wget \ unzip \ python3-dev \ python3-pip && \ rm -rf /var/lib/apt/lists/* # 升级 pip 并安装 Python 库 RUN pip3 install --upgrade pip setuptools wheel && \ pip3 install torch torchvision opencv-python matplotlib Pillow scikit-image # 克隆 YOLOv5 或其他版本仓库 WORKDIR /yoloTrain RUN git clone https://github.com/ultralytics/yolov5.git ./ # 下载预训练权重(如果需要) RUN mkdir weights && \ wget -P ./weights/ https://github.com/ultralytics/assets/releases/download/v0.0.0/yolov5s.pt CMD ["bash"] ``` 上述脚本会拉取带有 CUDA 支持的基础镜像,并完成 PyTorch 及其相关依赖的安装,最后克隆 YOLOv5 代码至 `/yoloTrain` 工作目录下[^2]。 2. **构建镜像** 使用以下命令将上述 `Dockerfile` 所描述的内容打包成一个新的镜像: ```bash docker build -t yolov5-gpu . ``` #### 启动容器并与主机共享 GPU 资源 通过指定 `--gpus all` 参数可以让容器访问所有的 GPU 设备。启动容器时还需要绑定数据卷以便于读取和保存模型结果。 ```bash docker run -it --rm \ --gpus all \ -v $(pwd)/data:/yoloTrain/data \ -v $(pwd)/results:/yoloTrain/results \ yolov5-gpu bash ``` 此命令中的 `-v` 表示挂载当前路径下的子文件夹分别映射到容器内的对应位置,方便后续操作。 #### 开始训练过程 进入容器内部之后即可执行实际的任务逻辑。例如针对特定的数据集进行微调或者预测分析。 对于训练阶段而言,通常可以通过如下指令加载配置好的参数表单来进行批量学习活动: ```python from ultralytics import YOLO model = YOLO('yolov8n-obb.yaml') model.train(data='DOTAv1.yaml', epochs=10, imgsz=640) ``` 这里提到的是利用 Ultralytics 提供的新一代 API 接口直接实例化目标识别框架对象[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值