目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

数据摘要来自
B站大佬:霹雳吧啦Wz
csdn大佬:gentelyang以及小白的深度学习之路以及shenxiaolu1984以及嘟嘟_猪
注:本文用于学习和记录笔记。如有错误或侵权,请指出;如果有看不懂的部分,可以到上面博主的文章中查看更详细的说明,还有更详细的视频讲解。

一、RCNN

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

1. 介绍

RCNN(Regin with CNN feature)由Ross Girshick提出,很大程度的提升了识别效率,是卷积神经网络应用于目标检测问题的一个里程碑的飞跃。具有良好的特征提取和分类性能,采用RegionProposal方法实现目标检测问题。

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

2. 步骤流程

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

  1. 使用区域建议 (Region Proposal) 生成候选区域(使用Select Search算法,简称SS算法)→矩阵框
  2. rescale将图片缩放到相同的尺寸,然后每个候选区域逐个放入深度网络中提取特征(图片分类网络→特征向量)
  3. 特征送入SVM分类器中,判别二分类的类别,然后使用
    非最大抑制
    删除重叠框
  4. 使用bbox边界回归器修正候选框位置→最小二乘积解决回归问题,即候选框映射到实际框的回归

注意,上面的主要步骤将第三大步分为两小部分,分别为3. 和 4.

3. 部分详解

非最大抑制
先了解IoU(Intersection over Union)= (A ∩ B) / (A ∪ B)
目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

重叠proposal box的非最大抑制剔除过程:

  • 找到二进制分类框架中得分最高的目标
  • 计算它与其他目标的IoU值
  • 删除大于设定阈值的目标
  • 回到第一步,遍历所有目标后得到最好的建议框

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

4. 缺点

  1. 候选框之间有重叠,提取特征操作是多余的
  2. 对于传统cnn,需要标准化图像输入,这种图片的形变会导致特征量减小或损失
  3. 训练速度繁琐,每个操作独立(需要训练图像分类网络,svm分类器,bbox边界框回归器)
  4. 占用大量磁盘空间提取多个候选区域的图像

二、Fast RCNN

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

1. 介绍:

Fast RCNN 由 Ross Girshick 在RCNN的基础上改进,提升了测试和训练速度。从框架上比较,将三大步骤提升为两步骤,有效解决了输入图片尺寸不一致,占用内存大等问题。注意,下面的主要步骤将第二大步分为两小部分。

2. 步骤流程

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

  1. 候选区域生成方法不变,即ss算法随机采样获得候选框。
  2. 将尺寸不一的整幅图输入cnn,获得特征图;将候选区域映射到特征图feature map中得到特征矩阵
  3. 特征矩阵通过
    ROI Pooling层
    (最大池化下采样,不限制输入尺寸大小)缩放到固定尺寸的特征图,展平+两个全连接得到RoIfeature vector;然后并行分别操作全连接层,一个使用
    softmax loss分类器
    得到类似的概率,a
    bbox边界框回归器
    训练。

3. 部分详解

3.1ROI Pooling层
将候选区域分成m*n个快。针对每个快执行最大池化下采样操作,是的特征映射上不同大小的候选区域变为尺寸大小的特征向量,然后传入下一层。好处:不限制输入图像的特征,yyds

3.2softmax loss分类器
输出N+1个类别的概率,1为背景部分,即有N+1个节点。
符合概率分布,和为1

3.3bbox边界框回归器
输出对应N+1个类别的候选边界框回归参数,即框的真实坐标位置,共(N+1)x4个节点
目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

3.4Fast RCNN 损失函数-Multi-task loss

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

3.4.1 Fast RCNN分类损失函数

  • 分类损失 = softmax的交叉熵损失
    目标检测 | RCNN算法汇总+详解(包括Fast, Faster)
    目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

3.4.2 边界框回归损失
目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

  • 其中,[u≥1]是艾弗森括号,即if u ≥ 1,[u≥1] =1;if u < 1,[u≥1] =0。解释:当为1时,即候选框为目标,可以进行边界框回归损失,当为0,即候选框为背景,不用继续进行。
  • 当结束回归损失后,可以进行反向传播来训练整个fast rcnn网络。

更多损失对比详细可见:《回归损失函数1:L1 loss, L2 loss以及Smooth L1 Loss的对比》

4. 比较

相比RCNN,主要有以下不同:

  1. ※最后一层卷积层后增加了一个 ROI Pooling layer,不需要进行尺度变化,避免像素的损失和特征损失
  2. ※损失函数使用多任务损失函数,即 Multi-task loss
  3. 整张图片输入CNN
  4. 类判断和位置回归同意用深度网络实现,不需要额外的存储

三、Faster RCNN

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

1. 介绍

Faster RCNN是作者的升级版本,目标检测的四个基本步骤(候选区域生成,特征提取,分类,位置精修)终于被统一到一个整体,即深度网络框架之内。它同样使用VGG16作为网络主干,推理速度和准确率有了很大的提升,在当时各种竞赛中获得多个项目的第一名。

特征:

  • Faster RCNN 由两个模块组成的:RPN区域生成网络候选框提取模块+Fast RCNN分类和回归检测模块。
  • 因为仍需要先生成候选区域,再进行分类,所以它仍被划分在两阶段(two-stage)的目标检测网络。
  • 将RPN(region proposal network)替代SS算法。

2. 步骤流程

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)
实施整合训练和预测的端到端流程。

  1. 图片输入网络得到特征图,即feature map
  2. 采用
    RPN
    网络生成候选框(图中三个灰框),投影到特征图上得到对应的特征矩阵(图中黑框三个白框)
  3. 每个特征矩阵通过ROI Pooling层缩放到规定一致的特征图(7×7),将特征图展平通过一系列全连接层得到预测结构

3. 部分详解

3.1候选区域/c窗口 anchor锚点
特征可以看做一个尺度51×39的256通道图像(基于ZF网络的backbone),对于该图像的每一个位置,考虑9个可能的候选窗口:三种面积{128×128,256×256,515×512} × 三种形状{1:1,1:2,2:1}。
下图表示出尺度为51×39个anchor中心,以及3×3=9种的anchor示例。
目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

在整个faster RCNN算法中,有三种尺度。
原始图像比例:原始输入的大小。不受任何限制,不影响性能。
归一化尺度:输入特征提取网络的大小,在测试时设置,源码中opts.test_scale=600。anchor在这个尺度上设定。这个参数和anchor的相对大小决定了想要检测的目标范围。
网络输入尺度:输入特征检测网络的大小,在训练时设置,源码中为224*224。

3.2RPN(region proposal network)
RPN是全卷积神经网络,其内部与普通卷积神经网络不同之处在于是将CNN中的全连接层变成卷积层。

操作如下:
目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

RPN的实现方式:在conv5-3的卷积feature map上用一个nn的滑窗(论文中作者选用了n=3,即33的滑窗)生成一个长度为256(对应于ZF网络)或512(对应于VGG网络)维长度的全连接特征。然后在这个256维或512维的特征后产生两个分支的全连接层:

  • reg-layer,用于预测proposal的中心锚点对应的proposal的坐标x,y和宽高w,h;
  • cls-layer,用于判定该proposal是前景还是背景.sliding window的处理方式保证reg-layer和cls-layer关联了conv5-3的全部特征空间.事实上,作者用全连接层实现方式介绍RPN层实现容易帮助我们理解这一过程,但在实现时作者选用了卷积层实现全连接层的功能。
    目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

全连接层本来就是特殊的卷积层,如果产生256或512维的fc特征,事实上可以用Num_out=256或512, kernel_size=3×3, stride=1的卷积层实现conv5-3到第一个全连接特征的映射.然后再用两个Num_out分别为2×9=18和4×9=36,kernel_size=1xx1,stride=1的卷积层实现上一层特征到两个分支cls层和reg层的特征映射。

这里2×9中的2指cls层的分类结果包括前后背景两类,4×9的4表示一个Proposal的中心点坐标x,y和宽高w,h四个参数.采用卷积的方式实现全连接处理并不会减少参数的数量,但是使得输入图像的尺寸可以更加灵活。在RPN网络中,我们需要重点理解其中的anchors概念,Loss fucntions计算方式和RPN层训练数据生成的具体细节。

3.3损失函数

3.3.1anchors的标点方法
正样本校准规则:

  • 如果Anchor对应的reference box与ground truth的IoU值最大,标记为正样本
  • 如果Anchor对应的reference box与ground truth的IoU>0.7,标记为正样本
  • 对于一些极端情况,例如所有的Anchor对应的reference box与groud truth的IoU不大于0.7,可以采用第一种规则生成

负样本校准规则:

  • 如果Anchor对应的reference box与ground truth的IoU<0.3,标记为负样本

其余的既不是正样本也不是负样本,直接去掉,不用于最终训练

3.3.2 RPN多任务损失函数(RPN Multi-task Loss)

RPN Multi-task Loss=classification loss (即softmax loss)+ regression loss (即L1 loss)
目标检测 | RCNN算法汇总+详解(包括Fast, Faster)
目标检测 | RCNN算法汇总+详解(包括Fast, Faster)
3.3.3 Fast R-CNN 多任务损失函数(Fast R-CNN Multi-task Loss)
目标检测 | RCNN算法汇总+详解(包括Fast, Faster)
这里的Fast R-CNN 多任务的分类损失和边界框回归损失已经讲过了,跟上面的是一致的。

4. 缺点

  • 无法实时检测
  • 虽然简化了运行内存,但是每个候选框的分类计算量还是很大的

4.整体比较

目标检测 | RCNN算法汇总+详解(包括Fast, Faster)

版权声明:本文为博主刺猬文川Zivid原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/Zivid_Liu/article/details/123228058

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年3月3日
下一篇 2022年3月3日

相关推荐