三者的处理步骤
先上三者的处理步骤:
RCNN:
1、提取1000-2000个(超参数)的候选框(采用selective search算法);
2、将每个候选框中的图像调整到相同的size;
3、将调整size后的图像(数量与候选框个数相同)输入CNN提取feature;
4、用SVM对每个候选框feature进行分类,判断是否属于某个特定的类(多个二分类器);
5、对于属于某一分类的候选框,用回归器进一步调整其位置。
fast RCNN:
1、提取1000-2000个打候选框(采用selective saerch算法);
2、将整张图像输入CNN提取feature;
3、找到每个候选框在feature map上的映射patch,将此patch作为每个候选框的卷积特征(feature)
4、将候选框卷积特征输入到SPP layer(ROI pooling层)和之后的层;
(SPP:空间金字塔池化,其输入是大小不一的各候选框特征图的尺寸,输出是相同的尺寸)
5、用softmax对每个候选框feature进行分类,判断是否属于某个特定的类;
6、对于属于某一分类的候选框,用回归器进一步调整其位置。
faster RCNN:
1、将整张图输入CNN获取feature map;
2、将feature map输入RPN(region proposal network),获得候选框,以及各候选框的特征信息
(一步到位获得了候选框,以及候选框的特征信息);
3、用softmat对每个候选框feature进行分类,判断是否属于某个特定的类;
4、对于属于某一分类打候选框,用回归器进一步调整其位置。
涉及的几个关键技术和概念
SPP Net
SPP:Spatial Pyramid Pooling(空间金字塔池化)
它的特点有两个:
1.结合空间金字塔方法实现CNNs的对尺度输入。
一般CNN后接全连接层或者分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp,这些预处理会造成数据的丢失或几何的失真。SPP Net的第一个贡献就是将金字塔思想加入到CNN,实现了数据的多尺度输入。一般CNN后接全连接层或者分类器,他们都需要固定的输入尺寸,因此不得不对输入数据进行crop或者warp,这些预处理会造成数据的丢失或几何的失真。SPP Net的第一个贡献就是将金字塔思想加入到CNN,实现了数据的多尺度输入。
如下图所示,在卷积层和全连接层之间加入了SPP layer。此时网络的输入可以是任意尺度的,在SPP layer中每一个pooling的filter会根据输入调整大小,而SPP的输出尺度始终是固定的。
2.只对原图提取一次卷积特征
在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。在R-CNN中,每个候选框先resize到统一大小,然后分别作为CNN的输入,这样是很低效的。
所以SPP Net根据这个缺点做了优化:只对原图进行一次卷积得到整张图的feature map,然后找到每个候选框zaifeature map上的映射patch,将此patch作为每个候选框的卷积特征输入到SPP layer和之后的层。节省了大量的计算时间,比R-CNN有一百倍左右的提速。
ROI Pooling层详解
大牛提出了一个可以看做单层sppnet的网络层,叫做ROI Pooling,这个网络层可以把不同大小的输入映射到一个固定尺度的特征向量.
目标检测typical architecture 通常可以分为两个阶段:
(1)region proposal:给定一张输入image找出objects可能存在的所有位置。这一阶段的输出应该是一系列object可能位置的bounding box。这些通常称之为region proposals或者 regions of interest(ROI)。
(bounding box、region proposals、 ROI 这几个概念等同)
(2)final classification:确定上一阶段的每个region proposal是否属于目标一类或者背景。
这个architecture存在的一些问题是:
-
产生大量的region proposals 会导致performance problems,很难达到实时目标检测。
-
在处理速度方面
-
是suboptimal。
-
无法做到end-to-end training。
这就是ROI pooling提出的根本原因。
ROI pooling层能实现training和testing的显著加速,并提高检测accuracy。该层有两个输入:
- 从具有多个卷积核池化的深度网络中获得的固定大小的feature maps;
- 个表示所有ROI的N*5的矩阵,其中N表示ROI的数目。第一列表示图像index,其余四列表示其余的左上角和右下角坐标;
ROI pooling具体操作如下:
(1)根据输入image,将ROI映射到feature map对应位置;
(2)将映射后的区域划分为相同大小的sections
(sections数量与输出的维度相同;当不能均分时,区域大小可以略有不同,见后文示例);
(3)对每个sections进行max pooling操作;
这样我们就可以从不同大小的方框得到固定大小的相应 的feature maps。值得一提的是,输出的feature maps的大小不取决于ROI和卷积feature maps大小。ROI pooling 最大的好处就在于极大地提高了处理速度。
ROI pooling example
考虑一个88大小的feature map,一个ROI,以及输出大小为22.
(1)输入的固定大小的feature map
2)region proposal 投影之后位置(左上角,右下角坐标):(0,3),(7,8)。
(3)将其划分为(22)个sections(因为输出大小为22),我们可以得到:
(4)对每个section做max pooling,可以得到:
ROI pooling总结: (1)用于目标检测任务; (2)允许我们对CNN中的feature map进行reuse; (3)可以显著加速training和testing速度; (4)允许end-to-end的形式训练目标检测系统。
RPN简介
• 在feature map上滑动窗口
• 建一个神经网络用于物体分类(分类为两种:“候选目标”,“不是目标”)+框位置的回归
• 滑动窗口的位置提供了物体的大体位置信息
• 框的回归提供了框更精确的位置
一种网络,四个损失函数;
• RPN calssification(anchor good.bad)
• RPN regression(anchor->propoasal)
• Fast R-CNN classification(over classes)
• Fast R-CNN regression(proposal ->box)
特征提取器与fine tuning
在目标检测中,会使用VGG、Resnet、zf、Alexnet等基础网络作为特征提取器。然后调用预训练好的网络(输出pool5的feature map,详情参考这篇博客),根据特定任务进行fine-tuning。
(有实验证明:如果不进行fine-tuning,也就是你直接把预训练模型当做万金油使用,类似于HOG、SIFT一样做特征提取,不针对特定的任务。然后把提取的特征用于分类,结果发现p5(pooling layer 5)的精度竟然跟f6(fullconnect layer 6)、f7差不多,而且f6提取到的特征还比f7的精度略高;如果你进行fine-tuning了,那么在rcnn中f7、f6的提取到的特征最后训练的svm分类器的精度就会飙涨)
据此我们明白了一个道理,如果不针对特定任务进行fine-tuning,而是把CNN当做特征提取器,卷积层所学到的特征其实就是基础的共享特征提取层,就类似于SIFT算法一样,可以用于提取各种图片的特征,而f6、f7所学习到的特征是用于针对特定任务的特征。打个比方:对于人脸性别识别来说,一个CNN模型前面的卷积层所学习到的特征就类似于学习人脸共性特征,然后全连接层所学习的特征就是针对性别分类的特征了。
为啥要用SVM分类器
在RCNN中,有一个疑问:CNN训练的时候,本来就是对bounding box的物体进行识别分类训练,是一个端到端的任务,在训练的时候最后一层softmax就是分类层,那么为什么作者闲着没事干要先用CNN做特征提取(提取fc7层数据),然后再把提取的特征用于训练svm分类器?
这个是因为svm训练和cnn训练过程的正负样本定义方式各有不同,导致最后采用CNN softmax输出比采用svm精度还低。
事情是这样的,cnn在训练的时候,对训练数据做了比较宽松的标注,比如一个bounding box可能只包含物体的一部分,那么我也把它标注为正样本,用于训练cnn;采用这个方法的主要原因在于因为CNN容易过拟合,所以需要大量的训练数据,所以在CNN训练阶段我们是对Bounding box的位置限制条件限制的比较松(IOU只要大于0.5都被标注为正样本了);
然而svm训练的时候,因为svm适用于少样本训练,所以对于训练样本数据的IOU要求比较严格:IOU<0.7的都当成负样本(rcnn训练的是svm二分类这里会存在正负样本不均衡情况,要对负样本下采样或者对正样本上采样)。我们只有当bounding box把整个物体都包含进去了,我们才把它标注为物体类别,然后训练svm。
##faster RCNN 详解
https://blog.csdn.net/WZZ18191171661/article/details/79439212