尽管原作者Ross Girshick的说明已经非常详细,我每次看英文的fast-rcnn
/
README.md感觉费眼(英文水平还没有到信手捏来的娴熟程度),想来若能翻译成中文便真真是极好的。由于水平有限,翻译很久且专业术语翻译不正确,还望前辈们指正,非常感谢。引用请注明。以下:
这份代码不再是补充我的ICCV 2015论文的历史神器。若要寻求更快更准确的最新成果,请查阅
Faster R-CNN (Faster R-CNN是以Fast R-CNN的训练为基础的)。
Fast R-CNN: Fast Region-based Convolutional Networks for object detection
Fast R-CNN:基于区域卷积网络的快速目标检测。
----由在微软研究所(雷德蒙德市)的Ross Girshick出品。
简介
Fast R-CNN是一个基于深度卷积网络的用于快速目标检测的框架。它有以下几个特点:
(1)它训练最新的模型,例如比传统的R-CNN快9倍、比SPPnet快3倍的VGG16;
(2)在测试的时候,比R-CNN快200倍,比SPPnet快10倍;
(3)它在PASCAL VOC数据集上比R-CNN及SPPnet有显著更高的mAP;
(4)它用Python以及C++/Caffe编写;
一篇arXiv的技术报告上首次描述Fast R-CNN,随后ICCV 2015发表Fast R-CNN。
软件许可证
Fast R-CNN在MIT许可下发布(更多细节查阅许可证文件)
引用Fast R-CNN
如果你发现Fast R-CNN在研究中有用,请您考虑引用
@inproceedings{girshickICCV15fastrcnn,
Author = {Ross Girshick},
Title = {Fast R-CNN},
Booktitle = {International Conference on Computer Vision ({ICCV})},
Year = {2015}
}
内容
1.需求:软件
2.需求:硬件
3.基本的安装
4.效果演示
5.在效果演示之上:训练及测试
6.用法
7.附录下载
需求:软件
1.需要搭建Caffe以及pycaffe(查看:
Caffe安装说明)
注意:Caffe搭建必须支持Python 层!
# In your Makefile.config, make sure to have this line uncommented
WITH_PYTHON_LAYER := 1
你可以下载我的
Makefile.config文件来参考。
2.Python包中你可能没有:cython,python-opencv,easydict
3.(可选)MATLAB(只有PASCAL VOC评估时需要)
需求:硬件
1.为了训练稍小的网络(CaffeNet,VGG_CNN_M_1024),需要足够好的GPU(比如:Titan,K20,K40,..)
2.为能训练VGG16,您需要一块K40(显存11G)
基本的安装(足够跑demo)
1.复制Fast R-CNN仓库
# Make sure to clone with --recursive
git clone --recursive https://github.com/rbgirshick/fast-rcnn.git
2.复制的位置:
FRCN_ROOT
(
倘若按照步骤1来,则忽略以下的注意1及注意2)
注意1:如果您未用
--recursive
符号复制,则需要手动复制
caffe-fast-rcnn
子模块
git submodule update --init --recursive
注意2:
caffe-fast-rcnn
子模块需要在
fast-rcnn
分支上(或等效分离状态),若您按照指示来,这些都能自动产生。
3.建立Cython模块
cd $FRCN_ROOT/lib
make
4.建立Caffe以及pycaffe
cd $FRCN_ROOT/caffe-fast-rcnn
# Now follow the Caffe installation instructions here:
# http://caffe.berkeleyvision.org/installation.html
# If you're experienced with Caffe and have all of the requirements installed
# and your Makefile.config in place, then simply do:
make -j8 && make pycaffe
5.下载预计算的Fast R-CNN检测器
cd $FRCN_ROOT
./data/scripts/fetch_fast_rcnn_models.sh
这将会
fast_rcnn_models
移植数据到
$FRCN_ROOT/data
文件夹,更多细节查阅
data/README.md
效果演示
在成功完成基本安装后,你需要准备跑demo了。
Python
跑demo,请输入:
cd $FRCN_ROOT
./tools/demo.py
这个demo通过VGG16网络训练PASCAL VOC 2007数据集来执行的检测。目标建议是预计算的,以此来减少安装需要。
注意:如果demo在Caffe中跑奔溃,是因为你的GPU没有足够的显存,试着用小一些的网络比如输入:
./tools/demo.py --net caffenet
或者输入:
--net vgg_cnn_m_1024
。或者在CPU模式下跑,输入:
./tools/demo.py --cpu
。在使用的时候,类型:
./tools/demo.py -h
。
MATLAB
也有一个基础的MATLAB的demo,尽管与Python版本相比缺少些修饰。
cd $FRCN_ROOT/matlab
matlab # wait for matlab to start...
# At the matlab prompt, run the script:
>> fast_rcnn_demo
Fast R-CNN训练只能由Python实现,但测试时间的检测功能性也在MATLAB中存在。详情请见:
matlab/fast_rcnn_demo.m
以及
matlab/fast_rcnn_im_detect.m
。
计算目标建议
用本代码计算的demo,使用了预计算的选择性搜索建议。如果您基于自己的图片计算建议,则有一些选择。以下一些pointers:如果您在使用这些资源请向尊敬的作者们直接提出问题。
1.选择性搜索:
原始matlab代码,
Python包裹
2.边缘盒子:
matlab代码
3.GOP 和LPO:
python代码
4.MCG:
matlab代码
5.RIGOR:
matlab代码
(RIGOR: Recycling Inference in Graph Cuts for generating Object Regions)
在效果演示之上:训练及测试
1.下载训练、校验、测试数据及VOCdevkit
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCdevkit_08-Jun-2007.tar
2.将所有这些tars压缩包解压至名为
VOCdevkit
的目录下
tar xvf VOCtrainval_06-Nov-2007.tar
tar xvf VOCtest_06-Nov-2007.tar
tar xvf VOCdevkit_08-Jun-2007.tar
3.需要有以下的基本结构
$VOCdevkit/ # development kit
$VOCdevkit/VOCcode/ # VOC utility code
$VOCdevkit/VOC2007 # image sets, annotations, etc.
# ... and several other directories ...
4.创建PASCAL VOC数据集的对称链接(symlinks)
cd $FRCN_ROOT/data
ln -s $VOCdevkit VOCdevkit2007
使用对称链接是一个好方法,因为你可以在多个项目之间共享相同的PASCAL 数据集。
5.(可选)按照相同的步骤得到PASCAL VOC 2010以及2012
6.按照接下来的部分,下载预计算的目标建议及预训练的ImageNet模型。
下载预计算的选择性搜索目标建议
预计算的选择性搜索盒可为VOC2007以及VOC2012下载
cd $FRCN_ROOT
./data/scripts/fetch_selective_search_data.sh
这可以移植
selective_selective_data
.数据到
$FRCN_ROOT/data
文件夹。
下载预训练ImageNet模型
预训练ImageNet模型可以为在论文中描述过的三种网络提供下载,这三种网络分别是:CaffeNet (
小型), VGG_CNN_M_1024 (
中型), and VGG16 (
大型).
cd $FRCN_ROOT
./data/scripts/fetch_imagenet_models.sh
这些模型都可以在
Caffe模型动物园中找到,在这提供以便给您方便。
用法
训练一个Fast R-CNN检测器。例如,在VOC 2007 trainval上训练VGG16网络:
./tools/train_net.py --gpu 0 --solver models/VGG16/solver.prototxt \
--weights data/imagenet_models/VGG16.v2.caffemodel
如果您看到这个错误:
EnvironmentError: MATLAB command 'matlab' not found. Please add 'matlab' to your PATH.
那么,您需要确保
matlab
binary 二进制是您的
$PATH
路径。PASCAL VOC评估目前需要MATLAB。
测试一个Fast R-CNN检测器。例如,在VOC 2007测试集上测试VGG16网络:
./tools/test_net.py --gpu 1 --def models/VGG16/test.prototxt \
--net output/default/voc_2007_trainval/vgg16_fast_rcnn_iter_40000.caffemodel
测试输出将会在这个路径下:
$FRCN_ROOT/output
.
压缩一个Fast R-CNN模型----通过使用在全连接层上截短奇异值分解法(Truncated SVD):
./tools/compress_net.py --def models/VGG16/test.prototxt \
--def-svd models/VGG16/compressed/test.prototxt \
--net output/default/voc_2007_trainval/vgg16_fast_rcnn_iter_40000.caffemodel
# Test the model you just compressed
./tools/test_net.py --gpu 0 --def models/VGG16/compressed/test.prototxt \
--net output/default/voc_2007_trainval/vgg16_fast_rcnn_iter_40000_svd_fc6_1024_fc7_256.caffemodel
实验脚本 用于复制论文中的实验的脚本可以在
$FRCN_ROOT/experiments/scripts
路径中找到。实验的日志文件在
experiments/logs
.中。
注意:知道目前为止,Caffe所需要的RNG种子在训练中并不牢固,现在已经修固好了,除非
train_net.py
文件被
--rand
标志唤起。在commit之前产生的结果会有随机变异。
附录下载