Faster-RCNN 论文阅读

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks 论文阅读

author


0. 简介

基于region proposal 的目标检测算法可以分为一下四部分:候选区域生成,特征提取,分类,位置精修。R-CNN 中每一步单独处理,存在大量的重复计算,计算效率低,fast R-CNN对此进行了改进,将特征提取,分类,位置精修整合到一个网络,检测过程的速度得到巨大提升,暴露出来候选区域生成成为了计算瓶颈。现有的候选框生成方法(selective search,edgebox)都是在CPU中计算,不能利用GPU固有优势,即使在GPU实现这样的算法,也不能share computation。作者提出了Region Proposal Network(RPN)来生成候选框,底层卷积层共享计算,效率更高,速度更快。
Faster-RCNN 论文阅读_第1张图片

1.Region Proposal Networks

Faster-RCNN 论文阅读_第2张图片
Faster-RCNN 论文阅读_第3张图片
对于最后一个conv feature map,首先过一个n=3的卷积,之后连接两个子1*1的卷积,分别对该位置进行分类与坐标预测。分类层(cls-score)输出每一个位置上,9(3种面积,3种长宽比)个anchor属于前景和背景的概率;窗口回归层(bbox_pred)输出每一个位置上,9个anchor对应窗口应该平移缩放的参数。 对于每一个位置来说,分类层从256维特征中输出属于前景和背景的概率;窗口回归层从256维特征中输出4个平移缩放参数。就局部来说,这两层是全连接网络;就全局来说,由于网络在所有位置(共51*39个)的参数相同,所以实际用尺寸为1×1的卷积网络实现。

 # define the convrelu layers processing input feature map
 self.RPN_Conv = nn.Conv2d(self.din, 256, 3, 1, 1, bias=True)

 # define bg/fg classifcation score layer
 self.nc_score_out = len(self.anchor_scales) * len(self.anchor_ratios) * 2 # 2(bg/fg) * 9 (anchors)
 self.RPN_cls_score = nn.Conv2d(256, self.nc_score_out, 1, 1, 0)

 # define anchor box offset prediction layer
 self.nc_bbox_out = len(self.anchor_scales) * len(self.anchor_ratios) * 4 # 4(coords) * 9 (anchors)
 self.RPN_bbox_pred = nn.Conv2d(256, self.nc_bbox_out, 1, 1, 0)

anchor 标定
考察训练集中的每张图像:

  • 对每个标定的真值候选区域,与其重叠比例最大的anchor记为前景样本
  • 对1剩余的anchor,如果其与某个标定重叠比例大于0.7,记为前景样本;如果其与任意一个标定的重叠比例都小于0.3,记为背景样本
  • 对1,2剩余的anchor,弃去不用。

损失函数

L(pi,ti)=1NclsiLcls(pi,pi)+λpi1NregiLreg(ti,ti) L ( p i , t i ) = 1 N c l s ∑ i L c l s ( p i , p i ∗ ) + λ p i ∗ 1 N r e g ∑ i L r e g ( t i , t i ∗ )

tx=(xxa)/wa,ty=(yya)/ha,tw=log(w/wa),th=log(h/ha) t x = ( x − x a ) / w a , t y = ( y − y a ) / h a , t w = l o g ( w / w a ) , t h = l o g ( h / h a )

tx=(xxa)/wa,ty=(yya)/ha,tw=log(w/wa),th=log(h/ha) t x ∗ = ( x ∗ − x a ) / w a , t y ∗ = ( y ∗ − y a ) / h a , t w ∗ = l o g ( w ∗ / w a ) , t h ∗ = l o g ( h ∗ / h a )

p=1代表anchor为正样本,p=0为负样本。其中分类的损失函数为Log Loss,回归的损失为Smooth L1 Loss。对比Fast R-CNN 其实损失函数结构相同。
Optimization
原始特征提取网络使用ImageNet的分类样本初始化,其余新增层随机初始化。 每个mini-batch包含从一张图像中提取的256个anchor,前景背景样本1:1. 前60K迭代,学习率0.001,后20K迭代,学习率0.0001。
momentum设置为0.9,weight decay设置为0.0005。
所谓4-step training:
- 初始化RPN网络为已在ImageNet预训练的参数,训练RPN网络
- 初始化Fast R-CNN网络为已在ImageNet预训练的参数,同时利用上步RPN生成的Proposal,训练Fast R-CNN
- 利用fast R-CNN中训练好的参数初始化RPN网络,并固定共享卷积层参数,精修 RPN 独有的layers。
- 固定卷积层,精修 fast R-CNN中的fc layer。

2.实验

Faster-RCNN 论文阅读_第4张图片
作者对比了多种训练预测方法,其中共享卷积的ZF网络结果最好,有多于1%mAp的提升。
Faster-RCNN 论文阅读_第5张图片
速度上ZF网络可以达到17fps,相比于Fast RCNN的0.5fps,得到了很大的提升。
Faster-RCNN 论文阅读_第6张图片
当proposal数量下降到300时, RPN性能基本不变,但是SS,EB却需要大量的Proposal支撑。

你可能感兴趣的:(计算机视觉学习)