行人检测 读书笔记 综述(1)

来源:互联网 发布:mysql基础语法 编辑:程序博客网 时间:2024/05/05 14:37

朱文佳-基于机器学习的行人检测关键技术研究

本文是博主对上海交通大学的朱文佳的硕士毕业论文的学习笔记,如果不当或理解错误之处,敬请指导,不胜感激。

绪论

1.1 典型应用

  1. 智能监控,可用于社会安全事件预防与分析等
  2. 智能车辆,智能车辆的辅助驾驶
  3. 人机接口,提高人机交互的效果

1.2 研究现状(2008)

整体趋势:
1.训练集越来越大
2.检测速度从10秒每帧到一秒多帧
3.精度从50%提升至90%

1.3 研究难点

  1. 人的差异性,服饰的差异性
  2. 动作的多样性
  3. 背景的复杂性
  4. 建筑物等对行人的遮挡,人对人的遮挡
  5. 视角的变化
  6. 光照的变化
  7. 尺度不同,同一图片,同样大小的人,尺度不同

1.4 文章组织

  1. 绪论,背景
  2. 综述基于机器学习的行人检测的主要研究方向,及代表性算法,分析各自特点
  3. 介绍分析boosted cascade
  4. 将booseted cascade 与hog特征结合起来

综述

2.1 引言

算法分类
1. 基于整体特征的算法:将人看成一个整体,用矩形框表示行人,首先对其进行特征提取如小波特征、hog特征等,然后用分类器,如svm等进行分类,其优点是框架简单,易于实现,单在处理遮挡等问题时不够灵活。可用解决1.3中1,3,6
2. 基于多部位的方法:将人分为多个部位,然后根据相互约束关系来得到最终结果。问题在于如何定义部位及整合检测信息。可用于解决1.3中2,4
3. 基于多视角的方法。将不同视角的的行人,分开训练,减小类内变化,简化训练难度。问题在于如何自动区别不同视角,如何利用不同视角的相似性减小计算量。可用于解决1.3中的5

2.2 基于整体特征的方法

2.2.1 小波特征

提出:Oren 1997年,小波提取特征,用svm分类
负样本的定义:bootstrap。首先随机选取真的负样本,然后将训练之后分类错误的负样本,加入训练。

2.2.2 边缘模板

提出: Gavrila 1999年
首先作者标注了1000个人的边缘模板,首先利用聚类,得到一个模板树。
这里写图片描述
然后,搜索图中的轮廓,如果匹配度达到一个阈值,就判断为人,使用的方法为chamfer距离。
其运行速度为每秒1-5帧,但是该算法依赖于边缘的提取,如果边缘不是那么明显,可能会出现漏检

2.2.3 hog 特征

提出:Dalal 2005年
hog=histogram of gradient 梯度分布直方图
hog 特征
计算过程:
将输入图片分为若干块,每块在分为若干格子,对每个格子统计其中所有像素的梯度值在各个方向的分布,得到特征向量,再把一个块内所有格子的特征向量串联起来,得到该块的特征向量,然后进一步把所有块的特征向量串联起来,作为一个样本特征向量。
能够很好地刻画边缘特征,适用于图像匹配和物体检测

2.2.4 edgelet 特征

提出 Bo wu
edgelet 特征
利用小边来描述人体某个部位的整体,Bo wu 定义了80多万个上图中的edgelet,经过boosting,筛选出上千个最利于识别人体的edgelet。如果图上的边缘与最后的edgelet越相似,得到的相应越高(利用一个函数),分类结果越像人。
其特点有:
1. 不需要像边缘模板一样二值化,只用sobel算子,计算边缘,受关照等影响较小
2. 同时考虑了边缘的强度和方向(判断相似的函数中有体现)
3. 每个edgelet仅负责一小块区域,计算量小,更灵活
4. edgelet由一定的规则自动生成(比如1/4圆弧),然后由机器学习算法自动筛选,减少了人工干预
在Mit数据集上,该算法的效果远远超过了小波算法。

2.2.5 shapelet 特征

提出:sabzmeydani 2007年
与edgelet不同的是,shapelet利用图中的曲线来生成一段段的人体边缘
流程为:
1.提取底层特征
shapelet
2.用boosting生成shapelet
作者在底层特征上定义了0度、45度、90度、135度四个方向的边缘,然后进行筛选,下图可以看出edgelet与shapelet的区别、
edgeletshapelet
其中第二排是shapelet
3.训练好的shapelet在使用boosting,训练出最强分类器
该算法效果显著,超越了以往所有的算法

2.3基于多部位的方法

2.3.1 自适应组合分类器

提出:Mohan 2001年
方法:
1. 将人体分为 头肩 下半身 左肩 右肩4个部分,每部分与2.2.1中的小波算法基本一致
2. 将4个部分的输出作为输入,将部位检测效果整合起来,输出分类结果
注意,考虑到人体的非刚性,四个部位分类器必须在一定的范围和尺度内进行搜索

2.3.2 基于贝叶斯推断的组合算法

提出:Bo Wu
方法:
1. 将人体分为头肩、躯干、腿三个部分,分别训练分类器
2. 与mohan不同的是,其整合方法是使用贝叶斯概率的方法来分析哪里有行人
Bo Wu 的实验表明,基于多部位的方法只有在出现遮挡时才会有优势

2.3.3 隐式形状模型

提出:Leibe
以上两种方法需要对人体部位进行手工设定,leibe的implicit shape model 把人体看成许许多多的图片块构成。
1. 建立图片块字典
2. 利用difference of gaussian 提取兴趣点
3. 计算图片块与兴趣点的位置等关系
4. 检测兴趣点,搜素相应的图片块,进行投票,当票数超过一定值,便认为是人

2.4 CBT 多视角

特点:检测速度快,不需要人为划分视角
方法:
用树的方法,先选择一部分特征,依据样本对特征的相应,进行聚类,然后重复整个过程
如图
cbt
1. 第一级选出3个特征,根据这这3个特征进行聚类
2. 分成两个子集 继续训练
(其特征提取方法本文并未提及)

3 基于boosted cascade的物体检测

提出:viola
简单来说boosted cascade就是先利用adaboost之类的boost方法将弱分类器,变为强分类器,用不同的特征来合成不同的强分类器,然后用这些强分类器来排除不是行人的大量负样本,逐步分类,如下图:
cascade
图中第1层的分类器,是由一定量的特征做成的强分类器,(至于组成强分类的弱分类器类型这里没有提到,在后面作者有提及)其分类效果略差,目的器排除大量的负样本,以节省时间。
至于什么是adaboost,看下链接:
http://blog.csdn.net/bea_tree/article/details/50460634#t10
另外还有对于物体检测很重要的就是特征的选取,这里作者介绍的是viola提出的积分图片与矩形特征,它表征了灰度的变化。
如图:
haar
计算方法为将图片分为若干像素块后,用图中黑色区域的像素灰度平均值减去白色区域内的像素灰度平均值。
为了方便计算上面提到的差值,viola,提出了积分图,就是遍历一遍像素,然后将位于遍历点左前方的所有像素的值之和计算赋值,如图:
积分图
如果计算d区,那么其值便为:4所在的和值-2所在的和值-3所在的和值+1所在的和值.

4 作者对boosted cascade的改进

作者主要在特征选取,adaboost及弱分分类器三方面进行了改进
1. 特征的选取上作者结合了haar 与 shog。其中shog 是hog的简化(simple)版,其思想为,因为在弱分类器中使用,将hog图片分割的步骤去掉,直接在整个图片进行梯度分布。据作者介绍其结果比单独的haar好,且与haar+hog效果相似。
2. 在adaboost改进方面,不再单独输出分类结果,而是输出了正样本的可信度。据作者介绍,这样的改动可以减少特征使用数量,减少训练时间。
3. 在弱分类器方面,作者采用将shog特征转化为一维特征,然后采用查表的方法,作者并未在论文中具体实现,但据记效果较好。

总结

全文前半部分适合入门阅读,了解综述。

0 0