rcnn、fast-rcnn和faster-rcnn

作者:铁胆火车侠
链接:https://www.zhihu.com/question/35887527/answer/99689222
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

R-CNN:针对区域提取做CNN的object detction。
<img src="https://pic1.zhimg.com/36bb2ec6663657eff23edcef578fe3b0_b.jpg" data-rawwidth="629" data-rawheight="220" class="origin_image zh-lightbox-thumb" width="629" data-original="https://pic1.zhimg.com/36bb2ec6663657eff23edcef578fe3b0_r.jpg">----------------------------------
SPPNet:针对不同尺寸输入图片,在CNN之后的Feature Map上进行相同维度的区域分割并Pooling,转化成相同尺度的向量。但是分类用的是SVM。
<img src="https://pic3.zhimg.com/ebe688fcc009229fe58cd039130505e6_b.jpg" data-rawwidth="469" data-rawheight="313" class="origin_image zh-lightbox-thumb" width="469" data-original="https://pic3.zhimg.com/ebe688fcc009229fe58cd039130505e6_r.jpg">--------------------------------------------------
Fast R-CNN:区域提取转移到Feature Map之后做,这样不用对所有的区域进行单独的CNN Forward步骤。同时最终一起回归bounding box和类别。
<img src="https://pic2.zhimg.com/1f34b695ed44113f901dbee0e7c6b425_b.jpg" data-rawwidth="361" data-rawheight="140" class="content_image" width="361">------------------------------------------------

1.为什么做Faster-rcnn

a. SPPnet 和 Fast R-CNN 已经减少了detection步骤的执行时间,只剩下region proposal成为瓶颈

b. 因此提出了 Region Proposal Network(RPN) 用来提取检测区域,并且和整个检测网络共享卷积部分的特征。RPN同时训练区域的边界和objectness score(理解为是否可信存在oject)。

c. 最终把RPN和Fast-RCNN合并在一起,用了“attention” mechanisms(其实就是说共享这事)。在VOC数据集上可以做到每张图只提300个proposals(Fast-RCNN用selective search是2000个)。

2.继续阐述现存问题

Fast-RCNN已经做到了Region Proposal在卷积以后,这样大大减少了卷积作用的次数,全图的Feature Map提取同样只是做一次。目前最大的问题就是 Selective Search是耗时的瓶颈(CPU上大概2s一张)。尤其是这个方法没有应用在GPU上,优化比较难。RPN共享网络,可以做到每张10ms,并且一起在GPU上进行了。

3.具体网络构建

在前面全图Feature Map的基础上, RPN又增加了几个卷积层和FC层。是一种可以END-to-END训练的FullyConvNet(其实就说单独训练RPN自己的这些层)。为了统一RPN和Fast R-CNN的网络,具体实现就是在RPN和Fast-RCNN之间选择性切换,实际各训练了两次。最终结果,即使选择了VGG里最复杂的网络,仍然可以做到5fps的速度。

<img src="https://pic1.zhimg.com/455d3697e6431c4d77b1b1edf53cd1fc_b.png" data-rawwidth="220" data-rawheight="229" class="content_image" width="220">

实现的时候,前面feature map之前的网络是shareable convolutional layers(VGG有13层,ZF有5层,不同的模型不一样)。RPN的具体实现就不说了,3x3尺寸的filter,卷积一层,后面几个FC,假如每个点上proposal k种不同的尺度和比例(论文里定义k=9),输出就有4*k的尺度信息(位置2维,长宽各一维)和2*k的判断信息(是否是object)。RPN的一个重大优点在于translation invariant,因为是针对各个点周围3X3进行独立卷积的,后面的
RPN整个网络的权重又是共享的。而如果MultiBox方法的话,核心k-means很难保有这种独立性,毕竟object的位置在图上都是随机的。另外现有的Region Proposal方法基本上是构建image pyramid或者是filter pyramid的基础上,这里就是真的实现了Single filter,Single scale。

4.LOSS定义和训练过程

Loss Function定义包括几个部分,RPN训练的尺度信息的边框(bounding box)部分,每个点对应的k个anchors里和ground truth IoU的overlap最大的标记为正,或者与任何IoU的overlap超过0.7也标记为正。每一个ground truth的box可能会标记给多个anchor。如果anchor与IoU的overlap小于0.3将被标记为负。本身传统方法,IoU在处理bounding的时候,就是所有RP出来的区域类似于先scale到相同尺寸进行预测,共享预测部分的网络的权重,但是在这里反而是每个feature
map点周围的3X3区域各进行k个不同权重的scale和size的训练。 RPN训练用的是每个batch来自单张图的proposal。但是各个图占主要部分的negative samples会产生很大的bias。于是每次每张图选择256个随机的anchors,并且保证postive和negative的anchors比例为1:1。RPN本身的部分高斯随机初始化而来,共享部分来自ImageNet之前的训练结果。后面decay,learning rate什么的就不详细说了。训练过程就是固定一部分,训练一部分,RPN和Fast-RCNN交叉着来,定义了很多种,Caffe里实现的,也不具体说了。

----------------------------------------------------------------------------------------------------

首先膜拜RBG大神,这周以前我是不知道这个人的,之前我一直想用移动机器人带摄像头做一些实时object detection的任务,其实自动驾驶上很多人在做了,行人检测什么的。但是我对CNN的作用还一直停留在全图做image classification上。万万没想到,RBG一个人把DPM,以及后来整个object detection的所有任务链全部用CNN实现了(也不能说一个人,还有MSRA的几个华人大牛)。

同时之前我对Caffe的认识也一直停留在C++和命令行接口调用上,今天看了一下py-faster-rcnn的源代码,简直对Caffe有了全新的认识(RBG毕竟也参与了Caffe的开发)。希望早日把源代码搞透,然后试着把Faster-RCNN用在检测其他特定物体的任务上。(源代码学习,个人Blog缓慢更新中Faster R-CNN
· Tai Lei Home Page,坑太大,一时半会填不满)。

时间: 2024-08-19 14:29:48

rcnn、fast-rcnn和faster-rcnn的相关文章

论文阅读之:Is Faster R-CNN Doing Well for Pedestrian Detection?

  Is Faster R-CNN Doing Well for Pedestrian Detection? ECCV 2016   Liliang Zhang & Kaiming He     原文链接:http://arxiv.org/pdf/1607.07032v2.pdf Code : https://github.com/zhangliliang/RPN_BF/tree/RPN-pedestrian     摘要:行人检测被人 argue 说是特定课题,而不是general 的物体检测

faster rcnn test demo ---repaired for video input and save the image, label, score et al. into .mat format

faster rcnn test demo ---repaired for video input and save the image, label, score et al. into .mat format function script_faster_rcnn_demo() close all; clc; clear mex; clear is_valid_handle; % to clear init_key run(fullfile(fileparts(fileparts(mfile

深度学习-faster rcnn运行demo出现错误

问题描述 faster rcnn运行demo出现错误 faster rcnn配置好之后运行 ./tools/demo.py出现如下错误:: Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: Python 解决方案 https://www.zhihu.com/question/38455242/answer/77002913 解决方案二: 两种可能: 1.makefile 文件下LIBRARIES += op

faster rcn...-faster rcnn的train.prototxt 没有data层

问题描述 faster rcnn的train.prototxt 没有data层 最近在用faster rcnn训练数据,需要修改train.prototxt中data层的参数num_classes,但是train.prototxt没有data层,那我该如何修改呢?

如何才能将Faster R-CNN训练起来?

  如何才能将Faster R-CNN训练起来?   首先进入 Faster RCNN 的官网啦,即:https://github.com/rbgirshick/py-faster-rcnn#installation-sufficient-for-the-demo 先用提供的 model 自己测试一下效果嘛... 按照官网安装教程,安装基本需求.   Installation (sufficient for the demo)   Clone the Faster R-CNN repositor

Faster RCNN 运行自己的数据,刚开始正常,后来就报错: Index exceeds matrix dimensions. Error in ori_demo (line 114) boxes_cell{i} = [boxes(:, (1+(i-1)*4):(i*4)), scores(

function script_faster_rcnn_demo() close all; clc; clear mex; clear is_valid_handle; % to clear init_key run(fullfile(fileparts(fileparts(mfilename('fullpath'))), 'startup')); %% -------------------- CONFIG -------------------- opts.caffe_version = '

【前沿】何恺明大神ICCV2017最佳论文Mask R-CNN的Keras/TensorFlow/Pytorch 代码实现

我们提出了一个概念上简单.灵活和通用的用于目标实例分割(object instance segmentation)的框架.我们的方法能够有效地检测图像中的目标,同时还能为每个实例生成一个高质量的分割掩码(segmentation mask).这个方面被称为 Mask R-CNN,是在 Faster R-CNN 上的扩展--在其已有的用于边界框识别的分支上添加了一个并行的用于预测目标掩码的分支.Mask R-CNN 的训练很简单,仅比 Faster R-CNN 多一点计算开销,运行速度为 5 fp

商汤科技曹旭东:为何深度学习几乎成了计算机视觉研究的标配?| 硬创公开课

联合编辑 宗仁 黄鑫雷锋网(公众号:雷锋网)雷锋网雷锋网 今年夏天,雷锋网将在深圳举办一场盛况空前的"全球人工智能与机器人峰会"(简称CCF-GAIR).大会现场,谷歌,DeepMind,Uber,微软等巨头的人工智能实验室负责人将莅临深圳,向我们零距离展示国外人工智能震撼人心.撬动地球的核心所在.如果你不想错过这个大会的盛世狂欢,请点击文末购买我们的早鸟票. 本次CVPR 2016上,深度学习几乎成了如今计算机视觉研究的标配,人脸识别.图像识别.视频识别.行人检测.大规模场景识别的相

【ICCV 2017华人雄起】何恺明包揽两项最佳论文,40%投稿来自中国

计算机视觉顶会ICCV 2017各大奖项公布:何恺明包揽两项最佳论文奖:贾扬清率Caffe团队获"无私贡献奖":DeepMind CEO 哈萨比斯导师Tomaso Poggio获得终身成就奖.沿袭CVPR的势头,ICCV 2017华人表现依然强劲,有40%的投稿来自中国,清华大学投稿数量在所有机构中位居第一. 两年一度的计算机视觉领域顶会ICCV 2017正在意大利威尼斯召开.由于计算机视觉及相关领域的快速发展,本届ICCV参与度创历史新高,共收到2143篇论文投稿,比上届增加了26%

看了这篇文章,了解深度卷积神经网络在目标检测中的进展

近些年来,深度卷积神经网络(DCNN)在图像分类和识别上取得了很显著的提高.回顾从 2014 到 2016 这两年多的时间,先后涌现出了 R-CNN,Fast R-CNN, Faster R-CNN, ION, HyperNet, SDP-CRC, YOLO,G-CNN, SSD 等越来越快速和准确的目标检测方法. 1. 基于 Region Proposal 的方法 该类方法的基本思想是:先得到候选区域再对候选区域进行分类和边框回归.  1.1 R-CNN[1] R-CNN 是较早地将 DCNN