目标检测算法的历史及分类

  随着人工智能的兴起,目标检测算法在各行业中起的作用越来越大,怎么落地,这是一个非常严峻的话题。今天看到一位大牛的分享,学习了。

把该领域的算法和历史做个梳理。方便后续研究。

  按照时间分类,可以把该算法分成两类:传统算法和CCN算法。

 传统算法:

  • 级联分类器框架:Haar/LBP/积分HOG/ACF feature+Adaboost

级联分类器最先由Paul Viola and Michael J. Jones在CVPR 2001中提出来。

其实这就是boosting由简单弱分类拼装强分类器的过程,现在看起来很low,但是这个算法第一次使目标检测成为现实!

OpenCV有对级联分类器的经典实现:https://docs.opencv.org/2.4.11/modules/objdetect/doc/cascade_classification.html?highlight=haar

至于使用的特征,Haar简单也够用了,LBP实在是没必要去扒了。。。

至于HoG/ACF,下面说。

  • HoG+SVM

Histograms of oriented gradients for human detection,2005,CVPR

由于原始的Haar特征太简单,只适合做刚性物体检测,无法检测行人等非刚性目标,所以又提出了HOG+SVM结构。

在OpenCV中也有实现:https://docs.opencv.org/2.4.11/modules/gpu/doc/object_detection.html?highlight=hog

之后又有人魔改出LoG/DoG/RoG等一系列特征,没啥意思就不多说了。

值得一提的是,有人把SVM中的HoG改为Integral HoG,用于级联分类器。这也就是目前OpenCV级联分类器的积分HOG的原型:

Integral Histogram: A Fast Way to Extract Histograms in Cartesian Spaces

后续又有人发展出了Aggregate Channel Feature(ACF)等特征,论文主要是下面2个:

Aggregate Channel Features for Multi-view Face Detection,2014,IJCB

Fast Feature Pyramids for Object Detection,2014,PAMI

亮点就是这个Fast,加速了Integral HoG的计算,效果好而且快,依然活跃在嵌入式领域。

  • Discriminatively trained deformable part models(DPM)

项目主页:http://www.rossgirshick.info/latent/

DPM是使用弹簧模型进行目标检测,如下图。即进行了多尺度+多部位检测,底层图像特征抽取采用的是fHoG。反正也是轰动一时了。

后续又有DPM+/DPM++,没啥意思不提也罢。

作者:知乎用户
链接:https://www.zhihu.com/question/53438706/answer/148973444
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

CNN方法:

  • 基于region proposal(two stage):R-CNN家族,包括Faster R-CNN/Mask R-CNN/RFCN

然而DPM火了没到2年,R-CNN家族出现了,终于不再用各种魔改版HoG特征搞检测了!

其中R-CNN家族最有代表性的就是Faster R-CNN。Faster R-CNN由RPN网络先产生region proposal,再对region proposals进行classification,就是所谓的two stage。

Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

Mask R-CNN

其实R-CNN系列检测关注他:Kaiming He - FAIR,完全足够了。

  • 基于回归(one-shot):YOLO/YOLO2/SSD/DSSD

YOLO和SSD都是产生proposal的同时进行classification+regression,一次性完成,即所谓的one-shot。相比two stage速度占优,Precision/Recall略低。

SSD:SSD: Single Shot MultiBox Detector

至于YOLO,目前有YOLO v1,YOLO 9000(v2),YOLO v3

YOLO项目主页(含Paper)

另外我觉得,后续版本DSSD和YOLO v2/v3之间真的没啥差距了,感觉都一样。

这也说明检测已经趋于瓶颈,没有算法突破很难像以前,一下提高几十个点。

  • 特殊的文字序列检测:CTPN(LSTM + R-CNN)/Seglink(SSD魔改)

除了一般意义上的检测,还有一类文字检测,用于OCR前的文字定位。这类检测和一般的检测还有一点点不一样。目前效果比较好的2种:CTPN和Seglink

Faster R-CNN的继承:CTPN水平or竖直文字检测

Detecting Text in Natural Image with Connectionist Text Proposal Network, ECCV, 2016.

代码 tianzhi0549/CTPN

SSD的继承:Seglink倾斜文字检测

Detecting Oriented Text in Natural Images by Linking Segments,CVPR,2017

代码 https://github.com/dengdan/seglink

当然文字检测算法也有传统的,比如这个OpenCV自带:

Real-Time Scene Text Localization and Recognition, CVPR 2012

不过不建议去折腾了,没必要。

  总结:

  传统方法的优势就是速度快,即使在嵌入式平台也可以做到高速实时;缺点就是Precision/Recall都不是很理想,简单说就是效果差;

CNN方法优势就是Precision/Recall都好很多;缺点对应的,速度慢。

目前在嵌入式中,传统算法还有一些空间,但是被Mobilenet等轻量化网络挤压;在服务器端,完全是深度网络的天下了。

参考文档:

https://www.zhihu.com/question/53438706

https://zhuanlan.zhihu.com/ML-Algorithm

原文地址:https://www.cnblogs.com/dylancao/p/9082989.html

时间: 2024-11-06 19:00:12

目标检测算法的历史及分类的相关文章

目标检测程序开发(二)——Boosting算法简介

本文主要参考了OpenCV的官方文档 http://docs.opencv.org/modules/ml/doc/boosting.html boosting算法是一个监督式机器学习算法,它解决的是一个二元分类问题.本文包括对算法思想的理解,不包含算法的数学推导. 目标检测就是用这个分类算法,把只含有目标的图片作为一类,不含有目标的作为另一类,然后训练分类器,进行检测的时候,输入一张图片,用一个窗口扫描这个图片,对每个窗口应用分类器,返回是目标的类别时,就检测到了目标. 监督式机器学习目标是找到

【CNN调参】目标检测算法优化技巧

上次bbuf分享了亚马逊团队的用于分类模型的bag of tricks, 详见:链接, 本文继续梳理一下目标检测trick, 解读这篇19年同样由亚马逊团队发表的<Bag of Freebies for Training Object Detection Neural Networks>.先来看看效果,在使用了trick后,Faster R-CNN能提高1-2个百分点,而YOLOv3则提高了5个百分点. 1. 简介 目标检测模型相比于分类模型的研究相比,更缺少普遍性,并且网络结构和优化目标更加

基于Intel OpenVINO的搭建及应用,包含分类,目标检测,及分割,超分辨

PART I: 搭建环境OPENVINO+Tensorflow1.12.0 I: l_openvino_toolkit_p_2019.1.094 第一步常规安装参考链接:https://docs.openvinotoolkit.org/latest/_docs_install_guides_installing_openvino_linux.html 第二步编译Inference Engine Samples: cd /PATH/TO/deployment_tools/inference_eng

分类、目标检测、语义分割、实例分割的区别

计算机视觉的任务很多,有图像分类.目标检测.语义分割.实例分割和全景分割等,那它们的区别是什么呢? 1.Image Classification(图像分类) 图像分类(下图左)就是对图像判断出所属的分类,比如在学习分类中数据集有人(person).羊(sheep).狗(dog)和猫(cat)四种,图像分类要求给定一个图片输出图片里含有哪些分类,比如下图的例子是含有person.sheep和dog三种. 2.Object detection(目标检测) 目标检测(上图右)简单来说就是图片里面有什么

分类和目标检测的性能评价指标

对于深度学习的网络模型,希望其速度快,内存小,精度高.因此需要量化指标来评价这些性能,常用的指标有:mAP(平均准确度均值,精度指标), FPS(每秒处理的图片数量或每张图片处理需要时间,同样硬件条件下的速度指标) , 模型参数大小(内存大小指标). 1.mAP (mean Avearage Precision) mAP指的是各类别的AP平均值,而AP指PR曲线的面积(precision和Recall关系曲线),因此得先了解下precision(精确率)和recall(召回率),以及相关的acc

目标检测与分类

目标检测的一般思路是 1.获取含有大量冗余特征的集合 2.利用机器学习的方法从特征集合中找出能够反映目标物体特性的特征 3.利用找到的特征构造分类器,实现目标检测 当前通用目标检测领域所使用的特征主要可以分为两类. 1.通过划分或变换得到的特征,如使用最广泛的Haar-like特征.这类特征的主要特点是:特征计算十分简单,特征集合的冗余信息能够很好地描述目标物体的特性.另外,只要图像大小确定,特征集合中各个特征的位置以及集合中总的特征数量就是固定的,这使得利用类Haar特征构建分类器比较简单:

机器视觉中的目标检测

今天撇去不同目标追踪算法的框架,比如KCF.TLD.Mean Shift等,忽略它们繁琐的公式,看了对目标检测的基本理解.这里做一个简单的总结,目标检测的框架一般是下图这样的: 目标检测分为以下几个步骤: 1. 训练分类器所需样本的创建 训练样本一般包括正样本和负样本,正样本是指第一帧图中框定的待检测的目标,负样本是指其它不包含目标的任意图片(比如背景),所有的样本图片都被归一化同样的尺寸大小(比如20C20). 2. 特征提取 我们一般通过图像.视频或者波形获得的数据量是很巨大的,比如一个简单

目标检测的图像特征提取之(一)HOG特征(转载)

目标检测的图像特征提取之(一)HOG特征 [email protected] http://blog.csdn.net/zouxy09 1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功.需要提醒的是,HOG+SVM进行行人检测的方法是法

模式识别开发之项目---计算机视觉目标检测的框架与过程

个人接触机器视觉的时间不长,对于机器学习在目标检测的大体的框架和过程有了一个初步的了解,不知道对不对,如有错误,请各位大牛不吝指点.   目标的检测大体框架: 目标检测分为以下几个步骤: 1.训练分类器所需训练样本的创建: 训练样本包括正样本和负样本:其中正例样本是指待检目标样本(例如人脸或汽车等),负样本指其它不包含目标的任意图片(如背景等),所有的样本图片都被归一化为同样的尺寸大小(例如,20x20). 2.特征提取: 由图像或波形所获得的数据量是相当大的.例如,一个文字图像可以有几千个数据