一、出现的问题
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声明格式语句:;
2°、因为上述1中开头的格式设置,修改后的xml每行之间的空格也变大了。
4。有可能是因为缓存没有清理干净,imdb下和output都要清理
错误详细如下:
错误使用 proposal_prepare_image_roidb>scale_rois (line 110)
两个输入数组的非单一维度必须相互匹配。
出错proposal_prepare_image_roidb>@(x,y)compute_targets(conf,scale_rois(gt_rois,im_size,y),gt_labels,x,image_roidb_cell{i},y) (line 61)
compute_targets(conf, scale_rois(gt_rois, im_size, y), gt_labels, x, image_roidb_cell{i}, y), ...
出错 proposal_prepare_image_roidb>append_bbox_regression_targets (line 53)
parfor i = 1:num_images
出错 proposal_prepare_image_roidb (line 43)
[image_roidb, bbox_means, bbox_stds] = append_bbox_regression_targets(conf, image_roidb, bbox_means, bbox_stds);
出错 proposal_train (line 77)
= proposal_prepare_image_roidb(conf, opts.imdb_train, opts.roidb_train);
出错 Faster_RCNN_Train.do_proposal_train (line 7)
model_stage.output_model_file = proposal_train(conf, dataset.imdb_train, dataset.roidb_train, ...
出错 script_faster_rcnn_VOC2007_ZF (line 45)
model.stage1_rpn = Faster_RCNN_Train.do_proposal_train(conf_proposal, dataset, model.stage1_rpn, opts.do_val);
3.
错误使用 caffe_
glog check error, please check log and clear mex
出错 caffe.Net/forward_prefilled (line 109)
caffe_('net_forward', self.hNet_self);
出错 caffe.Net/forward (line 142)
self.forward_prefilled();
出错 fast_rcnn_test>check_gpu_memory (line 208)
caffe_net.forward(net_inputs);
出错 fast_rcnn_test (line 67)
max_rois_num_in_gpu = check_gpu_memory(conf, caffe_net);
出错 Faster_RCNN_Train.do_fast_rcnn_test (line 6)
mAP = fast_rcnn_test(conf, imdb, roidb, ...
出错 script_faster_rcnn_VOC2007_VGG16 (line 78)
opts.final_mAP = Faster_RCNN_Train.do_fast_rcnn_test(conf_fast_rcnn, model.stage2_fast_rcnn, dataset.imdb_test, dataset.roidb_test);
1、显存不足,需要改小batchsize
2、model里面的prototxt文件没有改好
3、如果在final test阶段出现这个问题,应该还是显存不足的问题,因为里面有一句话:出错 fast_rcnn_test>check_gpu_memory (line 208)
我的1080跑zf网络没有问题但是跑vgg16就算batchsize改小了也会报错。考虑可不可以final test阶段用cpu来跑,但是不知道从哪里改
二、.如何检查标签中的错误
1.格式有问题
删掉所有文件中utf8那一行(第一行):sed -i‘(匹配的字符串)’*.xml
2.标签有问题
把所有的标签都找出来:grep '
用vim删除掉正确的标签 例如::g/ofo/d
那么剩下的标签就是错误标签