object detection方法汇总

传统方法:

传统的目标检测使用滑动窗口的框架,把一张图分解成几百万个不同位置不同尺度的子窗口,针对每个子窗口,使用分类器判断是否包含目标物体。传统方法针对不同类别的物体,一般会设计不同的特征和分类算法。比如:

>> 人脸检测(face detetion)的经典算法是Haar特征 + Adaboost分类器

>> 行人检测的经典算法是Hog(histogram of gradients)+ SVM(support vector machine)

>> 一般性物体的检测时Hog + DPM(deformable part model)

基于深度学习的方法:

预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上(采用CNN)提取特征,进行判断。这类算法以RCNN系列为主,包括RCNN、fast RCNN、faster RCNN等。算法的大致流程为:

1. 候选区域:从待检测的图片中,提取出N个ROI,这里N远大于图片中真实object的个数。具体的方法有selective search、edge box以及最近流行起来的RPN。
2. 特征提取:根据1中检测到的ROI,上CNN对图像进行feature extraction。
3. 类别判断:对2中得到的feature进行分类,比如对于PSACAL VOC数据,就是一个21分类的问题(20个object class+background)。
4. 位置精修:boudningbox regression。

其他方法:

端到端(end-to-end)的物体检测,例如YOLO(you only look once)和SSD(single shot multiBox Detector)。这俩算法号称和faster RCNN精度相似但速度更快。

Google 在2016年下半年出了一篇paper,详细比较了Faster R-CNN、R-FCN和SSD的各个性能指标,还是很值得一读的。Speed/accuracy trade-offs for modern convolutional object detectors

object detection方法汇总_第1张图片

上图即来自于Google的论文。一个比较粗略的结论是:第一类框架(Faster R-CNN)的性能会更好,但是速度较慢;而第二类框架(SSD)的性能略微逊色,但是速度较快。




你可能感兴趣的:(目标检测(object,detection))