rcnn、fast-rcnn和faster-rcnn三者的区别

开课吧开课吧锤锤2021-02-08 10:41

R-CNN 系列算法是目标检测 two-stage 类的代表算法,下面从问题背景,创新点,框架模块,训练流程,检测流程五个方面进行比较,了解它们的区别。并侧重介绍它们的宏观思路,省略具体的细节。

人工智能面试

一、任务描述

目标检测是为了解决图像里的物体是什么,在哪里的问题。输入一幅图像,输出的是图像里每个物体的类别和位置,其中位置用一个包含物体的框表示。

人工智能面试

需要注意,我们的目标,同时也是论文中常说的感兴趣的物体,指我们关心的类别(行人检测只检测人,交通检测只关心交通工具等),或者数据集包含的类别,并不是图像里所有的物体都是目标,比如建筑,草坪也是物体,但他们常常是背景。

从计算机视觉的角度看,目标检测是分类+定位,从机器学习的角度看,目标检测是分类+回归。

二、设计思路

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

人工智能面试

1. 先从整幅图里选取最可能有物体的一些候选区域,这些区域一般用长方形框表示,这一步能缩小寻找范围

2. 既然用到深度学习,那就需要学习图像的深层特征,这里我们只关心上一步选出区域的图像特征,提取的特征可用于分类回归任务

3. 分类就是常规的分类方法,不过这里是多分类

4. 第一步给的候选框经过筛选后,不一定精准,还需要根据 ground truth 作调整

5. 分类和定位任务可以同时训练,也可以依次训练

三、名词解释

1. Selective Search:一种产生候选区的方法,没有用到深度学习,需要在 CPU 上训练,比较耗时,简称 SS。

2. Region proposal:直译为成区域建议(有些别扭),就是生成候选区的过程,类似于比赛前的海选,其中的 region 是矩形区。方法有 Selective Search,论文中产生 2000 个候选区,下面简称这部分产生的区域为候选区。

3. Bounding box:直译为边界框,就是最后输出定位的那个矩形框。严格来说,分为人工标注的 ground truth 和 predicted 两种类型。有时候简称为 BB。

4. Region of interest(ROI):感兴趣的区域,有时候论文把 region proposal 产生的区域叫 ROI。

5. Non maximum suppression(NMS):非极大值抑制,简称为 NMS 算法,其思想是搜素局部最大值,抑制极大值,在目标检测的目的是输出最合适的边界框。

6. Fully connected layer:全连接层,下面简写为 FC 层。

7. Feature map:卷积层的输出,可翻译为特征图。

四、发展历程

首先用一张图来说明三个架构的区别:

人工智能面试

可以看出,他们的发展是从训练分散到统一的过程,开始还需要借助外部的模块 SS,后来可以构造一个联合框架。从训练的角度,开始的训练是多阶段的(multi-satge:生成候选区→提取特征→分类→定位),后来的训练中,提取特征+分类+定位一次性完成。从是否需要 region proposal 的角度,它们都是需要的,是 region based 方法,统称为 two-stage 方法,而其他方法如 YOLO 不需要这个阶段,是 one-stage 方法。

1. R-CNN

1.1 问题背景

(1)传统视觉特征 SIFT 和 HOG 用于检测系统,性能提升缓慢

(2)CNN 用于分类效果好,能否提升检测性能

1.2 创新点

(1)把 CNN 用于生成 region proposal,用 CNN 提取的特征代替 SIFT 和 HOG 这些传统特征;

(2)采用大样本下有监督预训练+小样本微调的方式解决小样本难以训练甚至过拟合等问题。

1.3 框架模块

(1)生成候选区模块

(2)提取特征的 CNN 模块

(3)用于分类的 SVM 模块

(4)修正边界框模块

1.4 训练流程

(1)有监督的预训练:在大型辅助数据集(ILSVRC2012 classification)上进行 CNN 预训练,得到一个分类器(CNN)

(2)特定领域的微调:根据检测任务微调 CNN,把最后 1000 维的分类层替换成 N+1 维的分类层(N 是检测数据集的类别数,1 是背景)

(3)SVM 分类器训练:由于SVM是二分类器,需要为每个类别训练单独的SVM。对于某一类,一片区域包含该类物体为正样本,不包含为负样本。如何判断是否为正?设定 IOU 阈值,低于阈值的为负样本

(4)边界框回归训练:提高定位精度

1.5 检测流程

(1)输入一张多目标图像

(2)采用 selective search 算法提取约 2000 个建议框,对区域 / 框变形

(3)处理后的区域/框输入 CNN 提取特征

(4)对区域进行分类,用非极大抑制提取分数最高(最可能的类)的框

(5)对框进行回归修正,选择分数最高的框

2. Fast R-CNN

2.1 问题背景

(1)R-CNN 的训练是多阶段的(multi-stage):预训练 CNN→针对检测微调→训练分类器→训练边界框回归器

(2)R-CNN 的时间空间消耗大:为了训练 SVM 分类器和边界框回归器,每个区域的特征都要提取出来,并且存到磁盘上

(3)R-CNN 检测慢:检测时需要提取每个区域的特征,但生成的区域有重叠,所以计算也有重叠。

2.2 创新点

(1)与 R-CNN、SPPnet 相比有更高的检测精度(mAP)

(2)训练是单阶段的(single-stage),损失是多任务的(multi-task),指把预训练的 CNN 针对检测任务微调后,分类和回归任务能一起完成

(3)训练可以更新所有网络层

(4)特征缓存不需要磁盘存储

2.3 框架模块

与R-CNN 模块大致相同,相比 R-CNN 模块有一些改变。

(1)网络输入:图片组以及每幅图片的一组 RoI

(2)CNN 模块:最后一个最大池化层由 RoI 池化层代替

(3)分类模块:Fast R-CNN 使用 softmax classifier,R-CNN 和 SPPnet 使用 one-vs-rest linear SVMs。

(4)分类和定位:CNN 网络的最后一个全连接层和 softmax 替换为两个同级层,R-CNN 是独立的两个模块,需要单独训练

2.4 训练流程

(1)有监督的预训练,得到 CNN

(2)特定领域的微调:首先改变模型,就是上面提到的输入改变,CNN 的 ROI 池化引入,还有分类回归模块的改变;

(3)接着,输入图片和区域后,就能实现端到端的多任务训练,不需要单独训练分类和回归模块。

2.5 检测流程

(1)输入一张多目标图像

(2)采用 selective search 得到的预选区域

(3)用卷积层和池化层处理这幅图片,生成 feature map;

(4)对于每个候选区域,用一个 RoI 池化层从上一层的 feature map 中提取定长的特征向量;

(5)同时完成分类回归任务:每个 feature vector 送入一系列全连接层,这些全连接层最后会分支成 two sibling output layers: 一个可以在K个对象类以及一个笼统的“背景”类上生成 softmax 概率估计;另一层为 K 个对象类中的每一个输出四个实数值(编码精确的边界框位置)。

与 R-CNN 相比: (1)R-CNN 先用 SS 从图片生成候选区(然后图片就不用了),把候选区输入CNN 提取特征,因为生成的区域有重叠,所以计算重复;Fast R-CNN 先用 SS 从图片生成 候选区,兵分两路,先把整幅图输入 CNN 一次性提取特征生成特征图,对于每个候选区,用一个 RoI 池化层从上一层的 特征图中提取定长的特征向量。(2)R-CNN 对分类和回归模块分别训练,Fast R-CNN 网络末尾采用并行的两个全连接层,可同时输出分类结果和边界框的回归结果,实现了端到端的多任务训练。

3. Faster R-CNN

3.1 问题背景

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

3.2 创新点

(1)设计 Region Proposal Networks(RPN),利用 CNN 卷积操作后的特征图生成候选区,代替了Selective Search、EdgeBoxes 等方法,速度上提升明显;

(2)训练 Region Proposal Networks 与检测网络(Fast R-CNN)共享卷积层,大幅提高网络的检测速度。

3.3 框架模块

(1)PRN + Fast R-CNN

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

3.4 训练流程

四步交替训练:

(1)训练PRN:使用 ImageNet-pre-trained model 初始化,针对 region proposal 任务微调

(2)用第一步得到的 PRN 训练 Fast R-CNN:其中 Fast R-CNN 也用 ImageNet-pre-trained model 初始化(此时两个网络还没有共享特征)。

(3)用 Fast R-CNN 初始化 PRN:固定共享的卷积层,仅微调 RPN 特有的层(此时两个网络开始共享)

(4)在保持共享卷积层固定不变的情况下,微调 Fast R-CNN 的特有层。(两个网络共享相同的卷积层并形成统一的网络)

3.5 检测流程

(1)输入一张多目标图像

(2)图像经过 CNN 网络生成特征图

(3)特征图分两路,一路经过 PRN 得到候选区域(经过 NMS ),另一路继续向后传播。

(4)上一步得到的高维特征图和区域建议同时输入 RoI 池化层,提取对应区域建议的特征

(5)区域特征通过全连接层后,输出该区域的分类得分以及回归后的 bounding-box

五、总结

人工智能面试

人工智能在计算机领域内,得到了愈加广泛的重视。并在机器人,经济政治决策,控制系统,仿真系统中得到应用。发展前景很可观,有对人工智能感兴趣的同学就赶快学习起来吧。以上就是小编今天为大家整理发布的“rcnn、fast-rcnn和faster-rcnn三者的区别”一文,希望为正在学习人工智能的朋友提供学习参考,更多人工智能面试尽在开课吧广场人工智能面试频道!

有用
分享
全部评论快来秀出你的观点
登录 后可发表观点…
发表
暂无评论,快来抢沙发!
AI项目实战精讲