天天看点

我的caffe练习(四)--faster-rcnn的caffe实现

之前是做的分类,接下来要做检测。

对于目标检测:从一开始的R-CNN、OverFeat到后面的Fast/Faster R-CNN,SSD,YOLO系列,再到2018年最近的Pelee,检测的效果和性能越来越出色。

目前流行的论文以及说明详见:https://zhuanlan.zhihu.com/p/40047760

在这里就先实现faster-rcnn,需要安装py-faster-rcnn

windows下的安装参照:https://blog.csdn.net/zhangzm0128/article/details/71698880

照着这篇文章一步步来,这都正常。

因为py-faster-rcnn只支持python2,而我用的是python3.5版本,将py-faster-rcnn改成支持python3.5版本,需要要对其进行修改。还要本人显卡太挫,无奈只能选择cpu。以下是需要修改的地方。

1.编译py-faster-rcnn依赖库的时候,要将setup.py下的iteritems改成items,还要删除nms文件夹下原来自带的cpu_nms.pyd 和gpu_nms.pyd两个文件。

2.代码中最多的修改是里面的print函数都要加上括号

3.修改lib/rpn/proposal_layer.py文件,

找不到generate_anchors的话,将

from generate_anchors import generate_anchors      

改为

from rpn.generate_anchors import generate_anchors      
Traceback (most recent call last):
  File "tools/demo.py", line 135, in <module>
    net = caffe.Net(prototxt, caffemodel, caffe.TEST)
  File "F:\WorkSpace\caffe_net\py-faster-rcnn\tools\..\lib\rpn\proposal_layer.py", line 26, in setup
    layer_params = yaml.load(self.param_str_)
AttributeError: 'ProposalLayer' object has no attribute 'param_str_'
           

将param_str_改为param_str

4.有几处有xrange错误,python3.5用的是range

5.cPickle改为pickle

6.

Traceback (most recent call last):
  File "tools/demo.py", line 142, in <module>
    _, _= im_detect(net, im)
  File "F:\WorkSpace\caffe_net\py-faster-rcnn\tools\..\lib\fast_rcnn\test.py", line 154, in im_detect
    blobs_out = net.forward(**forward_kwargs)
  File "F:\WorkSpace\caffe_net\py-faster-rcnn\tools\..\caffe-fast-rcnn\python\caffe\pycaffe.py", line 131, in _Net_forward
    self._forward(start_ind, end_ind)
  File "F:\WorkSpace\caffe_net\py-faster-rcnn\tools\..\lib\rpn\proposal_layer.py", line 65, in forward
    pre_nms_topN  = cfg[cfg_key].RPN_PRE_NMS_TOP_N
KeyError: '1'
           

在64行改成

#cfg_key = str(self.phase) # either 'TRAIN' or 'TEST'
cfg_key = str('TRAIN' if self.phase == 0 else 'TEST')      

7.

因为是用的cpu,所以会出现:ImportError: No module named gpu_nms,修改lib/fast_rcnn/nms_wrapper.py,

#from nms.gpu_nms import gpu_nms

from nms.cpu_nms import cpu_nms

def nms(dets, thresh, force_cpu=True):

最后在目录 py-faster-rcnn 下运行python tools/demo.py --cpu。

我的caffe练习(四)--faster-rcnn的caffe实现

继续阅读