代码下载链接:https://github.com/YuwenXiong/py-R-FCN
下载预训练模型:https://pan.baidu.com/s/1o77gFXo
环境安装,caffe,编译pycaffe接口,python2.7
将预训练模型放在dada文件夹下的rfcn_models文件夹,没有就新建:
然后开始运行tools文件夹下的demo_rfcn.py文件
下面是遇到的错误集合:
1、报cython_bbox错误
这个需要提前编译bbox.pyx,我一直编译不成功,所以直接将bbox.pyx改成了bbox.py,里面的内容按照python语法修改,删除掉定义变量之类的语句即可。
2、cpu_nms和gpu_nms的问题
同上面,只要改成cpu_nms.py文件,里面内容按照python语法修改即可:
gpu_nms报错,就直接不用他了,只用cpu_nms即可
3、 im_rois = im_rois.astype(np.float, copy=False)
AttributeError: 'NoneType' object has no attribute 'astype'
这个错误坑了好几天,看函数
_, _= im_detect(net, im)
进入到里面去:
blobs, im_scales = _get_blobs(im, boxes)
这个函数有个参数是boxes,是由im_detect函数传进来的,但是默认是None
进入到这个_get_blobs函数:
这里有个判断:cfg.TEST.HAS_RPN,这个参数是在config.py文件中定义的:
可见这里是False,所以上面的条件if not cfg.TEST.HAS_RPN就是真,就会进入到下面的语句:
而这个函数里的_project_im_rois函数就会报错了
因为这个im_rois是前面传进来的,是None,所以会报AttributeError: 'NoneType' object has no attribute 'astype'错误。
我们可以绕过他,让if not cfg.TEST.HAS_RPN条件为假,也就是cfg.TEST.HAS_RPN=True,但是我们看到在demo_rfcn.py中已经定义了这个值为True:
但是没起作用,具体原因没深究,config.py里面这个值为False,这里好像再赋值没用,所以为了让这个值起作用,直接在config中将其改为True.
重新运行demo就可以正常运行了: