赞
踩
【导读】本文是专栏《计算机视觉40例简介》的第19个案例《行人检测》。该专栏简要介绍李立宗主编《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书的40个案例。 目前,该书已经在电子工业出版社出版,大家可以在京东、淘宝、当当等平台购买。 大家可以在公众号“计算机视觉之光”回复关键字【案例19】获取本文案例的源代码及使用的测试图片等资料。 针对本书40个案例的每一个案例,分别录制了介绍视频。如果嫌看文字版麻烦,可以关注公众号“计算机视觉之光”直接观看视频介绍版。 本文简要介绍了本案例的一些基础知识,更详细的理论介绍、代码实现等内容请参考《计算机视觉40例简介》第19章《行人检测》以获取更详细信息。 |
行人检测是目标检测的一个分支。目标检测的任务是从图像中识别出预定义类型目标,并确定每个目标的位置。一个用来检测行人的目标检测系统,被称为行人检测系统。
行人检测主要用来判断输入图片(或视频)内是否包含行人。如果检测到行人,则给出其具体的位置信息。该位置信息是智能视频监控、人体行为分析、智能驾驶、智能机器人等应用的关键基础。但是由于行人可能处于移动状态、也可能处于静止状态,同时外观容易受到体型、姿态、衣着、拍摄角度、遮挡等多种因素的影响,使得行人检测成为计算机视觉领域内的研究热点与难点。
行人检测一种比较常用的方式是统计学习方法,即根据大量的样本构建行人检测分类器。提取的特征主要有目标的灰度、边缘、纹理、颜色、梯度等信息。分类器主要包括神经网络、SVM、adaboost以及卷积神经网络等。
2005年,法国国立计算机及自动化研究院(INRIA)的Dalal在CVPR(Computer Vision & Pattern Recognition)发表了题为《基于HOG的行人检测算法》(Histograms of Oriented Gradients for Human Detection)的论文,提出使用图像的方向特征进行行人检测。它通过将图像分块后,提取每一个子块内的方向特征,然后将所有子块的特征连接起来从而得到图像的整体特征,根据该特征实现行人检测。该论文对行人检测研究产生了重要的影响,累计被引用13338次(至2021年8月21日)。
目前,OpenCV采用的行人检测算法是基于Dalal的论文实现的,我们可以直接调用行人检测模块实现行人检测。本案例中,我们介绍了如何在OpenCV内引用行人检测模块完成行人检测,并对其中的关键参数进行说明。
在本案例中,我们首先介绍了方向梯度直方图(Histogram of Oriented Gradient, HOG)特征的提取过程,接下来介绍了使用OpenCV自带的行人检测模块实现行人检测。
在OpenCV中,直接调用分类器即可完成行人检测,具体过程如下:
第 1 步:调用hog=cv2.HOGDescriptor(),初始化HOG描述符。
第 2 步:调用setVMDetector,将支持向量机设置为预训练的行人检测器。该检测器通过cv2.HOGDescriptor_getDefaultPeopleDetector()函数加载。
第 3 步:使用detectMultiScale(image)函数检测图像中的行人,返回值为“(行人对应的矩形框、矩形框的权重值)”。该函数中,要检测的图像是必选参数。
编写代码,运行程序,检测结果如图1所示。
图1 检测结果
在本案例中,对其常用的参数进行了解析,并进行了具体实践观察。
1、参数winStride解析
图2 参数winStride的对检测结果的影响
2、参数padding解析
图3 参数padding的对检测结果的影响
3、参数scale解析
图4 参数scale的对检测结果的影响
4、参数useMeanshiftGrouping解析
图5 参数useMeanshiftGrouping的对检测结果的影响
在《计算机视觉40例——从入门到深度学习(OpenCV-Python)》一书中,从算法原理、实现流程等角度系统深入地介绍了该案例的理论基础和实现过程,并对具体的代码实现进行了细致的介绍与解释。欢迎大家阅读第19章《行人检测》获取详细内容。
《计算机视觉40例——从入门到深度学习(OpenCV-Python)》在介绍Python基础、OpenCV基础、计算机视觉理论基础、深度学习理论的基础上,介绍了计算机视觉领域内具有代表性的40个典型案例。这些案例中,既有传统的案例(数字识别、答题卡识别、物体计数、缺陷检测、手势识别、隐身术、以图搜图、车牌识别、图像加密、指纹识别等),也有深度学习案例(图像分类、风格迁移、姿势识别、实例分割等),还有人脸识别方面的案例(表情识别、驾驶员疲劳监测、识别性别与年龄等)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。