由于目前的研究方向是3D object detection,刚开始入门。所以先了解一下2d object detection的一些方法。
OverFeat(OverFeat:Integrated Recognition, Localization and Detection using Convolutional Networks)
本文将CNN用于目标定位,目标分类,目标检测三个任务中,使用offset pooling和fcn(fully convolution network)以实现多尺度输入,网络结构的前几层和AlexNet大致相同,文中使用前几层提取到的特征,仅仅是在后面几层进行了一些修改,便完成了定位、分类、检测的任务,不得不说CNN提取特征的能力实在是强-
offset pooling
相当于将pooling kernel在水平或者垂直方向上有一个偏移,主要是为了生成多尺度的feature maps,文中对x,y用了三种offset,所以最终会生成9个feature maps
-
fcn
使用卷积层代替了全链接层,使得输入的图像不需要固定的大小
-
RCNN(Regions with CNN features)
其中获取候选框的方法使用的是:selective search,这篇博文介绍的比较详细:http://blog.csdn.net/surgewong/article/details/39316931
主要就是通过Hierarchical Grouping获取到基本的候选区,然后计算各种相似度,使用SIFT算子来确定物体的位置。
2.region proposal warp
3.CNN for feature map
4.SVM for classification
主要的问题就是,需要将每个region proposal都输入到CNN中提取特征,比如一张图有2000个region proposal,那么就相当于对一张图片进行了2000次特征提取
-
SPP-NET
在之前R-CNN的基础上使得每一个image只需要提取一次特征,减少了CNN提取特征的时间,同时提出了Spatial Pyramid Pooling的方法,使得输入的图像尺寸不受到限制。
1.不论输入的尺寸怎样,SPP_NET都能够输出一个固定尺寸的特征,然而之前使用sliding window pooling的方法不能做到这点
2.SPP-NET使用Multi-level spatial bins,sliding window pooling方法只使用了固定的window大小。Multi-level spatial bins在面对畸变的时候显示出了很强的健壮性
3.由于灵活的输入尺寸,SPP-NET能够能够从不同尺寸的输入提取特征,每个training epoch使用不同的image size作为输入,作者把这个方式叫做multi-size training converge
其中实现Spatial Pyramid Pooling的方法是动态的改变pooling层的kernel的size和strides,从而获得一个固定的输出:
Fast-RCNN
吸收了SPP-NET的精髓,只对图像提取一次卷积层特征,同时在最后一个卷积层后加了一个人ROI pooling layer,损失函数使用了多任务损失函数(multi-task loss)
但是由于region proposal的提取使用的是selective search,所以速度很慢,于是有了后面的Faster-RCNNFaster-RCNN
提出了RPN(Region Proposal Networks),RPN的思想就是用CNN直接产生region proposal,然后直接输入到CNN,使得结构变为端到端的网络。但是还是未达到real timeR-FCN
相比于之前Fast/Faster R-CNN方法需要花费巨大的计算量在region-proposal上,
-
YOLO(You Only Look Once) SSG(Single Shot MultiBox)
都是使用回归的思想直接去回归出region proposal。
先暂时做一个了解,需要的时候再详读相关的paper