温馨提示:这篇文章已超过466天没有更新,请注意相关的内容是否还可用!
摘要:针对YOLOv5训练速度慢的问题,可以采取一些解决方法。可以尝试优化模型结构来减少计算量,从而提高训练速度。使用高性能的计算资源,如GPU,可以加速训练过程。调整训练时的批次大小和学习率等参数也可以对训练速度产生影响。数据增强和预训练等技术也有助于提高训练效率。通过优化模型、使用高性能计算资源以及调整训练参数,可以有效解决YOLOv5训练速度慢的问题。
博主使用的电脑配置是AMD R5 3600,Nvidia RTX3060 12G,16G 3200MHz内存,训练数据集是自建数据集,大约包含1200张图片,3个检测目标。
博主正在训练YOLOv5-5.0版本的模型,使用的是yolov5s模型,设置epoch为150(若想得到更好的mAP@0.5:0.95指标,可以增大这个数值,但博主这里收敛得较快所以没有设太大),batch size设为32或64,img size为640x640,其他参数保持默认。
最初训练模型时,每次epoch的训练时间大约需要3分钟,无论如何调整参数,训练时间都没有太大变化,博主曾误以为是没有使用GPU进行计算,因为显存确实被占满了,但GPU的使用率始终在0%和4%之间波动,大部分时间都在0%,博主尝试了许多方法,包括检查CPU、GPU和内存的使用情况,排除了使用CPU进行模型运算的可能性。
我们来探讨模型训练速度慢的可能原因及解决方案:
1、GPU性能不足:如果自己的显卡性能较差,显存较低,建议降低batch size、worker和img size的参数,或者更换一张更好的显卡,这些参数的设置可以在train.py文件中进行,相关图示已随文给出。
2、未使用GPU:这种情况下,只需要检查显存是否被占用,以及是否安装了pytorch和cuda,可以使用特定的代码来查看是否安装了cuda和pytorch,结果如图所示,如果确实是CPU在训练模型,可以通过设置代码来更换GPU进行训练,将default设置为你GPU的编号(单显卡为0)。
3、训练瓶颈:
CPU瓶颈如果CPU占用率很高,同时GPU也在使用,但电脑CPU性能较差,可以通过调整参数尽量使CPU占用率不超过85%。
内存瓶颈内存占用过高时,可以尝试调整参数使内存占用不超过85%-90%。
IO瓶颈这种情况较为复杂,可能涉及硬盘读取、内存到GPU的传输等问题,对于前两种瓶颈,可以尝试通过调整batch size、workers和img size来解决,或更换较小的yolov5模型进行训练,如果问题仍未解决,建议更换硬件或租用云服务器,对于IO瓶颈,则可能需要通过预读取数据、更换硬件等方式来解决。
4、性能过剩:在训练数据量小、模型不复杂的情况下,高端显卡或专业图形卡的计算能力可能无法充分发挥,导致GPU计算速度超过数据读写速度,反而降低了训练速度,对于这种情况,可以尝试关闭缓存功能(将action='store_true'替换为action='store_false'),直接从硬盘读取数据到GPU,以提高训练速度,博主尝试后,一次epoch的时间从3分钟减少到了20秒,提升显著。
大多数情况下的模型训练时间长是因为性能不足或存在瓶颈,但在硬件条件好、数据量不大的情况下,可能是因为性能过剩导致的数据存取时间过长,值得一提的是,虽然训练速度大大提高,但GPU占用率依然较低,博主推测这可能与数据量较小、检测目标数不多有关,未来博主将尝试更新结论,希望能解决GPU占用率低的问题,由于博主计算机功底有限,如有任何问题,欢迎各位读者指正。
还没有评论,来说两句吧...