赞
踩
R-CNN系列(R-CNN,fast-RCNN,faster-RCNN)是使用深度学习进行物体检测的鼻祖论文,其中fast-RCNN 以及faster-RCNN都是延续R-CNN的思路。
R-CNN新提出了CNN卷积特征提取方法和微调。
R-CNN全称region with CNN features,其实它的名字就是一个很好的解释。用CNN提取出Region Proposals中的featues,然后进行SVM分类与bbox的回归(定位置)。
【RCNN网络结构】
重要思想:
(1)通过专门模板去生成候选框(RPN),寻找前景以及调整边界框(基于锚框)
(2)基于之前生成的候选框进行进一步分类以及调整边界框(基于建议框)
具体步骤:
1.一张图像生成1k~2k个候选区域(使用Selective Search方法)
2.对每个候选区域,使用深度网络提取特征(CNN)
3.特征送入每一类的SVM分类器,判别是否属于该类(SVM)
4.使用回归器精细修正候选框位置
步骤详解:
1.测试速度慢
2.训练速度慢(过程复杂,cnn、svm、回归网络都要训练)
3.训练所需空间大
1.如何用CNN定位目标
2.标注数据太少,使用迁移学习的思想(微调)
关于迁移学习(微调):什么是微调?
图像分类:Image:Net 目标检测:PASCAL VOC
1.在选择图片的时候,会选择比区域大16个像素的图片,这样边缘信息也会利用上。在卷积的时候信息可能丢失。实验证明扩充16个像素 效果会更好
2.最后分类会多出来一类,这一类代表的是背景类。
3.CNN和SVM使用不同的正负样本划分方法。类别分类器使用0.3的阈值
4.可视化学习的特征:高层提取的特征高层每一个不同的通道,学习的就是不一样的东西。eg:1学的是人,2学的是点状
5.R-CNNBB(Bounding box regression)边界框回归
这是RCNN定准确定位的关键,定位正确的位置什么是R-CNNbb?
6.这里的△x,△y…都是通过训练SVM模型实现回归任务得到的。
上述公式预测的是△x,△w,而作者预测的是dx,dw,这是为什么?
1.因为△w是宽放大的比例,这里只可能为正数,但是通过svm模型预测出来的可能存在负数。通过先预测出来dw (也可能是正负),那么通过exp的函数一定是正数即可保证△w为正数。
2.如下图所示,当使用d计算的话,对于两张相同预测和真实之间的损失函数的值相同。
Fast R-CNN是作者Ross Girshick继R-CNN后的又一力作。同样使用VGG16作为网络的backbone,与R-CNN相比训练时间快9倍,测试推理时间快213倍,准确率从62%提升至66%(再Pascal VOC数据集上)。
注意:
这里与RCNN有明显的不同,RCNN是独立的四步,这里只有两步,所以大大加快了训练速度。
1.一张图像生成1K~2K个候选区域(使用Selective Search方法)
2.将图像输入网络得到相应的特征图,将SS算法生成的候选框投影到特征图上获得相应的特征矩阵
3.将每个特征矩阵通过ROI pooling层缩放到7x7大小的特征图,接着将特征图展平通过一系列全连接层得到预测结果
注意:
与RCNN在第二步有所不同,RCNN是把候选框送入CNN,而fast-RCNN是把整张图片送进去。
1.正样本就是感兴趣的部分,负样本就是没有我们需要的样本(可以理解为背景)
2.训练的时候不是用ss算法中的全部候选框
,只是使用了一部分:只要候选框和我们的真实的目标边界框的iou大于0.5,那么就认为是正样本,不是所有的正样本都会被使用,也是随机选择使用的。
3.RoI Pooling Layer
1.训练是多阶段的
2.训练需要大量的空间和时间
3.因为每张图片需要2000个候选框,所以训练的很慢
主要原因:R-CNN需要一个CNN前向传播,但是没有使用到共享计算。这里使用SPPnet的思路
下边介绍一下SPPnet引入的新思想 什么是SPPnet?
这里使用到sppnet思想空间金字塔池化层
和RCNN的区别
RCNN一般使用的是3*3步长为2的最大池化层,spp层就是限制了输出的尺寸,动态池化控制输出尺寸,不需要想RCNN限制输入图片的尺寸了
。
新思想:
不传候选区域,直接传整张图片。这一块解决了上述CNN因为候选框太多处理图片慢的问题。
缺点:
无法更新空间金字塔池化之前的卷积层
1.mAP高于R-CNN、SPPnet
2.训练是单阶段的,使用多任务损失
3.训练可以更新所有网络层 (包括卷积层和全连接层)
4.特性缓存不需要磁盘存储
RoI层只是SPPnets中使用的空间金字塔池化层的特殊情况,其中只有一个金字塔层。
有两个目标,一个目标大,一个小,如果都能被识别,证明模型有很好的尺度不变性。
对于检测,要处理的roi数量很大,并且近一半的前向通过时间花在计算全连接层上
中间的对角矩阵,左上的最重要,右下的相对不重要,故取左上一部分。把nn 变tt.相当于把n压缩到t,压缩的越多,后续的参数越少。
1.sppnet只微调全连接层,把卷积层全部冻结。
fastrcnn证明了微调卷积层也是很重要的,实验证明调越靠前的卷积层,效果会更好。
2.多任务训练能提高平均精度。
3.多尺度训练能提高平均精度。
4.大量的训练数据能提高平均精度。
5.使用softmax替换SVM能提高平均精度。
6.使用更多的候选框不一定能提高平均精度。会出现先上升再向下的趋势
7.不需要再单独训练分类器和边界框回归器了
Faster RCNN 是作者 Ross Girshick 继 RCNN 和 Fast RCNN后的又一力作。同样使用 VGG16作为网络的backbone,推理速度在GPU上达到5fps(包括候选区域的生成),准确率也有进一步的提升。在2015年的ILSVRC以及cOco竞赛中获得多个项目的第一名。
Faster RCNN = RPN + Fast RCNN
RPN 是指 Region Proposal Network,建议区域生成网络。 Faster RCNN 中用 RPN 来代替了 Fast RCNN 中的SS算法。
(1)将图像输入网络得到相应的特征图。
(2)使用RPN网络生成候选框,将RPN生成的候选框投影到特征图上获得ROI区域的特征矩阵。
(3)将每个ROI区域的特征矩阵通过 ROI pooling 层缩放到7x7大小的特征图,接着将特征图展平为vector,之后通过一系列全连接层得到预测结果。
图中的 conv feature map 是图像输入网络得到相应的特征图,通过sliding window处理之后产生一个256-d的一维向量。该向量通过两个全连接层,分别输出分类概率scores和边界框回归参数coordinates,其中k是指 k个 anchor boxes,2k个scores是每个 anchor box 分别为前景和背景的概率(注意这里只区分前景和背景,所有的类别都归为前景),4k个coordinates是因为每个anchor box 有四个参数。
注意
2k cls的2分别代表是背景不是背景
4k reg的4代表中心坐标、宽、高
anchor不是候选框(Proposal),后面会提到二者的区别。
我们在特征图中找一个点,就可以在原图中找到对应的一个像素点,以该像素点为中心,画出9个不同大小和长宽比的框,称为anchor 。如下图所示,这些anchor里面可能包含目标,也可能没有目标。因为我们在一张图中想找的的目标的大小和长宽比并不是固定的,所以这里用9个不同大小和长宽比的anchor来进行预测。
注意
这里要做特征图向原图的映射
如果找?
x = 原图的宽度/特征图的宽度(取整)* 3 (x = 步距 * 滑动窗口大小)
y = 原图的高度/特征图的高度(取整)* 3 (y = 步距 * 滑动窗口大小)
为什么是9个anchor呢?
论文中给出了每个anchor的面积和长宽比:
所以特征图中的每个位置在原图中都会生成 33=9 个anchor,如下图所示,蓝色的三个anchor是面积为128128的,红色是面积为256256的,绿色是512512的。
如何计算感受野?
论文细节
对于一张 1000x600x3 的图像(三通道),用3x3的卷积核进行特征提取得到60x40的特征图,则共有 60x40x9 (约2w个)个anchor。忽略超过图片边界的 anchor 后,剩下约 6000 个anchor。
对于这6000 个 anchor,通过RPN生成的边界框回归参数将每个 anchor 调整为proposal(前面提到了每个anchor经过RPN都输出2个概率和4个边界框回归参数),这里就能看到anchor和proposal的区别。这个过程就是 RPN 生成候选框的过程。
RPN 生成的候选框之间存在大量重叠,基于候选框的cls得分,采用非极大值抑制,IoU设为0.7,这样每张图片只剩下 2000 个候选框。
Faster RCNN 在Fast RCNN的基础上更进一步,将候选框生成也融入到CNN网络中,使得 候选框生成、特征提取、候选框分类、候选框边界回归这四大部分都结合在一个CNN网络中,避免了分步训练,实现了真正端到端的目标检测。
1)与目标框相交最大的anchor 2)IOU>0.7的anchor
1)交替训练本篇论文使用的就是交替训练
2)近似联合训练存在的问题:RPN在反向传播时,不能计算偏导数。所以求出来的值只是一个近似值。
3)非近似联合训练
1)单独训练RPN网络
2)单独训练RCNN网络,并且使用第1步训练的RPN网络
3)使用RCNN网络初始化RPN网络(这里固定了卷积层,仅仅微调了RPN独有的结构)
4)固定了卷积层,仅仅微调了RCNN独有的结构
ZF感受野171
VGG感受野228
为什么能预测的比感受野更大?
根据可见部分,可以粗略预测(人们在看东西的时候,也可以根据已知推未知)
1)coco数据集上小目标图像比较多
2)RPN上只跑了300个候选区域(通过实验所得)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。