CV实践-异常检测(DateWhale)Task1学习笔记

CV实践-异常检测(DateWhale)Task1学习笔记

本文将记录我从第一次接触Docker到第一次成功在阿里云上提交自己的镜像的过程。
1.下载Docker Desktop

该软件是免费的,直接搜索就可以下载,我用的是windows系统。
https://hub.docker.com/editions/community/docker-ce-desktop-windows/.
下载安装后,启动Docker Desktop并申请自己的Docker id,这样就登录后就可以构建自己的本地镜像,然后用容器运行镜像了。

但是,在启动Docker Desktop时,我出现了以下的提醒。
在这里插入图片描述
只要按照图片上给的蓝色连接,一步步操作,下载wsl,然后更新到wsl2,并将其设置为默认就行了。

完成这一步,就可以正常启动Docker Desktop了。出现这样的小鲸鱼就运行成功啦。
Alt

2. 创建镜像仓库

去阿里云容器镜像服务的官网,先申请一个命名空间,再创建一个镜像仓库。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.准备构建镜像的文件们

我们的目的是把本地已经跑通的项目文件打包成一个镜像。

DataWhale提供的baseline代码基于yolov5,在这个baseline代码的基础上,我们需要准备好训练数据(从比赛网站上下载),然后完成训练得到weights,最后测试预测代码。

下载数据装入train_data文件夹后,我就按照baseline代码的readme中指导的,先进行训练数据的标签转换,再对训练集合验证集中的数据进行预处理,即将其转换成yolov5能识别的格式,最后再训练。

下图是整个运行的流程。
在这里插入图片描述
在训练的过程中,我发现训练集里的图片比较大,所以必须要根据自己电脑GPU的显存情况调整训练的batchsize和输入图片的尺寸大小,不然分分钟爆显存。

这里为了能正常训练,我把batchsize调整为1,输入大小是64x64,这样肯定是会影响精度的,但是我希望先保证能训练,走完上传镜像的流程,所以这里就暂且不考虑精度了。(当然,很大原因也是因为我直接用了yolov5x的框架,网络很大,所以会爆显存,之后我会尝试用yolov5s的框架再试试)

训练完成后,按照赛题的要求,到时候用网络预测的图片会放在tcdata文件夹中,而这个文件夹在本机上是不存在的,等上传后,赛方运行镜像会自动生成。

为了模拟到时候的读取情况,我们可以用数据挂载,当然也可以用我的比较直接的方法,自己按照赛题中tcdata文件夹的格式放一点数据进去测试。

最后,得到的文件差不多是这些。
在这里插入图片描述
只要再添加Dockerfile,修改run.sh中的内容,我们就可以构建镜像了。

Dockerfile主要是在构建镜像时要运行的流程。里面的内容如下:
在这里插入图片描述
需要注意的一点是,我最开始在txt文件里写了这些,但那并不是真正的Dockerfile,构建镜像的时候是找不到Dockerfile文件的。

真正的Dockerfile文件没有后缀,我们需要在编辑器里创建,我用的是pycharm,所以就在pycharm里创建了,sh文件也是这样。

run.sh的内容如下:
在这里插入图片描述
其实就是告诉我们,当运行sh文件的时候,我们要运行那些py文件,这里只有一个detect.py。

完成准备工作后,我们就可以开始构建自己的镜像了。

4.构建自己的镜像

打开cmd,并cd到要构建镜像的文件夹中。
在这里插入图片描述
然后,登录阿里云Docker Registry。

docker login --username=xxxx registry.cn-shenzhen.aliyuncs.com

在这里插入图片描述
然后开始构建镜像。
在这里插入图片描述
最后的6.0是镜像的版本号,最后要加一个点,说明是将当前地址构建镜像,不加这个点会提示找不到Dockerfile。
在这里插入图片描述
镜像构建完成后,我们可以点开Docker Desktop查看本地的镜像,或者也可以输入docker images查看本地的镜像。
在这里插入图片描述
镜像构建完成后,我们需要进入镜像内部,安装我们运行程序需要的环境,因为我们是在pytorch镜像的基础上去构建镜像的,所以当前的镜像里已经安装好了python,pytorch,cuda10.1了。

先查看镜像的id,然后进入镜像。
在这里插入图片描述
进入之后,就可以安装例如matplotlib之类的包了。
在这里插入图片描述
安装完成后,按Ctrl+P+Q退出当前镜像但不停止镜像运行,然后保存我们安装各种包之后的镜像到原镜像。

在这里插入图片描述
这样基本上就完成了,为了确保镜像的准确运行,我们可以用以下命令测试一下run.sh文件是否可以准确执行。

docker run [image id] sh run.sh

如果本地跑通了,基本上是没问题的。

5. 上传镜像

用以下指令就可以将镜像上传。

docker push [公网地址][版本号]

在这里插入图片描述
上传后我们可以在自己阿里云的镜像仓库中的镜像版本中,看到上传的镜像。
在这里插入图片描述
这样,我们就可以把这个镜像提交给竞赛了。

6.第一次得到的成绩

在这里插入图片描述
成绩不算好,因为我训练的次数少,而且选择的网络大,后面会用服务器加大训练轮次,并学着用提高的idea来改进。

7.遇到的问题
  1. docker desktop不稳定
    有的时候,我在构建镜像,或者在镜像里配置环境的时候就报错了,一直以为是自己操作的问题,但后来发现是docker desktop的问题,我restart并把它重置后就好了,可能是我没有换源的原因。
  2. detect.py中数据源source地址的设置不对
    一开始我没有在文件里加tcdata测试,因为我以为既然到时候会自己生成tcdata文件夹,我本地就不需要创建了。后来失败了两次之后,重新读赛题才发现,tcdata文件内还有内容,我必须按照tcdata文件夹里的路径去设置source路径,为了确保成功,所以我还是按照题目中的tcdata格式创建了一个tcdata文件夹在本地来测试。测试后提交就没有问题了。
以上是我本次学习的过程,在短短的3天里,我入门了docker,明白了什么是镜像,怎么构建、上传自己的镜像,也体验了一把提交比赛获得分数的快乐,感觉收获满满。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值