Faster-Rcnn训练出现的问题

以下问题是在Ubuntu下用faster rcnn(caffe与matlab)训练时所遇到的,我的解决方法不见得对其他人都使用:

1、错误使用 containers.Map/values,此容器中不存在指定的键。出错 roidb_from_voc>attach_proposals (line 172)

gt_classes = class_to_id.values({voc_rec.objects(valid_objects).class})

答:你标注的目标种类与datasets/VOCdevkit2007/VOCcode/VOC2007/VOCiniy.m中指定的目标种类不匹配。比如你只在VOCinit.m中写了一个目标类型标签‘car',但你标记结果Annotations/中某个.xml中不小心标注两种对象object如'car'和'person’。这样机会报错,解决方法是重新标记那个.xml对应的图片,去掉多余的目标种类。

2、错误使用 proposal_prepare_image_roidb>scale_rois (line 110),两个输入数组的非单一维度必须相互匹配。

答:可能有如下原因:

①一是要识别的是plane并且标注的xml文件中目标名称也是plane,但VOCinit.m中写的目标类型标签是‘car',两者不匹配所以出问题,将VOCinit.m中的label改为'plane'即可;

②二是图片有问题,不是指.jpg或.png图片格式的问题,而是指图片本身存在问题。我是原因是:图片尺寸有问题,一般要求500*375或375*500,例如标准VOC数据集中基本都是这两种大小或者接近这两种大小的图片。我从百度图片上拷贝下来的图片尺寸千差万别,没有对尺寸进行修正直接训练,所以出错。

③可能是Annotations/中的xml文件文字格式有问题,我开始使用labelImg标注训练没问题,后来因为需要对xml文件内容做一定修改,就编写了一个matlab程序对所有的xml批量修改,然后就出错了。原因是修改后:紧凑型xml变为常规型,是的读取时多了几个空格节点。具体表现如下:

1°、xml开头多了一个xml声明格式语句:<?xml version="1.0" encoding="utf-8"?>;

2°、因为上述1中开头的格式设置,修改后的xml每行之间的空格也变大了。

这些用MATLAB打开可以看到,如下:

有问题的格式:


正确格式:


解决办法:①labelImg可以识别这些有问题的格式,所以我直接就是用labelImg打开并重新保存一下,然后格式就正确了;②或者用MATLAB语句编写程序批量删除,怎么写程序没研究。

注:这个问题在小咸鱼的数据集制作文章中也有介绍。

补充:网上有人说需要将“experiments\+Dataset\voc2007_test.m第11行、第14行,test改成val”,但我觉得这个应该不是根本原因。

……,可能还有其他具体原因,但对于该错误,一般是准备的数据集有问题。直接导致出问题的原因一般在标注文件Annotations中。

3、若仅仅为了测试跑通faster rcnn,可以修改迭代次数以减少训练用时,如下:

答:对于ZF模型,faster rcnn默认迭代文件分别是:

①fast rcnn部分用的solver_30k40k.prototxt,所以将其中的stepsize:30000和max_iter:40000改小即可,如改为:stepsize: 3000和max_iter: 4000;

一共有两个,home/hustac/faster_rcnn/models/fast_rcnn_prototxts/ZF/和home/hustac/faster_rcnn/models/fast_rcnn_prototxts/ZF_fc6中分别有一个,都改一下。

②proposal部分用的solver_60k80k.prototxt,所以将其中的stepsize:60000和max_iter:80000改小即可,如改为:stepsize: 6000和max_iter: 8000;

一共有两个,home/hustac/faster_rcnn/models/rpn_prototxts/ZF/和home/hustac/faster_rcnn/models/rpn_prototxts/ZF_fc6中分别有一个,都改一下。

猜你喜欢

转载自blog.csdn.net/Xiongchao99/article/details/78917050