Faster RCNN 学习笔记

发布时间:2022-12-19 19:00

本文主要参考B站up霹雳吧啦Wz的视频结合原论文整理笔记所得1.1Faster RCNN理论合集_哔哩哔哩_bilibili本视频合集用于讲解Faster R-CNN原理部分,从R-CNN -> Fast R-CNN -> Faster R-CNNhttps://www.bilibili.com/video/BV1af4y1m7iL?spm_id_from=333.999.0.0

R-CNN

1.1 简介

        R-CNN((Region with CNN feature 基于区域的卷积神经网络))是利用深度学习进行目标检测的开山之作,其作者Ross GIRshick多次在PASCAL VOC的目标检测竞赛中获得冠军

        原论文:Rich feature hierarchies for accurate object detection and semantic segmentation(2014) http://fcv2011.ulsan.ac.kr/files/announcement/513/r-cnn-cvpr.pdf

Faster RCNN 学习笔记_第1张图片

        R-CNN:selective search(SS)+ CNN + L-SVM的检测器

算法基本流程:

        1.一张图像生成1k-2k个候选区域(SS算法)

        2.对每个候选区域,使用深度网络提取特征

        3.特征送入每一类的SVM分类器,判别是否属于该类

        4.使用回归器精细修正候选框位置

1.2 候选区域的生成

        利用SS进行图像分割得到原始区域,使用合并策略合并成层次化的区域结构(其中包含着可能需要的物体)

        selective search:首先通过区域划分算法,将图片划分成很多小区域,再通过相似度和区域大小不断的聚合相邻小区域,并删除与合并后的区域相似度高的区域,不断迭代,最终生成1k-2k个候选区域

1.3 CNN提取特征

Faster RCNN 学习笔记_第2张图片        

        将2k个候选区域从图片上裁剪下来,将候选区域统一缩放至227X227,将其传入AlexNet网络,使用深度网络提取特征,得到4096维特征向量,并保存下来。

1.4 SVM分类

        将所有特征传进SVM分类器进行分类训练,得到每个候选框的是某个类别的得分。最后对候选框使用非极大值抑制(nms)去除重叠候选框

Faster RCNN 学习笔记_第3张图片

        nms:

                1.寻找得分最高的目标

                2.计算其他目标与该目标的iou值

                3. 删除所有iou值大于给定阈值的目标

                4.重复上述过程,直到所有预测要么被选中,要么被删除

1.5 回归器修正预测框位置

  1. 处理后的候选框进一步筛选(保留与真实框iou大于阈值的候选框)

  2. 使用最小二乘法进行线性回归拟合,拟合出进行回归后的预测窗口

Faster RCNN 学习笔记_第4张图片

        如果直接回归绝对坐标,由于不同真实框之间坐标差距可能过大,会导致模型训练不稳定,并且对于小框而言,轻微的坐标数值上的偏移,导致视觉上极大的预测偏差,因此直接预测真实坐标所产生的loss并不能真正反映预测框的好坏。因此需要对真实坐标做一个类似归一化的操作,使其获得分布更均匀且易于拟合的偏移量,起到一种正则的效果

Faster RCNN 学习笔记_第5张图片

                        fd79e031634ea61d9ce4a962f8f3dd62.gif : 与预测位置相关的 4 维向量(对应于[x, y, w, h])

                        060c4025641faf7b4253310286fa2144.gif: 与ground truth位置相关的 4 维向量

1.6 总结

        R-CNN对图像选取若干候选区域,使用卷积神经网络对每个候选区域执行前向传播以抽取其特征,然后再用这些特征来预测候选区域的类别和边界框

Faster RCNN 学习笔记_第6张图片

R-CNN缺点:

  1. 测试速度慢:检测一张图片需53s(CPU)。用SS算法提取候选框需2s,且候选框存在大量重叠、提取特征冗余。

  2. 训练过程极其繁琐、训练速度慢

  3. 训练所需空间大:如利用VGG16从VOC2007训练集上的5k图像上提取特征再保存到磁盘,以供后续的SVM和bbox回归训练就需要数百GB的存储空间

2. Fast-RCNN

2.1 简介

        作者Ross Girshick对R-CNN的改进工作,与R-CNN使用相同的backbone(VGG-16)的前提下,训练速度快9倍,推理速度快213倍,准确率从62%提升到66%(VOC数据集)

        原论文:Fast-RCNNhttps://arxiv.org/pdf/1504.08083.pdf

Faster RCNN 学习笔记_第7张图片

算法流程:

  1. 一张图像生成1k~2k个候选区域(使用SS算法)

  2. 将图像输入网络得到相同的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵

  3. 将每个特征矩阵通过ROI pooling层缩放为7x7大小的特征图,接着通过一系列全连接层得到预测结果

2.2 候选框映射提取特征

        与R-CNN分别提取特征不同不同,Fast-RCNN是将候选框映射到整张图片经过backbone后的feature map上,提取相应的候选区域特征(ROI),避免了重复的冗余计算。

Faster RCNN 学习笔记_第8张图片

        同时,Fast-RCNN并不使用SS算法计算出的所有候选框,对于1k~2k个候选区域,只随机采样64个候选区域,并将与真实框IOU大于0.5的候选区域作为正样本,小于0.5的作为负样本

2.2 ROI Pooling

Faster RCNN 学习笔记_第9张图片

简单来说,就是将候选框映射到feature map上的ROI划分成7x7=49个子区域,然后对每个子区域进行max pooling,这样feature map就变成了7x7

2.3 分类与回归预测

由于引入了负样本,所以需要新增一个背景类

Faster RCNN 学习笔记_第10张图片

Faster RCNN 学习笔记_第11张图片

训练时使用多任务损失联合训练:

Faster RCNN 学习笔记_第12张图片

2.4 总结

Faster RCNN 学习笔记_第13张图片

        相比与R-CNN,Fast-RCNN仅在整张图象上执行卷积神经网络的前向传播分类,大大减少了冗余计算,还引入了ROI pooling,从而为具有不同形状的兴趣区域抽取相同形状的特征;并且分类、回归预测都整合到了CNN中,后半部分实现了端对端的训练与预测。

        此时耗时瓶颈主要在SS算法提取候选框上。

3. Faster-RCNN

3.1 简介

        Faster-RCNN是作者Ross Girshick对Fast RCNN的改进,同样使用Vgg16作为backbone,推理速度可达5fps(在当时的gpu上),准确率也进一步提升,获得了2015 ILSVRC竞赛、COCO竞赛的目标检测冠军。

        原论文:Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks(https://arxiv.org/pdf/1506.01497.pdf)

        为了较精确地检测目标结果,Fast R-CNN模型通常需要在选择性搜索中生成大量的提议区域。 Faster R-CNN 提出将选择性搜索(SS算法)替换为区域建议网络(region proposal network),从而减少候选区域的生成数量,并保证目标检测的精度。

Faster RCNN 学习笔记_第14张图片

Faster RCNN = RPN+ Fast R-CNN

算法流程:

  1. 将图像输入网络得到相应的特征图

  2. 使用RPN生成候选框,将RPN生成的候选框投影到特征图上得到相应的特征矩阵

  3. 将每个特征矩阵通过ROI pooling层,统一缩放到7x7的特征图

  4. 最后通过一系列全连接层得到预测结果

3.2 RPN

Faster RCNN 学习笔记_第15张图片

RPN计算步骤:

  1. 使用padding为1的3×3的卷积层变换卷积神经网络的输出,并将输出通道数记为c(256-d)。这样,卷积神经网络为图像抽取的特征图中的每个单元均得到一个维度为c的新特征。

  2. 以特征图的每个像素为中心,计算出中心点对应原始图像上的点,以该点为中心,生成k个不同大小和宽高比的锚框。

  3. 使用锚框中心单元维度为c的特征,分别预测该锚框的二元类别(含目标还是背景)和边界框。

  4. 使用非极大值抑制,从预测类别为目标的预测边界框中移除相似的结果。最终输出的预测边界框即是ROI pooling层所需的候选区域。

3.3 总结

Faster RCNN 学习笔记_第16张图片

        Faster R-CNN将Fast R-CNN中使用的选择性搜索替换为参与训练的RPN,这样后者可以在减少提议区域数量的情况下仍保证目标检测的精度

        RPN作为Faster R-CNN模型的一部分,是和整个模型一起训练得到的。 也就是说,Faster R-CNN的目标函数不仅包括目标检测中的类别和边界框预测,还包括RPN中锚框的二元类别和边界框预测。 作为端到端训练的结果,RPN能够学习到如何生成高质量的候选区域,从而在减少了从数据中学习的候选区域的数量的情况下,仍保持目标检测的精度

Faster RCNN 学习笔记_第17张图片

        综上,可以看到R-CNN到Fast-RCNN再到Faster-RCNN,就是把一个个不属于CNN的部分改进到CNN中,从而使得计算上更加高效,形式上更加简洁。最终使得所有的计算过程都在同一个语义空间内,实现了整体上端对端的训练。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号