目录
关于机器学习模型的一些学习笔记、
参考自知乎:https://zhuanlan.zhihu.com/p/47579399
一,R-CNN
什么是RCNN?
区域卷积神经网络(Regions with CNN features,简称 R-CNN) ,用于目标检测。它的思路很简单,有些类似传统数据结构算法中的暴力搜索,即找出图像中所有可能存在目标的区域,对每个区域进行一次识别。
具体来说,它主要由以下四步构成:
1.对每张输入图像使用选择性搜索来选取多个高质量的提议区域。这个算法先对图像基于像素信息做快速分割来得到多个区域,然后将当下最相似的两区域合并成一个区域,重复 进行合并直到整张图像变成一个区域。最后根据合并的信息生成多个有层次结构的提议区 域,并为每个提议区域生成物体类别和真实边界框。
2.选取一个预先训练好的卷积神经网络,去掉最后的输出层来作为特征抽取模块。对每个提 议区域,将其变形成卷积神经网络需要的输入尺寸后进行前向计算抽取特征。
3.将每个提议区域的特征连同其标注做成一个样本,训练多个支持向量机(SVM)来进行物 体类别分类,这里第 i 个 SVM 预测样本是否属于第 i 类。
4.在这些样本上训练一个线性回归模型来预测真实边界框。
所以,概括一下,R-CNN 只是以下几个简单的步骤
1. 为边界框生成一组提案。
2. 通过预训练的 AlexNet 运行边界框中的图像,最后通过 SVM 来查看框中图像的目标是什么。
3. 通过线性回归模型运行边框,一旦目标完成分类,输出边框的更紧密的坐标。
R-CNN 这个方法可以得出比较正确的物体检测结果,但问题在于太慢了。它对之前物体识别算法的主要改进是使用了预先训练好的卷积神经网络来抽取特征,有效的提升了识别精度。对一张图像我们可能选出上千个兴趣区域,每个兴趣区域都要放入卷积网络,进行识别,这个计算量无疑是非常巨大以至于无法实际运用。
为了解决这个问题,便有了 Fast-RCNN
二,Fast-RCNN
R-CNN 的主要性能瓶颈在于需要对每个提议区域独立的抽取特征。考虑到这些区域会有大量重叠,独立的特征抽取导致了大量的重复计算。Fast R-CNN 对 R-CNN 的一个主要改进在于首先对整个图像进行特征抽取,然后再选取提议区域,从而减少重复计算。如图:
Fast R-CNN 跟 R-CNN 的主要不同在于下面四点:
1.用来提取特征的卷积网络是作用在整个图像上,而不是各个提议区域上,而且这个卷积网 络通常会参与训练,即更新权重。
2.选择性搜索是作用在卷积网络的输出上,而不是原始图像上,这样就仅需对整张图片进行一次卷积运算,减少了运算量。
3.在R-CNN里,我们将形状各异的提议区域变形到同样的形状来进行特征提取。FastR-CNN 则新引入了兴趣区域池化层(Region of Interest Pooling,简称 RoI 池化层)来对每个提议区域提取同样大小的输出以便输入之后的神经层。
4.在物体分类时,Fast R-CNN不再使用多个SVM,而是像之前图像分类那样使用Softmax回 归来进行多类预测。