【比赛笔记】异常检测-二

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的版本。

安装分为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
1
2
3
4
5
step2: 建议按照下面总结的内容安装一下吧:
require.txt中13行单独安装(原来的连接地址,因为墙的原因下载不了;下载gitee版本只是支持linux,安装的时候出现如下状况)

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

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

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

pip install -r requirements.txt
1
3.docker预备知识
参见博文

4.过程详述
4.1 数据下载和预处理
下载训练的数据,并且放置到文件夹 train_data

下载yolov5权重best.pt,放置到weights文件夹
4.2. 训练模型
总体训练过程

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

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
1

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
1
2
3
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
1
(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)

1
2
3
4
5
6
7
8
9
10

  • 实际过程:

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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(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”]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
利用Dockerfile生成新的镜像

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

-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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

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

————————————————
版权声明:本文为CSDN博主「熊猫小妖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42237113/article/details/113879239

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值