yolov2训练出现Region Avg IOU: -nan, Class: -nan, Obj: -nan等问题的一种解决办法

我在对训练前的一系列操作(标记样本,转txt等)完成之后,开始训练时,提示下面的错误,如下图:

yolov2训练出现Region Avg IOU: -nan, Class: -nan, Obj: -nan等问题的一种解决办法_第1张图片

我看了这篇博客:https://blog.csdn.net/qq_25680531/article/details/79919813

上面说数据问题会引起这种情况,我回去又检查了一遍我的训练数据txt,没有问题。所以最有效的方式还是回去看源码是哪出了问题,在路径../darknet/src/data.c下,找到函数如下图:

yolov2训练出现Region Avg IOU: -nan, Class: -nan, Obj: -nan等问题的一种解决办法_第2张图片

我发现里面图像有jpg、png格式的图片,没有bmp,而我用的恰恰是bmp格式的图片,所以说就读不出图像啊。

此时可对代码进行修改,要么依照上面内容添加一行find_replace(labelpath,"bmp","txt",labelpath);代码,要么把bmp改成jpg格式。两种都行,看个人喜好。对于使用bmp转jpg的同学,附带下面python代码:

import cv2

imgnames = open('path.txt')#path.txt是你的图片路径
for f in imgnames:
    path = f.strip()
    img = cv2.imread(path)
    cv2.imwrite(path.replace('orig', 'Images').replace('bmp', 'jpg'), img)

说明:上面代码是我在ubuntu上面跑的,如果在windows下pycharm上面跑的话,把代码(除了头文件import cv2)放在main函数里运行即可。另外,我的path.txt里面的内容为这种格式:

自己使用shell脚本,或者别的python脚本生成图片路径保存为txt即可。

另外,如果你修改完代码仍然没有训练成功,可以在data.c文件中搜索find_replace,查看data.c文件中与find_replace相关的函数,逐一对照。我使用的bmp转jpg的方法,然后训练成功:

yolov2训练出现Region Avg IOU: -nan, Class: -nan, Obj: -nan等问题的一种解决办法_第3张图片####

####

 

 

你可能感兴趣的:(神经网络,深度学习)