文章目录
学习目标:
- 了解Overfeat模型的移动窗口方法
- 了解RCNN目标检测的思想
- 了解fastRCNN目标检测的思想
- 知道多任务损失
1.Overfeat模型
Overfeat⽅法使⽤滑动窗⼝进⾏⽬标检测,也就是使⽤滑动窗⼝和神经⽹络来检测⽬标。滑动窗⼝使⽤ 固定宽度和高度 的矩形区域,在图像上“滑动”,并将扫描结果送⼊到神经⽹络中进⾏分类和回归。
例如要检测汽⻋,就使⽤下图中红⾊滑动窗⼝进⾏扫描,将所有的扫描结果送⼊⽹络中进⾏分类和回归,得到最终的汽⻋的检测结果。
这种⽅法类似⼀种暴⼒穷举的⽅式,会消耗⼤量的计算⼒,并且由于窗⼝⼤⼩问题可能会造成效果不准确。
2.RCNN网络
2014年提出R-CNN⽹络,该⽹络不再使⽤暴⼒穷举的⽅法,⽽是使⽤候选区域方法(region proposal method)创建⽬标检测的区域来完成⽬标检测的任务,R-CNN是以深度神经⽹络为基础的⽬标检测的模型 ,以R-CNN为基点,后续的Fast R-CNN、Faster R-CNN模型都延续了这种⽬标检测思路。
2.1 算法流程
RCNN的流程如下图所示:
Step:
- 候选区域⽣成:使⽤选择性搜索(Selective Search)的⽅法找出图⽚中可能存在⽬标的侯选区域
- CNN⽹络提取特征:选取预训练卷积神经⽹⽹络(AlexNet或VGG)⽤于进⾏特征提取。
- ⽬标分类:训练⽀持向量机(SVM)来辨别⽬标物体和背景,对每个类别,都要训练⼀个⼆元SVM。
- ⽬标定位:训练⼀个线性回归模型,为每个辨识到的物体⽣成更精确的边界框。
2.1.1 候选区域的生成(了解,已经不再使用了)
在选择性搜索(SelectiveSearch,SS)中,使⽤语义分割的⽅法,它将颜⾊、边界、纹理等信息作为合并条件,采⽤多尺度的综合⽅法,将图像在像素级上划分出⼀系列的区域,这些区域要远远少于传统的滑动窗⼝的穷举法产⽣的候选区域。
SelectiveSearch在⼀张图⽚上提取出来约2000个侯选区域,需要注意的是这些候选区域的⻓宽不固定。 ⽽使⽤CNN提取候选区域的特征向量,需要接受固定⻓度的输⼊,所以需要对候选区域做⼀些尺⼨上的修改。
根据图像像素点的相似性,分割成不同的子区域,获取外包矩形。
2.1.2 CNN网络提取特征
采⽤预训练模型(AlexNet或VGG)在⽣成的候选区域上进⾏特征提取,将提取好的特征保存在磁盘中,⽤于后续步骤的分类和回归。
- 全连接层的输⼊数据的尺⼨是固定的,因此在将候选区域送⼊CNN⽹络中时,需进⾏裁剪或变形为固定的尺⼨,在进⾏特征提取。
- 预训练模型在ImageNet数据集上获得,最后的全连接层是1000,在这⾥我们需要将其改为N+1(N为⽬标类别的数⽬,例如VOC数据集中N=20,coco数据集中N=80,1是加⼀个背景)后,进⾏微调即可。
- 利⽤微调后的CNN⽹络,提取每⼀个候选区域的特征,获取⼀个4096维的特征,⼀幅图像就是2000x4096维特征存储到磁盘中。
2.1.3 目标分类(SVM)
SVM是一个二分类分类器,实现多分类时需要使用多个SVM来完成,用来判断每个候选区域的类别。
利⽤微调后的CNN⽹络,提取每⼀个候选区域的特征,获取⼀个4096维的特征,⼀幅图像就是2000x4096维特征存储到磁盘中。
对于N个类别的检测任务,需要训练N(⽬标类别数⽬)个SVM分类器,对候选区域的特征向量(4096维)进行二分类,判断其是某⼀类别的⽬标,还是背景来完成⽬标分类。
2.1.4 目标回归(线性回归修正坐标)
通过选择性搜索获取的⽬标位置不是⾮常的准确,实验证明,训练⼀个线性回归模型在给定的候选区域的结果上去预测⼀个新的检测窗⼝,能够获得更精确的位置。修正过程如