问题背景
现在很多大学生在做目标检测的项目时都会遇到这样的问题:
1.电脑配置差,没有GPU,现在很多做深度学习训练的项目都需要GPU进行训练,相比于CPU进行训练,GPU训练速度是CPU的好几倍。而现在基本上都在做yolo系列的训练,GPU必不可少
2.内存少,训练速度慢,在训练的过程中数据的传输与存储都需要占用内存,电脑运行内存少,也会导致在训练过程中无法进行,导致数据溢出。
3.很多大学生都会遇到配置环境的问题,我自己也是一个大学生,一开始什么都不懂,配置环境都要好几天,有时候遇到运行代码时,环境还会报错,又要去找错误,过程十分复杂。
下面就为大家详细介绍我训练yolov3-tiny的过程,
此方法仍然适用训练yolov3、yolov5、yolov5-lite(一个yolov5的轻量级模型,效果比yolov3-tiny还要好),这以上几个模型是我亲身实验训练过的,都可以训练,只要配置好数据集,训练完全没问题。关于模型文件,我这里都有,本人也是一名大学生,全部都免费给大家(因为目前还没想好如何给,大家可以私信问我要)
云端训练yolov3-tiny全流程
yolov3-tiny介绍
yolov3-tiny主要用于部署到树莓派等快速检测的项目,实用价值很高,在大学各种人工智能和有关目标检测项目的竞赛竞赛中基本都会用到。
现在对yolo系列主流使用的框架是pytorch,主要原因是tensorflow-gpu框架的要求太严格,我曾经也想用tensorflow-gpu去配置环境,但是由于yolov3-tiny模型太早了,30系列的显卡对于它而言配置太好了,但是现在大学生都是30系列的显卡的电脑,所以部署环境第一步就被卡死了。总不能为了部署环境,去买一台20系列显卡或更低配置的电脑吧,这也不现实。
其次,令人头疼的是,CSDN及网上很少关于yolov3-tiny用pytorch框架进行配置的案例,或者详细的流程,导致我很长一段时间都没有进展。
于是我决定自己写一篇博客,来解决像我一样的大学生的苦恼。
1.模型文件配置介绍
这是v3的模型文件,在这里我们需要改动几个地方即可,以后需要训练其他的目标也可以直接修改进行训练就可以了
一、数据集位置和标签修改
位置在data目录下的coco128.yaml,可以看到1处的数据集位置,这个位置是如果你想要在自己电脑上训练的话,应该是这种形式的相对文件路径,
而我们要在云端训练就需要设置云端训练路径,就是第2处的文件路径,需要的是你所做的数据集的绝对路径前在加上/mnt/就可以了,这样我们到时候上传到云端训练就可以找到了我们的模型的数据集位置了。
最后names是你训练的标签,可以自己更改,注意名称是英文,从编号0开始即可。可以一次训练很多类也可以只训练一类目标,根据自己的情况而定。
二、数据集格式
数据集分为测试集test、训练集train、验证集val,比例一般为1:8:1,如果数据集数量少的话,也可以不设立验证集,则测试和训练为2:8。
三、训练文件train.py修改
我们对训练文件只需要修改参数配置即可,因为我们在云端上训练,所选的机型配置一般都很高,设置参数可以提高我们的GPU利用率和训练速度。
在train.py文件后面,有各种参数配置,我们一般只需要改动这几个即可
1.训练轮数epochs
可以看到,我设置的轮数是100轮,如果可以的话,一般建议训练300轮训练结果会比较好.这个根据你们自己的判断,因为我们是在云端训练,所以时间越长,意味着我们耗费越多.
2.一次训练所抓取的数据样本数量:batch-size修改
batch-size的作用在于让CPU或GPU提高利用率甚至达到满载运行,batch-size越高,训练速度也会越快,同时CPU和gpu的占用率也越高,这就需要看电脑的配置来调整了,但要注意,batch-size的设置要合理,并不是越高越好,越高反而会使训练过拟合而导致训练精度下降,合适的batch-size会使梯度变得更加准确.
一般建议配置低的话,设置8或16就可以了,高的话设置32\64\128即可,但若epochs太少而batch太大会使精度大打折扣,两个应该是正比例关系来设置的.
3.工作线程数workers
这个一般不需要太关注,默认即可,但是你如果训练速度太慢,可以根据cpu数量来调整,但不能超过cpu数量,调整过后,相当于多线程训练模型,会大大提升训练速度,但可能会导致精度下降.
云端训练
一 训练平台介绍
我所用的是矩池云云端训练平台
矩池云 - 专注于人工智能领域的云服务商 (matgo.cn)
这是网址,没有注册的可以免费注册
在注册时填写我的邀请码,还可以或的大量免费的机器训练时长
我的邀请码:
WPLkw9VIkiZoL08
注册完成后,下载客户端,用以上传我们自己的模型进行云端训练
在这里下载
下载完成后打开
可以直接将文件拖到页面中进行下载
下载完成后点击刷新就可以出来我们上传的文件
当我们训练完成后,训练完成的模型和数据都会更新在我们的云盘中
在云端点击下载即可
在设置中还可以更改下载位置
二 训练步骤
1.选择想要租用的GPU型号
在这里有很多供我们挑选进行云端训练,
我们选择一个进行云端训练,点击租用会弹出下列界面
我们在系统镜像搜索框中搜索: yolov5
选择YOLOv5镜像,然后下单,等待机器启动后,我们在windows中找到终端管理员
点击进入
然后复制SSH命令
输入命令和密码
然后就进入到了我们租的机器中了
然后我们
cd /mnt
找到我们的文件夹
因为这个环境基本框架都已搭建好了,但是还需要我们在配置一下,
执行命令
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
就可以安装我们模型所需要的版本的库了,只需要两秒就完成了,因为很多安装都在这个环境中有,只是有些版本不匹配罢了,
之后执行
python train.py
就可以开始训练了,
只要跟着我的教程做,中间完全不会出现任何问题
小白也能立马完成训练.
下期我会整一篇关于yolov5-lite的训练对比,因为最近用yolov5-lite训练,发现精度要比v3tiny高很多,两个同属轻量级快速检测模型,当然选择更好的一方
感谢大家的阅读,如果你觉得对你有用的话,可以点点赞和收藏,
新人入住,码字不易,感谢大家的喜爱