在了解了fast rcnn 的工作原理之后,接下来的工作就是运行fast rcnn的代码,因为自己笔记本的配置优先,因此仅配置了cpu版本的caffe。
首先,需要在Github上下载Fast rcnn的代码
使用命令:
git clone --recursive
https://github.com/rbgirshick/fast-rcnn.git
必须加上--recursive,递归下载所有相关链接中的内容。
可以放在自己的家目录下,下载结束以后的文件内容为:
这里,需要简单了解一下工程目录。
(1)caffe-fast-rcnn caffe的框架目录
(2)data 用来存放预训练模型,比如ImageNet预训练的模型,第二个作用就是读取cache文件的缓存
(3)experiments 存放配置文件以及运行的log文件。这个目录下也有scripts用来下载ImageNet的模型、以及作者训练好的fast rcnn模型,以及相应的pascal-voc数据集,文件如下展示。
(4)lib 用来存放一些python的接口文件,比如dataset主要负责数据库的读取
(5)matlab 存放matlab与python的接口,可以实现用matlab实现检测。
(6)models 存放了三个网络的模型文件
小型网络:CaffeNet 大型网络VGG16 中型网络VGG_CNN_M_1024
(7)output 存放训练完成后的输出目录,默认在default文件夹下。
(8)tools 存放的是训练和测试的Python文件
简单介绍了下载的内容以后,我们来开始编译和代码运行部分。
1.下载一些基础软件,比如cpython,easydict,python-opencv
使用如下命令:
sudo apt-get install python-pip
sudo pip install cython
sudo apt-get install python-opencv
sudo pip install easydict
sudo apt-get install python-opencv
sudo pip install easydict
2.安装atlas
这里需要额外说明下:参考caffe的官网:
http://caffe.berkeleyvision.org/installation.html
在CUDA and BLAS这一个子项明确指出了:
我们使用atlas,所以需要进行安装,另外,提前声明,在设置Makefile的时候,需要根据自己的实际情况,合理进行配置。
下载使用命令:
sudo apt-get install libatlas-base-dev
3. 生成Cython模块
进入fast-rcnn目录下的lib,直接make
~/fast-rcnn$ cd lib
~/fast-rcnn$ cd lib
make
4. 编译caffe and pycaffe
进入~/fast-rcnn/caffe-fast-rcnn文件下:
cd caffe-fast-rcnn
cp Makefile.config.example Makefile.config
此处需要进行根据自己的实际情况进行修改,合理配置。一般晚上的大牛很可能将自己已经修改过的Makefile.config文件直接放上来,下载了替换就可以使用。但是,这样做是有风险的,因为大牛是按照自己的电脑配置的。在我们这里可能行不通。所以,我们简单介绍一下如何进行配置
我修改的地方:
我是在仅cpu下运行代码的,所以:
USE_CUDNN = 1,这个选项默认情况下时关闭的,保持不变
WITH_PYTHON_LAYER = 1,这个在默认情况下也是关闭的,FastRCNN需要支持Python接口,因此需要打开
USE_PKG_CONFIG = 1 记得打开,要不然会找不到一些库文件,PKG是linux用来管理库文件
CPU_ONLY := 1 我的只用到了cpu,打开。
另外就是前面老生常谈的问题了,就是BLAS的方式,默认为atlas,根据自己的实际情况进行修改。
make -j8
make pycaffe
这里需要注意下,make -j8是开启8个线程进行同时编译,可以加快编译速度,如果自己的电脑配置比较低,可以老老实实的直接使用make进行编译。
编译过程中出现问题:
(1) Failed to load OpenCL runtime
F0105 03:58:33.773581 2904 syncedmem.hpp:27] Check failed: *ptr host allocation of size 255744000 failed
F0105 03:58:33.773581 2904 syncedmem.hpp:27] Check failed: *ptr host allocation of size 255744000 failed
解决办法:
sudo apt-get install ocl-icd-opencl-dev
(2)至于第二部分,google了半天,大部分解释都是内存和swap区不足的问题,因为本身电脑配置实在有限。就没有理会。可以采用小的网络进行测试,不会出现诸如此类的问题。
5. 运行demo
cd ~/fast-rcnn/tools
./demo.py --cpu --net caffenet
运行demo的时候,可以指定gpu或cpu的模式,也可以指定使用哪个网络进行测试。比较方便。
运行结果展示: