Faster RCNN具体参数

本文围绕Faster R-CNN展开,它抛弃Selectave Search,引入RPN网络,使用区域提名加速检测。介绍了其思想,如Anchor思想、RoI Pooling层等;阐述损失函数和训练方法;通过PASCAL VOC和COCO数据集实验,表明该方法提升检测效率,效果优于以往方法。
该文章已生成可运行项目,

https://blog.youkuaiyun.com/whz1861/article/details/78768398

 

State-of-the-art object detection networks depend on region proposal algorithms to hypothesize object locations. Advances like SPPnet and Fast R-CNN have reduced the running time of these detection networks, exposing region proposal computation as a bottleneck. In this work, we introduce a Region Proposal Network(RPN) that shares full-image net

Faster R-CNN 抛弃了 Selectave Search, 引入了 RPN 网络,使用区域提名,使得分类,回归一起共用卷积特征,从而进一步加速了检测过程。其中Faster RCNN使用了Anchor的思想对在Feature map上进行预处理,产生2w左右的候选框,使得RPN的回归变成了回归到anchor的相对位置,使得网络更加稳定。

思想

首先,Fast RCNN检测网络的主要思想:

  • 使用一个简化的 SPP 层— RoI Pooling 层,操作与 SPP 相似 2. 训练和测试不再分多步 
    • a. 不用存储中间特征结果,可使得梯度通过 RoI Pooling 层直接传播
    • b. 分类与回归用 Multi-task 的方式一起训练
  • SVD :使用 SVD 分解全连接层的参数矩阵,压缩为两个规模小很多的全连接层

解决 R-CNN 和 SPP-Net 中 2000 左右候选框带来的重复计算问题。 
然后,overfeat虽然是一个端到端的训练过程,最终的网络进行了分类和回归网络多任务,但在预测的时候,仍然采用的是sliding window的思想。计算复杂度同样很大,因此作者提出了一种RPN网络,共享特征提取,使得网络的效率大大提升。

 


这里写图片描述

 

Region Proposal Networks

  • 基础网络采用ZF或者VGG,则feature层的深度为256-d和512-d
  • 然后将feature作为reg和cls的基础特征进行预测

 


这里写图片描述

 

数字解释
171ZF模型在feature层的感受野
228VGG模型在feature层的感受野
256-dZF模型feature层的深度
512-dVGG模型feature层的深度
3x3/1x1feature层后接nxn(n=3)卷积进行特征提取,后面接两个1x1卷积分别对应reg和cls层
kanchor的个数,论文k=9k=9,由3个scale和3个apect ratios组层
4k对应RPN回归reg层输出的深度:[(x1,y1,w1,h1x1,y1,w1,h1),(x2,y2,w2,h2x2,y2,w2,h2) … (xk,yk,wk,ykxk,yk,wk,yk)]
2k对应RPN分类cls层输出的深度:[(bg1,fg1bg1,fg1),(bg2,fg2bg2,fg2) … (bgk,fgkbgk,fgk)]
~2400对于feature层上,一般会产生大约2400个特征点W∗H=60∗40=2400W∗H=60∗40=2400(对于1000x600的图像来说)
~20000对于feature层上,一般会产生大约20000个anchor候选区域W∗H∗k=60∗40∗9=21600W∗H∗k=60∗40∗9=21600
~6000特征层产生的2w个anchor,去掉超过边界的区域,剩下大约6000个区域用于训练
~2000对于产生的6000个区域,采用NMS(0.7),将剩余2000个左右候选区域

Translation-Invariant Anchors

对于区域候选区域的产生,之前有过很多方法:

方法输出层数参数个数说明
MultiBox(4+1)*8006.1∗1066.1∗1061536*(4+1)*800 for GoogleNet
FasterRCNN(4+2)*92.8∗1042.8∗104512*(4+2)*9 for VGG
  • 注:对于anchor的提出,其具有一个非常重要的性质:平移不变形。 
    • 因为最终的回归框,是相对于anchor进行计算的,如果图像上的物体进行了平移,相对应的anchor提取的候选区域也可以进行相应的平移,从而可保障物体能够被检测出来。

Multi-Scale Anchors as Regression References

对于多尺度检测,以前也有很多方法:

  • 金字塔pyramids:比如DPM,Fast RCNN,SPPnet,Overfeat等 
    • 该方法对图像和特征层进行不同的尺度缩放,然后在每一个尺寸下,进行sliding window
  • 多尺度滤波器(multiple filter sizes)

本文提出了一种完全不同的多尺度检测方法:pyramids of anchors。该方法基于multi-scales和multi-aspect-ratios

损失函数Loss Function

  • RPN:

    • cls:二分类binary class label 
      • 正样本: 
        • i) highest Intersection-over-Union(IoU) overlap with a ground-truth box
        • ii) IoU overlap higher than 0.7 with any ground-truth box
        • 注:有可能一个ground-truth box被多个anchor赋予正样本
      • 负样本: 
        • i) IoU is lower than 0.3 for all ground-truth boxes.
      • 其他样本: 
        • 其他anchor不作为正负样本,不参与训练
    • reg:

      • 采用Fast RCNN的Smooth L1Smooth L1函数 

        SmoothL1(x)={0.5∗|x|2|x|−0.5  if|x|<1   otherwiseSmoothL1(x)={0.5∗|x|2  if|x|<1|x|−0.5   otherwise

      • 坐标转换: 

        这里写图片描述

        • 其中变量x,xa,x∗分别代表:

          变量含义
          xpredicted box
          xaanchor box
          x∗ground-truth box

          注:对于y,w,h同理

从而损失函数定义为:

 


这里写图片描述

 

其中:

变量含义
i对于每一个mini-batch中的anchor索引【正负样本】
pi对于每一个anchor ii被预测为物体的概率
p∗ground-truth:如果为正样本则为1,如果为负样本则为0
ti代表回归层中的4个坐标点x,y,w,hx,y,w,h
t∗代表回归层中的的ground-true box,但是其坐标是相对于positive anchor【做过坐标转换的】
Lcls分类的损失函数,log loss,分为两类(object vs. not object)
Lreg(ti,t∗)采用Fast RCNN中的Smooth L1Smooth L1函数,如上所述
p∗Lreg表示回归的loss只针对postive anchor
-(p∗=1p∗=1for positive anthor; p∗=0p∗=0 for otherwise)
Ncls分类权重系数,Ncls=256Ncls=256,所有正负样本的数量
Nreg回去权重系数,Nreg≈2400Nreg≈2400,对于所有的特征点【anchor的位置,特征图大小为60x40】
λ分类与回归损失函数的平衡系数,λ=10λ=10【实验证明该系数最好,能够把分类和回归损失平衡到一个数量级】
  • 注:

    • 就近原则

      This can be thought of as bounding-box regression from an anchor box to a nearby ground-truth box

    • 基于之前RoI 提取方法:Fast RCNN,SPPnet

      • bounding-box regression基于任意的RoI大小,从而具有多尺度性质
      • 在feature层上,采用3x3的卷积核进行特征提取,然后接两个1x1卷机进行cls和reg输出
    • 每一个feature map上的特征点输出,都有k【anchor数量】个bounding-box regressior需要学习,并且相互之间独立,不共享权重

RPN训练过程

  • anchor选取方式:在训练过程中,一种可能就是对所有anchor进行loss反向传播,但是由于负样本占据绝大多数,从而导致训练方向向negative sample发生偏移,从而,作者从所有的positive anchor和negative anchor中随机挑选了256个样本进行loss计算和反向传播。其中positive anchor和negative anchor比例为1:1。如果正本样个数少于128个,则用负样本补齐。
  • 学习参数: 
    • 初始化: 
      • 所有feature特征提取层,采用预训练模型参数初始化
      • 其他层采用zero-mean Gaussian distribution with standard deviation 0.01
    • 对于ZF来说,所有参数都进行学习,对于VGG来说,只训练conv3-1之后的参数
    • 学习率:分阶段学习对于PASCAL VOC 
      • 前60K:0.001
      • 后20K:0.0001
      • momentum:0.9
      • decay:0.0005

训练方法

论文提供了三种训练方法:

  • Alternating training: 交替训练RPN和Fast RCNN 
    • 首先训练RPN
    • 然后利用RPN参数初始化网络,在进行Fast RCNN训练
  • Approminate joint training: 端到端学习,同时学习RPN和Fast RCNN网络 
    • 虽然该方法忽略了proposal boxes坐标的可导性,但是通过逼近,也可以得到比较好的结果,最终的训练时间可以缩短25-50%。
  • Non-appromixate joint training: 
    • 考虑RPN作为Fast RCNN的输入,在反向传播过程中,需要考虑box coorinate的梯度,因此在该方法中,论文采用了一种可微的RoI Pooling层。参考论文[Instance-aware semantic segmentation via multi-task network cascades]中的“RoI warping”层。

4-Step Alternating Training:

  • 训练RPN网络:加载预训练模型,进行端到端训练
  • 训练Fast RCNN网络:同样加载完全预训练模型【参数不是RPN网络训练之后的参数】,采用RPN输出的proposal进行训练
  • 训练RPN网络:但是利用Fast RCNN的参数对RPN进行初始化,但是训练过程中,固定特征层的提取参数【the shared convolutional layers】只训练RPN区域提取过程中的参数。
  • 训练Fast RCNN网络:固定与RPN共享的卷积特征提取层,如上,只训练Fast RCNN最中的分类回归部分。
  • 上面的4步不断交替训练,多迭代几次,效果更好
参数描述
600将图像的短边缩放到600大小
16对于VGG来说,最终的特征层上的尺度放缩比例为原图的1/16大小
3 scales对于anchor有3种尺寸面积:1282,256,51221282,256,5122,对应feature层为6,16,32
3 aspect ratios对于anchor有3中比例关系:1:1,1:2,2:1
20000对于1000x600的图像,将在特征层产生20000个左右的anchor区域(≈60∗40∗9≈60∗40∗9)
6000去掉超出边界的anchor,2w个u区域剩余6000个左右【否则,这些区域将导致网络不收敛,但是在检测的时候,将超出边界的anchor区域进行裁剪,保留图像内的部分
2000为了避免anchor区域过剩,采用NMS(0.7)后,将6000anchor区域降低到2000左右【在检测的时候,采用不同数量的anchor候选框进行评估

Anchor与网络对应关系:

对于anchor的大小,从尺度和比例两个角度考虑:

  • 对于ZF模型 


    这里写图片描述

     

  • 对于VGG模型:

    scale\ratios1:11:22:1
    128*128[-55,-55,72,72]->127*127[-35,-79,52,96]->87*175[-83,-39,100,56]->183*95
    256*256[-119,-119,136,136]->255*255[-79,-167,96,184]->175*351[-175,-87,192,104]->367*191
    512*512[-247,-247,264,264]->511*511[-167,-343,184,360]->351*703[-359,-183,376,200]->735*383

实验

PASCAL VOC数据集

实验一:

<span style="color:#000000"><code>基础网络ZF的效果及RPN网络的作用分析
</code></span>
  • 1

 


这里写图片描述

 

说明:

  • Faster RCNN在Pascal Voc2007的测试集上,达到了59.9%的AP,超过了之前的方法 
    • 训练:采用RPN+ZF模型【共享基础网络】,RPN中采用2000个anchor区域进行训练
    • 测试:采用RPN+ZF模型【共享基础网络】,RPN生成300个候选框进行预测
  • 采用消除法进行网络分析:

    • 分析共享基础网络参数的作用 
      • 达到了58.7%
    • 分析测试中RPN生成的候选区域个数的作用 
      • 在RPN生成300个候选框的时候,效果最好,达到了56.8%
    • 分析RPN中回归网络的作用 
      • 因为没有cls分类概率,采用随机选取的方式
      • RPN生成的候选区域越多,效果越好,但在随机选择的300个候选框时候,mAP仍能达到51.5%
    • 分析RPN中的分类网络的作用 
      • 因为没有reg回归,产生proposal,采用anchor作为候选框
      • 在候选框个数300好于1000,说明候选框不适越多越好。300的时候,达到了52.1%
    • 分析VGG基础网络的作用 
      • 能够比较轻松的达到59.2%【mAP】

    实验二

    <span style="color:#000000"><code>基础模型VGG的效果分析
    </code></span>
    • 1

 


这里写图片描述
这里写图片描述

 

这里写图片描述
这里写图片描述

说明:

  • 通过分析VGG基础网络模型,发现其效果比ZF模型要高很多,说明VGG模型的特征表达能力要好很多
  • 如果训练集越大,网络训练的效果越好

 


这里写图片描述

 

说明:

  • Faster RCNN检测框架的速度要比Fast RCNN快很多

实验三

<span style="color:#000000"><code>分析不同的anchor对于检测的影响
</code></span>
  • 1

 


这里写图片描述

 

说明:

  • scale与aspect ratios相比,scale的作用更大

实验四

<span style="color:#000000"><code>分析RPN的Loss函数中的cls与reg损失的权衡参数lambda的作用
</code></span>
  • 1

 


这里写图片描述

 

说明:

  • 实验表明当λ=10λ=10的时候,网络效果最好。 
    • 因为λ=10λ=10,使得网络的损失函数中的cls部分与reg部分在归一化后是同一个两级的。

实验五

<span style="color:#000000"><code>分析Recall-to-IoU的作用
</code></span>
  • 1

 


这里写图片描述

 

The plots show that the RPN method behaves gracefully when the number of proposals drops from 2000 to 300.

说明:

  • 上图说明,当proposal个数从2000降到300的时候, 相对于SS,EB候选框提取方法,RPN网络表现的更加稳定

实验六

<span style="color:#000000"><code>One-Stage Detection vs. Two-Stage Proposal + Detection
</code></span>
  • 1

 


这里写图片描述

 

说明:

  • One-Stage:类似于Overfeat网络
  • Two-Stage:类似于Faster RCNN
  • dense,3 scales, 3 aspect ratios 2000: 
    • In this system, the ‘proposals’ are dense sliding windows of 3 scales(128,256,512) and 3 aspect ratios(1:1,1:2,2:1)
    • Fast RCNN训练预测class-specific scores和regress box locations,通过sliding window
  • 实验表明:本文提出的Two-Stage方法效果更好,将近6%的提升

COCO数据集

实验一

<span style="color:#000000"><code>对比分析Faster RCNN网络在COCO数据集上的效果
</code></span>
  • 1

 


这里写图片描述

 

说明:

  • Faster RCNN结构采用RPN区域提名后,效果要比SS区域提名方法要好很多
  • 训练数据的增加,对检测的效果有帮助

实验二

<span style="color:#000000"><code>Faster RCNN in ILSVRC & COCO 2015 competitions
</code></span>
  • 1

如果将框架中的基础网络部分替换成Resnet101,在COCO数据集上的效果能有进一步提升。

实验三

<span style="color:#000000"><code>from MS COCO to PASCAL VOC
</code></span>
  • 1

 


这里写图片描述

 

说明:

  • 直接利用COCO上的训练结果去检测VOC的数据,最终的mAP提高了很多,从69.9%提升到了73.2%【mAP】 
    • 因为COCO的数据集种类包含VOC的所有类别
  • 如果将COCO数据集和VOC数据集联合训练,最终的效果更好78.8%

结论

论文基于Fast RCNN,提出了一种区域生成方法RPN:

  • 消除了之前的SS,ES候选框提名的方法【之前的方法速度极慢】
  • 有效的提高了检测效率,能够达到5fps。【其中RPN需要10ms的时候】
本文章已经生成可运行项目
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值