目标检测总结(r-cnn,fast r-cnn,faster r-cnn)

忙了一学期的课题组项目,现在终于可以抽出点时间将以前的学习总结于此。

目标检测顾名思义既要在图片中圈中目标,又要知道圈出的是何物。是一种分类加回归的方法。
在这里插入图片描述
目标检测主要分为两大类:two-stages(r-cnn,fast r-cnn,faster r-cnn等 需要先在图片中选出候选区,再进行判断);one-stage(yolo,ssd等 直接将图片放入网络中得出结果)。本篇文章将对r-cnn,fast r-cnn,faster r-cnn进行学习总结,日后再学习YOLO等算法。下文如有不正确之处,请您指正。

R-CNN总结学习

基本原理:在图片上提取很多目标候选框,再通过深度CNN网络提取每个候选区域的深度特征,训练SVM分类器来对这些特征进行分类,最后通过边
界框回归算法重新定位目标边界框。整体过程如下图所示:
在这里插入图片描述
目标检测步骤:
1、利用selective search算法在一张图片上生成2k个候选框;在这里插入图片描述
2、将每个候选框(Region Proposal)缩放为227x227的大小然后输入到Alex-net中,通过CNN的提取,输出一个4096维的特征向量。产生的特征向量用来分类和回归。
3、SVMS(21个SVM分类器)20个目标+背景。与softmax作用一样,准确率要高。
4、目标候选区域不一定完全准确,需要做边框回归(Bounding-Box
Regression),这样能使目标定位更加准确。

以上便为R-CNN目标检测的流程,在训练过程中如何选择训练正负样本,涉及到IOU的概念:通过IOU(重叠度)来对候选区域进行标注,如果IOU>0.5,则此候选框的类别和实际框的类别一致;如果IOU<0.5,则此目标候选区域被判定为背景。
在这里插入图片描述
R-CNN的缺点:
1、速度慢:因为候选窗体有重叠,将每个候选窗输入到CNN提取特征时冗余。
2、训练所需空间大:独立的分类器和回归器需要大量特征作为训练样本。

Fast r-cnn

在这里插入图片描述目标检测步骤:
1、任意size图片输入CNN网络,经过若干卷积层与池化层,得到特征图;
2、在任意size图片上采用SS算法(和r-cnn一样)提取约2k个建议框;
3、根据原图中建议框到特征图映射关系,在特征图中找到每个建议框对应的特征框(深度和特征框一致),并在ROI池化层中将每个特征框池化到HW的size;
4、固定H
W大小的特征框经过全连接层得到固定大小的特征向量;
5、第四步所得特征向量经由各自的全连接层,分别得到两个输出向量:一个是softmax的分类得分,一个是bounding-box窗口回归;

fast r-cnn与r-cnn相比的特点:
1、fast r-cnn要比r-cnn速度快,因为r-cnn在经过ss得出2k个候选框后,将候选框全部输入到cnn网络中,会出现重叠区域多次重复提取特征,这些操作非常耗时、耗空间。而fast-rcnn的做法是将原始图片进行一次CNN特征提取操作,因为selective search算法提取的建议框属于整张图片,因此对整张图片提取出特征图后,再找出相应建议框在特征图中对应的区域,这样就可以避免冗余的特征提取操作,节省大量时间。
2、在最后一个卷积层后加了一个ROI层,目的是使特征尺寸变为一致。经过ROI层后,特征尺寸大小变为H×W。如何将每个建议框对应的特征框池化到H*W的size,首先假设建议框对应特征图中的特征框大小为h×w,将其划分H×W个子窗口,每个子窗口大小为h/H×w/W,然后对每个子窗口采用max pooling下采样操作,每个子窗口只取一个最大值,则特征框最终池化为H×W的size【特征框各深度同理】,这将各个大小不一的特征框转化为大小统一的数据输入下一层。
3、 R-CNN训练过程分为了三个阶段(候选框提取,放入CNN网络中提取4096维特征,进行分类和回归),而Fast R-CNN直接使用softmax替代SVM分类,同时边框回归也加入到了网络中,这样整个的训练过程是端到端的(分类和回归是通过一个联合损失函数来训练的)。

fast r-cnn的缺点:
r-cnn和fast r-cnn在提取候选框的时候都利用selective search的方法,而SS方法在提取时很慢,做不到实时性,因此诞生了速度更快的faster r-cnn。

Faster R-cnn

R-cnn和fast r-cnn在提取候选框的时候都利用selective search的方法,而SS方法在提取时很慢,做不到实时性,faster r-cnn将提取候选框的工作转移到了cnn网络中,通过region proposal network的方法进行提取候选框,除了RPN以外,整个网络结构就是fast r-cnn,因此faster r-cnn的重点在于RPN如何工作。
在这里插入图片描述
Faster r-cnn可以分为四个部分:
1、 Conv-layers
作为一种CNN网络目标检测方法,Faster R-CNN首先使用一组基础的conv+relu+pooling层提取image的feature maps。该feature maps被共享用于后续RPN层和全连接层。
2、 Region Proposal Networks
RPN网络用于生成region proposals。该层通过softmax判断anchors属于foreground或者background,再利用bounding box regression修正anchors获得精确的proposals。
3、 Roi Pooling
该层收集输入的feature maps和proposals,综合这些信息后提取proposal feature maps,送入后续全连接层判定目标类别。
4、 Classification
利用proposal feature maps计算proposal的类别,同时再次bounding box regression获得检测框最终的精确位置。

RPN:
为了生成候选区域,一个小型网络在共享卷积网络的最后一层卷积层的输出特征图进行了滑窗选择。该网络的输入为特征图的一个n×n的窗口。对于每个窗口,同时预测k个目标候选区域,这k个候选区域都和这个窗口有关联,称为anchors。每个anchor都有对应的尺度和比例。卷积特征图中的每一个点都是一个anchor中心,有着k个相对应的anchors。对于一张w×h的卷积特征图,存在着w×h的anchor中心。每个窗口被映射为一个低维的向量。该特征向量随即被传送到两个子网络中:边框回归网络和边框分类网络。边框分类网络输出的是每个anchor属于目标或者背景的概率,对于每个窗口,有2k个输出,即将256维向量映射为2k维向量;而边框回归网络输出的是每个anchor的平移缩放的值,对每个窗口,有4k个输出。
RPN的训练过程是端到端的,采用的优化方法是误差反向传播和SGD方法,损失函数时分类误差和回归误差的联合损失。
在这里插入图片描述
对上文解释:假设经过卷积操作得到最后一层的卷积特征图(大小为40*60),共有256个feature maps,则用一个3×3的滑动窗口在此上进行滑动,每滑动一下就会获得一个256维特征,如上图所示。后边接cls layer(box-classification layer)和reg layer(box-regression layer)分别用于分类和边框回归。3×3滑窗对应的每个特征区域同时预测输入图像3种尺度(128,256,512),3种长宽比(1:1,1:2,2:1)的region proposal,这种映射的机制称为anchor。所以对于这个40×60的feature map,总共有约20000(40×60×9)个anchor,也就预测20000个region proposal。

总结

在这里插入图片描述由上表可以得出的结论:

  1. speed(faster r-cnn>fast r-cnn>r-cnn)
    原因:都是因为提取候选框的方式发生了变化。
  2. mAP(faster r-cnn=fast r-cnn>r-cnn)
    原因:faster r-cnn和fast r-cnn都将分类和回归融入到整个网络中进行联合训练,而r-cnn还是将分类和回归进行分别训练。

有啥理解总结不对的地方请多多指教,谢谢大家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值