YOLOV3----训练已放弃(核心已转储)

由于时间原因,简单写一下YOLOV3遇到的一个问题----训练已放弃(核心已转储)

这个问题很让人头疼,因为真的是多方面的原因,可能就是一个小的细节,导致了训练过程突然终止。由于这个开源代码很容易理解、编译,效果也非常好,有很多博客都写的很清楚,所以不再过多介绍

YOLOV3(Ubuntu)------训练已放弃(核心已转储)

1、权限问题
由于在进行训练时,应该是调用了一些编译生成的文件,没有权限去读取,所以在“./darknet detector train cfg/voc.data cfg/yolov3-voc.cfg darknet53.conv.74”命令之前加上sudo。
2、标签问题
检测的标签在data/voc.names,将中文修改为英文
3、训练时候
打开cfg/yolov3-voc.cfg配置文件修改,将文件最上边的batch=64,subdivision=16调小,改为batch=32,subdivision=16或者batch=16,subdivision=16;batch/subdivision数值最好都是2的指数。如果发生显存不足,通过增加subdivisions,降低每此放入gpu中的数据。
YOLOV3----训练已放弃(核心已转储)_第1张图片
4、测试时
很大的可能是忘记把配置文件cfg//yolov3-voc.cfg的训练配置改到测试配置上。
YOLOV3----训练已放弃(核心已转储)_第2张图片

针对问题3我重要说一下:(出现这个问题的原因是内存炸了。)
我的机器配置是1080的8G显卡,在设置64/16的时候一直报错,由于第一次接触yolov3,要检测的目标也非常小,训练过程经历了一直nan、修改random=0关闭多尺度之后也不能解决、来回查看自己修改的voc.names等配置文件、来回make,make clean,最后还是被别人发现是显卡性能问题(主要对自己的显卡一点儿不了解)。

	batch=16每batch个样本更新一次参数
	subdivisions=16 如果内存不够大,将batch分割为subdivisions个子batch,每个子batch的大小
	                
	**batch/subdivisions 作为一次性送入训练器的样本数量。**

迭代10000次的效果
YOLOV3----训练已放弃(核心已转储)_第3张图片

你可能感兴趣的:(YOLOv3)