faster r-cnn训练自己的数据


1、制作数据放在data/VOCdevkit2007/VOC2007中
2、修改模型
"/home/pengshengfeng/py-faster-


rcnn/models/pascal_voc/VGG16/faster_rcnn_end2end/train.prototxt"


1)num_classes :, 则为3(n + 背景类) 
2)cls_score 层, num_output :也设置为3(n + 背景类) 
3)bbox_pred层, num_output:设置为12(n + 背景类) ×4 
4)name: 'roi-data'层  num_classes 3
对于test.prototxt文件, 修改如下: 
1)cls_score 层,num_output :也设置为3(n + 背景类) 
2)bbox_pred层,  num_output:设置为12(n + 背景类) ×4 




3,修改数据输入类别:cd /lib/datasets
首先,修改pascal_voc.py, 
self.CLASS = ( 
‘background‘, ‘nescafe’,'max well'
。。。 



4、解决错误:
rcnn/tools/../lib/datasets/imdb.py", line 108, in append_flipped_images
    assert (boxes[:, 2] >= boxes[:, 0]).all()
AssertionError
而faster rcnn会对Xmin,Ymin,Xmax,Ymax进行减一操作
如果Xmin为0,减一后变为65535
(1)、修改lib/datasets/imdb.py,append_flipped_images()函数
数据整理,在一行代码为 boxes[:, 2] = widths[i] - oldx1 - 1下加入代码:
for b in range(len(boxes)):
  if boxes[b][2]< boxes[b][0]:
    boxes[b][0] = 0
(2)、修改lib/datasets/pascal_voc.py,_load_pascal_annotation(,)函数
将对Xmin,Ymin,Xmax,Ymax减一去掉,变为:
 x1 = float(bbox.find('xmin').text) 
 y1 = float(bbox.find('ymin').text) 
 x2 = float(bbox.find('xmax').text) 
 y2 = float(bbox.find('ymax').text) 


5、训练
为防止与之前的模型搞混,训练前把output文件夹删除(或改个其他名),还要把py-


faster-rcnn/data/cache中的文件和
py-faster-rcnn/data/VOCdevkit2007/annotations_cache中的文件删除(如果有的


话)


6、训练
./experiments/scripts/faster_rcnn_end2end.sh VGG16(sh文件自己改过)

你可能感兴趣的:(faster r-cnn训练自己的数据)