常见传统目标检测算法

一 概览

首先,我们先来看下目标检测的发展历程:
1.2001年,V-J检测器诞生,主要用于人脸的检测;
2.2006年,HOG + SVM的方法出现,主要用于行人的检测;
3.2008年,rgb大神(记住这个人,后面的R-CNN系列检测算法也是出自他之手)研究出了著名的DPM算法,在深度学习方法成熟之前的很长一段时间里,就是这个算法一直在目标检测中发挥作用;

以上算法是属于传统目标检测的算法,都是基于图像处理和计算机视觉的!

------------------------------------------------------------------分割线------------------------------------------------

到了2012年CNN的崛起,开始了深度学习和计算机视觉结合的旅程!

4.2013年,出现了Overfeat;
5.2014年,rgb大神提出了大名鼎鼎的R-CNN检测算法,开始了two-stage的旅程;
6.2014年,SPPNet诞生;
7.2015年,R-CNN的快速版Fast RCNN 和 Faster RCNN,以及yolo,yolo的到来标志着one-stage检测算法的开启;
8.2016年,大家都爱的SSD到来;
9.2017-2018年,Pyramid Networks,还有Retina-Net;

二 传统目标检测算法流程
常见传统目标检测算法_第1张图片
这个时期,我们提取的特征主要围绕底层特征和中层次特征来展开,像颜色,纹理等;

三 V-J检测算法

1)Haar特征提取:关于Haar特征,通俗点讲就是白色像素点于黑色像素点的差分,即value = 白 - 黑,是一种纹理特征;有多个方向,我截了个图:
常见传统目标检测算法_第2张图片
2)训练人脸分类器:
最典型的当然要属Adaboost算法了,原理如下:
a 初始化样本的权重w, 权重之和为1;
b 训练弱分类器;
c 更新样本权重;
d 重复步骤b
e 最后结合多个弱分类器的结果进行投票;

3)候选框选取:
主要采用滑动窗口的方法,这里就不多说了,很简单。

四 HOG + SVM检测算法
1)主要步骤
a 提取HOG特征;
b 训练SVM分类器;
c 利用滑动窗口提取目标区域,进行分类;
d 利用NMS算法进行候选框的筛选与合并;
e 输出最后检测的结果;

2)HOG特征
a 首先对图片进行灰度化以及gamma变换;
b 计算梯度map
c 将图像划分成多个小cell,分别统计每个cell的梯度直方图
d 多个cell组成一个block,进行特征归一化
e 将多个block拼接,做归一化处理

注:HOG+SVM一般都用opencv来实现,而且HOG特征通常维度较大,一般需要PCA降维;

3)SVM

关于svm,不懂得同学可以去看我之前写的博客SVM在这里
其主要思想就是两点:最大间隔,以及核函数技巧;

五 DPM算法

2008年由rgb提出,获得了VOC数据集上的08年,09年,10年的检测冠军,2010年rgb本人也因此被VOC授予终身成就奖;

DPM算法其实是对HOG的扩展,利用svm训练得到物体的梯度;

1)DPM特征提取:分为有符号梯度和无符号梯度
常见传统目标检测算法_第3张图片
2)主要步骤
a 计算DPM特征图
b 计算响应图(root filter 和 part filter)
c 利用Latent SVM分类器进行训练
d 检测识别

关于DPM算法,详细的原理介绍后面我会更新,这里就先简单阐述下;

六 NMS算法

全名叫非极大值抑制算法,该算法的主要目的是为了消除检测得到的多余框,找到目标物体的最佳位置;
主要思想是选取邻域里分数最高的box,同时抑制那些分数低的,但是这样的一种操作是hard的,不是soft的,所以有人又提出了一种Soft-NMS算法,主要思想就是对相邻区域内的box框的分数进行适当的调整,而非直接抑制,这样就提高了准确率;
调整公式:
在这里插入图片描述

你可能感兴趣的:(Image,Processing,Computer,Vision,OpenCV,DL,目标检测)