全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)

目录

  • 1.代码参考
  • 2.环境安装
  • 3.docker预备知识
  • 4.过程详述
    • 4.1 数据下载和预处理
    • 4.2. 训练模型
    • 4.3 docker上传到阿里docker仓
  • 5.结果预览
  • ref:

1.代码参考

参考的baseline- yolov5修改版
相关训练调节笔记参见 链接
代码讲解视频参考 链接

2.环境安装

个人环境说明:

  • win10
  • 12g内存, nvidia gtx 1060, cuda10.1

注意:
本地训练使用的是pytorch == 1.7环境,其他安装包参见require.txt
docker 中的 pytorch==1.4 (这个问题后续会说明)

因为官方的yolov5.pt权重是使用torch==1.7以上的,所以使用其他版本torch加载的时候会有问题,为了避免问题。建议使用这个1.7的版本。

全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第1张图片
安装分为3步:
step1: 我是使用的python3.7.4, cuda10.2, 添加清华源,快捷安装torch1.7.1如下所示:

(torch1.7) PS C:\Users\ztfma> conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
(torch1.7) PS C:\Users\ztfma> conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
(torch1.7) PS C:\Users\ztfma> conda config --set show_channel_urls yes
(torch1.7) PS C:\Users\ztfma> conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
(torch1.7) PS C:\Users\ztfma> conda install pytorch torchvision torchaudio cudatoolkit=10.2

step2: 建议按照下面总结的内容安装一下吧:
require.txt中13行单独安装(原来的连接地址,因为墙的原因下载不了;下载gitee版本只是支持linux,安装的时候出现如下状况

全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第2张图片

  • 有效安装教程链接(推荐方法2)

  • 下载链接(没有安装 vs c++2019的装一下,连接中内含 vs2015下载地址)

step3: 注释掉13行之后之后安装其他环境:

pip install -r requirements.txt

3.docker预备知识

参见博文

4.过程详述

4.1 数据下载和预处理

  • 下载训练的数据,并且放置到文件夹 train_data
    全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第3张图片
  • 下载yolov5权重best.pt,放置到weights文件夹

4.2. 训练模型

  • 总体训练过程
    全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第4张图片

  • 图片预处理过程:将图片变成yolo格式, 我处理成了640x640

train.sh文件中,第二步使用了process_data_yolo.py,源码中关于数据集存放位置存在问题,只写了val的处理,没写train的处理,所以生成的process_data文件夹中, 只有val而没有train,训练时会报错。

所以不能直接用train.sh脚本,要顺序运行里面的命令,到第二步的时候,先执行一遍,如下图做修改后再执行一遍,从而把训练集和验证集都准备好。

全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第5张图片

  • 没有使用baseline,我的小破本跑yolov5x压力太大,换成官方的代码,自己稍微改动了一下。使用yolov5s.pt

  • 使用预训练权重去进行训练过程

相关参数说明的内容,可以参见链接

(1)考虑到类间差距较大,数据分布不均衡,修改focal_loass_gamma=1.5
(2)根据自己的GPU现存大小调节batchsize大小,当然越大越好(gtx1060 赶脚真的有点弱鸡)
运行程序:

python train.py  --cfg models/yolov5s.yaml --batch-size 2 

全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第6张图片
batch-size不能太大,否则资源占用率还是非常高的

  • 其他错误汇总
    (1)Python Matplotlib: 解决 Tcl_AsyncDelete: async handler deleted by the wrong thread

修改 utils.py line13-14
将原本的import matplotlib.pyplot as plt修改成以下:

import matplotlib
matplotlib.use('Agg')
from matplotlib import pyplot as plt

https://blog.csdn.net/qq_39560620/article/details/105734243

(2)总是提示读取tcdata路径有问题,打印出来的路径应该是末尾多了\r。这个是win系统带的,在vim里面一般不容易发现。删掉重写即可

4.3 docker上传到阿里docker仓

进入到自己要提交的文件夹里面:
(1) 修改run.sh
baseline的源码中,run.sh中为空,改为

python detect.py --source ./tcdata/guangdong1_round2_testB_20191024

(2)注册阿里的docek镜像服务,并且且拉取镜像
注意:因为win10都是存储在c盘,所以占用资源非常大,留足空间(>15g)

具体过程, 参见链接

- 命令总结:
(以下内容相关地址、名称为假,自行对应相应的、自己的变量)

#1. 登录阿里云Docker Registry
$ sudo docker login --username=小白前来报道(自己的账号名称) registry.cn-shenzhen.aliyuncs.com)(自己的阿里云公网地址)
#用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
#您可以在访问凭证页面修改凭证密码。

#2. 从Registry中拉取镜像
$ sudo docker pull registry.cn-shenzhen.aliyuncs.com/ztfmars_cv_detect/ztfmars_cv_detect:[镜像版本号](拉去的具体镜像内容,具体参见基础镜像说明:
https://tianchi.aliyun.com/forum/postDetail?spm=5176.12586973.0.0.176a22322ijx
xm&postId=67720)

- 实际过程:

PS C:\Users\ztfma> docker login --user=xxxx_name registry.cn-shenzhen.aliyuncs.com/ztfmars_cv_detect/ztfmars_cv_detect
unknown flag: --user
PS C:\Users\ztfma> docker login --username=xxxx_name registry.cn-shenzhen.aliyuncs.com/ztfmars_cv_detect/ztfmars_cv_detect
Password:
Login Succeeded
PS C:\Users\ztfma> docker pull registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.4-cuda10.1-py3
1.4-cuda10.1-py3: Pulling from tcc-public/pytorch
7ddbc47eeb70: Already exists
c1bbdc448b72: Already exists
8c3b70e39044: Already exists
45d437916d57: Already exists
d8f1569ddae6: Already exists
85386706b020: Already exists
ee9b457b77d0: Already exists
be4f3343ecd3: Pull complete
30b4effda4fd: Pull complete
b398e882f414: Pull complete
64e532b06236: Pull complete
31188d0173e6: Pull complete
4a1386f93f29: Pull complete
87d47d0287c7: Pull complete
7a932c9d3ad4: Pull complete
Digest: sha256:c612782acc39256aac0637d58d297644066c62f6f84f0b88cfdc335bb25d0d22
Status: Downloaded newer image for registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.4-cuda10.1-py3
registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.4-cuda10.1-py3

(3)进入自己要打包的文件夹中,构建新的镜像

Dockerfile

# Dockerfile
# Base Images
## 从天池基础镜像构建
FROM registry.cn-shanghai.aliyuncs.com/tcc-public/pytorch:1.4-cuda10.1-py3
## 把当前文件夹里的文件构建到镜像的根目录下
ADD . /
## 指定默认工作目录为根目录(需要把 run.sh 和生成的结果文件都放在该文件夹下,提交后才能运行)

WORKDIR /
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install opencv-python
RUN pip install matplotlib
RUN pip install scipy
RUN pip install tensorboard
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-get clean && apt-get update
RUN apt update && apt install -y libgl1-mesa-glx && apt-get install -y libglib2.0-0
## 镜像启动后统一执行 sh run.sh
CMD ["sh", "run.sh"]

利用Dockerfile生成新的镜像

docker build -t registry.cn-shenzhen.aliyuncs.com/ztfmars_cv_detect/ztfmars_cv_detect(公网地址):1.0(tag号) .

注意:

  • -t表示利用本地Dockerfile构建镜像
  • 最后的点. 表示本地文件夹,不能丢了哦
  • 大概花了半小时,耐心等待

全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第7张图片
最终形成了新的镜像:
在这里插入图片描述

(4)将构建的镜像上传到阿里云上代码仓Registry

#3. 将镜像推送到Registry
$ sudo docker login --username=小白前来报道 registry.cn-shenzhen.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/ztfmars_cv_detect/ztfmars_cv_detect:[镜像版本号]
$ sudo docker push registry.cn-shenzhen.aliyuncs.com/ztfmars_cv_detect/ztfmars_cv_detect:[镜像版本号]
#请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

#4. 选择合适的镜像仓库地址
#从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。
#如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-shenzhen.aliyuncs.com 作为Registry的域名登录。
#5. 示例
#使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。
$ sudo docker images
REPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
registry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB
$ sudo docker tag 37bb9c63c8b2 registry-vpc.cn-shenzhen.aliyuncs.com/acs/agent:0.7-dfb6816

#使用 "docker push" 命令将该镜像推送至远程。
$ sudo docker push registry-vpc.cn-shenzhen.aliyuncs.com/acs/agent:0.7-dfb6816

全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第8张图片

(5)提交相关结果docker镜像地址和密码,到比赛链接

5.结果预览

暂时还未出结果,但是我在本地反复跑了一下应该是木有问题的。
全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第9张图片

全球人工智能技术创新大赛 - 布匹疵点智能识别参赛笔记(win10采坑不断版本)_第10张图片

ref:

全球人工智能技术创新大赛链接
安装pytorch1.7
yolov5参数说明
yolov5官方地址

你可能感兴趣的:(目标检测竞赛,深度学习,神经网络,机器学习,目标检测)