论文笔记 Deep Learning for Generic Object Detection: A Survey (一)
本文总结了近十多年来物体检测(object detection)方面的进展,对每个里程碑式的成果都做了介绍,自己在读过程中也了解了很多,希望能把自己的体会和学习过程记录下来吧。
目录
总体介绍
问题描述
物体检测目标:给定一张任意的图像,检测其中是否含有给定类别的物体,如果含有,则返回其位置和大小。
发展历程: Image level object classification -> single object localization -> generic object detection -> pixel-wise object segmantation
-
物体分类(object classification) 给定一幅图像,输出其中含有物体的标签,并不需要定位
如图中(a)所示 - 物体检测(object detection) 给定一幅图像,不仅需要检测出其中含有的物体,并且需要对其进行定位,用边界框将所有物体标记出来,如图中(b)所示
- 语义分割(Semantic Segmentation) 将一幅图像中的每个像素都分配一个物体类别标签,如图中(c)所示
- 实例分割(Instance Segmentation 不同于语义分割,实例分割中,对于每个相同类别的实例也会进行分割,如图中(d)所示
难点&挑战
-
准确率
- the vast range of intraclass variation 大量的类内变化
同样的子类有着不同颜色、材质、形状等,同样的物体有着不同的姿态,不同的拍摄时间、地点、天气状况、背景等等。 - huge number of object categories 大量的物体类别
一共种、有些类别之间只有细微的差别
- the vast range of intraclass variation 大量的类内变化
-
高效性
移动设备、可穿戴设备只有有限的存储空间和计算能力,需要降低算法总体的运算复杂度。
过去20年来的发展
在1990年以前,典型的物体检测方法是基于 geometric representations,之后物体检测的方法像统计分类的方向发展(神经网络、SVM、Adaboost等)。
在20世纪晚期和21世纪早期,物体检测领域取得了突破性的进展,正如图中所示,SIFT 和 DCNN 开启了新的纪元。Handcrafted local invariant feature(人工提取图像特征) 变得流行起来,比如Scale Invariant Feature Transform(SIFT)、Histogram of Gradients(HOG)、Local Binary Patterns(LBP)等都是特征提取的方法。
2012年当深度神经网络(DCNN)在图像分类上取得了突破性进展时,这个巨大的成功也被用到了物体检测上。Girshick提出了里程碑式的物体检测模型Region based CNN(RCNN),在此之后物体检测领域飞速发展、并且提出了许多基于深度学习的方法…
物体检测框架
物体检测框架发展如上图所示。上面的框架可以分为下面两个类别:
- Two stage detection framework,包括生成 region proposal 的预处理步骤,以及之后的物体分类以及bounding box 回归。
- One stage detection framework ,不需要region proposal的生成,直接通过一遍前向运算就能完成物体检测的任务。
Region Based(Two Stage Framework)
RCNN
Region based CNN 是 Girshick 受到 CNN 在图像分类上的巨大成功,以及selective search(用于生成 region proposal)等人工特征提取方法的成功鼓舞而提出来的,这是一个里程碑式的物体检测框架,后续的框架或多或少都参考了RCNN,训练和测试具体步骤如下图所示:
训练过程
- 首先采用selective search 方法生成2000个region proposal(目标区域)。
- 将生成的目标区域通过warp操作(缩放)到统一尺寸(为了以后的全连接层),作为提前训练好的CNN模型的输入数据(finetune)。
- 用CNN提取出 feature map,并训练一系列线性SVM分类器,用这些分类器取代最后一层的softmax层。
- 对每个类别都会用CNN提取的特征训练一个bounding box regression 模型,用于边界框的回归预测。
缺点
- 训练过程是muti-stage,每一个部分都必须单独进行训练、复杂、低效
- 训练SVM和回归器需要大量的时间和空间
- 测试速度非常慢,每个候选窗口都要输入到CNN中进行特征提取
SPPNet
由于CNN的特征提取是RCNN的一个主要瓶颈,SPPNet中提出了Spatial Pyramid Pooling Layer(空间金字塔池化层 )。由于存在FC(全连接)层,所以RCNN输入的图像需要固定尺寸,并且需要进行warp操作,SPPNet中在最后一层卷积层后加入了SPP层,经过SPP层后可以获得固定长度的特征向量。
通过这种方式,可以让网络输入任意尺寸的图片,并且最终会输出固定尺寸的特征。
步骤
- 首先采用selective search 方法生成2000个region proposal(目标区域)。和RCNN一样
- 特征提取阶段。这一步是和RCNN最大的不同,先把整张图片输入CNN进行特征提取,得到feature map,然后在feature map 中找到各个候选框区域,再对各个候选框进行金字塔池化,从而最后可以提取出固定长度的特征向量。由于SPPNet中只需要对整张图片用CNN进行一次特征提取,于是相比于RCNN速度大大提高。
- 最后一步也和RCNN一样,采用SVM算法进行特征向量的分类识别,以及boundingbox 的回归。
Fast-RCNN
改进了RCNN以及SPPNet的缺点,实现了end-to-end的训练。并提出了RoI pooling层,用于对特征图的池化从而得到固定大小的特征向量。
创新
- 定义了一个多任务的损失函数,同时包括softmax、BBRs等训练目标。
- 采用了共享卷积计算的思想
- 在最后一层卷积层上对每个RoI求映射关系,并用一个RoI pooling Layer 来统一到相同大小。
具体步骤和RCNN相似。
Faster-RCNN
创新点
- 用RPN(Region Proposal Network)取代selective search,大大提升了整体运行速度。
- 通过RPN来生成目标候选框,之后在最后一层卷积层得到的feature map上进行RoI pooling从而得到固定大小的特征图,最后进行分类和回归。
未完待续…