目标检测入门系列手册四: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

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 安全
FRCNN来袭 | Faster RCNN与FCN永不遗忘,联邦学习+边缘数据既保护隐私也提升性能
FRCNN来袭 | Faster RCNN与FCN永不遗忘,联邦学习+边缘数据既保护隐私也提升性能
60 0
|
3月前
|
机器学习/深度学习 算法 TensorFlow
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
63 0
文本分类识别Python+卷积神经网络算法+TensorFlow模型训练+Django可视化界面
|
2月前
|
机器学习/深度学习 测试技术 Ruby
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
128 2
|
2月前
|
机器学习/深度学习 数据可视化 定位技术
PrObeD方法开源 | 主动方法助力YOLOv5/Faster RCNN/DETR在COCO/GOD涨点
PrObeD方法开源 | 主动方法助力YOLOv5/Faster RCNN/DETR在COCO/GOD涨点
39 0
|
2月前
|
机器学习/深度学习 编解码 算法
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
助力目标检测涨点 | 可以这样把Vision Transformer知识蒸馏到CNN模型之中
40 0
|
2月前
|
机器学习/深度学习 编解码 数据可视化
RecursiveDet | 超越Sparse RCNN,完全端到端目标检测的新曙光
RecursiveDet | 超越Sparse RCNN,完全端到端目标检测的新曙光
57 0
|
4月前
|
机器学习/深度学习 监控 算法
【Keras计算机视觉】Faster R-CNN神经网络实现目标检测实战(附源码和数据集 超详细)
【Keras计算机视觉】Faster R-CNN神经网络实现目标检测实战(附源码和数据集 超详细)
35 0
|
2月前
|
机器学习/深度学习 编解码 PyTorch
Pytorch实现手写数字识别 | MNIST数据集(CNN卷积神经网络)
Pytorch实现手写数字识别 | MNIST数据集(CNN卷积神经网络)
|
1月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
4月前
|
机器学习/深度学习
CNN卷积神经网络手写数字集实现对抗样本与对抗攻击实战(附源码)
CNN卷积神经网络手写数字集实现对抗样本与对抗攻击实战(附源码)
39 0

热门文章

最新文章