行人检测(总结)

2024-05-15 07:32
文章标签 总结 检测 行人

本文主要是介绍行人检测(总结),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看了将近半年的行人检测的资料,最近开题了,我也趁着这个机会把脑袋里的东西总结一下:

先说下常用的数据库:最早的是MIT,这个库比较简单,行人图片背景简单,只有正面和背面。在2005年以前流行,2005年后随着HOG的提出,MIT库上的准确率已经达到100%,所以INRIA成为标准数据库中的大家通用的数据库。这个库背景复杂,人的姿势也比较多,还有些光照等环境的影响。另外一个关于车辆内行人的图像库是Daimler,不过我总下载不下来。。。

现在常用的方法分这么几类—
行人检测的目标是得到每个行人在视频中每帧的空间位置。根据对行人描述(表达)方法的不同,行人检测算法可以基本分为三类:基于形状模板匹配的方法和基于表观特征描述的方法,以及将形状和纹理结合的方法。根据对人体是以一个整体进行检测还是分部件进行检测,又可以将行人检测算法分为基于部件的检测方法和基于整体的检测方法。下面针对国际上常用的行人检测方法进行阐述。
(1)基于形状模板匹配的检测方法
形状是人体明显的一个特征,例如头肩部的“Ω”形、躯干部分的竖直边缘轮廓,可以利用形状之间的相似性来判断图像中是否有行人的存在。Gavrila[3-5]使用一系列人体形状来表示人体形状,然后在测试图像中提取边缘,基于Chamfer距离来评测图像与模板之间的相似性。LinZhe[6]等将人体分为头肩躯干、大腿和小腿三个部件,然后按照从上倒下使用Gavrila提出的方法分层次进行匹配,最后和基于背景建模得到的前景图像进行形状匹配,在检测行人的同时将其大致形状从背景中分割出来。
基于形状匹配方法的优点是直接描述人体的形状,比较直观,检测完成以后可以根据模板的形状和姿势,判断检测到行人的姿势并切割出行人的大致轮廓。但由于其在线检测时很难获得待匹配图像中目标的轮廓,且其利用样本来描述类别的形状,导致其一些显著的缺点:离线训练时的人体外围轮廓需手工标定,边缘提取受背景的影响,没有采取鉴别性学习等
(2)基于表观特征向量的检测方法
基于表观特征向量的检测方法使用能够描述目标表观特性的特征向量表示目标模式和非目标模式,然后使用基于统计学习得到的分类器根据特征向量做出判决。
特征提取将原始的图像灰度(彩色)信息映射到特征空间,其目的是减小待分类类别的类内变化和增大类间变化,理想的特征是不同类别的分布没有交叠,完全可分。特征提取的方法有两种:基于整体特征向量的方法和基于关键点提取的方法。
在基于整体特征向量的方法中,较早用于行人检测的是Haar小波,Papageorgiou[7]等使用Haar小波变化系数描述行人,然后使用线性SVM分类器进行判决,建立了一个基于统计学习和表观特征相结合的行人检测系统。之后,为了避免边缘提取误差,很多方法直接使用梯度信息来表示人体的形状,提高的鲁棒性。例如局部边缘方向直方图EOH[8](Local Edge Orientation Histograms)、Edgelet[9]和Shapelet[10]等,这其中以Dalal[1]等人提出的HOG(Histograms of Oriented Gradients)的工作影响最大。HOG特征成为最近一个主流使用的特征。在找寻更好描述行人特征的同时,另一个发展的趋势的特征融合。实验证明:融合多种能够描述人不同特点的特征,能够获得比仅利用单一特征类型时的检测性能。
基于感兴趣区域的人体描述方法,首先使用感兴趣点(或关键点)提取算法,提取关键区域,然后使用这些感兴趣区域内提取到的特征向量,描述相关的区域,然后使用关键区域的空间位置关系描述人体。由于衣服多样性和人体姿势变化等因素的影响,人体上的感兴趣区域提取不够稳定,限制了该方法的性能。
(3)基于部件检测的方法
Felzenszwalb[11]等人根据人体的关节特性,将人体的分为十个部件,每个部位都有自己的表观特征,部位之间的几何关系允许一定的变化,建立了一个运行形变的基于部件的检测模型。之后对部件的数量进行了改进,以及检测结果的一些特征融合。
基于部件检测的方法在一定程度上可以客服局部遮挡带来的问题,,但是由于这种方法都是人工将人体划分部件,而且要求训练数据中标定每一个部件的位置,造成了人力资源的消耗和性能的不确定性。因此,现在在使用这一方法时,经常与HOG等特征结合使用,以提高性能。

现在主要的检测方法还是以HOG特征为主,我把我看过的几篇论文放在这里,需要的朋友们可以点击下载:
最初提出HOG特征的论文:hog_cvpr2005_ 
这篇文章是研究行人检测的必看文章

Dalal(上面那篇文章的作者)的博士论文:Dalal-phd06(较大,链接在俺的机子上,可能不能下载) 对大家进一步了解HOG会有很大帮助

Fast Hog,对最初的HOG特征进行了改进:Zhu_Fast Human Detection Using a Cascade of Histograms of Oriented Gradients 
这篇论文在原文的基础上加入了积分图,cascade结构。我没有把这篇论文实现,因为cascade中的每一级所使用的弱分类器是svm,训练时间会很长——如文中所述的“a few days”

另外还有Edgelet特征貌似也不错。不过,我没研究过。不做评论。

再链接两篇中国人发的关于行人检测的cvpr:Granularity-tunable Gradients Partition (GGP) Descriptors for Human Detection(翻过,没细研究)

cvpr09-0515-Adaptive Contour Features in Oriented Granular Space for Human Detection(仔细研读了:提出一种新的特征,但是有些特别重要的地方没讲清楚)

现在在INRIA库上的最好结果是:Maji S., Berg A C, Malik J. Classification using Intersection Kernel Support Vector Machine is Efficient. 是对SVM进行了改进。

上面主要是针对图像库来检测的。不能达到实时,要做到实时是不可能的。下面是我草拟的一个行人检测的流程:

离线训练过程:
1.输入为标准图像库中的图像,对于正样本,直接提取特征;对于负样本,多尺度遍历整幅图像,进行特征提取。提取Harr,LBP,HOG三种特征并保存为积分图形式。
2.对于cascade的每一级进行如下操作:用Adaboost进行特征选择,选出最好的特征。
在前面的几级用Harr和LBP这两种计算较快的特征,后几级用HOG。
3.进行级数调整,直到达到要求的检测率和错误率。

检测过程: 1.输入图像,多尺度遍历整幅图像,进行特征提取:提取Harr,LBP,HOG三种特征并保存为积分图形式。 2.将所有子窗口输入训练得到的模型中,如下图,经cascade分类器后,根据检测结果即可标定行人区域,通过一些后处理(例如,合并临近的窗口),就可以对行人进行定位,达到检测的目的。

 

这篇关于行人检测(总结)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991191

相关文章

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十

Python脚本轻松实现检测麦克风功能

《Python脚本轻松实现检测麦克风功能》在进行音频处理或开发需要使用麦克风的应用程序时,确保麦克风功能正常是非常重要的,本文将介绍一个简单的Python脚本,能够帮助我们检测本地麦克风的功能,需要的... 目录轻松检测麦克风功能脚本介绍一、python环境准备二、代码解析三、使用方法四、知识扩展轻松检测麦

在Java中实现线程之间的数据共享的几种方式总结

《在Java中实现线程之间的数据共享的几种方式总结》在Java中实现线程间数据共享是并发编程的核心需求,但需要谨慎处理同步问题以避免竞态条件,本文通过代码示例给大家介绍了几种主要实现方式及其最佳实践,... 目录1. 共享变量与同步机制2. 轻量级通信机制3. 线程安全容器4. 线程局部变量(ThreadL

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon