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上获取的,与我的数据集差距较大,因此可以使用其他的一下预训练权重模型,这就涉及到一个概念成为迁移学习。
关于接下来的进展,大家可以搜索博主博文:迁移学习
2023年2月7日
使用ImageNet的预训练模型来进行训练,迭代200次,最终成功运行完成。
使用getmap.py进行评估:效果极差
更多推荐
所有评论(0)