参考的baseline- yolov5修改版
相关训练调节笔记参见 链接
代码讲解视频参考 链接
个人环境说明:
注意:
本地训练使用的是pytorch == 1.7
环境,其他安装包参见require.txt
docker 中的 pytorch==1.4
(这个问题后续会说明)
因为官方的yolov5.pt
权重是使用torch==1.7
以上的,所以使用其他版本torch加载的时候会有问题,为了避免问题。建议使用这个1.7的版本。
安装分为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,安装的时候出现如下状况)
有效安装教程链接(推荐方法2)
下载链接(没有安装 vs c++2019的装一下,连接中内含 vs2015下载地址)
step3: 注释掉13行之后之后安装其他环境:
pip install -r requirements.txt
参见博文
train.sh
文件中,第二步使用了process_data_yolo.py
,源码中关于数据集存放位置存在问题,只写了val的处理,没写train的处理,所以生成的process_data文件夹中, 只有val而没有train,训练时会报错。
所以不能直接用train.sh
脚本,要顺序运行里面的命令,到第二步的时候,先执行一遍,如下图做修改后再执行一遍,从而把训练集和验证集都准备好。
没有使用baseline,我的小破本跑yolov5x压力太大,换成官方的代码,自己稍微改动了一下。使用yolov5s.pt
。
使用预训练权重去进行训练过程:
相关参数说明的内容,可以参见链接
(1)考虑到类间差距较大,数据分布不均衡,修改focal_loass_gamma=1.5
(2)根据自己的GPU现存大小调节batchsize大小,当然越大越好(gtx1060 赶脚真的有点弱鸡)
运行程序:
python train.py --cfg models/yolov5s.yaml --batch-size 2
修改 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里面一般不容易发现。删掉重写即可
进入到自己要提交的文件夹里面:
(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
构建镜像.
表示本地文件夹,不能丢了哦(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
(5)提交相关结果docker镜像地址和密码,到比赛链接
全球人工智能技术创新大赛链接
安装pytorch1.7
yolov5参数说明
yolov5官方地址