目标检测论文阅读笔记
目标检测论文阅读 SPPNet Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition-CSDN博客
目标检测论文阅读 Cascade R-CNN: Delving into High Quality Object Detection-CSDN博客
目标检测论文阅读 YOLO You Only Look Once:Unified, Real-Time Object Detection-CSDN博客
Rich feature hierarchies for accurate object detection and semantic segmentation-2013
1. Introduction
是第一个将深度学习用到目标检测的算法
关键点:
- 将CNN用于自下而上的区域提议(region proposals)
- 当缺少标记数据时,对辅助测试进行有监督的预训练,然后给予特定领域进行微调
利用深度网络定位对象和仅使用少量标注检测数据训练高容量模型。
网络结构:
流程:输入图像,提取约2000个候选区域,仿射变换统一候选区域大小,CNN提取每个候选区域的特征,SVM分类,非极大值抑制修正
与图像分类不同,目标检测需要定位对象的位置。有视为回归问题(效果不好)和滑动窗口检测(为了保证较高的空间分辨率,CNN一般只有两个卷积层和池化层,但论文中有五个卷积层、非常大的接收域和步长,使精确定位困难。)两种思路。
论文采用了recognition using regions方法定位位置:每张输入图像提取约2000个独立的候选区域,这些候选区域仿射变换统一大小输入神经网络,CNN输入固定长度的特征向量,卷积操作后用SVM分类。
解决标记数据不足以训练大型CNN的问题:传统方法:无监督预训练然后有监督微调。论文提出当数据稀缺时,在大型辅助训练集上有监督训练,然后再小的数据集上微调是训练大型CNN的有效手段。
2. Object detection with R-CNN
R-CNN由三部分组成,第一个模块用于检测候选区域,第二个模块是CNN提取特征向量,第三个模块是支持向量机用于分类
检测候选区域采用选择性搜索算法
候选区域大小不同,但是CNN要求输入的图像大小固定(227*227),因此将候选区域放缩到227*227
CNN中输入的227*227的图像经过五个卷积层,两个全连接层输出特征向量
支持向量机对每个特征向量评分(每个SVM对一类目标的可能性评分,需要n个SVM为n类目标概率评分)
非极大值抑制:
IOU交并比:位置方面的考量
性能分析:由于1:CNN的所有参数在所有类别中共享。2:与其他方法相比,CNN的特征向量的低维的。 因此检测十分高效
训练:1、用大型辅助数据集做有监督的预训练,用Caffe框架的CNN网路(网络只做了微小修改)2、特定领域的微调(以预训练1/10学习率做SGD---这允许微调取得进展且不破坏初始化)3、训练SVM略。
3. 可视化,消融,预测结果展示
消融(ablation): 指移除AI系统的一个组件。 Ablation study 指通过研究AI系统移除某一组件之后的性能,来理解该组件对整个系统的作用。
论文通过消融实验逐层分析CNN每层的性能,并根据实验结果逐层优化。
4. 总结
作者感觉RCNN就像是overfeat模型的一种特殊情况(feeling)
Overfeat模型:多模版滑动窗口检测,算是一种暴力检测法
R-CNN能用于目标检测,亦可用于语义分割
HOG特征提取
灰度化:HOG提取的是纹理特征,颜色信息不起作用,所以将彩色图转化为灰度图。
归一化:调整图像对比度,降低光照和阴影的影响。也可以减少噪声的影响
计算每个像素的梯度(大小、方向)
将图像划分为若干个连通区域(cell),在cell中计算梯度方向直方图,每个cell用一个9维的特征向量表示
将多个cell组合成更大连通块(block) ,将block内所有cell的特征向量串联起来便得到该block的特征描述,block特征归一化
在实际应用中,通常是选取固定大小的滑动窗口来提取HOG特征,对于一个64×128的图像窗口,每8×8个像素组成一个cell,每2×2个cell组成一个block,一共有105个block,因此该图像的窗口特征维数为105×36=3780。当然也可以将整幅图像作为一个窗口来提取HOG特征。
检测:HOG特征结合SVM
目标检测—选择性搜索算法(Selective Search,SS)
由于事先并不知道物体在图片的哪个位置,为了避免漏检,我们应该对图片中尽量多的 region 进行搜索,于是有了暴力搜索算法:定义多个大小不同的窗口,在图像上滑动检测,但是这种方法的复杂度极高。
为了避免蛮力搜索,selective search 算法首先需要一个基于像素的图像分割,得到一个 oversegmented 的图像分割。
这里之所以用 oversegmented 图像,是为了得到尽可能细分的区域,再以此为基础逐步合并,形成更大的区域。Selective search 算法考虑了 4 种相似性度量,取值都在 [0,1] 之间,越大越相似。
总结起来,selective search 的算法步骤非常简单:
1、基于 oversegmented 得到细分的区域,作为初始的 region 集合。
2、计算 region 两两之间的相似性,合并具有最大相似性的两个 region,得到新的更大的 region,加入 region 集合中。
3、重复 step 2,达到一定程度。
SIFT:尺度不变特征转换匹配算法
定位图像中的局部特征(成为关键点),关键点是比例尺和旋转不变量,用于特征匹配。
1.创建尺度空间:提取图像中最鲜明的特征,忽略噪点,确保特征不依赖比例和旋转
高斯模糊降噪—去除纹理细节只保留形状、边缘等信息—忽略噪点
图像按比例缩放生成新图像—确保特征不依赖比例
高斯差异(DoG)--将图像进行不同程度高斯模糊得到的图像亮亮相减—增强特征
2.关键信息本地化:从图像中找到可用于特征匹配的重要关键点。即找到图像的局部最大值和最小值
获取相邻像素极值(关键点):相邻像素不仅包括该像素周围像素,还包括上一张和下一张图像的九个像素
筛选关键点:消除对比度低或非常靠近边缘的关键点
3.关键点匹配
确定关键点方向:统计关键点为原点,一定范围内所有像素方向做直方图。直方图最大值作为关键点主方向。
每个关键点,都包含位置、尺度、方向三个信息,用一组向量描述关键点的信息,使其不会因各种变化而改变。
目标检测时,建立参考图和检测图的关键点描述集合,进行比对
什么是预训练和微调?
- 你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先,你需要随机初始化参数,然后开始训练网络,不断调整直到网络的损失越来越小。当你觉得结果很满意的时候,你就可以将训练模型的参数保存下来,以便训练好的模型可以在下次执行类似任务时获得较好的结果。这个过程就是 pre-training。
- 之后,你又接收到一个类似的图像分类的任务。这时候,你可以直接使用之前保存下来的模型的参数来作为这一任务的初始化参数,然后在训练的过程中,依据结果不断进行一些修改。这时候,你使用的就是一个 pre-trained 模型,而过程就是 fine-tuning。
所以,预训练 就是指预先训练的一个模型或者指预先训练模型的过程;微调 就是指将预训练过的模型作用于自己的数据集,并使参数适应自己数据集的过程。