Caffe——py-faster-rcnn使用和搭建[Ubuntu——CPU]

前言

本人之前上课模式分类(Pattern Classification)读过一篇论文(Region-Based Convolutional Networks for
Accurate Object Detection and Segmentation),我个人觉得RCNN很有意思想尝试运行当中的代码。但由于之前一直忙与项目和课程,所以没时间去找RCNN相关的代码并且运行它。现在终于有时间实现我自己的心愿。这里我使用的是Caffe的faster-rcnn,使用的语言是python3。(我这里使用的CPU运行,我真的很穷啊。所以大家有空施舍一下我吧)

编译

这里可以参考里面的README.md或者我之前写的Caffe[穷人版]——Ubuntu 16.04 CPU版本安装。因为内容很相似


1. 下载py-faster-rcnn的代码

在github上拉下相应的代码

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

假如说你想用matlab写的话,可以在这里下载

git clone --recursive https://github.com/ShaoqingRen/faster_rcnn.git

我们把这个py-faster-rcnn的目录记作:$FRCN_ROOT,方便我们后面说明。


2. 下载相关的python模块

进入caffe-fast-rcnn/python,然后按照requirements.txt里面的要求内容安装相关的python模块。

cd $FRCN_ROOT/caffe-fast-rcnn/python
for req in $(cat requirements.txt); do sudo pip3 install $req; done

3. 修改Makefile.config

我们进入caffe-fast-rcnn/python,并复制Makefile.config.exampleMakefile.config

cd $FRCN_ROOT/caffe-fast-rcnn
cp Makefile.config.example Makefile.config

接着修改Makefile.config文件。我这里就不复述一次啦,因为我在Caffe[穷人版]——Ubuntu 16.04 CPU版本安装写的很清楚了。因为这里使用Python调用caffe的库。所以我们必须编译caffe。你也可以看README.md的内容。


4. 编译lib

进入$FRCN_ROOT/lib,修改setup.py的内容(因为我这里使用CPU,假如使用GPU的话可以忽略),编译faster-rcnn的相关函数库。

cd $FRCN_ROOT/lib
vim setup.py

(使用CPU)修改setup.py内容,将# ONLY CPU下一行的代码注释。

...
# ONLY CPU    
# CUDA = locate_cuda()

...

def _compile(obj, src, ext, cc_args, extra_postargs, pp_opts):
            ...
            # ONLY CPU
            # self.set_executable('compiler_so', CUDA['nvcc'])
...

ext_modules = [
    ....
    # ONLY CPU
    # Extension('nms.gpu_nms',
    #     ['nms/nms_kernel.cu', 'nms/gpu_nms.pyx'],
    #     library_dirs=[CUDA['lib64']],
    #     libraries=['cudart'],
    #     language='c++',
    #     runtime_library_dirs=[CUDA['lib64']],
    #     # this syntax is specific to this build system
    #     # we're only going to use certain compiler args with nvcc and not with
    #     # gcc the implementation of this trick is in customize_compiler() below
    #     extra_compile_args={'gcc': ["-Wno-unused-function"],
    #                         'nvcc': ['-arch=sm_35',
    #                                  '--ptxas-options=-v',
    #                                  '-c',
    #                                  '--compiler-options',
    #                                  "'-fPIC'"]},
    #     include_dirs = [numpy_include, CUDA['include']]
    # ),
....

然后编译lib的内容

make

5. 编译caffe

进入$FRCN_ROOT/caffe-fast-rcnn,并且编译代码

cd $FRCN_ROOT/caffe-fast-rcnn
make -j8 && make pycaffe

假如没什么报错,应该是没问题的了。

运行demo

在运行demo前,我们还差重要的模型还没有。假如你想自己通过train来获得也行,但我只是用CPU跑代码计算资源有限,所以就暂时不做training,直接下载模型就运行啦。假如想自己做的话,可以看看Beyond the demo: installation for training and testing models。
我们在进入$FRCN_ROOT/caffe-fast-rcnn后,执行下载脚本:

cd $FRCN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh

脚本会自动下载和解压到data目录下。你会看到有一个faster_rcnn_models的目录,里面有两个模型文件VGG16_faster_rcnn_final.caffemodelZF_faster_rcnn_final.caffemodel。要注意的是,我们身处与天朝当中,而模型压缩包在dropbox,所以....你懂得。

运行代码前,我们要修改lib里面的一些地方,主要是因为我是用CPU跑的,所以要注释一些使用gpu的代码,不然代码会报错:
$FRCN_ROOT/lib/fast_rcnn/nms_wrapper.py里面修改:

from fast_rcnn.config import cfg
# from nms.gpu_nms import gpu_nms
from nms.cpu_nms import cpu_nms

def nms(dets, thresh, force_cpu=True):
    """Dispatch to either CPU or GPU NMS implementations."""

    if dets.shape[0] == 0:
        return []
    # if cfg.USE_GPU_NMS and not force_cpu:
    #     return gpu_nms(dets, thresh, device_id=cfg.GPU_ID)
    else:
        return cpu_nms(dets, thresh)

另外,我现在使用的python3运行,而代码是Py2.7写的,所以我们需要将部分语法变为Py3。这里我就不多讲哪些地方做修改了,因为都基础语法而已。

最后运行

cd $FRCN_ROOT/
python3 ./tools/demo.py --cpu
今天午饭在饭堂门口拍
Caffe——py-faster-rcnn使用和搭建[Ubuntu——CPU]_第1张图片
这是作者给出的demo做展示

因为里面用nms将score比较低的目标过滤掉,我这里设置的0.7的thresh。然后我们就只会看到0.7以上的目标。显然作者训练的模型还是有所欠缺的,作者在README.md里面也写到了,我们可以通过其他的数据集做进一步的优化。

相关参考

  • http://blog.csdn.net/yiweibian/article/details/54018142
  • https://github.com/rbgirshick/py-faster-rcnn/blob/master/README.md
  • http://blog.sina.com.cn/s/blog_679f93560102wpyf.html
  • https://github.com/rbgirshick/py-faster-rcnn/issues/8
  • https://github.com/rbgirshick/py-faster-rcnn/issues/8#issuecomment-226997357

感谢阅读,差不多要睡觉啦!早唞!好梦!

你可能感兴趣的:(Caffe——py-faster-rcnn使用和搭建[Ubuntu——CPU])