FasterR-CNN论文详解

更新时间:2023-05-05 19:57:00 阅读: 评论:0

FasterR-CNN论⽂详解
⽬录
&创新点
设计Region Proposal Networks【RPN】,利⽤CNN卷积操作后的特征图⽣成region proposals,代替了Selective Search、EdgeBoxes等⽅法,速度上提升明显;
训练Region Proposal Networks与检测⽹络【Fast R-CNN】共享卷积层,⼤幅提⾼⽹络的检测速度。
&问题是什么
继Fast R-CNN后,在CPU上实现的区域建议算法Selective Search【2s/image】、EdgeBoxes【0.2s/image】等成了物体检测速度提升上的最⼤瓶颈。
&如何解决问题
测试过程
Faster R-CNN统⼀的⽹络结构如下图所⽰,可以简单看作RPN⽹络+Fast R-CNN⽹络。
注意:上图Fast R-CNN中含特有卷积层,博主认为不是所有卷积层都参与共享。
1. ⾸先向CNN⽹络【ZF或VGG-16】输⼊任意⼤⼩图⽚;
2. 经过CNN⽹络前向传播⾄最后共享的卷积层,⼀⽅⾯得到供RPN⽹络输⼊的特征图,另⼀⽅⾯继续前向传播⾄特有卷积层,产⽣更⾼
维特征图;
3. 供RPN⽹络输⼊的特征图经过RPN⽹络得到区域建议和区域得分,并对区域得分采⽤⾮极⼤值抑制【阈值为0.7】,输出其Top-N【⽂
中为300】得分的区域建议给RoI池化层;
4. 第2步得到的⾼维特征图和第3步输出的区域建议同时输⼊RoI池化层,提取对应区域建议的特征;
5. 第4步得到的区域建议特征通过全连接层后,输出该区域的分类得分以及回归后的bounding-box。
解释分析
RPN⽹络结构是什么?实现什么功能?具体如何实现?
单个RPN⽹络结构如下图:
注意:上图中卷积层/全连接层表⽰卷积层或者全连接层,作者在论⽂中表⽰这两层实际上是全连接层,但是⽹络在所有滑窗位置共享全连接层,可以很⾃然地⽤n×n卷积核【论⽂中设计为3×3】跟随两个并⾏的1×1卷积核实现,⽂中这么解释的,博主并不是很懂,尴尬。
功能:实现attention机制,如图所⽰,RPN在CNN卷积层后增加滑动窗⼝操作以及两个卷积层完成区域建议功能,第⼀个卷积层将特征图每个滑窗位置编码成⼀个特征向量,第⼆个卷积层对应每个滑窗位置输出k个区域得分和k个回归后的区域建议,并对得分区域进⾏⾮极⼤值抑制后输出得分Top-N【⽂中为300】区域,告诉检测⽹络应该注意哪些区域,本质上实现了Selective Search、EdgeBoxes等⽅法的功能。
具体实现:
①⾸先套⽤ImageNet上常⽤的图像分类⽹络,本⽂中试验了两种⽹络:ZF或VGG-16,利⽤这两种⽹络的部分卷积层产⽣原始图像的特征图;
②对于①中特征图,⽤n×n【论⽂中设计为3×3,n=3看起来很⼩,但是要考虑到这是⾮常⾼层的feature map,其size本⾝也没有多⼤,因此9个矩形中,每个矩形窗框都是可以感知到很⼤范围的】
的滑动窗⼝在特征图上滑动扫描【代替了从原始图滑窗获取特征】,每个滑窗位置通过卷积层1映射到⼀个低维的特征向量【ZF⽹络:256维;VGG-16⽹络:512维,低维是相对于特征图⼤⼩
W×H,typically~60×40=2400】后采⽤ReLU,并为每个滑窗位置考虑k种【论⽂中k=9】可能的参考窗⼝【论⽂中称为anchors,见下解释】,这就意味着每个滑窗位置会同时预测最多9个区域建议【超出边界的不考虑】,对于⼀个W×H的特征图,就会产⽣W×H×k个区域建议;
③步骤②中的低维特征向量输⼊两个并⾏连接的卷积层2:reg窗⼝回归层【位置精修】和cls窗⼝分类层,分别⽤于回归区域建议产⽣bounding-box【超出图像边界的裁剪到图像边缘位置】和对区域建议是否为前景或背景打分,这⾥由于每个滑窗位置产⽣k个区域建议,所以reg层有4k个输出来编码【平移缩放参数】k个区域建议的坐标,cls层有2k个得分估计k个区域建议为前景或者背景的概率.
Anchors是什么?有什么⽤?
Anchors是⼀组⼤⼩固定的参考窗⼝:三种尺度{128^2,256^2,512^2}×三种长宽⽐{1:1,1:2,2:1},如下图所⽰,表⽰RPN⽹络中对特征图滑窗时每个滑窗位置所对应的原图区域中9种可能的⼤⼩,相当于模板,对任意图像任意滑窗位置都是这9中模板。继⽽根据图像⼤⼩计算滑窗中⼼点对应原图区域的中⼼点,通过中⼼点和size就可以得到滑窗位置和原图位置的映射关系,由此原图位置并根据与Ground Truth重复率贴上正负标签,让RPN学习该Anchors是否有物体即可。
作者在⽂中表⽰采⽤Anchors这种⽅法具有平移不变性,就是说在图像中平移了物体,窗⼝建议也会跟着平移。同时这种⽅式也减少了整个模型的size,输出层512×(4+2)×9=2.8×10^4个参数【512是前⼀层特征维度,(4+2)×9是9个Anchors的前景背景得分和平移缩放参数】,⽽MultiBox有1536×(4+1)×800=6.1×10^6个参数,⽽较⼩的参数可以在⼩数据集上减少过拟合风险。
当然,在RPN⽹络中我们只需要找到⼤致的地⽅,⽆论是位置还是尺⼨,后⾯的⼯作都可以完成,这样的话采⽤⼩⽹络进⾏简单的学习【估计和猜差不多,反正有50%概率】,还不如⽤深度⽹络【还可以实现卷积共享】,固定尺度变化,固定长宽⽐变化,固定采样⽅式来⼤致判断是否是物体以及所对应的位置并降低任务复杂度。
Anchors为什么考虑以上三种尺度和长宽⽐?
⽂中对Anchors的尺度以及长宽⽐选取进⾏了实验,如下图所⽰:
实验实在VGG-16模型下,采⽤PASCAL VOC 2007训练集和PASCAL VOC 2007测试集得到。相⽐于只采⽤单⼀尺度和长宽⽐,单尺度多长宽⽐和多尺度单长宽⽐都能提升mAP,表明多size的anchors可以提⾼mAP,作者在这⾥选取了最⾼mAP的3种尺度和3种长宽⽐。
如何处理多尺度多长宽⽐问题?即如何使24×24和1080×720的车辆同时在⼀个训练好的⽹络中都能正确识别?
⽂中展⽰了两种解决多尺度多长宽⽐问题:⼀种是使⽤图像⾦字塔,对伸缩到不同size的输⼊图像进⾏特征提取,虽然有效但是费时;
另⼀种是使⽤滤波器⾦字塔或者滑动窗⼝⾦字塔,对输⼊图像采⽤不同size的滤波器分别进⾏卷积操作,这两种⽅式都需要枚举图像或者滤波器size;
作者提出了⼀种叫Anchors⾦字塔的⽅法来解决多尺度多长宽⽐的问题,在RPN⽹络中对特征图滑窗时,对滑窗位置中⼼进⾏多尺度多长宽⽐的采样,并对多尺度多长宽⽐的anchor boxes区域进⾏回归和分类,利⽤Anchors⾦字塔就仅仅依赖于单⼀尺度的图像和特征图和单⼀⼤⼩的卷积核,就可以解决多尺度多长宽⽐问题,这种对推荐区域采样的模型不管是速度还是准确率都能取得很好的性能。
同传统滑窗⽅法提取区域建议⽅法相⽐,RPN⽹络有什么优势?
传统⽅法是训练⼀个能检测物体的⽹络,然后对整张图⽚进⾏滑窗判断,由于⽆法判断区域建议的尺度和长宽⽐,所以需要多次缩放,这样找出⼀张图⽚有物体的区域就会很慢;
虽然RPN⽹络也是⽤滑动窗⼝策略,但是滑动窗⼝实在卷积层特征图上进⾏的,维度较原始图像降低了很多倍【中间进⾏了多次max pooling 操作】,RPN采取了9种不同尺度不同长宽⽐的anchors,同时最后进⾏了bounding-box回归,即使是这9种anchors外的区域也能得到⼀个跟⽬标⽐较接近的区域建议。
训练过程
RPN⽹络预训练
样本来源        ILSVRC 20XX
样本中只有类别标签;
⽂中⼀带⽽过RPN⽹络被ImageNet⽹络【ZF或VGG-16】进⾏了有监督预训练,利⽤其训练好的⽹络参数初始化;
⽤标准差0.01均值为0的⾼斯分布对新增的层随机初始化。
Fast R-CNN⽹络预训练
样本来源        ILSVRC 20XX
样本中只有类别标签;
⽂中⼀带⽽过Fast R-CNN⽹络被ImageNet⽹络【ZF或VGG-16】进⾏了有监督预训练,利⽤其训练好的⽹络参数初始化。
RPN⽹络微调训练
样本来源:PASCAL VOC
正样本与Ground Truth相交IoU最⼤的anchors【以防后⼀种⽅式下没有正样本】+与Ground Truth相交IoU>0.7的anchors
负样本与Ground Truth相交IoU<0.3的anchors
PASCAL VOC 数据集中既有物体类别标签,也有物体位置标签;
正样本仅表⽰前景,负样本仅表⽰背景;
回归操作仅针对正样本进⾏;
训练时弃⽤所有超出图像边界的anchors,否则在训练过程中会产⽣较⼤难以处理的修正误差项,导致训练过程⽆法收敛;
对去掉超出边界后的anchors集采⽤⾮极⼤值抑制,最终⼀张图有2000个anchors⽤于训练【详细见下】;
对于ZF⽹络微调所有层,对VGG-16⽹络仅微调conv3_1及conv3_1以上的层,以便节省内存。
SGD mini-batch采样⽅式:同Fast R-CNN⽹络,采取”image-centric”⽅式采样,即采⽤层次采样,先对图像取样,再对anchors取样,同⼀图像的anchors共享计算和内存。每个mini-batch包含从⼀张图中随机提取的256个anchors,正负样本⽐例为1:1【当然可以对⼀张图所有anchors进⾏优化,但由于负样本过多最终模型会对正样本预测准确率很低】来计算⼀个mini-batch的损失函数,如果⼀张图中不够128个正样本,拿负样本补凑齐。
训练超参数选择:在PASCAL VOC数据集上前60k次迭代学习率为0.001,后20k次迭代学习率为0.0001;动量设置为0.9,权重衰减设置为0.0005。
Fast R-CNN⽹络微调训练
样本来源:PASCAL VOC
正样本Ground Truth +与Ground Truth相交IoU>阈值的区域建议
负样本与Ground Truth相交IoU<;阈值的区域建议
PASCAL VOC 数据集中既有物体类别标签,也有物体位置标签;
正样本表⽰每类物品的Ground Truth以及与Ground Truth重叠度超过某⼀阈值的区域建议,负样本表⽰同Ground Truth重叠度⼩于某⼀阈值的区域建议;
回归操作仅针对正样本进⾏。
RPN⽹络、Fast R-CNN⽹络联合训练
训练⽹络结构⽰意图如下所⽰:
如上图所⽰,RPN⽹络、Fast R-CNN⽹络联合训练是为了让两个⽹络共享卷积层,降低计算量。
⽂中通过4步训练算法,交替优化学习⾄共享特征:
①进⾏上⾯RPN⽹络预训练,和以区域建议为⽬的的RPN⽹络end-to-end微调训练;
②进⾏上⾯Fast R-CNN⽹络预训练,⽤第①步中得到的区域建议进⾏以检测为⽬的的Fast R-CNN⽹络end-to-end微调训练【此时⽆共享卷积层】;
③使⽤第②步中微调后的Fast R-CNN⽹络重新初始化RPN⽹络,固定共享卷积层【即设置学习率为0,
不更新】,仅微调RPN⽹络独有的层【此时共享卷积层】;
④固定第③步中共享卷积层,利⽤第③步中得到的区域建议,仅微调Fast R-CNN独有的层,⾄此形成统⼀⽹络如上图所⽰。
解释分析
1. RPN⽹络中bounding-box回归怎么理解?同Fast R-CNN中的bounding-box回归相⽐有什么区别?
对于bounding-box回归,采⽤以下公式:
tx=(x−xa)/waty=(y−ya)/ha
tw=log(w/wa)th=log(h/ha)
t∗x=(x∗−xa)/wat∗y=(y∗−ya)/ha
t∗w=log(w∗/wa)t∗h=log(h∗/ha)
其中,x,y,w,h表⽰窗⼝中⼼坐标和窗⼝的宽度和⾼度,变量x,xa和x∗分别表⽰预测窗⼝、anchor窗⼝和Ground Truth的坐标【y,w,h同理】,因此这可以被认为是⼀个从anchor窗⼝到附近
Ground Truth的bounding-box 回归;
RPN⽹络中bounding-box回归的实质其实就是计算出预测窗⼝。这⾥以anchor窗⼝为基准,计算Ground Truth对其的平移缩放变化参数,以及预测窗⼝【可能第⼀次迭代就是anchor】对其的平移缩放参数,因为是以anchor窗⼝为基准,所以只要使这两组参
数越接近,以此构建⽬标函数求最⼩值,那预测窗⼝就越接近Ground Truth,达到回归的⽬的;
⽂中提到, Fast R-CNN中基于RoI的bounding-box回归所输⼊的特征是在特征图上对任意size的RoIs进⾏Pool操作提取的,所有size RoI共享回归参数,⽽在Faster R-CNN中,⽤来bounding-box回归所输⼊的特征是在特征图上相同的空间size【3×3】上提取的,为了解决不同尺度变化的问题,同时训练和学习了k个不同的回归器,依次对应为上述9种anchors,这k个回归量并不分享权重。因此尽管特征提取上空间是固定的【3×3】,但由于anchors的设计,仍能够预测不同size的窗⼝。
2. ⽂中提到了三种共享特征⽹络的训练⽅式?
①交替训练
训练RPN,得到的区域建议来训练Fast R-CNN⽹络进⾏微调;此时⽹络⽤来初始化RPN⽹络,迭代此过程【⽂中所有实验采⽤】;
②近似联合训练
如上图所⽰,合并两个⽹络进⾏训练,前向计算产⽣的区域建议被固定以训练Fast R-CNN;反向计算到共享卷积层时RPN⽹络损失和Fast R-CNN⽹络损失叠加进⾏优化,但此时把区域建议【Fast R-CNN输⼊,需要计算梯度并更新】当成固定值看待,忽视了Fast R-CNN⼀个输⼊:区域建议的导数,则⽆法更新训练,所以称之为近似联合训练。实验发现,这种⽅法得到和交替训练相近的结果,还能减少20%~25%的训练时间,公开的python代码中使⽤这种⽅法;
3. 图像Scale细节问题?
⽂中提到训练和检测RPN、Fast R-CNN都使⽤单⼀尺度,统⼀缩放图像短边⾄600像素;
在缩放的图像上,对于ZF⽹络和VGG-16⽹络的最后卷积层总共的步长是16像素,因此在缩放前典型的PASCAL图像上⼤约是10像素【~500×375;600/16=375/10】。
⽹上关于Faster R-CNN中三种尺度这么解释:
原始尺度:原始输⼊的⼤⼩,不受任何限制,不影响性能;
归⼀化尺度:输⼊特征提取⽹络的⼤⼩,在测试时设置,源码中st_scale=600。anchor在这个尺度上设定,这个参数和anchor的相对⼤⼩决定了想要检测的⽬标范围;
⽹络输⼊尺度:输⼊特征检测⽹络的⼤⼩,在训练时设置,源码中为224×224。
以上6⾏博主并不懂,还需要仔细研究源码。
4. 理清⽂中anchors的数⽬。
⽂中提到对于1000×600的⼀张图像,⼤约有20000(~60×40×9)个anchors,忽略超出边界的anchors剩下6000个anchors,利⽤⾮极⼤值抑制去掉重叠区域,剩2000个区域建议⽤于训练;
测试时在2000个区域建议中选择Top-N【⽂中为300】个区域建议⽤于Fast R-CNN检测。

本文发布于:2023-05-05 19:57:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/90/97059.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:web选择题
标签:区域   建议   训练
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图