文章目录
- 1. Overfeat模型
- 2. RCNN模型
-
- 2.1 算法流程
-
- 2.1.1 生成候选区了解
- 2.1.2 CNN网络提取特征
- 2.1.3 目标分类(SVM)
- 2.1.4 目标定位
- 2.1.5 预测过程
- 2.2 算法总结
- 3. Fast RCNN模型
-
- 3.1 算法流程
-
- 3.1.1 生成候选区了解
- 3.1.2 CNN提取网络特征
- 3.1.3 ROI Pooling
- 3.1.4 目标分类和回归
- 3.2 模型训练
- 3.3 模型预测
- 3.4 模型总结

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)找出图片中可能有目标的候选区域的方法
- :选择预训练卷积神经网络(AlexNet或VGG)用于特征提取。
- :训练支持向量机(SVM)为了识别目标对象和背景,每个类别都应该训练一个二元SVM。
- :训练线性回归模型,为每个被识别的物体生成更准确的边界框。
2.1.1 生成候选区了解
在,采用语义分割的方法,将颜色、边界、纹理等信息作为合并条件,采用多尺度的综合方法,将图像划分为像素级的一系列区域,远低于传统滑动窗口差的候选区域。
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维特性。
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.13 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+1个类别上的离散概率分布(每个候选区域), p = ( p 0 , p 1 , . . . , p k ) p=(p_0,p_1,...,p_k) p=(p0,p1,...,pk)。通常,通过全连接层的K+1个输出上的Softmax来计算概率值。
-
另一部分输出对于由K个类别中的每一个检测框回归偏移, t k = ( t x k , t y k , t w k , t h k ) t^k=(t^k_x,t^k_y,t^k_w,t^k_h) tk=(txk,tyk,twk,thk)、其中 t k t_k tk指定相对于候选框的尺度不变转换和对数空间高度/宽度移位。
将上面的两个任务的损失函数放在一起:
联合训练fast-RCNN网络。具体的我们在后续给大家进行介绍。
具体训练步骤:https://blog.csdn.net/qq_39858278/article/details/85108893(主要讲清楚了在训练时,不同区域的类别(目标值)是如何确定的)
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网络的原理与实现。