前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【个人总结】一文看尽faster-RCNN的四大创新点

【个人总结】一文看尽faster-RCNN的四大创新点

作者头像
小草AI
发布于 2019-06-02 15:35:58
发布于 2019-06-02 15:35:58
5.7K0
举报

前言

fast-RCNN是建立在前面的RCNN和SPPNet的基础之上的,虽然RCNN和SPPNet使得深度神经网络在目标检测领域有了一些新的技术突破,但是还远远没有达到真正的实时检测、端到端的出结果的程度,于是诞生了fast-RCNN,虽然在目前,已经明确有说明fast-RCNN是deprecate(贬低,贬损)的,但是从它里面所诞生的一些创新方法为后面的目标检测算法建立了一个很好的基础。小草收集了大量文献,整理了fast-RCNN的四大核心点。

01 ROI Pooling层代替SPP金字塔层

  由于region proposal的尺度各不相同,而期望提取出来的特征向量维度相同,因此需要某种特殊的技术来做保证。ROIPooling的提出便是为了解决这一问题的。其思路如下:

(1)将region proposal划分为H×W大小的网格;

(2)对每一个网格做MaxPooling(即每一个网格对应一个输出值);

‍‍(3)将所有输出值组合起来便形成固定大小为H×W‍‍的feature map;‍‍‍‍

ROI Pooling层其实是SPP金字塔层的一个特例,可以说是一个浓缩版的SPP目的同样是为了兼容不同的输入尺寸,得到统一的输出,但是不同的是他不想金字塔层那样堆叠出多层金字塔,后续证明了“使用多尺度的金字塔堆叠,性能几乎没有提高”。

备注:如果不明白什么是SPP空间金字塔模型,可以参考我的另一篇文章:

02 全连接层的改进(SVD奇异值分解)

使用SVD将全连接层进行拆分的主要目的是为了加速全连接层网络的运算。

图像分类任务中,用于卷积层计算的时间比用于全连接层计算的时间多,而在目标检测任务中,selective search算法提取的建议框比较多【约2k个】,几乎有一半的前向计算时间被花费于全连接层,就Fast R-CNN而言,RoI池化层后的全连接层需要进行约2k次【每个建议框都要计算】,因此在Fast R-CNN中可以采用SVD分解加速全连接层计算,在使用SVD之前,计算复杂度为uxv,(这里u,v指的是全连接层的矩阵行和列),而在使用了SVD奇异值分解之后,计算复杂度为u×t+v×t,若t<min(u,v),则这种分解会大大减少计算量;

在实现时,相当于把一个全连接层拆分为两个全连接层,第一个全连接层不含偏置,第二个全连接层含偏置;实验表明,SVD分解全连接层能使mAP只下降0.3%的情况下提升30%的速度,同时该方法也不必再执行额外的微调操作。

image

由于卷积层计算针对的是一整张图片,而全连接层需要对每一个region proposal都作用一次,所以全连接层的计算占网络计算的将近一半(如下图)。作者采用SVD来简化全连接层计算。

从上面的结论可知,在只牺牲了mAP值0.3%的前提下,运算速度却提升了三分之一,这是非常高效的。

备注:如果看不懂什么是奇异值分解,可以参考这篇文章:

https://blog.csdn.net/u013108511/article/details/79016939

03 多任务损失函数的拼接

在fast-RCNN之前的RCNN和SPPNet都不是端到端的训练,因为最后的类别分类和边框回归是分开进行的,而fast-RCNN做出了一系列的改进。

fast-RCNN的一般模型为:

将后面的全连接层放大之后为:

cls_score层用于分类,输出K+1维数组p,表示属于K类和背景的概率。

bbox_prdict层用于调整候选区域位置,输出4*K维数组t,表示分别属于K类时,应该平移缩放的参数。

代价函数

(1)loss_cls层评估分类代价,即为交叉熵损失函数,用L_class表示

(2)loss_bbox评估检测框定位代价。比较真实分类对应的预测的平移缩放参数t和真实平移缩放参数为v的差别:

但是fast-RCNN并不是直接使用的这个L_Loc损失,而是使用的smooth_L1损失函数,如果不清楚这个损失函数什么意思,或者是有什么优点,可以参见我的另一片文章:

备注:

所以有:

Smooth_L1误差,对outlier不敏感,而smooth_L1的定义如下:

总代价Loss为两者加权和,如果分类为背景则不考虑定位代价:

04 图像中心化采样(image central sampling)

(1)R-CNN和SPPnet中采用RoI-centric sampling

从所有图片的所有候选区域中均匀取样,这样每个SGD的mini-batch中包含了不同图像的样本,不同图像之间不能共享卷积计算和内存,运算开销大。

(2)Fast R-CNN中采用image-centric sampling

mini-batch采用层次采样,即先对图像采样【N个】,再在采样到的图像中对候选区域采样【每个图像中采样R/N个,一个mini-batch共计R个候选区域样本】,同一图像的候选区域卷积共享计算和内存,降低了运算开销。

image-centric sampling方式采样的候选区域来自于同一图像,相互之间存在相关性,可能会减慢训练收敛的速度,但是作者在实际实验中并没有出现这样的担忧,反而使用N=2,R=128的image-centric sampling方式比R-CNN收敛更快。

补充:

这里解释一下为什么SPPnet不能更新spatial pyramid pooling层前面的卷积层,而只能更新后面的全连接层? 一种说法解释卷积特征是线下计算的,从而无法在微调阶段反向传播误差;另一种解释是,反向传播需要计算每一个RoI感受野的卷积层梯度,通常所有RoI会覆盖整个图像,如果用RoI-centric sampling方式会由于计算too much整幅图像梯度而变得又慢又耗内存。

05 fast-RCNN的优缺点

(1)优点

如上所示的几点改进措施。Fast R-CNN融合了R-CNN和SPP-NET的精髓,并且引入多任务损失函数,使整个网络的训练和测试变得十分方便。在Pascal VOC2007训练集上训练,在VOC2007测试的结果为66.9%(mAP),如果使用VOC2007+2012训练集训练,在VOC2007上测试结果为70%(数据集的扩充能大幅提高目标检测性能)。使用VGG16每张图像总共需要3s左右。

(2)缺点

RP的提取很耗时。region proposal的提取使用selective search,目标检测时间大多消耗在这上面(提region proposal 2~3s,而提特征分类只需0.32s),无法满足实时应用;

伪端到端。而且并没有实现真正意义上的端到端训练测试(region proposal使用selective search先提取处来)。那么有没有可能直接使用CNN直接产生region proposal并对其分类?Faster R-CNN框架就是符合这样需要的目标检测框架。

06 fast-RCNN的基本结论

实验过程不再详述,只记录结论

- 网络末端同步训练的分类和位置调整,提升准确度

- 使用多尺度的图像金字塔,性能几乎没有提高

- 倍增训练数据,能够有2%-3%的准确度提升

- 网络直接输出各类概率(softmax),比SVM分类器性能略好

- 更多候选窗不能提升性能

另外,

同年作者团队又推出了Faster RCNN,进一步把检测速度提高到准实时。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与python集中营 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
object detection,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。所以,object detection要解决的问题就是物体在哪里以及是什么的整个流程问题。
智能算法
2019/12/06
10.9K1
一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD「建议收藏」
之前我所在的公司七月在线开设的深度学习等一系列课程经常会讲目标检测,包括R-CNN、Fast R-CNN、Faster R-CNN,但一直没有比较好的机会深入(但当你对目标检测有个基本的了解之后,再看这些课程你会收益很大)。但目标检测这个领域实在是太火了,经常会看到一些写的不错的通俗易懂的资料,加之之前在京东上掏了一本书看了看,就这样耳濡目染中,还是开始研究了。
全栈程序员站长
2022/06/30
8010
一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD「建议收藏」
深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。object detection要解决的问题就是物体在哪里,是什么这整个流程的问题。然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。 object detection技术的演进: RCNN->SppNET->Fast-RCNN->Faster-RCNN 从图像识别的任务说起 这里有一个图像任务: 既要把图中的物体
机器学习AI算法工程
2018/04/17
1.4K0
深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
基于CNN目标检测方法(RCNN,Fast-RCNN,Faster-RCNN,Mask-RCNN,YOLO,SSD)行人检测
对于一张图片,R-CNN基于selective search方法大约生成2000个候选区域,然后每个候选区域被resize成固定大小(227×227)并送入一个CNN模型中,使用AlexNet来提取图像特征,最后得到一个4096维的特征向量。然后这个特征向量被送入一个多类别SVM分类器中,预测出候选区域中所含物体的属于每个类的概率值。每个类别训练一个SVM分类器,从特征向量中推断其属于该类别的概率大小。为了提升定位准确性,R-CNN最后又训练了一个边界框回归模型。训练样本为(P,G),其中P=(Px,Py,Pw,Ph)为候选区域,而G=(Gx,Gy,Gw,Gh)为真实框的位置和大小。G的选择是与P的IoU最大的真实框,回归器的目标值定义为:
机器学习AI算法工程
2019/10/29
4.3K0
基于CNN目标检测方法(RCNN,Fast-RCNN,Faster-RCNN,Mask-RCNN,YOLO,SSD)行人检测
经典神经网络 | fast rcnn目标检测算法详解
针对上述这些问题,本篇论文作者提出了fast rcnn网络,可以解决R-CNN和SPPnet的缺点,同时提高其速度和准确性。fast rcnn具有以下优点:
墨明棋妙27
2022/09/23
5370
SPPNet网络模型[通俗易懂]
上篇文章详细阐述了R-CNN网络模型,本篇本章本来准备阐述Fast-RCNN模型的,介于SPP-Net模型有许多技巧性的技术可以在不同模型上使用,所以本篇详细分析下SPP-Net
全栈程序员站长
2022/06/27
4450
SPPNet网络模型[通俗易懂]
R-FCN、Mask RCNN、YoLo、SSD、FPN、RetinaNet…你都掌握了吗?一文总结目标识别必备经典模型(二)
 机器之心专栏 本专栏由机器之心SOTA!模型资源站出品,每周日于机器之心公众号持续更新。 本专栏将逐一盘点自然语言处理、计算机视觉等领域下的常见任务,并对在这些任务上取得过 SOTA 的经典模型逐一详解。前往 SOTA!模型资源站(sota.jiqizhixin.com)即可获取本文中包含的模型实现代码、预训练模型及 API 等资源。 本文将分 3 期进行连载,共介绍 17 个在目标检测任务上曾取得 SOTA 的经典模型。 第 1 期:R-CNN、SPP-Net、Fast R-CNN、Faster R-C
机器之心
2023/03/29
1.3K0
R-FCN、Mask RCNN、YoLo、SSD、FPN、RetinaNet…你都掌握了吗?一文总结目标识别必备经典模型(二)
[深度学习概念]·深度学习的目标检测技术演进解析
object detection个人理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别。object detection要解决的问题就是物体在哪里,是什么这整个流程的问题。然而,这个问题可不是那么容易解决的,物体的尺寸变化范围很大,摆放物体的角度,姿态不定,而且可以出现在图片的任何地方,更何况物体还可以是多个类别。
小宋是呢
2019/06/27
5120
[深度学习概念]·深度学习的目标检测技术演进解析
6. RCNN--Fast-RCNN--Faster-RCNN技术演进
分类已经学习过了四大网络(AlexNet,VGG,InceptionNer,ResNet),对于一个分类问题,数据量足够的话,根据分类复杂性搭建不同深度的卷积神经网络就基本可以解决这个问题了。具体的工业实现的话肯定会有这样或者那样的问题,就需要具体问题具体分析了。 分类的前提是我们能拿到一个目标的纯净图像(尽可能少的包含背景),我们拿来训练的图像一般也是这样的,这是一个计算机视觉中的一个基本任务。
和蔼的zhxing
2018/09/04
7550
6. RCNN--Fast-RCNN--Faster-RCNN技术演进
通俗易懂的目标检测 | RCNN, SPPNet, Fast, Faster
本文主要讲一下深度网络时代,目标检测系列的RCNN这个分支,这个分支就是常说的two-step,候选框 + 深度学习分类的模式:RCNN->SPP->Fast RCNN->Faster RCNN
机器学习炼丹术
2020/07/29
6920
目标检测领域笔记一:四种算法入门与优缺对比
RCNN-> SPP net -> Fast RCNN -> Faster RCNN
十四君
2019/11/27
6630
目标检测领域笔记一:四种算法入门与优缺对比
从RCNN到SSD,这应该是最全的一份目标检测算法盘点
选自 Medium 作者:Jonathan Hui 机器之心编译 目标检测是很多计算机视觉任务的基础,不论我们需要实现图像与文字的交互还是需要识别精细类别,它都提供了可靠的信息。本文对目标检测进行了整体回顾,第一部分从RCNN开始介绍基于候选区域的目标检测器,包括Fast R-CNN、Faster R-CNN 和 FPN等。第二部分则重点讨论了包括YOLO、SSD和RetinaNet等在内的单次检测器,它们都是目前最为优秀的方法。 机器之心之前已经讨论过非常多的目标检测算法,对计算机视觉感兴趣的读者也可以结
朱晓霞
2018/07/20
7080
读论文系列:Object Detection ICCV2015 Fast RCNN
Fast RCNN是对RCNN的性能优化版本,在VGG16上,Fast R-CNN训练速度是RCNN的9倍, 测试速度是RCNN213倍;训练速度是SPP-net的3倍,测试速度是SPP-net的3倍,并且达到了更高的准确率,本文为您解读Fast RCNN。 Overview Fast rcnn直接从单张图的feature map中提取RoI对应的feature map,用卷积神经网络做分类,做bounding box regressor,不需要额外磁盘空间,避免重复计算,速度更快,准确率也更高。 Rela
梦里茶
2018/03/30
7980
基于Pytorch构建Faster-RCNN网络进行目标检测(一)
尽管R-CNN是物体检测的鼻祖,但其实最成熟投入使用的是faster-RCNN,而且在pytorch的torchvision内置了faster-RCNN模型,当然还内置了mask-RCNN,ssd等。既然已经内置了模型,而且考虑到代码的复杂度,我们也无需再重复制造轮子,但对模型本身还是需要了解一下其原理和过程。
python与大数据分析
2023/09/06
1.2K0
基于Pytorch构建Faster-RCNN网络进行目标检测(一)
目标检测 RCNN, SPPNet, Fast RCNN, Faster RCNN 总结
RCNN CVPR 2014 Rich feature hierarchies for accurate object detection and semantic segmentation https://github.com/rbgirshick/rcnn
用户1148525
2019/05/26
1K0
MMDetection学习系列(1)——Faster RCNN深度探索与实战指南
目标检测是当前计算机视觉领域内研究的一个热点,与图像分类不一样的是,目标检测不仅要准确地识别出图像中目标的类别,还要准确的定位该目标的位置,并用边界框把目标框起来。
CoovallyAIHub
2025/01/15
3210
MMDetection学习系列(1)——Faster RCNN深度探索与实战指南
【深度学习】深度图像检测算法总结与对比
一. R-CNN:Rich feature hierarchies for accurate object detection and semantic segmentation
黄博的机器学习圈子
2023/01/10
1.2K0
【深度学习】深度图像检测算法总结与对比
5.3 SPPNet
2、对于卷积网络来讲都需要输入的图像尺寸固定(比如224×224)。这种人为的需要导致面对任意尺寸和比例的图像或子图像时降低识别的精度。当遇到任意尺寸的图像是,都是先将图像适应成固定尺寸,方法包括裁剪和变形。裁剪会导致信息的丢失,变形会导致位置信息的扭曲,就会影响识别的精度。
全栈程序员站长
2022/09/05
3780
fasterrcnn详解_faster RCNN
paper:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks Tensorflow-faster r-cnn github:Tensorflow Faster RCNN for Object Detection
全栈程序员站长
2022/11/10
1K0
fasterrcnn详解_faster RCNN
基于深度学习的目标检测算法综述
摘要: 从2014年开始,目标检测取得了巨大的突破。本文针对目前主流的目标检测方法进行简单的介绍,文章分为两个部分:第一部分介绍R Girshick提出的以R-CNN为代表的结合region proposal和CNN分类的目标检测框架(R-CNN, SPP-NET, Fast R-CNN, Faster R-CNN); 第二部分介绍以YOLO为代表的将目标检测转换为回归问题的目标检测框架(YOLO, SSD); 第三部分介绍一些最新的目标检测算法的进展。 一、从Rcnn到Faster-Rcnn 从Rcnn开
智能算法
2018/04/03
1.9K0
基于深度学习的目标检测算法综述
推荐阅读
相关推荐
一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档