R-CNN,Fast R-CNN,Faster R-CNN对比

http://imgtec.eetrend.com/blog/2020/100049323.html

一、设计思路

今天介绍的 R-CNN 系列算法,都基于深度学习,它们把目标检测大致分为四部分完成:

1、先从整幅图里选取最可能有物体的一些候选区域,这些区域一般用长方形框表示,这一步能缩小寻找范围
2、既然用到深度学习,那就需要学习图像的深层特征,这里我们只关心上一步选出区域的图像特征,提取的特征可用于分类回归任务
3、分类就是常规的分类方法,不过这里是多分类
4、第一步给的候选框经过筛选后,不一定精准,还需要根据 ground truth 作调整
分类和定位任务可以同时训练,也可以依次训练
在这里插入图片描述

二、名词解释

Selective Search:一种产生候选区的方法,没有用到深度学习,需要在 CPU 上训练,比较耗时,简称 SS。
Region proposal:直译为成区域建议(有些别扭),就是生成候选区的过程,类似于比赛前的海选,其中的 region 是矩形区。方法有 Selective Search,论文中产生 2000 个候选区,下面简称这部分产生的区域为候选区。
Bounding box:直译为边界框,就是最后输出定位的那个矩形框。严格来说,分为人工标注的 ground truth 和 predicted 两种类型。有时候简称为 BB。
Region of interest(ROI):感兴趣的区域,有时候论文把 region proposal 产生的区域叫 ROI。
Non maximum suppression(NMS):非极大值抑制,简称为 NMS 算法,其思想是搜素局部最大值,抑制极大值,在目标检测的目的是输出最合适的边界框。
Fully connected layer:全连接层,我下面简写为 FC 层。
Feature map:卷积层的输出,可翻译为特征图。

三、比较说明

下面我将从问题背景,创新点,框架模块,训练流程,检测流程五个方面比较介绍他们的发展过程。我更侧重它们的宏观思路,而没有介绍具体细节,也没有涉及实验和代码。

四、发展历程

在这里插入图片描述
可以看出,他们的发展是从训练分散到统一的过程,开始还需要借助外部的模块 SS,后来可以构造一个联合框架。

从训练的角度,开始的训练是多阶段的(multi-satge:生成候选区→提取特征→分类→定位),后来的训练中,提取特征+分类+定位一次性完成

从是否需要 region proposal 的角度,它们都是需要的,是 region based 方法,统称为 ==two-stage ==方法,而其他方法如 YOLO 不需要这个阶段,是 one-stage 方法。

1. R-CNN

问题背景——
传统视觉特征 SIFT 和 HOG 用于检测系统,性能提升缓慢
CNN 用于分类效果好,能否提升检测性能

创新点——
把 CNN 用于生成 region proposal,用 CNN 提取的特征代替 SIFT 和 HOG 这些传统特征;
采用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合等问题。

框架模块——
生成候选区模块
提取特征的 CNN 模块
用于分类的 SVM 模块
修正边界框模块

训练流程——
有监督的预训练:在大型辅助数据集(ILSVRC2012 classification)上进行 CNN 预训练,得到一个分类器(CNN)
特定领域的微调:根据检测任务微调 CNN,把最后 1000 维的分类层替换成 N+1 维的分类层(N 是检测数据集的类别数,1 是背景)
SVM 分类器训练:由于SVM是二分类器,需要为每个类别训练单独的SVM。对于某一类,一片区域包含该类物体为正样本,不包含为负样本。如何判断是否为正?设定 IOU 阈值,低于阈值的为负样本(这里没搞懂,为什么只说低于阈值的是负样本,那正样本就得是ground truth)
边界框回归训练:提高定位精度

检测流程——
输入一张多目标图像
采用 selective search 算法提取约 2000 个建议框,对区域 / 框变形
处理后的区域/框输入 CNN 提取特征
区域进行分类,用非极大抑制提取分数最高(最可能的类)的框
进行回归修正,选择分数最高的框
(为什么区域所得特征是从FC7获取,而框的线性函数是从conv5获得)

2. Fast R-CNN

问题背景——
R-CNN 的训练是多阶段的(multi-stage):预训练 CNN→针对检测微调→训练分类器→训练边界框回归器
R-CNN 的时间空间消耗大:为了训练 SVM 分类器和边界框回归器,每个区域的特征都要提取出来,并且存到磁盘上
R-CNN 检测:检测时需要提取每个区域的特征,但生成的区域有重叠,所以计算也有重叠。

创新点——
与 R-CNN、SPPnet 相比有更高的检测精度(mAP)
训练是单阶段的(single-stage),损失是多任务的(multi-task),指把预训练的 CNN 针对检测任务微调后,分类和回归任务能一起完成,这种多任务损失即结合了分类损失和定位损失的方法,大大提升了模型准确度。
训练可以更新所有网络层
特征缓存不需要磁盘存储

框架模块——
与R-CNN 模块大致相同,相比 R-CNN 模块有一些改变。
网络输入:图片组以及每幅图片的一组 RoI
CNN 模块:最后一个最大池化层由 RoI 池化层代替
分类模块:Fast R-CNN 使用 softmax classifier,R-CNN 和 SPPnet 使用 one-vs-rest linear SVMs。
分类和定位:CNN 网络的最后一个全连接层和 softmax 替换为两个同级层R-CNN 是独立的两个模块,需要单独训练

训练流程——
有监督的预训练,得到 CNN
特定领域的微调:首先改变模型,就是上面提到的输入改变,CNN 的 ROI 池化引入,还有分类回归模块的改变;
接着,输入图片和区域后,就能实现端到端的多任务训练,不需要单独训练分类和回归模块。

检测流程——
输入一张多目标图像
采用 selective search 得到的预选区域
用卷积层和池化层处理这幅图片,生成 feature map;
对于每个候选区域,用一个 RoI 池化层从上一层的 feature map 中提取定长的特征向量;
同时完成分类回归任务:每个 feature vector 送入一系列全连接层,这些全连接层最后会分支成 two sibling output layers: 一个可以在K个对象类以及一个笼统的“背景”类上生成 softmax 概率估计;另一层为 K 个对象类中的每一个输出四个实数值(编码精确的边界框位置)。

注:ROI 池化

因为 Fast R-CNN 使用全连接层,所以我们应用 ROI 池化将不同大小的 ROI 转换为固定大小。

为简洁起见,我们先将 8×8 特征图转换为预定义的 2×2 大小。

下图左上角:特征图。
右上角:将 ROI(蓝色区域)与特征图重叠。
左下角:将 ROI 拆分为目标维度。例如,对于 2×2 目标,我们将 ROI 分割为 4 个大小相似或相等的部分。
右下角:找到每个部分的最大值,得到变换后的特征图。
在这里插入图片描述输入特征图(左上),输出特征图(右下),ROI (右上,蓝色框)。

按上述步骤得到一个 2×2 的特征图块,可以馈送至分类器和边界框回归器中。

3. Faster R-CNN

问题背景——
继Fast R-CNN后,在CPU上实现的区域建议算法 Selective Search、EdgeBoxes 等成了物体检测速度提升上的最大瓶颈。

创新点——
设计 Region Proposal Networks(RPN),利用 CNN 卷积操作后的特征图生成候选区,代替了Selective Search、EdgeBoxes 等方法,速度上提升明显;
训练 Region Proposal Networks 与检测网络(Fast R-CNN)共享卷积层,大幅提高网络的检测速度。

框架模块——
PRN + Fast R-CNN
Fast R-CNN 生成候选区域需要外部的 SS 模块,而 Faster R-CNN 是一个统一的模块,region proposal 部分由 PRN 完成

训练流程——
四步交替训练:
**训练PRN:**使用 ImageNet-pre-trained model 初始化,针对 region proposal 任务微调
**用第一步得到的 PRN 训练 Fast R-CNN:**其中 Fast R-CNN 也用 ImageNet-pre-trained model 初始化(此时两个网络还没有共享特征)。
**用 Fast R-CNN 初始化 PRN:**固定共享的卷积层,仅微调 RPN 特有的层(此时两个网络开始共享)
在保持共享卷积层固定不变的情况下,微调 Fast R-CNN 的特有层。(两个网络共享相同的卷积层并形成统一的网络)

检测流程——
输入一张多目标图像
图像经过 CNN 网络生成特征图
特征图分两路,一路经过 PRN 得到候选区域(经过 NMS ),另一路继续向后传播。
上一步得到的高维特征图和区域建议同时输入 RoI 池化层,提取对应区域建议的特征
区域特征通过全连接层后,输出该区域的分类得分以及回归后的 bounding-box

粗略的挑选候选区域:
在这里插入图片描述精确调整bounding box:
在这里插入图片描述在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值