这里的Object Detection包含了识别或分类,主要评价指标都是VOC数据集mAP刷分。通常默认的顺序是RCNN->SPP->Fast RCNN->Faster RCNN->YOLO->SSD,这里只粗糙地介绍网络构型变化。算法逐步改进,速度也在快速提高,But!这些测试基本上都是在TITAN X上运行的,自己使用的时候需要仔细评估计算量,特别是小型的移动机器人。
1. RCNN
核心思想包含在这幅图中:早期思想的典型代表,分段式处理每一个环节,输入图像首先使用selective search之类的方法选出2000个大小不一、形状多样的region proposals,统一缩放到指定尺寸(warp,这就是个很大的问题,另一种操作是crop,这些操作会让图像扭曲或不完整),对这些图片使用CNN提取特征然后分类。
2.SPP-net
SPP的全称是Spatial Pyramid Pooling,意思很直观,主要为了解决RCNN的那个缩放问题。思路也是比较巧妙:
首先考虑为什么RCNN要把图像规整为固定大小?因为后边的全连接层是固定的,而前边的卷积层会因为图片尺寸不一致,输出尺寸也不一样,和全连接层就接不上了。那就只对region proposals映射在的feature map的区域做pooling(也就是图中的window中做pooling),这个区域定了之后做SPP,与一般的pooling不一样的是:一般的pooling是规定好的receptive field,SPP是先定“需要几个卷积滤波器”,然后计算receptive field的尺寸,每层都这样,然后就获得了固定尺寸的输出,然后就与通常的全连接层接上了。并且SPP分享了不同region proposals的权值,只需要做一次前向卷积,所以比RCNN很省时间。
3. Fast RCNN
SPP与RCNN的底层一样:都是必须使用selective search之类的方法先选出一些区域再谈后续的处理。而selective search之类的方法不是很给力,主要是速度慢,于是Fast RCNN就考虑抛开这一步。
如图所示,FRCNN训练的时候输入是image和ground truth bounding boxs,经过常规的CNN到feature map层并且b-box会有对应的区域,对这个区域也是用SPP类似的处理(只有单个尺度的SPP,文中起名字ROI pooling),这之后就把特征映射为固定尺寸,然后就可以正常连接全连接层了!经过全连接层,直接分为两路执行多目标训练,一路是模仿分类,另一路是模仿b-box的位置,作者精心设计了loss函数。
4. Faster RCNN
Fast RCNN和SPP一样都是用了可变形的receptive field,这在实际训练操作中比较困难,不利于固定硬件数据流的方式运行,Faster RCNN提出了一种新的多尺度方法:
一般的多尺度是缩放图像,SPP的类的多尺度是改变receptive field,这个新的多尺度是:规定几个不同形状的框(anchor box),映射进image,设计loss就可以获得不同的评价,达到多尺度的目的。于是Faster RCNN的主要思路:
region proposal的判断是单独的旁路,常规的CNN后在feature map上加全连接层,针对每个anchor box都评价位置和有无物体,设计loss函数,把分类问题和位置判断全变成回归问题。如之前的方法类似,基础的网络都是使用现有的VGG16、ZF等,之后只是微调。
5. YOLO
这个名字很有意思(You Only Look Once),这个方法更加暴力,直接使用离散化思想:一个图片中的物体不会很多,把图片分成有限个数的格子,物体中心会落到某一个格子中,这个格子对这个物体负责即可,直接在格子的基础上映射出物体的分类和位置,非常的end-to-end。示意图如下:
具体的网络如下:
最后的输出直接对应图片的格子,每个格子有30维度的信息:20个是分类评分,10个是2个预测box的位置+置信度(每个5维度)。如此的端到端、多任务的学习,loss函数需要仔细斟酌,论文里的loss函数比较复杂。
6. SSD
YOLO的速度可以非常快,但是对小物体的精度不佳,SSD结合了YOLO网格离散化的思想和Faster RCNN固定框的思想,增加了在多尺度feature map上映射特征的能力,结构如下:
也是端到端,但是从中间层抽取了很多特征(类似多尺度),使用小的卷积模板直接预测规定box中物体的分类和位置,文中使用了不同的jaccd overlap评价策略,产生的预测会非常多,经过非极大值抑制输出最后的结果。从底层映射增强了分辨小物体的能力,高层特征增加了平滑性。
References:
1.Rich feature hierarchies for accurate object detection and semantic segmentation
2.Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
3.Fast R-CNN
4.Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
5.You Only Look Once : Unified, Real-Time Object Detection
6.SSD: Single Shot MultiBox Detector