欢迎光临散文网 会员登陆 & 注册

【目标检测竞赛】李沐动手学深度学习之牛仔装备目标检测竞赛(使用yolov5l)

2021-10-31 15:12 作者:程序员龙一  | 我要投稿

0 前言

最近学习了李牧的动手学深度学习V2,他在kaggle平台上发起了一个目标检测的比赛,本着动手学习的态度,先使用他人的代码模型跑通试试看,一方面是熟悉学校服务器的一些配置,一方面是学习代码。

检测主要包括:牛仔夹克、墨镜、靴子、牛仔帽、腰带

使用的是yolov5l,参考别人的模型代码,完整项目(代码、数据集等)获取:公z号【龙一的编程life】后台回复【yolo】即可

其他参考:【windows下使用Yolov5l用于牛仔行头检测】

他的一些代码配置有点小小的问题,在这里记录一下。

本次牛仔行头检测我使用的是ultralytics/yolov5 ,该仓库提供了s、m、l、x四个规模的预训练模型,我使用的预训练模型是Yolov5l,最后可以在公榜(也就是valid.csv)上达到60的MAP值。

本次是目标检测竞赛,一张图片上可能存在多个目标,每个目标可以用四个值来进行表示,即目标的种类和目标的位置,位置用四个值来进行表示,目标检测常用的格式可以为了3种:coco、voc和yolo。coco的坐标表示为[x, y, w, h],即bbox左上角的坐标和bbox的宽和高;voc的坐标表示为[x_min, y_min, x_max, y_max],即bbox左上角的坐标和右下角的坐标;yolo的坐标表示为[center_x, center_y, w, h],yolo这里表示的是bbox中心点的坐标和bbox的宽高,注意yolo这里是值是经过归一化处理的,都是介于0到1之前的浮点数。本次比赛我们使用的是coco格式,我使用yolo模型来进行训练的,所以在训练和提交结果之前要对格式进行转换,否则大家可能遇到训练的MAP和提交测试的MAP相差过多的情况出现。

1 环境配置

配置之前请确保已经安装好了英伟达显卡的驱动,在命令行中输入nvidia-smi会输出相应的显卡信息。由于我们使用的是anconda来控制虚拟环境,使用conda命令安装Pytorch的时候会自动检查依赖并进行安装,所以不需要额外在本地安装cuda。(这些我的没有问题,毕竟用的学校服务器,之前装好了anconda

1.1 把代码下载到本地

执行下列命令。(下载完后一般是在C盘的具体用户文件夹下会有一个yolov5的文件夹,这个需要上传到服务器,如果是自己电脑放工程文件夹下就行


1.2 创建并激活虚拟环境

在服务器上创建一个专门yolo使用的虚拟环境,然后激活转到yolo环境下操作;

1.3 安装相关模块包、库文件

1、安装GPU版本的Pytorch,注意30系列显卡是安培架构,只支持11版本的cuda。(我不知道学校的服务器什么情况,反正我装的10.2可以

这个我的报错了,说找不到pytorch==1.7.0,所以我去网站https://pytorch.org/找下载命令,CUDA可以选10.2或者11.1,这里我和他一致选10.2。

 2、安装程序所需的其他的第三方库

把下载的模型文件夹上传到服务器后,cd到文件目录下,然后进行相关环境依赖安装;安装要求都在requirements.txt文件中

它这里会把所有满足要求比如大于等于某个版本的全部安装,时间有点久。

我的一开始没成功,因为这是个requirements.txt文件,他原本没有加后缀txt;

后面又报错scipy安装不上:

ERROR: Could not find a version that satisfies the requirement scipy>=1.4.1 (from versions: none)
ERROR: No matching distribution found for scipy>=1.4.1

如果遇到安装不上的,就单独使用pip install scipy这种命令安装,然后再用下面的命令安装即可。

2 数据预处理

数据部分需要处理成yolo的数据格式,如果觉得比较麻烦的小伙伴可以使用我处理好的,链接如下:

链接:https://pan.baidu.com/s/1SGdjCTAq6Sa4LLgAG9Xx5w 提取码:v9re

 为了方便,我直接使用的这个处理好的,想自己处理的,前言中给了链接,自行获取代码处理。

原始的数据包含四部分的内容:

下载他的文件夹包括:


3 修改配置文件

所有的修改都是在yolov5之前下载的文件夹下进行操作。

3.1 在data目录下设置数据集的配置文件

我们在data目录下新建一个cow_data.yaml的文件,在文件中指定训练集和验证集的地址(需要更改为自己的存放路径)、数据集的目标数目和目标类名;(这个暂时还没找到在哪用,后续发现在运行的时候指定了这个文件

3.2 在models目录下设置模型的配置文件

在models目录下新建一个cow_yolov5l.yaml的模型配置文件,这个文件应该是模型读取那一块要用的,在yolo.py的79行(盲猜的)。(实际也是在运行的时候指定的,这里改不改应该没什么问题)

具体内容如下:(无更改,直接使用)

4 训练模型

首先从点这里下载预训练的模型yolov5l(yolov5l.pt)到本地,存放在yolov5的weights目录下(没有就创建weights文件夹)。

上面的过程中我们已经设置好了数据集和模型的配置文件,我们只需要在项目的根目录下执行下列代码即可开始训练,由于我的显卡只有8G,所以这里的batchsize设置为4,训练的轮数设置为200;

(由于我用的服务器,我申请了两块CPU,所以batchsize我改大了也没什么问题,轮数200会有点久,差不多3小时吧,batchsize设置为4,轮数设置为50的时候是0.5小时,我的batch大,所以久点)

具体的命令如下:(记得cd到train.py的文件目录下,这个文件yolov5有,我是直接用的,没有复制他给出的代码)

----------------------------------------篇幅过长,请移步下面链接-------------------------------

全文链接:https://mp.weixin.qq.com/s/7bTq27HgfnnaERmKpqWWAg

【目标检测竞赛】李沐动手学深度学习之牛仔装备目标检测竞赛(使用yolov5l)的评论 (共 条)

分享到微博请遵守国家法律