R-CNN网络基础
时间:2022-08-26 17:30:00
1.Overfeat模型
Overfeat该方法使用滑动窗口进行目标检测,即使用滑动窗口和神经网络进行目标检测。滑动窗口使用固定宽度和高度的矩形区域滑动图像,并将扫描结果发送到神经网络进行分类和回归。
例如,要检测汽车,请使用下图中的红色滑动窗进行扫描,并将所有扫描结果发送到网络中进行分类和回归,以获得汽车的最终检测结果。
这种方法类似于暴力穷举,会消耗大量的计算能力,可能会导致窗口大小不准确。
2.RCNN模型
2014年提出R-CNN该网络不再使用暴力穷举,而是使用候选区域方法(region proposal method)创建目标检测区域,完成目标检测任务,R-CNN基于深度神经网络的目标检测模型 ,以R-CNN为基点,后续的Fast R-CNN、Faster R-CNN模型延续了这一目标检测思路。
2.1 算法流程
RCNN如下图所示:
步骤是:
- 生成候选区域:使用选择性搜索(Selective Search)找出图片中可能有目标的候选区域的方法
- CNN网络提取特征:选择预训练卷积神经网络(AlexNet或VGG)用于特征提取。
- 目标分类:训练支持向量机(SVM)为了识别目标对象和背景,每个类别都应该训练一个二元SVM。
- 目标定位:训练线性回归模型,为每个被识别的物体生成更准确的边界框。
2.1.1 生成候选区了解
在**选择性搜索(SelectiveSearch,SS)中**,采用语义分割的方法,将颜色、边界、纹理等信息作为合并条件,采用多尺度的综合方法,将图像划分为像素级的一系列区域,远低于传统滑动窗口差的候选区域。
SelectiveSearch在一张图片上提取出来约2000个侯选区域,需要注意的是,这些候选区域的长度和宽度不固定。 而使用CNN需要接受固定长度的输入来提取候选区域的特征向量,因此需要修改候选区域的尺寸。
2.1.2 CNN网络提取特征
采用预训练模型(AlexNet或VGG)在生成的候选区域提取特征,将提取的特征保存在磁盘中,用于后续步骤的分类和回归。
1.全连接层的输入数据尺寸是固定的,因此在将候选区域输入CNN在网络中,切割或变形为固定尺寸,提取特征。
2.预训练模型在ImageNet数据集获得,最终全连接层为1000,在这里我们需要将其改为N 1(N例如,目标类别的数量VOC数据集中N=20,coco数据集中N=80、1是添加背景)后,可以进行微调。
3.微调后使用CNN网络,提取每个候选区域的特征,获取4096维特征,图像为2万x存储在磁盘中的4096维特性。
2.1.3 目标分类(SVM)
假设我们想测试两种猫和狗,我们需要训练两种不同类型的猫和狗SVM分类器,然后用训练好的分类器分别判断图像中2000个候选区域的特征向量,从而得出[2000, 2]得分矩阵如下图所示:
N类检测任务需要训练N(目标类别数)个SVM分类器对候选区域的特征向量(4096维)进行二次分类,以确定其是某一类别的目标还是背景。
2.1.4 目标定位
通过选择性搜索获得的目标位置不是很准确。实验证明,在给定候选区域的结果上,训练线性回归模型预测一个新的测试窗口,以获得更准确的位置。修正过程如下图所示:
通过训练回归器来调整候选区域的范围。起初,这些候选区域只是通过选择性搜索获得的,调整后获得更准确的位置,如下所示:
2.1.5 预测过程
选择性搜索方法从图片中提取2000个候选区域,并将每个区域输入CNN在网络中提取特征,然后送到SVM中进行分类,并使用候选框回归器,计算出每个候选区域的位置。 有2000个候选区域,需要去除部分检测结果。 对于每个类,通过计算IOU,非最大值抑制NMS方法,保留较好的检测结果。
2.2 算法总结
1练阶段多,训练耗时: 微调CNN网络 训练SVM 训练边框回归器。
2.预测速度慢: 使用GPU,VGG处理一个图像需要47个模型s。
3.占用磁盘空间大:5000张图像产生数百G特征文件。
4.数据形状变化:候选区域应缩放固定大小,目标不能保证不变形
3. Fast RCNN模型
考虑到R-CNN2015年提出了一个改进模型:Fast R-CNN。 相比于R-CNN, Fast R-CNN改进主要有以下三个方面:
1.提高训练和预测的速度
R-CNN首先从测试图中提取2000个候选区域,然后将2000个候选区域输入预训练好的候选区域CNN特征中提取。由于候选区域有大量的重叠,这种提取特征的方法将重复计算重叠区域的特征。在Fast-RCNN输入整个图片CNN提取特征,将候选区域映射到特征图上,避免重复图像区域,提高效率,减少时间。
2.不需要额外的空间来保存CNN网络提取的特征向量
RCNN提取的特征需要保存,用于每个类别的训练SVM分类器和边框回归器。Fast-RCNN统一使用类别判断和边框回归CNN不需要在额外的空间中存储特征。
3.候选区域不直接缩放
RCNN候选区域需要缩放并送入CNN中进行特征提取,在Fast-RCNN中使用ROIpooling调整尺寸的方法。
3.1 算法流程
Fast_RCNN如下图所示:
步骤是:
1、生成候选区域:使用选择性搜索(Selective Search)找出图片中可能有目标的候选区域的方法,只需要候选区域的位置信息
2、CNN提取网络特征:输入整个图像CNN网络中,得到整副图的特征图,并将上一步获取的候选区域位置从原图映射到该特征图上
3、ROIPooling: 每个特征图上的候选框,RoI pooling从特征图中提取向量从特征图中提取,每个特征向量被送入一系列全连接(fc)层中。
4、目标检测:完成分为两部分,一个输出类别加上一个背景类别Softmax概率估计,另一个为每个类别输出四个实数值,以确定目标的位置信息。
3.1.1 生成候选区了解
与RCNN同样,不再重复
3.1.2 CNN提取网络特征
与RCNN特征提取采用预训练模型。
3.1.3 ROI Pooling
候选区域从原图映射到特征图后进行ROIpooling如下图所示:
ROI Pooling使用最大池化将输入特征图中的任何区域候选区对应的区域)中的特征转换为固定的特征?×??特征图,其中?和??是超参数。 对于任何输入×??将候选区域分为?×??每个子网格的大小为:(h/H) x (w/W),将每个子网格中的最大值送入后续网络进行处理。
使用ROI Pooling层替换预训练网络中的最终池化层,并将超参设置为与网络第一个全连接兼容的值,如VGG16,设??=??=7。
3.1.4 目标分类和回归
原网络的最后一个全连接层被两个同级层取代:K 1个类别的SoftMax分类层和边框的回归层。
3.2 模型训练
R-CNN特征提取和检测部分分别进行,Fast R-CNN提出高效的训练方法:多任务训练
Fast R-CNN有两种输出:
-
部分输出在K 离散概率分布分布(每个候选区域),p=(p0,p1,...,pk)p=(p0,p1,...,pk)。通常,通过全连接层K 1个输出上的Softmax计算概率值。
-
另一部分输出由K类中的每个检测框返回偏移,tk=(tkx,tky,tkw,tkh)tk=(txk,tyk,twk,thk)。其中tktk与候选框相比,规模不变,对数空间高度/宽度移位。
将上面的两个任务的损失函数放在一起:
联合训练fast-RCNN网络。具体来说,我们稍后会介绍给你。
3.3 模型预测
fastRCNN工作流程描述如下:
- 输入图像:
- 将图像发送到卷积网络进行特征提取,并将通过选择性搜索获得的候选区域映射到特征图中:
- 在特征图上Rol中应用RoIPooling,相同尺寸的特征向量
- 将这些区域传输到全连接的网络中进行分类和回归,以获得目标检测的结果。
3.4 模型总结
Fast R-CNN是对R-CNN模型改进:
- CNN网络不再对每一个候选区域进行特征提取,而是直接对整张图像进行出路,这样减少了很多重复计算。
- 用ROI pooling进行特征的尺寸变换,来满足FC全连接层对输入数据尺度的要求。
- 将目标的回归和分类统一在一个网络中,使用FC+softmax进行目标分类,使用FC Layer进行目标框的回归。
在Fast R-CNN中使用的目标检测识别网络,在速度和精度上都有了不错的结果。不足的是,其候选区域提取方法耗时较长,而且和目标检测网络是分离的,并不是端到端的,在2016年又提出了Faster-RCNN模型用于目标检测,在接下来的课程中我们着重介绍Faster-RCNN网络的原理与实现。