开发者社区> 机器智能技术> 正文

目标检测入门系列手册四:Faster R-CNN 训练教程

简介: 目标检测入门系列手册四:Faster R-CNN 训练教程

>>戳此处立即下载电子书<<,学习全套目标检测算法&模型

image.png

Faster R-CNN

Faster R-CNN[3] 作为目标检测的经典方法在现今很多实战项目和比赛中频频出现。其实,Faster R-CNN 就是在Fast R-CNN 的基础上构建一个小的网络,直接产生region proposal 来代替通过其他方法(如selective search)得到ROI。这个小型的网络被称为区域预测网络(Region Proposal Network,RPN)。Faster R-CNN 的训练流程如图2-10 所示,其中的RPN 是关键,其余流程基本和Fast R-CNN 一致。

image.png

图2-10 Faster R-CNN 训练流程[9]

RPN 的思想是构建一个小的全卷积网络,对于任意大小的图片,输出ROI 的具体位置以及该ROI 是否是物体。RPN 网络在卷积神经网的最后一个特征层上滑动。

接下来我们对着图2-11 来进一步解释RPN 网络。图2-11(a)中最下面灰色的网格表示卷积神经网络的特征层,红框表示RPN 网络的输入,其大小为3×3,而后连接到256 维的一个低维向量。这3×3 的窗口滑动经过整个特征层,并且每次计算都将经过这256 维的向量并最终输出2 个结果:该3×3 滑动窗口位置中是否有物体以及该滑动窗口对应物体的矩形框位置。如果还是不好理解,我们将图2-11(a)中的RPN 网络顺时针旋转90 度,如图2-11(b)所示,现在可以很清晰地看出神经网络结构了,这里input 维度是9,即图2-11(a)中的3×3 大小。

image.png

(a)

image.png

(b)

图2-11 RPN 网络原理[3]

为了适应多种形状的物体,RPN 网络定义了k 种不同尺度的滑窗(因为有的目标是长的,有的是扁的,有的是大的,有的是小的,统一用一个3×3 的滑窗难以很好地拟合多种情况),这里给它一个专业的名词——anchor,每个anchor 都是以特征层(feature map)上的像素点为中心并且根据其尺度大小进行后续计算的。在Faster-RCNN 论文中,滑窗在特征层的每个位置上使用3 种大小和3 种比例共3×3=9 种anchor,在图2-11(a)中n=9。

根据上面的介绍我们知道RPN 网络有2 类输出:二分类网络输出是否是物体,回归网络返回矩形框位置对应的4 个值。

接下来,我们看一下训练过程中的一些细节问题。首先,针对分类任务,对于滑窗产生的每一个anchor 都计算该anchor 与真实标记矩形框的IOU。当IOU 大于0.7 时,便认为该anchor 中含有物体;当IOU 小于0.3 时,便认为该anchor 中不含物体;当IOU 介于0.3-0.7 之间时,则不参与网络训练的迭代过程。

对于回归任务,这里定义为anchor 中心点的横、纵坐标以及anchor 的宽高,学习目标为anchor 与真实bbox 在这四个值上的偏移。RPN 网络为一个全卷积网络,可以用随机梯度下降的方式端到端地进行训练。

这里需要注意,训练过程中能与真实物体矩形框相交的IOU 大于0.7 的anchor并不多,绝大多数都是负样本,因此会导致正负样本比例严重失衡,从而影响识别效果。因此,在RPN 训练的过程,每个batch 进行随机采样(每个batch 中有256个样本)并保证正负样本的比例为1:1,而当正样本数量小于128 时,取全部的正样本,其余的随机使用负样本进行补全。

使用RPN 网络产生ROI 的好处是可以和检测网络共享卷积层,使用随机梯度下降的方式端到端地进行训练。接下来我们看下Faster R-CNN 的训练过程:

(1)使用ImageNet 预训练好的模型训练一个RPN 网络。

(2)使用ImageNet 预训练好的模型,以及第(1)步里产生的建议区域训练Fast R-CNN 网络,得到物体实际类别以及微调的矩形框位置。

(3)使用(2)中的网络初始化RPN,固定前面卷积层,只有调整RPN 层的参数。

(4)固定前面的卷积层,只训练并调整Fast R-CNN 的FC 层。

有了RPN 的帮助,Faster R-CNN 的速度大大提升,(如图2-12 所示。RCNN、Fast R-CNN、Faster R-CNN 几个模型的对比如图2-13 所示。

image.png

图2-12 RCNN、Fast R-CNN、Faster R-CNN 模型耗时对比

image.png

图2-13 RCNN、Fast R-CNN、Faster R-CNN 模型对比

从R-CNN 到Faster R-CNN,前面讲了基于proposal 想法做目标检测的发展史,这种思路分为产生proposal 和检测两个步骤,可以得到相对较好的精度,但缺点是速度较慢。接下来我们介绍另外几种常用于检测的方法。

image.png

版权声明:本文中所有内容均属于阿里云开发者社区所有,任何媒体、网站或个人未经阿里云开发者社区协议授权不得转载、链接、转贴或以其他方式复制发布/发表。申请授权请邮件developerteam@list.alibaba-inc.com,已获得阿里云开发者社区协议授权的媒体、网站,在转载使用时必须注明"稿件来源:阿里云开发者社区,原文作者姓名",违者本社区将依法追究责任。 如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:developer2020@service.aliyun.com 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

阿里云机器智能研究领域主要围绕机器学习等前沿技术开展理论与应用研究。《机器智能技术》圈子基于阿里巴巴达摩院的技术沉淀,围绕【研究报告】、【前沿技术】、【应用案例】、【行业新闻】、【传奇人物】多个方向为广大开发者贡献干货内容。

官方博客