拿到手的训练样本是1400多张图片,其中有一百张左右后缀为.jpg,其余的图片后缀为.bmp
进行训练后迭代两万次仍出现下述问题:
Rigion82/94/106 打印出来的训练情况 AVG IOU/class/object 90%为-nan,而no object已趋于0
因为公司电脑无法上传文件,所以图片就不截了
谷歌后,发现给出的建议都是调大batch_size或者更多迭代,但是我的batch_size已调整为64,迭代快三万次
在公司同学的帮助下,发现是yolov3在编译的时候,把可支持的图片后缀名写死了,如果要用.bmp需要在编译文件里添加并重新编译
具体是在 /src/data.c下修改
find_replace(path, "images", "labels", labelpath);
find_replace(labelpath, "JPEGImages", "labels", labelpath);
find_replace(labelpath, ".jpg", ".txt", labelpath);
find_replace(labelpath, ".JPG", ".txt", labelpath);
find_replace(labelpath, ".JPEG", ".txt", labelpath);
发现并没有”.bmp”格式
添加
find_replace(labelpath, ".bmp", ".txt", labelpath)
注意这个文件不止一处需要修改,方便起见,我还是把训练样本直接转成了”.jpg”格式
原理就是在data下保存图片和labels目录(方便起见,建议直接分别取名为 JPEGImages 和 labels,虽然没试过其他的会不会报错,不过搭框架确实烦,经常报莫名其妙的错,能套用的就懒得试了),yolov3通过我们的保存图片路径的文本,自动找到与图片在同一母目录的labels下的、文件名相同的标注txt文本,做了一个映射
较坑的是这个不会报错,后来在yolov2上试了一下,发现可跑,才把问题定位在图片格式上
8.18
Charlie
杭州