深度学习-目标检测(二)Fast R-CNN

发布于:2024-09-18 ⋅ 阅读:(28) ⋅ 点赞:(0)

一:Fast R-CNN

Fast R-CNN 是一篇由Ross Girshick 在 2015 年发表的论文,题为 “Fast R-CNN”。这篇论文旨在解决目标检测领域中的一些问题,特别是传统目标检测方法中存在的速度和准确性之间的矛盾。

  论文摘要:本文提出了一种基于快速区域的卷积网络方法来处理目标检测。快速 R-CNN 建立在以前的工作,有效地分类目标建议使用深卷积网络。与以往的工作相比,快速 R-CNN 采用了一些创新,以提高训练和测试速度,同时也提高了检测的准确性。快速 Fast 训练非常深的 VGG16网络比 R-CNN 快9倍,测试速度快213倍,并在 PASCAL VOC 2012上获得更高的 mAP。与 SPPnet 相比,Fast R-CNN 训练 VGG16的速度快3倍,测试速度快10倍,而且更准确。

回顾一下RCNN:

1.获取候选区域:对于一张输入的图像,首先使用selective search算法获取2000个左右的候选区域,由于selective search生成的候选区域是大小不一致的区域,而后续的卷积神经网络中的全连接层需要保证固定大小的输入,因此在输入卷积网络之后将其缩放至固定大小的图像;

2.获取图像特征:将图像输入到卷积神经网络中获取图像特征,这一部分可以采用常用的图像卷积神经网络如VGGNet,AlexNet等。

3.获取区域类别:在初步获得目标的位置之后,需要获取目标的类别,这一步采用SVM分类器来判断当前区域属于哪个类别。

4.微调区域位置:尽管候选区域已经初步目标的位置,但是这个区域比较粗糙,因此使用回归器对区域位置进行微调

1.对于R-CNN改进:

1.提出一个Rol pooling,然后整合整个模型,把CNN、SPP变换层‘分类器’bbox回归几个模块一起训练

2.步骤:

1.将整个图片输入到一个基础卷积网络,得到整张图片的feature map (特征图)

2.将region proposal(Rol候选区域)映射到feature map中

3.Rol pooling layer(感兴趣区域池化)提取一个固定长度的特征向量,每个特征会输入到一系列全连接层,得到一个Rol特征向量(整个步骤是对每一个候选区域都会进行同样的操作)。其中一个全连接层是一个softmax层进行分类,输出类别有K个类别加上"背景"类,另外一个是bounding box regressor(对边框处理的)

4.对第三步输出的分类和边框进行非极大值抑制,得到最终结果

3.Rol pooling

 ROI Pooling有两个输入,一个是图片进入CNN后的特征图,另一个是区域的边框。ROI 的输出是一个region_nums x channels x W x H的向量。

RoI池层使用最大池化将任何有效的RoI区域内的特征转换成具有H×W的固定空间范围的小feature map,其中H和W是超参数 它们独立于任何特定的RoI。

例如:VGG16 的第一个 FC 层(全连接层)的输入是 7 x 7 x 512,其中 512 表示 feature map 的层数。在经过 pooling(池化) 操作后,其特征输出维度满足 H x W。假设输出的结果与FC层要求大小不一致,对原本 max pooling 的单位网格进行调整,使得 pooling 的每个网格大小动态调整为 h/H,w/W, 最终得到的特征维度都是 HxWxD。

它要求 Pooling 后的特征为 7 x 7 x512,如果碰巧 ROI 区域只有 6 x 6 大小怎么办?每个网格的大小取 6/7=0.85 , 6/7=0.85,以长宽为例,按照这样的间隔取网格:[0,0.85,1.7,2.55,3.4,4.25,5.1,5.95],取整后,每个网格对应的起始坐标为:[0,1,2,3,3,4,5]

 三:R-CNN、SPPNET、Faslt R-CNN效果对比

 其中有一项指标为mAP,这是一个对算法评估准确率的指标,mAP衡量的是学出的模型在所有类别上的好坏

四:总结

缺点:使用Selective Search提取Region Proposals,没有实现真正意义上的端对端,操作也十分耗时


网站公告

今日签到

点亮在社区的每一天
去签到