爱收集资源网

基于机器学习的方法(现阶段行人)检测算法的主流

网络整理 2022-05-07 07:04

1. 行人检测算法概述

目标检测现在主要分为以下几个方向:

(2)基于机器学习的方法(现阶段行人检测算法的主流)也是目前行人检测最常用的方法。基于大量样本构建行人检测分类器提取的特征主要包括目标的灰度、边缘、纹理、颜色、梯度直方图等信息,分类器主要有神经网络、SVM、adaboost、深度学习,现在被视为计算机视觉的宠儿.

目前统计机器学习的难点:

目前行人检测基本基于HOG+SVM行人检测算法(Histograms of Oriented Gradients for Human Detection, Navneet Dalel, Bill Triggs, CVPR2005), Navneet Dalel, Bill Triggs, CVPR2005) 发表由法国研究员 Dalal 于 2005 年在 CVPR 发表。 HOG+ 作为经典算法,SVM 也集成到 opencv 中,可以直接调用实现行人检测。

为了解决速度问题,可以使用背景差分法的统计学习行人检测,前提是背景建模方法足够有效(即效果好,速度快)。关联的分类器。(常用的特征有Harry-like、Hog特征、LBP特征、Edgelet特征、CSS特征、COV特征、积分通道特征和CENTRIST特征)。

参考文献:写的概述比较好行人检测简述CSDN排名266 CSDN排名6211,写的还行

内容摘要如下:

2.基于机器学习的方法:人工特征+分类器2.1HOG+SVM

人体有自己的外观特征,我们可以手动设计特征,然后用这个特征训练一个分类器来区分行人和背景。这些特征包括机器学习中常用的颜色、边缘、纹理等特征。使用的分类器包括神经网络、SVM、AdaBoost、随机森林等计算机视觉常用的算法。因为是检测问题,所以一般使用滑动窗口技术,在SIGAI之前的公众号文章《人脸检测算法综述》和《基于深度学习的目标检测算法综述》中都有介绍。

行人检测的第一个里程碑成就是 Navneet Dalal 于 2005 年在 CVPR [5] 中提出的基于 HOG + SVM 的行人检测算法。Navneet Dalal 是之前在行人检测中使用的 INRIA 数据集的创建者。

梯度方向直方图(HOG)是一种边缘特征,它利用边缘的方向和强度信息,后来被广泛应用于车辆检测、车牌检测等视觉对象检测问题。HOG的方法是先计算固定大小图像的梯度,然后划分网格,计算每个点的梯度方向和强度,然后形成网格中所有像素点的梯度方向分布直方图,最后求和它形成了整个直方图特征。

该特征很好地描述了行人的形状和外观信息,比 Haar 特征更强大。此外,该特征对光照变化和少量空间平移不敏感。下图展示了使用HOG特征进行行人检测的过程:

在获得候选区域的HOG特征后,需要使用分类器对该区域进行分类,判断是行人区域还是背景区域。在实现中,使用了线性支持向量机,因为使用非线性核的支持向量机在预测中的计算量太大,与支持向量的个数成正比。如果读者对这个问题感兴趣,可以阅读SIGAI之前关于SVM的文章。

目前OpenCV中的行人检测算法支持HOG+SVM和HOG+Cascade,两者均采用滑动窗口技术,以固定大小的窗口扫描整张图像,然后对每个窗口进行前景和背景的二分类. 为了检测不同大小的行人,还需要对图像进行缩放。

2.2HOG+Adaboost

由于HOG+SVM方案计算量太大,为了提高速度,一些研究人员在人脸检测中参考了VJ[6]的分类器设计思想,将AdaBoost分类器级联策略应用于人体检测。只需将 Haar 特征替换为 HOG 特征即可行人检测输入图片,因为 Haar 特征过于简单,无法描述人体的复杂形状。下图展示了基于级联Cascade分类器的检测过程:

图中每一层的分类器都是AdaBoost算法学习到的强分类器。前几个强分类器在分类器训练时会优先考虑弱分类器,因此可以选择最好的。集成几个弱分类器,全部只需要几个就可以达到预期的效果,计算会很简单,速度会很快,大部分背景窗口会很快被排除掉,留下一小部分候选区域或通过分类器的后续阶段进行判别,整体检测速度有了很大提高。相同条件下的预测时间仅为基于 SVM 方法的十分之一。

2.3 ICF+AdaBoost

HOG特征只关注物体的边缘和形状信息,并没有有效记录目标的表观信息,因此难以处理遮挡问题,而且由于梯度的性质,特征对噪音很敏感。针对这些问题,后来有人提出了积分通道特征(ICF)[7],积分通道特征包括10个通道:

6个方向的梯度直方图,3个LUV颜色通道和1个梯度幅值,如下图所示,这些通道可以高效的计算并捕捉输入图像的不同信息。

在本文中行人检测输入图片,AdaBoost 分类器使用了软级联级联。为了检测不同大小的行人,作者没有进行图像缩放,然后用固定大小的分类器进行扫描,而是训练了几个典型尺度的分类器。对于其他尺度的行人,使用这些典型尺度分类器的预测。结果通过插值来近似,因此不需要对图像进行缩放。这比直接缩放图像更准确,因为附近行人和远处行人的外观非常不同。这个思路在后面的文章中也可以参考。该算法通过GPU加速,实现了实时性和高精度,是当时的巅峰之作。

2.4 DPM+ 潜在 SVM

行人检测的一个主要问题是遮挡问题。为了解决这个问题,出现了一种成分检测的方法。人体被分为头肩、躯干、四肢等部分,分别对这些部分进行检测,然后将结果组合起来。,使用的典型特征仍然是HOG,使用的分类器是SVM和AdaBoost。对于密集和遮挡场景下的行人检测算法,可以阅读[15]。

DPM(Deformable Parts Models)算法在SIGAI之前的文章《基于深度学习的目标检测算法综述》中已经提到过。这是一种基于组件的检测算法。DPM检测中使用的特征是HOG,它独立地对目标不同部分的分量进行建模。根模型和部分模型在DPM中的作用,根模型(Root-Filter)主要是定位物体的潜在区域,获取可能存在的物体的位置,但是物体是否我们期望的确实存在,需要结合组件模型(Part-Filter)Filter)计算后进一步确认,DPM的算法流程如下:

DPM算法在人体检测方面取得了不错的效果,主要有以下几个原因:

基于定向梯度直方图(HOG)的低级特征(具有很强的描述能力)基于可变形组件模型的高效匹配算法采用具有强判别能力的latent-SVM分类器

DPM 算法也有明显的局限性。一是DPM特征计算复杂,计算速度慢(论文[8]提出了多种DPM加速策略,感兴趣的读者可以参考);拉伸和视角变化的物体检测效果较差。这些缺点很大程度上限制了算法的应用场景,这也是基于人工特征+分类器的常见问题。

虽然使用经典机器学习的算法取得了不错的效果,但仍然存在以下问题:

1.对不同外貌、视角和姿势的行人的检测准确率仍然不高

2.提取的特征在特征空间的分布不够紧凑

3.分类器的性能受训练样本影响很大

4.离线训练时的负样本无法覆盖所有真实应用场景

更多基于机器学习的方法,请参考综述文章[10][18][19]。参考文献[10]简要描述了16种常见的行人检测算法,并在6个公共测试库上进行了测试,给出了各种方法的优缺点和适用性。

参考文献 [18] 提出了 Caltech 数据集,该数据集比以前的数据集大 2 个数量级。作者在这个数据集上对比了当时的主要算法,分析了一些失败的原因,并为后续研究指明了方向。

参考文献[19]还比较了过去10年的行人检测算法,总结了各种改进措施,支持未来的研究方向。

3.HOG+SVM环境配置3.1个数据集INRIADATA

来自HOG+SVM的论文,论文中使用的图片经过了归一化处理。

有几种训练和测试选项:

行人检测输入图片_三星输入什么可以检测_手机屏幕检测输入什么

使用 normalized_images 目录下的图片进行训练,或者使用 original_images 目录下的图片 + annotations 获取行人区域进行训练;这些测试都是在 original_images/test/pos 上测试的。

这个数据集来自github搜索关键字:HOG+SVM,或者github搜索关键字:HOG+SVM行人检测,后者star最多,找不到原作者。反正作者已经划分了以下数据集:

3.2算法原理

材料:HOG 特征检测学习笔记,HOG 的 MATLAB 代码。

3.2.1 方向梯度的 HOG 直方图

HOG梯度方向直方图如何计算?

Histogram of Oriented Gradients (HOG) 这篇文章详细介绍了HOG特征是如何提取和计算的,棒极了!

关键图片如下:

其他信息:

CSDN 266

CSDN 3081代码

CSDN C++代码

HOG+SVM参考资料大合集

3.2.2 使用线性SVM进行训练

提取特征+分类器,如果提取了好的特征,用任何分类器都可以得到好的结果。

为什么使用线性 SVM?

另一个问题是何时选择 SVM 或逻辑回归?如图所示:

1. 特征维度 n 非常大:

使用逻辑回归和线性 SVM。

2. 特征维度 n 小,样本量 m 中等:

使用高斯核 SVM。

3. 特征维度n很小,样本数量m很大:

- 可以创建新功能

- 然后使用逻辑回归和无核 SVM

什么是线性 SVM?

左图是一个线性SVM,即不使用核函数,

馈入 SVM 以形成大间距分类器。后者使用高斯核函数,可以获得复杂的曲线边界。

3.3.3代码

机器学习 分类器 hog特征