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

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

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

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

我发现里面图像有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的方法,然后训练成功:

####

####

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值