今天下午配置了faster rcnn,在中间踩了不少坑,特总结于此与大家分享。
【引子】
2013年,来自微软的rbg大神发表了基于深度学习的detection方法:R-CNN。一年以后,大神单枪匹马又将自己之前的工作提升到了一个新的水平(fast R-CNN)。
2015年,来自微软亚洲研究院的Shaoqing Ren,Kaiming He研究组在rbg的基础上,进一步地将该方法提升到了实时的水平(faster R-CNN),这也是我们今天的主题。
值得说明的是,目前在github上有两个版本的faster R-CNN,一个版本是Shaoqing Ren的MATLAB版本,另外一个是rbg的Python版本,二者有细微的差别。此处我们使用MATLAB版本。
【依赖项】
安装faster R-CNN需要一些依赖项:
- caffe(此处需要Shaoqing Ren的caffe版本,下面会具体说)
- MATLAB(此处使用Ubuntu14.04下的R2014b)
【安装】
Step1. 下载源代码
首先,下载源代码,在适当路径下,执行如下命令:
$ git clone --recursive https://ShaoqingRen/faster_rcnn.git
完成源代码的下载,主义此处的--recursive
是递归下载,一些DNN框架,常常喜欢将caffe作为一个submodule放在external目录下,利用这一参数可以下载所有内容。
Step2. 安装caffe
完成第一步后,这个时候,你应该已经有Shaoqing Ren版本的caffe了,下面我们要编译它。
执行下列代码:
$ cd external/caffe
$ cp Makefile.config.example Makefile.config
$ vim Makefile.config
利用vim对配置文件进行修改,此处我们主要指定MATLAB_DIR路径,在适当位置加入下面内容:
MATLAB_DIR := /usr/local/MATLAB/R2014b
接下来执行如下一系列命令,老司机应该挺熟的了吧…….
$ make all -j8
$ make test -j8
$ make runtest -j8
$ make pycaffe
$ make matcaffe
需要说明的一点是,我在执行make runtest
这一命令之后,遇到了奇葩的问题”Unknown V1LayerParameter Layer type: 40”。如下图:
后来我Google了一下,发现有类似问题的还真不在少数!根据热心网友们的讨论结果。我发现问题出在这个文件上面(external/caffe/src/caffe/util/upgrade_proto.cpp)。我们需要补上Reshape,ROIPooling以及SmoothL1Loss这三个层,具体见下:
Step3. 下载Pre-trained Model
按理说,在MATLAB里面执行run fetch_data/fetch_model_VGG16.m
就能下载了,不过天朝的网你懂得… …不过好在咱们Shaoqing Ren也是中国人,给咱们提供了百度云盘的下载地址,哈哈!http://pan.baidu.com/s/1dDCsSm9
需要注意的是,这个东东下载以后,请解压到faster R-CNN根目录下,里面有5张测试图片以及一个名为output的文件夹(文件夹里面是pre-train好的ZF-net以及VGG16-net)。
Step4. 运行
在MATLAB下面,运行faster_rcnn_build.m
和startup.m
。其中前者是要编出一个东西来,是必须必须执行的。
Step5. 测试
在MATLAB下面,运行experiments/script_faster_rcnn_demo.m
,就能够得到如下结果啦~~~