天池 全球人工智能技术创新大赛【热身赛一】详细记录

由于自己在实践的过程中遇到很多坑,故在这里尽量详细地记录下来问题和解决办法。

训练在服务器上(初期使用两块V100,后期准备全部数数据集传到服务器上后,多用几块tesla一起跑)完成,代码修改是vs code上使用sftp插件与服务器同步了,很方便;最后镜像的部分由于服务器我的账户权限不足没法使用docker,智能在win10本地上装了docker。

Docker?No Docker

先不用管docker的内容,docker只是个提交工具而已,先把数据下载下来,在本地成功跑通baseline之后再考虑docker的知识。

所以可以在本地训练完之后再去看下面的docker 训练场这一步。

Docker练习场

过一遍这个加上思考就差不多了
总而言之,我的理解就是:

  • 第一步:本地训练
  • 第二步:训练好的模型放于某文件夹
  • 第三步:在该文件夹上构建镜像(撰写Dockfile,然后build)(注意ignore文件夹下的数据集,或者新建文件夹把除了数据之外的文件都copy过去)
  • 第四步:镜像 run -> 容器,并在容器安装所需环境
  • 第五步:推送镜像至镜像仓库,并在天池提交镜像链接
    具体每一步的代码见其余细心网友的blog,这里推荐一个。

下载数据

.txt文件中存储着数据的地址,复制到browser中下载即可.txt文件中存储着数据的地址,复制到browser中下载即可
注意: baseline中只使用了guangdong1_round2_train2_20191004_images的数据集,故只需要在train_data中存放对应的img文件夹和标注文件夹即可。(下一步会记录)

按照baseline教程来搭建训练环境等

我个人是在实验室的服务器搭建了python的虚拟环境pytorch_yolo,安装了所有依赖库(可以直接pip install -U -r requirements.txt ,若依赖文件中某些模块下载失败,再分别pip install或者conda install即可,只要是在一个virtual env里,python的开源模块随意安装卸载);

环境搭建好后,在clone下的DefectDetection文件夹下新建train_data文件夹,将下好的数据集解压放在train_data内;

由于baseline中某些地方并没有写完整,故不要直接运行sh train.sh,而是对.py文件做些修改,再分别python .py文件,按以下步骤走:

  • python convertTrainLabel.py, 此时工作目录下会出现convertor文件夹;
  • 先运行一遍process_data_yolo.py, 此时工作目录下会出现process_data文件夹,但打开后发现仅有val数据;所以此时要修改process_data_yolo.py中的val路径为train路径(这个应该很好理解,这里不做演示了),再次运行process_data_yolo.py,即可在process_data文件夹下得到完整train和val的数据集;
  • 由于我们就是按照baseline里的文件目录来创建的,故这里其实不需要修改coco128.yaml;
  • 由于baseline文件夹中缺乏权重文件,可以到yolov5的github仓库下载,提供的是一个download_weights.sh命令文件,我在服务器上运行sh download_weights.sh后只下载成功了yolov5s.pt,而且还很慢,可以参考其他博客看看有无更好的预权重下载渠道;
  • 训练:python train.py --epochs 30 --cfg models/yolov5s.yaml --weights weights/yolov5s.pt --device 0,1(注意这里的参数都是可改动的,其他参数需要改动可以看下train.py的main函数里面都设置了什么参数,但基本上常用的就batchsize,device,weights等)
  • 训练结束后,weights文件夹中会出现last.pt和best.pt

本地跑通后在当前文件夹构建镜像

由于实验室的服务器我没有sudo权限,也没有把我加到docker的用户组里,所以我没办法在服务器上构建镜像…

故在win10本地安装docker及使用:参考博客,不过我后期安装的WSL,但暂时能用,因为我电脑装了双系统了,再装个WSL有点鸡肋

镜像流程见github教程:

  • 按照教程一步一步来即可;
  • build的时间略长,耐心等待;
  • 安装了opencv后的确import cv2报错,按照解决办法操作;
  • import cv2 仍报错的话运行: apt install libgl1-mesa-glx --fix-missing

几个常用命令:

  • 修改容器中的文件:可以选择Ctrl+P+Q退出且不关闭容器,然后copy至容器内,再commit(具体过程可参考博客

  • 进入在运行的容器中:docker exec -it 6cbfbc705aee /bin/bash参考

  • 容器内安装vim(方便修改文件):apt-get install -y vim

  • 查看镜像信息:docker images

  • 查看容器信息: docker ps

  • 保存容器为镜像:docker commit container_id 镜像仓库:版本号

自己的训练及镜像流程

训练:python -m torch.distributed.launch --nproc_per_node 2 train.py --weights weights/yolov5s.pt --epochs 200 --batch-size 16 --cfg models/yolov5s.yaml --device 0,1

修改容器中的文件:可以选择Ctrl+P+Q退出且不关闭容器,然后copy至容器内,再commit(具体过程可参考博客https://blog.csdn.net/dechengtju/article/details/85009836)

docker run -it 镜像ID /bin/bash

ctrl+p+q 退出

从宿主机拷贝文件到容器:docker cp /opt/test/file.txt mycontainer:/opt/testnew/

进入在运行的容器中:docker exec -it 容器ID /bin/bash

ls -l查看时间戳是否改变来确定是否copy成功

保存容器为镜像:docker commit container_id 镜像仓库:版本号

docker stop 容器ID (exit退出容器(容器会关闭))

接下来push 镜像:

登录:docker login --username=孟寻carl registry.cn-guangzhou.aliyuncs.com

tag: docker tag [ImageId] registry.cn-guangzhou.aliyuncs.com/carl_namespace/defect_detect_new:[镜像版本号]

push: docker push registry.cn-guangzhou.aliyuncs.com/carl_namespace/defect_detect_new:[镜像版本号]

容器内安装vim(方便修改文件):apt-get install -y vim

查看镜像信息:docker images

查看容器信息: docker ps

保存容器为镜像:docker commit container_id 镜像仓库:版本号

import cv2 仍报错:

apt install libgl1-mesa-glx --fix-missing

数据

每张图片对应的瑕疵不止一处;

通过convertTrainLabel 将数据集划分为1:4,存放在convertor/images/train, val中(label文件夹中每个图片只存了一个defect label, 以yolo要求的txt格式存储)

目前来看batchsize越小越好(慢),以及imagesize修改之后640,640也变得更好了。

自己的代码运行次序
  1. convertTrainLabel.py
  2. process_data_yolo.py
  3. train.py
  4. pt_edit.py,运行后会生成new.pt,接下来预测要修改默认参数best.pt为new.pt
  5. 接下来代码运行结束,直接将pt文件copy到容器中并保存为新版本镜像即可。

比赛提交

每次其实只需要更改版本号,重新输入密码即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值