YOLOV7使用CADCD数据集实验记录

Posted 彭祥.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YOLOV7使用CADCD数据集实验记录相关的知识,希望对你有一定的参考价值。

2023年2月3日

在完成了CADC数据集的处理工作后,我们就可以便将其放入我们的项目中进行实验了。
首先看一下转换后的数据集:

值得注意的是博主开始时训练时使用了yolov7的初始化权重,由于cadc数据集中有几个分类在数据集中出现很少,以及博主在处理数据集时对一些目标种类进行了合并,因此学习效果并不好,因此博主想重新开始训练,即没有初始权重的情况下训练,这种状态下训练难度加大,同时模型需要修改的参数数量剧增,占用显存增大,以nvidia T4为例,在该GPU环境下使用batch-size=4时显存便占用了13G之多,而将其调整为6时便会直接爆显存,而且由于没有初始权重,训练的时间也会加长,博主开始设置迭代300次,而目前来看运行100次大概需要一天时间,至于效果只能等训练完成后再说了。

随后在运行了快100轮后程序突然终止了,且并没有提示错误只是显示

Process finished with exit code -1

看到有人提出这是在服务器上运行时网络中断导致的,并有人提出了解决方法:试一下。

run -> Edit Configurations -> Configuration -> Execution -> Emulate terminal in output console

但我并没有找到这个选项:

既然中断了便随后服务器中找到运行得到的权重文件

此时我们可以使用这个训练得到的权重模型来进行测试看下效果。
效果很差,mAP只有10%左右。呜呜呜,好在程序中考虑到存在中断问题,设计了开始迭代参数,将其设置为90,并将权重模型替换为best_epoch_weight


可以看到从90开始训练了


然后训练了一会后发现其又中断了:

Start Train
Epoch 101/300:  46%|| 484/1063 [05:02<05:55,  1.63it/s, loss=0.136, lr=0.000461
Process finished with exit code -1

这次吸取先前的教训,查看了一下服务器,发现只是在本地停止了在服务器上GPU依旧运行着:


好吧,那就让他慢慢跑吧,等运行完再说吧。
由此可见该错误是由于服务器与pycharm失联导致的,不用管他,等运行完就好了。如何知道其是否运行完,nvidia-smi就可以了,只要GPU还用着,自然就是还没跑完喽,只不过我们不知道已经运行到哪步而已,但我们的训练得到的权重文件会告诉我们这一切的。

2023年2月4日

今早一看,发现服务器也停止了,看来当时服务器依旧运行只是一个假象罢了,并且考虑到从头训练太过麻烦,而且效果还十分差劲。

因此开始从头考虑使用预训练模型来进行训练,先前使用的预训练模式是在ImageNet上获取的,与我的数据集差距较大,因此可以使用其他的一下预训练权重模型,这就涉及到一个概念成为迁移学习。

关于接下来的进展,大家可以搜索博主博文:迁移学习

以上是关于YOLOV7使用CADCD数据集实验记录的主要内容,如果未能解决你的问题,请参考以下文章

Visdrone数据集Visdrone+YOLOv7结果记录

YOLOv7训练自己的数据集(口罩检测)

YOLOv7实验记录

yolov7训练自己的数据集

YOLOV7 目标检测模型调试记录

YoloV7实战:手把手教你使用Yolov7进行物体检测(附数据集)