R-CNN Fast R-CNN Faster R-CNN总结_fast rcnn 绿豆-程序员宅基地

技术标签: cnn  机器学习  深度学习  

Faster RCNN理论合集
他的视频总结的非常好!在CSDN也有博客。用户名:太阳花的小绿豆
这篇博客基本是在他的视频里面进行总结的。具体论文还没有看。


R-CNN

在这里插入图片描述

算法流程

RCNN算法流程可分为4个步骤

  • 一张图像生成1K~2K个候选区域(使用Selective Search方法)
    利用Selective Search算法得到一些原始区域,然后使用一些合并策略将这些区域合并,得到一个层次化的区域结构,而这些结构就包含着可能需要的物体。
  • 对每个候选区域,使用深度网络提取特征
    将2000候选区域缩放到227x227pixel,接着将候选区域输入事先训练好的CNN网络获取特征。
  • 特征送入每一类的SVM 分类器,判别是否属于该类
    将特征送入SVM得到获得每个候选区域的不同类别的得分(概率),分别对每一类进行非极大值抑制剔除重叠建议框,得到该类中得分最高的一些建议框。
    参考:NMS——非极大值抑制
  • 使用回归器精细修正候选框位置
    对NMS处理后剩余的建议框进一步筛选。分别用回归器对类别中剩余的建议框进行回归操作,最终得到x,y的偏移量以及w,h的缩放因子。最终得到每个类别修正后得分最高的bounding box。

存在的问题

R-CNN存在的问题:

  1. 测试速度慢:
    测试一张图片约53s(CPU)。用Selective Search算法提取候选框用时约2秒,一张图像内候选框之间存在大
    量重叠,提取特征操作冗余。
  2. 训练速度慢:
    过程及其繁琐
  3. 训练所需空间大:
    对于SVM和bbox回归训练,需要从每个图像中的每个目标候选框提取特征,并写入磁盘。对于非常深的网络,如VGG16,从VOC07训练集上的5k图像上提取的特征需要数百GB的存储空间。

FAST R-CNN

在这里插入图片描述

算法流程

Fast R-CNN算法流程可分为3个步骤

  • 一张图像生成1K~2K个候选区域(使用Selective Search方法)
    和RCNN第一步一致
  • 将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵
    区别于RCNN:
    1. 没有将第一步生成的候选区域全部输入CNN提取特征,而是直接将整幅图像输入CNN提取特征,再将候选区域投影到特征矩阵。这样就不用重复计算候选区域的特征矩阵了。
    2. 候选区域也并非全部投影到特征矩阵,而是按照一定规则先进行筛选。
  • 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果(分类结果以及边界框回归)
    ROI池化使得FAST RCNN不限制图像输入的尺寸,而RCNN当中限定了输入图像必须是227x227。
    ROI池化的步骤:
    1. 输入特征图划分成NxN的区域。
    2. 每个区域求max pooling。

边界框回归器

边界框回归器输出候选边界框的回归参数 ( d x , d y , d w , d h ) (d_x, d_y, d_w, d_h) (dx,dy,dw,dh)
在这里插入图片描述

P x , P y , P w , P h P_x,P_y,P_w,P_h Px,Py,Pw,Ph分别为候选框的中心x,y坐标,以及宽高
G ^ x , G ^ y , G ^ w , G ^ h \hat{G}_x,\hat{G}_y,\hat{G}_w,\hat{G}_h G^x,G^y,G^w,G^h分别为最终预测的边界框中心x,y坐标,以及宽高
G x , G y , G w , G h G_x,G_y,G_w,G_h Gx,Gy,Gw,Gh分别为ground truth的中心x,y坐标,以及宽高
G ^ x = P w d x + P x G ^ y = P h d x + P y G ^ w = P w exp ⁡ ( d w ) G ^ h = P h exp ⁡ ( d h ) \hat{G}_x=P_wd_x+P_x\\ \hat{G}_y=P_hd_x+P_y\\ \hat{G}_w=P_w\exp(d_w)\\ \hat{G}_h=P_h\exp(d_h)\\ G^x=Pwdx+PxG^y=Phdx+PyG^w=Pwexp(dw)G^h=Phexp(dh)

Multi-task loss

L ( p , u , t u , v ) = 分 类 损 失 + 边 界 框 回 归 损 失 = L c l s ( p , u ) + λ [ u ⩾ 1 ] L l o c ( t u , v ) L(p,u,t^u,v)=分类损失+边界框回归损失=L_{cls}(p,u)+\lambda[u\geqslant1]L_{loc}(t^u,v) L(p,u,tu,v)=+=Lcls(p,u)+λ[u1]Lloc(tu,v)
p p p是分类器预测的softmax概率分布 p = ( p 0 . . . p k ) p=(p_0...p_k) p=(p0...pk)
u u u对应真实类别标签(采用one-hot编码)
t u t^u tu对应边界框回归器预测的回归参数 ( t x u , t y u , t w u , t h u ) (t^u_x, t^u_y, t^u_w, t^u_h) (txu,tyu,twu,thu)
v v v对应真实目标的边界框回归参数 ( v x , v y , v w , v h ) (v_x, v_y, v_w, v_h) (vx,vy,vw,vh),可以通过下面的公式逆推
G x = P w v x + P x G y = P h v x + P y G w = P w exp ⁡ ( v w ) G h = P h exp ⁡ ( v h ) G_x=P_wv_x+P_x\\ G_y=P_hv_x+P_y\\ G_w=P_w\exp(v_w)\\ G_h=P_h\exp(v_h)\\ Gx=Pwvx+PxGy=Phvx+PyGw=Pwexp(vw)Gh=Phexp(vh)

分类损失

修正分类。
L c l s ( p , u ) = − log ⁡ ( p u ) L_{cls}(p,u)=-\log(p_u) Lcls(p,u)=log(pu)
p p p是分类器预测的softmax概率分布 p = ( p 0 . . . p k ) p=(p_0...p_k) p=(p0...pk)
u u u对应真实类别标签(采用one-hot编码)
由于采用的是one-hot编码,非对应类别的标签都为0,化简即可得上述公式

边界框回归损失

修正边界框。
L l o c ( t u , v ) = ∑ i ∈ { x , y , w , h } s m o o t h L 1 ( t i u − v i ) L_{loc}(t^u,v)=\sum_{i\in\{x,y,w,h\}}smooth_{L_1}(t^u_i-v_i) Lloc(tu,v)=i{ x,y,w,h}smoothL1(tiuvi)
s m o o t h L 1 ( x ) = { 0.5 x 2 , i f ∣ x ∣ < 1 ∣ x ∣ − 0.5 , o t h e r w i s e smooth_{L_1}(x)=\left\{ \begin{array}{lr} 0.5x^2,& if |x| <1\\ |x|-0.5,& otherwise\\ \end{array}{} \right. smoothL1(x)={ 0.5x2,x0.5,ifx<1otherwise

FASTER R-CNN

算法流程

在这里插入图片描述

Faster R-CNN算法流程可分为3个步骤

  • 将图像输入网络得到相应的特征图
  • 使用RPN结构生成候选框,将RPN生成的候选框投影到特征图上获得相应的特征矩阵
  • 将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果

RPN (region proposal networ)

RPN生成的候选框会等比例放缩回输入图像,RPN结构如图所示
在这里插入图片描述

有几点需要知道:

  1. 在原文中使用的是ZF model,其Conv Layers中最后的conv5层输出的num_output=256,对应生成256张特征图,所以相当于feature map每个点都是256-dimensions。
  2. 对conv feature map做3x3卷积,且num_output=256。
  3. 假设在conv feature map中每个点上有k个anchor(论文k=9),而每个anhcor分为positive(前景)和negative(背景),所以每个点由256d feature通过两个1x1卷积分别转化为cls=2k个scores;而每个anchor都有(x, y, w, h)对应4个修正量,所以reg=4k个coordinates。
  4. 并不会选取所有anchor用于训练。训练程序会在合适的anchors中随机选取128个postive anchors+128个negative anchors进行训练。
anchor

三种尺度(面积) { 12 8 2 , 25 6 2 , 51 2 2 } \{128^2,256^2,512^2\} { 1282,2562,5122},由经验所得
三种比例 { 1 : 1 , 1 : 2 , 2 : 1 } \{ 1:1, 1:2, 2:1 \} { 1:1,1:2,2:1}
每个位置在原图上都对应有 3 × 3 = 9 3\times3=9 3×3=9个anchor
对于一张1000x600x3的图像,大约有60x40x9(20k)个anchor,忽略跨越边界的anchor以后,剩下约6k个anchor。对于RPN生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩2k个候选框。

RPN Multi-task loss

L ( { p i } , { t i } ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ 1 N r e g ∑ i p i ∗ L r e g ( t i , t i ∗ ) L(\{p_i\},\{t_i\})=\frac{1}{N_{cls}}\sum_iL_{cls}(p_i,p_i^*)+\lambda\frac{1}{N_{reg}}\sum_ip_i^*L_{reg}(t_i,t_i^*) L({ pi},{ ti})=Ncls1iLcls(pi,pi)+λNreg1ipiLreg(ti,ti)
p i p_i pi表示第i个anchor预测为真实标签的概率
p i ∗ p_i^* pi当为正样本时为1,当为负样本时为0
t i t_i ti表示第i个anchor的边界框回归参数
t i ∗ t_i^* ti表示第i个anchor对应的ground truth bbox的边界框回归参数
N c l s N_{cls} Ncls表示一个mini-batch中所有样本数量,论文为256
N r e g N_{reg} Nreg表示中心点的个数,约2400
λ \lambda λ为超参数,论文为10
感觉和FAST R-CNN的loss差不多,都是分类损失+边界框回归损失。

Faster R-CNN Multi-task loss

这部分和fast r-cnn一致
L ( p , u , t u , v ) = 分 类 损 失 + 边 界 框 回 归 损 失 = L c l s ( p , u ) + λ [ u ⩾ 1 ] L l o c ( t u , v ) L(p,u,t^u,v)=分类损失+边界框回归损失=L_{cls}(p,u)+\lambda[u\geqslant1]L_{loc}(t^u,v) L(p,u,tu,v)=+=Lcls(p,u)+λ[u1]Lloc(tu,v)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/laonafahaodange/article/details/122674341

智能推荐

PyTorch tutorial - BiLSTM CRF 代码解析_bilstm-crf代码解读-程序员宅基地

文章浏览阅读1k次,点赞3次,收藏17次。本文主要对PyTorch的tutorial之一,Advanced: Making Dynamic Decisions and the Bi-LSTM CRF,进行详细解读,行文顺序上,首先说明一下前面几个辅助函数的作用,然后主体按照Run training的运行顺序进行。(以下删除了原代码注释,可回tutorial中查看)def argmax(vec): _, idx = torch.m..._bilstm-crf代码解读

这篇文章应该在《新闻联播》连续报道一个月--武汉大学毕业生的反思_武汉大学程枫-程序员宅基地

文章浏览阅读1.8k次,点赞8次,收藏6次。五年多以前,我进入了全国重点名牌大学:武汉大学读书。我抱着最理想的热情,以为从此走上了一条报效祖国,报效父母的人生坦途,以为我的人生即将要大展宏图!   三年以前,抱着对“我的大学”最大的疑惑和不解,我辞去了分团委副书记的职务,开始认真地大量阅读和思考我的人生,我的大学,我的未来。试图找到对周围一切我无法理解问题的解决方案。这一次的决定,也意味着我放弃了原来一直抱有的,通过“从政”来为_武汉大学程枫

.NET c#运算符(算术运算符、关系运算符、逻辑运算符、赋值运算符)_.net 算术运算取值-程序员宅基地

文章浏览阅读562次。一运算符运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。 C# 有丰富的内置运算符,分类如下:1. 算术运算符下表显示了 C# 支持的所有算术运算符。假设变量 A 的值为 10,变量 B 的值为 20,则:运算符描述实例+把两个操作数相加A + B 将得到 30-从第一个操作数中减去第二个操作数A - B 将得到 -10*把两个操作数相乘..._.net 算术运算取值

华为2020秋招结构工程师笔试-避免雷区_华为结构工程师笔试题目及答案-程序员宅基地

文章浏览阅读2.5w次,点赞38次,收藏129次。那些所谓的华为硬件笔试对华为结构工程师都不靠谱都是假的!!假的!!作为正在准备秋招并且投了心心念念的华为的答主(材控大三本科),就在刚刚做了华为的结构工程师笔试虽然感觉已经凉了,仅此为其他投华为结构工程师的提个醒。首先我做的都是选择题,其中单选40道占80分,不定向选择5道占20分。真题,据我的记忆,涉及材料力学、理论力学、机械设计、工程制图,还有一些关于材料和量子力学的,其次没有微机原..._华为结构工程师笔试题目及答案

python通过读取excel邮件目录群发邮件练习_python 读取excel 邮件群发、多附件-程序员宅基地

文章浏览阅读414次。简单拼凑的,选择发送文件所在文件夹,选择发送文件名与邮箱对应目录,校验所含文件是否存在,批量给对应邮箱发送邮件。import sysfrom PyQt5 import QtWidgets, QtCore, QtGuifrom PyQt5.QtWidgets import *import osimport reimport timeimport pygameimport xlrdimport smtplib #发送邮件模块_python 读取excel 邮件群发、多附件

Spring Boot自定义错误页面,Whitelabel Error Page处理方式_spring mvc 修改whitelabel error page-程序员宅基地

文章浏览阅读2.6k次。我已经是Spring Framework框架的忠实粉丝。对于企业软件开发者来说它提供了对常见问题的通用解决方案,包括那些你在未来开发中没有意识到的问题。但是,它构建的J2EE项目变得比较臃肿,需要被一种新的解决方案替代。我最大的抱怨就是最开始使用spring Framework构建项目十分缓慢和复杂,比如构建一个包含JPA的MVC应用。为改变这种情况,Spring Boot应运而生了。Spring_spring mvc 修改whitelabel error page

随便推点

【IMWeb训练营作业】TodoList 初版_如作业视频所示,本次训练目标是 todolist 的删除和添加功能 任务过程: 静态页面准-程序员宅基地

文章浏览阅读382次。vue的基础学习_如作业视频所示,本次训练目标是 todolist 的删除和添加功能 任务过程: 静态页面准

基于MATLAB的语音滤波实验_matlab 语音滤波实验-程序员宅基地

文章浏览阅读811次,点赞19次,收藏17次。2.本实验中的jiazao.m为语音加噪实验,xiaozao.m为语音消噪实验,musicadd.m为语音全成实验,musicfilter.m为语音滤波实验,dlaymusic.m为语音混响实验.(注意:在运行lei2.m之前必须将work中名为lei3的.wav音频文件删除,或在.m文件中wavwrite()中的保存文件名改为其它的名字。1.本实验提供的beiguo.wav,lei1.wav,music.wav,shao.wav,wang.wav均为原始语音信号._matlab 语音滤波实验

WPF,Silverlight与XAML读书笔记第二十六 - 控件之八 – Range控件-程序员宅基地

文章浏览阅读69次。说明:本系列基本上是《WPF揭秘》的读书笔记。在结构安排与文章内容上参照《WPF揭秘》的编排,对内容进行了总结并加入一些个人理解。不同于内容控件与Items控件显示范围随着内部内容而变化,Range控件的显示范围是固定的。Range控件继承自RangeBase类,这个类提供了Range控件的核心功能 – 存储并显示数值。这个类的成员有如下:属性:Value..._wpf range特性

swift之GCD(二)_swift dispatch_barrier_sync-程序员宅基地

文章浏览阅读554次。我们接着看GCD,下面我们来看GCD中的一些方法dispatch_suspend(queue)暂停某个队列上的操作,如果某个跟这个队列相关的block已经开始执行,则会在这个block执行完毕之后再进行暂停dispatch_resume(queue)恢复某个队列上的操作dispatch_set_target_queue(NSObject,queue)指定一个dispatch_swift dispatch_barrier_sync

el-upload实现自定义上传http-request_el-upload http-request-程序员宅基地

文章浏览阅读1.5w次,点赞5次,收藏21次。elementUI的el-upload组件使用http-request自定义上传_el-upload http-request

armax函数 matlab 源码_可替代MATLAB的开源软件-程序员宅基地

文章浏览阅读284次。MATLAB是美国MathWorks公司出品的商业数学软件,MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程..._支持arm的matlab替代软件