基于人体部件检测子的行人检测

本文介绍了一种基于小边特征的人体部件检测方法,并利用联合似然函数处理多人部分遮挡的问题,降低了误检率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于人体部件检测子的行人检测


读“B.Wu, R. Nevatia. Detection of Multiple,Partially Occluded Humans in a Single Image by Bayesian Combination of Edgelet Part Detectors[C], ICCV,2005.” 笔记

论文主要贡献点

  • 提出一种能够很好刻画非刚体目标轮廓的特征算子,小边特征。

  • 该论文中方法将人体分为若干部件分别检测,能够处理人体的部分遮挡问题。

  • 在之前的人体部件检测方法中,对于部件检测的结果的combine方式往往都是针对于单个个体的,而没有考虑到整体的分布。因此该论文中对人体部件检测到的结果构建Joint Likelihood function,能够更好的降低误检率和虚警率。


小边特征

小边特征算子是由较短的线段或者曲线构成的,比如以下几种小边特征

enter description here

edgelet.png

使用1027162-20160915220153492-993668266.png1027162-20160915220154086-1977364314.png表示小边特征算子边缘点的位置和正交向量的集合,1027162-20160915220154617-1052344493.png是小边的长度。假设小边特征算子的区域面积为1027162-20160915220154930-164472202.png,然后对于待提取特征的sub-window,在每一个像素点上计算由该像素点起始地1027162-20160915220155320-1309237315.png区域与小边特征算子的相似度,作为该像素点对应于该特征算子的特征,也称为图像与小边特征在该像素点的亲和度(affinity)。

假设图像的边缘图像为1027162-20160915220155852-178765080.png,1027162-20160915220156492-1099642666.png表示边缘点对应的正交向量集合。那么图像在点1027162-20160915220157023-2118931114.png处和小边特征算子的亲和度为:

$$ S(p)=\frac{1}{l}\sum_{j=1}^lM(p+u_j)||. $$

这样大小为1027162-20160915220157461-473017944.png的sub-window对应每一个小边特征算子都能提取到1027162-20160915220157867-1941796159.png个特征,图像的边缘图像可以使用1027162-20160915220158242-869530460.png的Sobel算子得到。

由于这里的小边特征在文中使用时是用来构建弱分类器,因此为了速度,没必要计算的太准确,所以上式中正交向量的内积就可以近似得到。

将方向向量在1027162-20160915220158586-1159247518.png量化为6个区间,计算两个方向向量所在区间间隔,按如下近似方向向量内积:

1027162-20160915220158977-80786742.png

1027162-20160915220159352-378891103.png分别表示边缘图像和小边点对应的量化后的值,那么亲和度可如下计算:

1027162-20160915220159867-2059779869.png

文中使用的小边特征算子包括4-12个像素点,有线段,1/2圆周,1/4圆周,1/8圆周,以及这些小边与其对称小边组成的对称对。在1027162-20160915220200227-1886245169.png的窗口中提取了1027162-20160915220200648-664324223.png维特征,虽然没有具体说选择的小边特征算子是什么。个人认为在使用小边特征时应该先构造一定量的小边特征算子,然后再提取小边特征。


部件检测子
文中将人体分成3个部件:Head-shoulder,Torso,Legs,然后加上整体Full-body构造了四个检测器。每个检测器都是使用nested cascade detector(参见嵌入级联检测器)。

人体部件的定义图示:

enter description here

bodyparts.png


多人联合似然函数

首先定义状态变量1027162-20160915220201367-212212380.png,1027162-20160915220201727-1818529595.png是真实的行人个数,1027162-20160915220202055-571656502.png表示第1027162-20160915220202383-101306174.png个行人的状态,而每个行人的状态使用位置和大小来刻画,即1027162-20160915220202727-1370036994.png。这样所谓的状态变量记录的就是真实行人的位置和大小信息。

然后定义观测变量1027162-20160915220203023-2080089189.png1027162-20160915220203367-1982179358.png是检测到的行人个数,1027162-20160915220203852-1462411482.png表示第1027162-20160915220204289-1131226962.png个人检测到的状态,同样使用位置和大小刻画。

现在检测到观测变量1027162-20160915220204680-1692930936.png,我们希望推导出真实的状态变量1027162-20160915220205055-1103779552.png,可以使用最大化后验概率(MAP)计算。

1027162-20160915220205414-442319683.png

1027162-20160915220205977-1210457257.png 是一个集合,我们希望1027162-20160915220206477-1286319249.png的计算可以使用概率的乘法公式,可是1027162-20160915220207008-660979552.png1027162-20160915220207492-1755854580.png中的个体并不能保证是相互独立的,所以不能直接对个体进行运算。

现在通过部件检测子,将行人个体拆分成部件,那么状态变量1027162-20160915220207930-2136655769.png可以表示为1027162-20160915220208336-227176696.png,其中1027162-20160915220208617-1784540156.png分别表示部件的类型1027162-20160915220209039-820560861.png,类似的观测变量可以直接定义为:1027162-20160915220209648-848536490.png,其中1027162-20160915220209930-1646430042.png分别对应不同部件检测到的个数。

将人体拆分成部件之后可以去掉遮挡的部件,使剩下的部件尽可能的相互独立,然后就可以使用概率的乘法公式了。

假设
  1. 所有的行人行走在一个平面上

  2. 相机拍摄角度是俯视

根据假设,我们可以认为如果一个行人中心点的y坐标越小,其深度值越高,即离摄像头越远(这里图像的坐标是从左上角开始的)。

enter description here

3Dassumption.png

于是通过目标区域的重叠程度可以判断是否发生重叠,发生重叠之后可以通过深度信息判定哪个部件被遮挡,进而将被遮挡的部件去除。去除了遮挡部件的状态变量可以表示为1027162-20160915220210977-1201027461.png,其中1027162-20160915220211398-1808428795.png表示1027162-20160915220211742-1318827165.png部件中的第1027162-20160915220212070-1117155944.png个部件,1027162-20160915220212352-1651881897.png表示没被遮挡的1027162-20160915220212680-1349722908.png部件的个数。

这样,公式(1)可以写成

1027162-20160915220213023-1046539470.png

那么每个部件下的条件概率该如何计算呢?以1027162-20160915220214102-241000691.png部件为例,1027162-20160915220214758-596176093.png表示真实的1027162-20160915220215055-806303619.png部件集合有1027162-20160915220215539-349420189.png现在检测到集合1027162-20160915220216273-1087402631.png的概率。这相当于一个检测问题,包括正确检测和错误检测。错误检测包括误检和漏检,而正确检测又需要考虑和对应真实部件的匹配的概率问题。

1027162-20160915220216648-1066220722.png

其中1027162-20160915220216883-670950585.png分别表示正确检测(success detected)、误检(false alarm)、漏检(false negative),1027162-20160915220217383-1689727520.png分别表示对应的部件集合。1027162-20160915220218242-13796473.png分别表示误检率和漏检率,1027162-20160915220218555-730794441.png则表示检测正确率,而1027162-20160915220218992-227752799.png表示1027162-20160915220220148-1514070616.png1027162-20160915220220445-76259551.png匹配的概率,1027162-20160915220220820-1116055055.png就是1027162-20160915220221414-1640999814.png匹配的状态,假设1027162-20160915220221898-1635830611.png服从高斯分布,而1027162-20160915220222273-547381961.png定义如下:

1027162-20160915220222695-433638578.png

1027162-20160915220223070-124188103.png分别表示在验证集中误检样本个数,正确检测样本个数以及真实正样本的个数。1027162-20160915220223461-97185168.png是归一化因子,使1027162-20160915220223898-53977261.png,1027162-20160915220225273-1955934529.png反映的是正确检测和错误检测的相对重要性。

现在还有一个问题,如何确定匹配对1027162-20160915220225570-396943903.png?
文中使用的是最小距离匹配,计算检测部件1027162-20160915220225898-1541741751.png和真实部件1027162-20160915220226195-238609652.png的距离举着1027162-20160915220226633-1110806917.png,然后寻找最小的距离,将对应的1027162-20160915220226992-283785408.png配对,此时应该有个距离最大阈值,超过这个距离被认为没找到匹配,于是在1027162-20160915220227305-1079897038.png中找到所有的匹配点,也就确定了1027162-20160915220227914-904753005.png和对应的1027162-20160915220228211-303537606.png


行人检测方法主要过程

  1. 分别对各个部件训练检测子

    • 对训练集提取小边特征

    • 使用Real AdaBoost训练强分类器

    • 使用强分类器训练nested cascade detector

  2. 使用各个部件的验证集初始化参数

    • 匹配检测部件和真实部件1027162-20160915220228508-1918857234.png

    • 统计正确检测集,误检集合漏检集1027162-20160915220228805-1116952900.png

    • 由匹配对间的距离学习高斯分布1027162-20160915220229180-773293423.png

  3. 使用4种检测子扫描待检测图像,检测到四种部件的集合

  4. 1027162-20160915220229477-493847398.png1027162-20160915220229945-1349981768.png检测的结果初始化为真实行人的状态1027162-20160915220230461-2014012750.png,然后对这些行人拆分成部件(按部件的定义),根据1027162-20160915220230773-1272426362.png坐标去除遮挡部件,获得1027162-20160915220231258-1883971565.png

  5. 将部件检测子检测到的结果与初始化的状态进行匹配

  6. 循环 i=1 to m (m是检测到的行人个数)

    • 计算联合似然函数值1027162-20160915220231523-700857167.png 以及1027162-20160915220231805-2065006257.png

    • 如果1027162-20160915220232117-1693683530.png,则令1027162-20160915220232555-1929069550.png

  7. 输出1027162-20160915220232898-120122468.png作为最终的检测结果


补充与分析

  • 目标遮挡: 如果检测到的一个部件的重合区域占了该部件的1027162-20160915220233211-105684752.png,则认为该部件被遮挡

  • 由于摄像头的视角是俯视的,所以如果一个行人被捕捉到,最起码其Head-Shoulder部件一定能被检测到,所以在搜索过程的初始化阶段,选择1027162-20160915220233539-978942989.png1027162-20160915220233930-2024161270.png作为初始状态

  • 该算法可以认为是使用1027162-20160915220234320-788823657.png1027162-20160915220234617-1889949271.png检测行人目标,然后通过使四个部件检测子的结果得到联合似然函数值最大去剔除其中错误检测的部分


转载于:https://www.cnblogs.com/YiXiaoZhou/p/5875533.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值