模型进化过程
传统方法----RCNN
RCNN主要分为三部分:区域生成(selective search,SS)、特性提取(CNN)、分类器(SVM),网络模型可以分为四个模块。
模块1:使用选择性搜索,获取2000个区域,这2000个区域与分类无关,只是包含每个物品的窗口,之后区域预处理,将尺寸变为227x227大小。
模块2:使用AlexNet网络,对所有区域进行提取特征。
模块3:SVM分类器,对CNN特征进行分类,每一个分类,一个2分类SVM。
模块4:Bounding box回归模型,对SS提供区域精化,每个分类一个回归模型。
R-CNN缺点
- 卷积特征重复计算量太大,每张图片的2000区域都会计算CNN特征
SPP-Net:基于空间金字塔池化的优化RCNN方法
RCNN计算方式会给网络带来巨大的计算量,提出优化金字塔方法。空间金字塔池化(Spatial Pyramid Pooling,SPP)最大特点是不在关心输入图片尺寸,而是根据输出类别的个数,通过算法来生成多个不同范围内的池化层,由它们对输入进行并行池化处理,最终的输出特征个数与生成类别个数相等,接着在进行类别比较和判定。应用这种技术的网络为SPP-Net。该网络对比RCNN的两大改进:
- 直接输入整张图,所有区域共享卷积计算(仅一遍),在conv5层上提取所有区域特征。
- 引入空间金字塔池化,为不同尺寸的区域提取特征,再将特征映射到尺寸固定的全连接层上。
SPP-Net效率要比RCNN快30-170倍,并有更高的准确率。
黑色图片代表卷积之后的特征图,接着我们以不同大小的块来提取特征,分别是4*4,2*2,1*1,将这三张网格放到下面这张特征图上,就可以得到16+4+1=21种不同的块(Spatial bins),我们从这21个块中,每个块提取出一个特征,这样刚好就是我们要提取的21维特征向量。这种以不同的大小格子的组合方式来池化的过程就是空间金字塔池化(SPP)。比如,要进行空间金字塔最大池化,其实就是从这21个图片块中,分别计算每个块的最大值,从而得到一个输出单元,最终得到一个21维特征的输出。
SPP-Net训练流程
- M—在ImageNet上对CNN模型进行预训练
- F—计算所有SS区域的SPP特征
- M1—使用F特征训练fc6->fc7->fc8层
- F1—计算M1的fc7特征
- C—使用F1特征训练线性SVM分类器
- R—使用F特征训练Bounging box回归模型。
SPP-Net新缺点
- 需要存储大量特性
- 复杂多样训练
- 训练时间长度为25.5小时,仍长
下面为RCNN与SPP-Net网络结构对比图,左边为RCNN网络,右边为SPP-Net网络。
Fast-RCNN网络
Fast-RCNN在SPP-Net的基础上进行了改进,并将它嫁接到VGG16上形成的网络,在网络中引入2点新技术:
- 将空间空间金字塔池化(SPP)改为感兴趣区域池化(ROI pooling),实际上ROI pooling为SPP的简化形式,SPP层中包含不同尺度的池化层,而ROI pooling中只包含一种尺度。它先将原来图片进行相同尺度裁剪,每个字快变为ROI 然后对ROI 单独max-Pool,得到每个block最大值。
- 引入多任务损失函数
Fast-RCNN在SPP-Net上的改进点
- 不在使用SVM线性分类器,使用softmax classifer和bounding box回归联合训练更新参数,实现网络的端到训练。
- 所有层参数都可以fine train
- 不需要离线存储文件
- 训练时间更快9.5H
Faster-RCNN网络
Faster-RCNN网络在Fast-RCNN网络基础上添加了Region Proposal Network(RPN)网络,Faster-RCNN=Fast-RCNN+RPN,PRN取代了离线的Selective Search模块,进一步共享卷积计算,并且引导Fast-RCNN关注区域,高准确率,高recall。 Faster-RCNN分为4个阶段训练:
- 训练RPN网络
- 训练Fast-RCNN网络
- 调优RPN
- 调优Fast-RCNN
下面为Fast-RCN与Faster-RCN网络结构对比图。
RPN网络
RPN是指,先用nxn的滑动窗口在原图像上扫描,生成M个特征值,这M个特征值,将M个特征值接到两个卷积网络reglayer与classlayer中输出。reglayer里面包含图像座标x与y以及长宽,classlayer里面有判断这部分是前景还是背景的标志值。在训练时,一个小批次是由一幅图片与256个候选框组成的,其中正负样本的比例为1:1。对于正负样本的标注是,reglayer 范围内对应的classlayer的重合度大于0.7(即为正样本),如果都不大于0.7,则为其中最大值为正样本。最终通过softmax loss和regression loss 按照一定权重比例计算loss。
R-FCN-----区域全卷积神经网络(2016)
R-FCN的出现是因为基于旧结构设计的RCNN出现问题
- 结构:ROI-Wise的字网络无隐含层
- 性能:检测性能和分类性能不一致
应用困难:
- 检测网络的变化敏感性
- 分类网络变换的不变形,卷积层越深,不变性越强,对变化越不敏感
R-FCN的提出适应全卷积化CNN的结构,提出全卷积化设计共享所有卷积层并引入变换敏感性
变换敏感性:
- 位置敏感分值图 特殊设计的卷积层 ,输出kxk个Grid位置信息(相对)+类别分值(C个物体类+1个背景类)
- 位置敏感池化 无训练参数,无全连接网络的类别推断