项目介绍:
前期实验室已对生猪脸部进行图像识别训练,效果良好,现需要一个在线程序用来上传图片,识别出猪脸的位置,并将猪脸框出来。于是本文档就是用来实现这个功能的。

准备工作:

  1. 本次项目打算使用 web 端的方式来实现,技术栈:python+flask+vue+docker,程序主要使用开源程序 https://github.com/qiaoyukeji/Yolov5-Flask-VUE 修改部署。Yolov5-Flask-VUE 下载后有两个目录,其中 bach-end 为后端程序,front-end 为前端程序。
  2. 本次使用 docker 部署识别程序的后端程序。
  3. 识别程序前端使用 vue ,本地需要先安装 nodejs

一. Yolov5-Flask-VUE 后端程序部署

Yolov5-Flask-VUE 后端程序部署本人将采用 docker 进行部署,由于后端程序需要调用 CPU/GPU 进行深度处理,并且需要相关深度学习环境,所以本人提供已安装好 torch 1.10.1 和 torchvision 0.11.2 环境的 docker 镜像。
镜像地址:https://registry.cn-hangzhou.aliyuncs.com/qiaoyu/docker_opencv_torch:v2

  1. 依据 docker 镜像构建 docker 容器
    # 1. 拉取 docker 镜像
    docker pull registry.cn-hangzhou.aliyuncs.com/qiaoyu/docker_opencv_torch:v2
    # 2. 依据镜像构建容器
    # 端口为后端程序 app.py 中开放的端口,目录为后端程序将要放的目录
    docker run -it -p 15003:15003 -v ./yolov5_reco:/soft/yolov5_reco --name yolov5_web_reco docker_opencv_torch:v2
    
  2. 将后端程序 bach-end 拷贝到上面的./yolov5_reco 目录中
  3. 进入 docker 容器,运行后端代码程序
    # 1. 查看 docker 容器是否运行
    docker ps
    # 2. 进入 docker 容器内部
    docker exec -it 容器ID /bin/bash 
    
    # 3. 进入代码目录 
    cd /soft/yolov5_reco
    
    # 4. 替换 weights 中的自有权重
    # 5. 运行 程序
    python app.py
    # 6. 初次运行程序时,会报部分python库未安装,依报错安装即可
    
  4. 修改 app.py 里 3 个 ip 地址
    app.run()里 ip 修改为 0.0.0.0
    其他两个位置 ip 修改为 docker 对外暴露的 ip 和对应端口, 如 172.17.XXX.99:15003

注意事项:
后端程序默认使用的权重为 yolov5 3.0版本,经本人测试 == yolov5 5.0 == 版本权重在修改 common.py (依据报错添加相关函数)后能正常运行,yolov5 6.0 版本无法运行。

2022.07.27 更新:更新 yolov5 6.0 版本支持 ,代码见 :https://github.com/qiaoyukeji/Yolov5-Flask-VUE/tree/yolov5_6.0

二. 前端程序部署

  1. 在前端程序目录下运行 npm install 安装相关环境
  2. 修改ip地址:修改 src>components>Content.vue 中请求的 ip 地址为后端程序暴露的 ip 地址
  3. 运行 npm run serve 启动程序即可
yolov5_web在线图片识别-Snipaste_2022-05-24_09-16-51-202252491711.jpg