基于region proposal方法
R-CNN是针对区域提取特征的目标检测模型
检测流程:通过selective search的方式从图片中提取可能的目标的候选窗口,将窗口warp到同一个尺寸,通过卷积网络从warp之后的候选窗口提取特征,将特征送给分类器进行分类,最后再加上bounding box regression等操作得到更准确的目标位置。总结起来就是先训练SVM分类器,后进行boudingbox的regression操作。
难点:1:获取区域目标比较费时,
2:由于各区域不共享特征,重复计算,训练过程比较费时,
3:分类器采用SVM,而SVM的存储是需要将数据存储在磁盘空间中,需要额外考虑这点。
4:训练比较麻烦,首先需要先训练分类模型网络,进而对boundingbox进行回归计算。
Fast-RCNN
通过引入roi_pooling解决针对区域提取特征造成的重复计算的情况,它允许输入具有任何尺度,经过ROI将box分为4*4,8*8等同样数量的网格,然后对每个网格通过max,avg等操作计算相应的特征,就可以将不同尺寸的box转化为相同维度的特征,在最后的损失函数层使用了多任务损失函数(multi-task loss),同时进行分类和位置框的回归。
特点:
1:实现端到端的训练,除了proposal提取阶段,同时进行分类与回归过程。
2:所有的特征都暂存在显存中,就不需要额外的磁盘空。在最后将分类器换成两个softmax分类器,一个针对区域的分类(包含背景),一个针对bounding box的微调。
3:提出了一个ROI_pooling层, ROI不仅完成了特征图的映射关系,并且将特征图固定到单个尺寸。
4:整张图上的proposal共享特征提取层,训练速度显著提升。
难点:由于SS方法获取区域目标,只能在CPU上进行,比较费时。
Faster-RCNN
为了解决获取区域目标速度慢的问题,提出了RPN网络,RPN的核心思想是使用卷积神经网络直接产生region proposal,使用的方法本质上就是滑动窗口。RPN的设计比较巧妙,RPN只需在最后的卷积层上滑动一遍,并在每个位置引入多尺度多长宽比的anchor窗口来捕捉未知尺寸和ratio rate的目标。
特点:
1:提出一个全卷积网络作为为region proposal网络(RPN),解决了获取proposal耗时的问题。
难点:
1:由于faster-RCNN训练过程实际上分成了两个阶段,proposal 生成阶段与detection阶段,所以速度上还是不能够满足实时的要求。
R-FCN
分类需要特征具有平移不变性,检测则要求对目标的平移做出准确响应。Faster R-CNN类的方法在ROIpooling前都是卷积,是具备平移不变性的,但一旦插入ROI pooling之后,后面的网络结构就不再具备平移不变性了。R-FCN就是基于此想法,提出position sensitive score map这个概念,它是能把目标的位置信息融合进ROI pooling,在roi_pooling 前,用K^2*(C+1)个1024*1*1的卷积核与K^2*2*4个1024*1*1的卷积核分别去卷积后得到K*K*(C+1)大小为W*H的scope map以及K*K*(2*4)大小为W*H的positionsenstive的feature map,这步的卷积操作就是在做prediction,这样就引入了目标的位置信息,在roi_pooling阶段,再将通过RPN网络生成的rois映射到以上feature map,输出大小为n*c*h*w 的roi,送入下一层进行最终计算损失或者进行难样本的挖掘。
特点:
R-FCN是在Faster R-CNN的框架上进行改造,第一,把base的VGG16换成了ResNet,去掉原始残差101的最后一个全连接层,提高特征提取能力;第二,由于ROI pooling会丢失位置信息,故在pooling前加入位置信息,即指定不同score map是负责检测目标的不同位置,用于pooling后把不同位置得到的score map进行组合就能复现原来的位置信息。
http://www.cnblogs.com/lillylin/p/6277094.html
pvanet
pvanet依然延续了“CNN feature extraction + region proposal + RoI classification”,模式,它主要通过对特征提取层进行重新设计,遵循less channels with more layers,使得网络deep and thin,并利用hypnet等方法,结合多个中间结果,考虑多个特征图,增强特征的表达能力。
特点:1:速度快,计算cost小。
http://www.cnblogs.com/xueyuxiaolang/p/5959442.html
基于Regression方法
这类方法使用了回归的思想,既给定输入图像,直接在图像的多个位置上回归出这个位置的目标边框以及目标类别,将检测过程整个成一个 single deep neural network。
Yolo
检测流程:给定一个输入图像,将其划分为7*7的网格,对于每一个网格,预测2个box, 包括每个边框是目标的置信度以及每个边框区域在多个类别上的概率,接着预测出7*7*2个目标窗口,随后根据阈值去除可能性比较低的目标窗口,最后NMS去除冗余窗口即可,可以看到整个过程非常简单,不需要中间的proposal生成网络,直接回归便完成了位置和类别的判定。
特点:YOLO将目标检测任务转换成一个回归问题,大大加快了检测的速度,使得YOLO可以每秒处理45张图像。而且由于每个网络预测目标窗口时使用的是全图信息,使得false positive比例大幅降低(充分的上下文信息)。
难点:
1:没有了region proposal机制,只使用7*7的网格回归会使得目标不能非常精准的定位,这也导致了YOLO的检测精度并不是很高。
2. 针对小目标的检测效果会不太好,因为7*7的网格的划分可能太粗糙了;
3. 当两个目标同时落入7*7的某一个网格中的时候,对应位置只能检测到一个物体。
https://zhuanlan.zhihu.com/p/27546796
https://zhuanlan.zhihu.com/p/21412911
SSD
SSD则是faster-rcnn与yolo的结合,结合了yolo 中的回归思想,同时又结合了faster-rcnn中的anchorbox机制,SSD 将输出一系列 离散化(discretization) 的 bounding boxes,这些 bounding boxes 是在 不同层次(layers) 上的 featuremaps 上生成的,并且有着不同的 aspectratio。在 prediction 阶段,要计算出每一个 default box 中的物体,其属于每个类别的可能性,即 score,得分。同时,要对这些 bounding boxes 的 shape 进行微调,以使得其符合物体的 外接矩形。还有就是,为了处理相同物体的不同尺寸的情况,SSD 结合了不同分辨率的 feature maps 的 predictions,SSD 方法完全取消了 proposals generation、pixel resampling 或者 feature resampling 这些阶段。这样使得 SSD 更容易去优化训练,也更容易地将检测模型融合进系统之中。
难点:
SSD与yolo一样,对于小目标的检测率很低,这是由于SSD对输入图像进行了预处理,经过较深的卷积层后,对于本身比较小的目标,小目标可能已经丢失response了。
yoloV2
相比于yolo第一版本,yoloV2主要通过两方面对其进行改进:
一:使用一系列的方法,在保持原有速度的同时提高了精度,首先,
通过对数据进行归一化预处理。YOLOV2网络通过在每一层卷积后
进行batch normalization,极大的改善了收敛速度同时减少了对其它regularization的依赖,舍弃了dropout优化后依然没有过拟合。其次,YOLOV2改变了用低分辨率的分类网络来训练高分辨率的检测网络,在训练分类网络时直接将分辨率提高到检测网络所需的分辨率,而后直接将分类算法切换为检测算法。
Deformable CNN方法,是一种把DPM和CNN结合起来的思想,通过对卷积核与ROI_pooling引入offsets来实现.
DSSD
主要贡献可分为两点:首先,把SSD的基准网络从VGG换成了Resnet-101,增强了特征提取能力;然后使用反卷积层(deconvolution layer )增加了大量上下文信息.在目标检测之外有一种编码-解码(encoder-decoder)网络,其中网络中间层加入了输入图像的编码部分,后面再进行解码(就是卷积和反卷积),这样形成的宽-窄-宽的网络结构很像沙漏,FCN就是类似结构,本文就利用反卷积层实现了上下文信息的扩充。
DSOD
https://github.com/szq0214/DSOD
R-SSD
http://blog.csdn.net/u014380165/article/details/77130922
RUN