目标检测-Two Stage-Faster RCNN

文章目录

  • 前言
  • [一、Faster RCNN的网络结构和流程](#一、Faster RCNN的网络结构和流程)
    • [Faster R-CNN的流程图](#Faster R-CNN的流程图)
    • [Faster R-CNN网络结构图(以VGG为backbone):](#Faster R-CNN网络结构图(以VGG为backbone):)
  • [二、Faster RCNN的创新点](#二、Faster RCNN的创新点)
  • [三、Faster RCNN的训练过程](#三、Faster RCNN的训练过程)
  • 总结

前言

前文提到了目标检测-Two Stage-Fast RCNN提到了Fast RCNN主要缺点是:

  • 通过手工方法(Selective Search)寻找的候选框,非常耗时。

Faster RCNN针对上述缺点做了改进


提示:以下是本篇文章正文内容,下面内容可供参考

一、Faster RCNN的网络结构和流程

  1. 利用backbone网络提取特征,获得共享卷积特征图(Feature Map)

近些年来随着深度学习特征提取网络的成熟,将这类特征提取网络称为骨干网(backbone)

  1. 利用RPN(Region Proposal Network)网络生成候选框,进行分类和第一次边框修正

使用RPN网络取代手工方法生成候选框,RPN网络的流程是:

  1. 使用3×3的卷积核窗口对共享卷积特征图(Feature Map)进行卷积,获得通道(channel)为256的输出:256 x H x W
  2. 使用两个1×1卷积分别对每个锚点的锚框进行卷积,获得(2 x k) x H x W个类别分数和(4 x k) x H x W个目标框参数
    ps:特征图的每个像元都预先设置以该像元为中心(锚点)的k(k=9)个相同大小的锚框(anchor boxes)
  3. 将类别分数和目标框参数合并得到k x H x W个候选框:k x H x W x 5
  1. 将生成的Region Proposal和共享特征图(Feature Map)输入RoI pooling和全连接层进行分类和第二次边框修正

RoI pooling:

  1. 将共享卷积特征图输入到池化层,获取共享池化特征图
  2. 将候选框在原图的位置映射到共享特征图,以获取每个候选框的卷积特征图
  3. 将将候选框在卷积特征图的位置映射到共享池化特征图,以获取每个候选框的池化特征图
    ps:将候选框在原图的位置映射到共享池化特征图时,为了和图像像元对齐,使用了两次量化操作(不能整除时取整对齐)

Faster R-CNN的流程图

Faster R-CNN网络结构图(以VGG为backbone):

二、Faster RCNN的创新点

  • Faster R-CNN的主要贡献就是设计了提取候选区域的网络RPN,代替了费时的选择性搜索selective search,使得检测速度大幅提高(5-17 fps),并使得整个过程变成完全的端到端。

三、Faster RCNN的训练过程

非极大值抑制(Non-Maximum Suppression,NMS)

  • 一些anchors是高度重叠的,为了减少冗余,提高速度,Faster R-CNN采用非极大值抑制(Non-Maximum Suppression,NMS)去除了IoU在0.7以上的冗余框,这样每张影像大概有2k个候选框参与训练。

NMS:

先假设有6个矩形框,根据分类器的类别分类概率做排序,假设从小到大属于人脸的概率 分别为A、B、C、D、E、F。

  1. 从最大概率矩形框F开始,分别判断A~E与F的重叠度IoU是否大于某个设定的阈值;
  2. 假设B、D与F的重叠度超过阈值,那么就扔掉B、D;并标记第一个矩形框F,是我们保留下来的。
  3. 从剩下的矩形框A、C、E中,选择概率最大的E,然后判断E与A、C的重叠度,重叠度大于一定的阈值,那么就扔掉;并标记E是我们保留下来的第二个矩形框。
  4. 就这样一直重复,找到所有被保留下来的矩形框。
    IoU:IoU 的全称为交并比(Intersection over Union),通过IoU的值可以判断边框间的重叠度,计算方式为两个框的交集和并集的比值

损失函数

一种网络,四个损失函数:

• RPN classification(anchor good.bad):SoftmaxLoss

• RPN regression(anchor->propoasal):SmoothL1Loss

• Fast R-CNN classification(over classes):SoftmaxLoss

• Fast R-CNN regression(proposal ->box):SmoothL1Loss

边框修正主要由4个值完成,(tx,ty,th,tw),表示x和y方向上做出平移(由tx和ty决定),并且长宽各自放大一定的倍数(由th和ty决定)

训练过程

Faster R-CNN的训练方式有三种:

  1. RPN和Fast R-CNN交替训练,这种方式也是作者采用的方式。
  2. 近似联合RPN和Fast R-CNN的训练,在训练时忽略掉RoI边框修正的误差,也就是说只对anchor做了边框修订,这也是为什么叫"近似联合"的原因。
  3. 联合RPN和Fast R-CNN的训练。

对于作者采用的交替训练的方式,步骤如下:

  1. 使用在ImageNet上预训练的模型初始化共享卷积层并训练RPN。
  2. 使用上一步得到的RPN参数生成RoI proposal。再使用ImageNet上预训练的模型初始化共享卷积层,训练Fast R-CNN部分(分类器和RoI边框修订)。
  3. 将训练后的共享卷积层参数固定,同时将Fast R-CNN的参数固定,训练RPN。(从这一步开始,共享卷积层的参数真正被两大块网络共享)
  4. 同样将共享卷积层参数固定,并将RPN的参数固定,训练Fast R-CNN部分。

测试过程

Faster R-CNN的测试流程和训练流程相似,描述如下:

  1. 首先通过RPN生成约20k个anchor(40×60×9)
  2. 对20k个anchor进行第一次边框修正,得到修订边框后的proposal
  3. 对超过图像边界的proposal的边进行clip,使得该proposal不超过图像范围
  4. 忽略掉长或者宽太小的proposal
  5. 将所有proposal按照前景分数从高到低排序,选取前6k个proposal
  6. 使用阈值为0.7的NMS算法排除掉重叠的proposal
  7. 针对上一步剩下的proposal,选取前300个proposal进行分类和第二次边框修正

总结

相比于之前的算法,Faster RCNN由于其端到端的特性得到广泛应用,但是受Two Stage算法思想的影响,速度仍不够快,

并且ROI Pooling有两次量化操作,会引入误差影响精度。

相关推荐
程序小旭2 小时前
机器视觉基础—双目相机
计算机视觉·双目相机
qzhqbb2 小时前
基于统计方法的语言模型
人工智能·语言模型·easyui
冷眼看人间恩怨2 小时前
【话题讨论】AI大模型重塑软件开发:定义、应用、优势与挑战
人工智能·ai编程·软件开发
2401_883041082 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
pianmian13 小时前
python数据结构基础(7)
数据结构·算法
AI极客菌3 小时前
Controlnet作者新作IC-light V2:基于FLUX训练,支持处理风格化图像,细节远高于SD1.5。
人工智能·计算机视觉·ai作画·stable diffusion·aigc·flux·人工智能作画
阿_旭3 小时前
一文读懂| 自注意力与交叉注意力机制在计算机视觉中作用与基本原理
人工智能·深度学习·计算机视觉·cross-attention·self-attention
王哈哈^_^4 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
Power20246664 小时前
NLP论文速读|LongReward:基于AI反馈来提升长上下文大语言模型
人工智能·深度学习·机器学习·自然语言处理·nlp
数据猎手小k5 小时前
AIDOVECL数据集:包含超过15000张AI生成的车辆图像数据集,目的解决旨在解决眼水平分类和定位问题。
人工智能·分类·数据挖掘