基于Docker的Faster R-CNN, CPU-Only环境配置

详见我的repo

1. 系统配置

  • 系统: VMware下的Ubuntu 14.04 LTS x64, 需要分配至少4GB内存
  • 坑: 内存过小(<1G)编译时会出错:
    g++: internal compiler error: Killed (program cc1plus)
  • 预测时(<2G)也会出错:
    *ptr host allocation of size 1382400000 failed

2. 安装Docker

1
2
3
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart

3. 下载镜像并安装额外依赖

  1. 先下载镜像

docker pull tleyden5iwx/caffe-cpu-master

  1. 启动镜像, 创建容器

docker run -i -t tleyden5iwx/caffe-cpu-master /bin/bash

  1. 在容器中安装额外依赖. docker镜像中已经安装了cython
1
2
sudo apt-get install python-opencv
sudo pip install easydict
  1. 配置github
1
2
git config --global user.name "yourname"
git config --global user.email yourname@example.com

4. 下载源码并运行demo

  1. 下载源码(这里使用的是我的源码)
1
git clone --recursive https://github.com/shawnau/py-faster-rcnn-cpu.git
  1. 编译(假设根目录为$FRCN_ROOT)
  • 重命名$FRCN_ROOT/caffe-fast-rcnn下的Makefile.config.example 为 Makefile.config
1
2
3
4
5
cd $FRCN_ROOT/lib
make

cd $FRCN_ROOT/caffe-fast-rcnn
make -j8 && make pycaffe
  1. 下载预训练模型(注:可以直接用迅雷拖下来解压至data/)
1
2
cd $FRCN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh
  1. 运行demo
1
2
cd $FRCN_ROOT
./tools/demo.py --cpu --net zf
  • 其中 --cpu 代表使用caffe的CPU模式, –net zf 代表使用zf网络
  • 默认的vgg16网络在本机上会被killed在载入模型阶段, 应该为内存不足所致
  • 速度: 在i5下4秒一张图, 差了大约1.5个数量级
  1. 结果都以tag_原图名称.jpg保存在data/demo/下

5. 主要修改

  1. 和CPU/GPU相关的:
  • lib/fast_rcnn/config.py
  • lib/fast_rcnn/nms_wrapper.py
  • lib/setup.py
  • tools/test_net.py, train_net.py
  • caffe-fast-rcnn/Makefile.config
  1. 和输出相关的:
  • tools/demo.py 修改输出保存为图片

Refer

How to setup with CPU ONLY mode
I got the error when running demo.py
Caffe failed with py-faster-rcnn demo.py on TX1