Faster R-CNN论文及源码解读

Faster R-CNN是目标检测领域的重要进展,它引入了Region Proposal Network (RPN),实现端到端的检测。模型由RPN和Fast R-CNN两部分组成,RPN用于生成候选框,Fast R-CNN则负责分类和精确位置预测。通过RoI Pooling,Faster R-CNN能处理不同尺寸的提案。训练过程中,RPN和Fast R-CNN交替或端到端训练,提高效率和准确性。
摘要由CSDN通过智能技术生成

原文站点:https://senitco.github.io/2017/09/02/faster-rcnn/

  R-CNN是目标检测领域中十分经典的方法,相比于传统的手工特征,R-CNN将卷积神经网络引入,用于提取深度特征,后接一个分类器判决搜索区域是否包含目标及其置信度,取得了较为准确的检测结果。Fast R-CNN和Faster R-CNN是R-CNN的升级版本,在准确率和实时性方面都得到了较大提升。在Fast R-CNN中,首先需要使用Selective Search的方法提取图像的候选目标区域(Proposal)。而新提出的Faster R-CNN模型则引入了RPN网络(Region Proposal Network),将Proposal的提取部分嵌入到内部网络,实现了卷积层特征共享,Fast R-CNN则基于RPN提取的Proposal做进一步的分类判决和回归预测,因此,整个网络模型可以完成端到端的检测任务,而不需要先执行特定的候选框搜索算法,显著提升了算法模型的实时性。

模型概述

  Faster R-CNN模型主要由两个模块组成:RPN候选框提取模块和Fast R-CNN检测模块,如下图所示,又可细分为4个部分;Conv Layer,Region Proposal Network(RPN),RoI Pooling,Classification and Regression。


Faster R-CNN.jpg

  • Conv Layer: 卷积层包括一系列卷积(Conv + Relu)和池化(Pooling)操作,用于提取图像的特征(feature maps),一般直接使用现有的经典网络模型ZF或者VGG16,而且卷积层的权值参数为RPN和Fast RCNN所共享,这也是能够加快训练过程、提升模型实时性的关键所在。
  • Region Proposal Network: RPN网络用于生成区域候选框Proposal,基于网络模型引入的多尺度Anchor,通过Softmax对anchors属于目标(foreground)还是背景(background)进行分类判决,并使用Bounding Box Regression对anchors进行回归预测,获取Proposal的精确位置,并用于后续的目标识别与检测。
  • RoI Pooling: 综合卷积层特征feature maps和候选框proposal的信息,将propopal在输入图像中的坐标映射到最后一层feature map(conv5-3)中,对feature map中的对应区域进行池化操作,得到固定大小( 7×7 )输出的池化结果,并与后面的全连接层相连。
  • Classification and Regression: 全连接层后接两个子连接层——分类层(cls)和回归层(reg),分类层用于判断Proposal的类别,回归层则通过bounding box regression预测Proposal的准确位置。

  下图为Faster R-CNN测试网络结构(网络模型文件为faster_rcnn_test.pt),可以清楚地看到图像在网络中的前向计算过程。对于一幅任意大小 P×Q 的图像,首先缩放至固定大小 M×N (源码中是要求长边不超过1000,短边不超过600),然后将缩放后的图像输入至采用VGG16模型的Conv Layer中,最后一个feature map为conv5-3,特征数(channels)为512。RPN网络在特征图conv5-3上执行 3×3 卷积操作,后接一个512维的全连接层,全连接层后接两个子连接层,分别用于anchors的分类和回归,再通过计算筛选得到proposals。RoIs Pooling层则利用Proposal从feature maps中提取Proposal feature进行池化操作,送入后续的Fast R-CNN网络做分类和回归。RPN网络和Fast R-CNN网络中均有分类和回归,但两者有所不同,RPN中分类是判断conv5-3中对应的anchors属于目标和背景的概率(score),并通过回归获取anchors的偏移和缩放尺度,根据目标得分值筛选用于后续检测识别的Proposal;Fast R-CNN是对RPN网络提取的Proposal做分类识别,并通过回归参数调整得到目标(Object)的精确位置。具体的训练过程会在后面详述。接下来会重点介绍RPN网络和Fast R-CNN网络这两个模块,包括RPN网络中引入的Anchor机制、训练数据的生成、分类和回归的损失函数(Loss Function)计算以及RoI Pooling等。


faster_rcnn_test_model.jpg

Region Proposal Network(RPN)

  传统的目标检测方法中生成候选框都比较耗时,例如使用滑动窗口加图像金字塔的方式遍历图像,获取多尺度的候选区域;以及R-CNN、Fast R-CNN中均使用到的Selective Search的方法生成候选框。而Faster R-CNN则直接使用RPN网络,将检测框Proposal的提取嵌入到网络内部,通过共享卷积层参数的方式提升了Proposal的生成速度。

Anchor

  Anchor是RPN网络中一个较为重要的概念,传统的检测方法中为了能够得到多尺度的检测框,需要通过建立图像金字塔的方式,对图像或者滤波器(滑动窗口)进行多尺度采样。RPN网络则是使用一个 3×3 的卷积核,在最后一个特征图(conv5-3)上滑动,将卷积核中心对应位置映射回输入图像,生成3种尺度(scale) { 1282,2562,5122} 和3种长宽比(aspect ratio) { 1:1,1:2,2:1} 共9种Anchor,如下图所示。特征图conv5-3每个位置都对应9个anchors,如果feature map的大小为 W×H ,则一共有 W×H×9 个anchors,滑动窗口的方式保证能够关联conv5-3的全部特征空间,最后在原图上得到多尺度多长宽比的anchors。


anchors.jpg

  最后一个feature map后面会接一个全连接层,如下图所示,全连接的维数和feature map的特征数(channels)相同。对于原论文中采用的ZF模型,conv5的特征数为256,全连接层的维数也为256;对于VGG模型,conv5-3的特征数为512,全连接的的维数则为512,相当于feature map上的每一个点都输出一个512维的特征向量。


RPN.jpg

关于anchors还有几点需要说明:
- conv5-3上使用了 3×3 的卷积核,每个点都可以关联局部邻域的空间信息。
- conv5-3上每个点前向映射得到k(k=9)个anchors,并且后向输出512维的特征向量,而anchors的作用是分类和回归得到Proposal,因此全连接层后须接两个子连接层——分类层(cls)和回归层(reg),分类层用于判断anchors属于目标还是背景,向量维数为2k;回归层用于计算anchors的偏移量和缩放量,共4个参数 [dx,dy,dw,dh] ,向量维数为4k。

训练样本的生成

  一般而言,特征图conv5-3的实际尺寸大致为 60×40 ,那么一共可以生成 60×40×920k 个anchors,显然不会将所有anchors用于训练,而是筛选一定数量的正负样本。对于数据集中包含有人工标定ground truth的图像,考虑一张图像上所有anchors:
- 首先过滤掉超出图像边界的anchors
- 对每个标定的ground truth,与其重叠比例IoU最大的anchor记为正样本,这样可以保证每个ground truth至少对应一个正样本anchor
- 对每个anchors,如果其与某个ground truth的重叠比例IoU大于0.7,则记为正样本(目标);如果小于0.3,则记为负样本(背景)
- 再从已经得到的正负样本中随机选取256个anchors组成一个minibatch用于训练,而且正负样本的比例为1:1,;如果正样本不够,则补充一些负样本以满足256个anchors用于训练,反之亦然。

Multi-task Loss Function

  由于涉及到分类和回归,所以需要定义一个多任务损失函数(Multi-task Loss Function),包括Softmax Classification Loss和Bounding Box Regression Loss,公式定义如下:

L({ pi},{ ti})=1NclsΣiLcls(pi,pi)+
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值