0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenCV预训练SVM行人HOG特征分类器实现多尺度行人检测

OpenCV学堂 来源:OpenCV学堂 作者:OpenCV学堂 2022-07-05 11:02 次阅读

HOG概述

HOG(Histogram of Oriented Gradient)特征在对象检测与模式匹配中是一种常见的特征提取算法,是基于本地像素块进行特征直方图提取的一种算法,对象局部的变形与光照影响有很好的稳定性,最初是用HOG特征来来识别人像,通过HOG特征提取+SVM训练,可以得到很好的效果,OpenCV已经有了。HOG特征提取的大致流程如下:

2a4ac09a-fba0-11ec-ba43-dac502259ad0.png

305524ee-fba0-11ec-ba43-dac502259ad0.jpg

详细解读

第一步:灰度化
对HOG特征提取来说第一步是对输入的彩色图像转换为灰度图像,图像灰度化的方法有很多,不同灰度化方法之间有一些微小的差异,从彩色到灰度的图像转换可以表示如下:

337b1dae-fba0-11ec-ba43-dac502259ad0.jpg

第二步:计算图像梯度
计算图像的X方向梯度dx与Y方向梯度dy,根据梯度计算mag与角度,计算梯度时候可以先高斯模糊一下(可选步骤),然后使用sobel或者其它一阶导数算子计算梯度值dx、dy、mag、angle:

3396b56e-fba0-11ec-ba43-dac502259ad0.png

第三步:Cell分割与Block
对于图像来说,分成8x8像素块,每个块称为一个Cell,每个2x2大小的Cell称为一个Block,每个Cell根据角度与权重建立直方图,每20度为一个BIN,每个Cell得到9个值、每个Block得到36个值(4x9), 图像如下:

33b8ee9a-fba0-11ec-ba43-dac502259ad0.jpg

每个Block为单位进行L2数据归一化,作用是抵消光照/迁移影响,L2的归一化的公式如下:

36c50be6-fba0-11ec-ba43-dac502259ad0.png

第四步:生成描述子
对于窗口64x128范围大小的像素块,可以得到8x16个Cell, 使用Block在窗口移动,得到输出的向量总数为7x15x36=3780特征向量,每次Block移动步长是八个像素单位,一个Cell大小。

39da79b0-fba0-11ec-ba43-dac502259ad0.jpg

使用HOG特征数据

HOG特征本身是不支持旋转不变性与多尺度检测的,但是通过构建高斯金字塔实现多尺度的开窗检测就会得到不同分辨率的多尺度检测支持。OpenCV中HOG多尺度对象检测API如下:

virtualvoidcv::detectMultiScale(
InputArrayimg,
std::vector< Rect >&foundLocations,
doublehitThreshold=0,
SizewinStride=Size(),
Sizepadding=Size(),
doublescale=1.05,
doublefinalThreshold=2.0,
booluseMeanshiftGrouping=false
)
Img-表示输入图像
foundLocations-表示发现对象矩形框
hitThreshold-表示SVM距离度量,默认0表示,表示特征与SVM分类超平面之间
winStride-表示窗口步长
padding-表示填充
scale-表示尺度空间
finalThreshold-最终阈值,默认为2.0
useMeanshiftGrouping-不建议使用,速度太慢拉

使用OpenCV预训练SVM行人HOG特征分类器实现多尺度行人检测的代码如下:

importcv2ascv

if__name__=='__main__':
src=cv.imread("D:/images/pedestrian.png")
cv.imshow("input",src)
hog=cv.HOGDescriptor()
hog.setSVMDetector(cv.HOGDescriptor_getDefaultPeopleDetector())
#Detectpeopleintheimage
(rects,weights)=hog.detectMultiScale(src,
winStride=(4,4),
padding=(8,8),
scale=1.25,
useMeanshiftGrouping=False)
for(x,y,w,h)inrects:
cv.rectangle(src,(x,y),(x+w,y+h),(0,255,0),2)

cv.imshow("hog-detector",src)
cv.waitKey(0)
cv.destroyAllWindows()

原文标题:HOG特征详解与行人检测

文章出处:【微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 分类器
    +关注

    关注

    0

    文章

    152

    浏览量

    13180
  • OpenCV
    +关注

    关注

    31

    文章

    635

    浏览量

    41343
  • HOG特征
    +关注

    关注

    0

    文章

    2

    浏览量

    911

原文标题:HOG特征详解与行人检测

文章出处:【微信号:CVSCHOOL,微信公众号:OpenCV学堂】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AI模型部署边缘设备的奇妙之旅:目标检测模型

    准确性。 类别不平衡问题:当某些类别的样本数远多于其他类别时,分类可能会偏向多数类别,导致少数类别的预测精度较低。 过拟合风险:复杂的模型容易在训练数据上过拟合,即学到了训练数据中的
    发表于 12-19 14:33

    智能仓库风险管控:AGV叉车与行人协同作业指南

    AGV机器人快速发展,推动产业升级,但AGV与行人交互成挑战。需增强探测与避撞系统,设行人通道并培训。AGV与MES、WMS系统结合,提高生产柔性及仓储智能化。
    的头像 发表于 11-22 17:38 206次阅读
    智能仓库风险管控:AGV叉车与<b class='flag-5'>行人</b>协同作业指南

    如何用OpenCV的相机捕捉视频进行人检测--基于米尔NXP i.MX93开发板

    ......)_opencv人脸识别-CSDN博客 【Haar级联检测器训练模型下载】 opencv/
    发表于 11-15 17:58

    基于OPENCV的相机捕捉视频进行人检测--米尔NXP i.MX93开发板

    本文将介绍基于米尔电子MYD-LMX93开发板(米尔基于NXPi.MX93开发板)的基于OpenCV的人脸检测方案测试。OpenCV提供了一个非常简单的接口,用于相机捕捉一个视频(我用的电脑内置
    的头像 发表于 11-07 09:03 1096次阅读
    基于<b class='flag-5'>OPENCV</b>的相机捕捉视频进<b class='flag-5'>行人</b>脸<b class='flag-5'>检测</b>--米尔NXP i.MX93开发板

    《DNK210使用指南 -CanMV版 V1.0》第三十五章 image图像特征检测实验

    检测图像中的定向梯度特征,find_hog()方法如下所示:image.find_hog(roi, size=8)find_hog()方法用
    发表于 11-06 09:30

    中伟视界:矿山智能化——实时检测识别井下行人车辆,人工智能赋能高风险作业安全

    行车不行人检测AI分析算法通过利用人工智能和深度学习技术,对井下行人和车辆的行驶情况进行实时检测和识别,应用于矿山等高风险作业环境中。该算法具有高准确性、实时性、鲁棒性和可扩展性等特点
    的头像 发表于 07-16 19:37 540次阅读
    中伟视界:矿山智能化——实时<b class='flag-5'>检测</b>识别井下<b class='flag-5'>行人</b>车辆,人工智能赋能高风险作业安全

    opencv图像识别有什么算法

    图像识别算法: 边缘检测 :边缘检测是图像识别中的基本步骤之一,用于识别图像中的边缘。常见的边缘检测算法有Canny边缘检测器、Sobel边缘检测器
    的头像 发表于 07-16 10:40 1036次阅读

    训练和迁移学习的区别和联系

    训练和迁移学习是深度学习和机器学习领域中的两个重要概念,它们在提高模型性能、减少训练时间和降低对数据量的需求方面发挥着关键作用。本文将从定义、原理、应用、区别和联系等方面详细探讨
    的头像 发表于 07-11 10:12 1038次阅读

    大语言模型的训练

    能力,逐渐成为NLP领域的研究热点。大语言模型的训练是这一技术发展的关键步骤,它通过在海量无标签数据上进行训练,使模型学习到语言的通用知识,为后续的任务微调奠定基础。本文将深入探讨大语言模型
    的头像 发表于 07-11 10:11 427次阅读

    训练模型的基本原理和应用

    训练模型(Pre-trained Model)是深度学习和机器学习领域中的一个重要概念,尤其是在自然语言处理(NLP)和计算机视觉(CV)等领域中得到了广泛应用。训练模型指的是在大
    的头像 发表于 07-03 18:20 2805次阅读

    人脸检测模型有哪些

    : Viola-Jones 算法 Viola-Jones 算法是一种基于 Haar 特征和 AdaBoost 算法的人脸检测方法。它通过训练一个级联分类
    的头像 发表于 07-03 17:05 1027次阅读

    ESP32-S3运行人检测功耗有多大呢?

    ESP32-S3运行人检测,功耗有多大?
    发表于 06-26 06:32

    【大语言模型:原理与工程实践】大语言模型的训练

    大语言模型的核心特点在于其庞大的参数量,这赋予了模型强大的学习容量,使其无需依赖微调即可适应各种下游任务,而更倾向于培养通用的处理能力。然而,随着学习容量的增加,对训练数据的需求也相应
    发表于 05-07 17:10

    不同种植设施背景蔬菜作物无人机高光谱精细分类2.0

    4、结果分析 4.3 不同分类方法比较与分析 4.3.1基于SVM方法的分类结果比较 在不同SVM分类方法中,由于其所采用的
    的头像 发表于 03-21 11:19 508次阅读

    EPSON XV4001BC陀螺仪传感汽车导航系统的应用

    近年来为了提高汽车应用系统的可靠性,传感融合系统被越来越多的应用到汽车领域,如汽车导航系统中的行人检测碰撞警告等,通过提供精准的导航信息,为驾驶员提供更安全,更稳定,更舒适的出行
    发表于 03-19 10:59 0次下载