这一节讲述了一种更加复杂的用于行人检测及跟踪的算法,这种算法能够在非常拥挤的情形下,比如地铁站的电梯入口处统计人数。对人群中单个人的检测和追踪已经取得了很大的进步,但这种算法仅仅在实验室中对一小部分人进行测试[179,149]。现实场景中不仅包括松散的人群,也包括稠密的人群。浅角度成像的条件下,互相遮挡很严重,任何跟踪算法也难以奏效,即使采用多摄像机的方法也不能解决问题。我们提出的行人跟踪及计数算法,采用双重策略解决这个问题:①检测尽可能多的行人,并允许误检;②对统计数字关于时间进行积分。
图6.2 地下车站的拥挤画面
我们提出的人群计数方法整合了多种假设,用于在时间和空间两方面对人的头肩部区域进行检测。这种算法往往不会对每个行人产生唯一的轨迹(尽管那些轨迹通常距离很近),但是我们能看出,基于人为分类的真实背景数据进行系统校正因子的一次估计后,在很复杂的真实场景中精度能上升到98%。图6.2展示了在地下车站里测试摄像机获取的一帧图像,附有外加的轨迹线和横断面计数线。关于算法的详细介绍见参考文献[495]。
也有一些方案不需要借助于行人追踪来处理真实场景,见参考文献[87,437,106]。但是,它们远远不满足实时性,所以很难移植到智能摄像机中。在6.3.2.3节中将讲述如何把我们的算法移植到智能摄像机上。
6.3.2.1 人群追踪算法
我们的追踪算法基于这样一种观察——不考虑他们的衣服及其他特征,他们的头部和肩部形成一种典型的Ω形。基于有效形状模型(ASM)的检测,基于简单背景模型的关注滤波器和用于预测的运动检测成为了我们提出的行人跟踪系统的核心。
在运动估计中采用一种简单的背景(BG)模型,就能从每帧图像中除去不感兴趣的像素,从而为后续检测阶段节省了时间。BG模型很容易实现定点运算。它把新的帧以一定的权重加入到累积帧,其中α控制更新速率:
BGnew=(1-α)·BGprev+α·Imagenew (6.1)
当粗略地检测出轮廓之后,就可用方向梯度模式检测器的直方图模式来定位行人候选人。通过定点运算不仅可以完全实现该方法,也可以实现分类的线性支持向量机。
我们采用ASM模型对每个可能的行人位置进行测试,不管图像中的污损部位是否可能包含一个行人。我们的ASM实现紧跟着Cootes在参考文献[123]中所描述的方法。在我们的实验中一个行人外形轮廓被表示成一个包含23个形状点Mi=(x1,y1,……,x23,y23)的模型。当外形轮廓按顺时针方向横切时,定义模型点的局部角度Φ为它右边顶点的走向。来自实际样本的130个形状数据库被用于训练ASM。在模型中使用五个基本的特征外形轮廓,在这个五维特征空间内的训练样本所覆盖的体积定义了所有新近检测到的形状的范围。使特征空间中的ASM坐标落入指定的最大欧氏距离范围内(这是到最可能训练样本点的距离),从而保证模型只会变形为和形状训练集相一致的形状。
由直方图特征向量求得一个描述,用于刻画每一个行人。这种描述作为帧间个体识别的方法,用于检测遮挡或消失的行人。在这种情况下,通过Kalman滤波器推测出已知轨迹的短时路线,来填充检测到的这些空白间隙。最后,利用虚拟门槛和简单的轨迹启发式方法完成对过往行人的计数。追踪/计数算法总结如下:
(1)计算得到一个简单的背景模型;
(2)在前景外形轮廓图内生成HOG候选人;
(3)用ASM移除伪候选人,从而产生新的行人候选人;
(4)把第(3)步和之前视频帧中出现的那些重叠外形轮廓进行合并;
(5)计算剩余外形轮廓的直方图特征;
(6)对于每个ASM外形轮廓:
①使用KLT运动信息或者运动估计把外形轮廓投影到下一帧图像中;
②在步骤①的预测区域内,针对被预测的外形轮廓,找到最相似直方图特征的向量。把不匹配的外形轮廓保留在被预测的位置;
③把步骤②中的结果和步骤①中的候选人合并从而减少冗余外形轮廓的数量;
④在步骤①中指定的位置,ASM把上一帧中初始外形轮廓模型进行匹配——新的外形轮廓只允许和上一帧有轻微的差别。
(7)把新的外形轮廓位置连接到各自的轨迹中;
(8)步骤(3)中的行人候选人开始新的轨迹追踪;
(9)去除预测超过8次的轨迹。(www.xing528.com)
6.3.2.2 计数性能的统计分析
对上述算法的计数精确性,我们进行了全面的统计分析。以图6.2中室内地下场景为例,给出了相应的结果,这里对两个上行扶梯路径上的行人进行计数。
图6.3a评估了在工作日上午8~9点之间一个小时内的计数结果。人工计数(可靠)已经从一个视频注释软件中获得。计数的累积和说明了自动计数完全地偏高估计。图6.3b是约20s累计时间段内人工计数和自动计数的散点图,并给出相应的线性回归。图6.3c是大约120s累计时间段的结果。有趣的是,两组累计回归线的斜率大约都是89%,这说明在两个计数时间段内,自动计数方法以相同的程度完全过高估计了真实人数。事实上,对于所有其他的时间段也存在很强的线性相关性,且斜率处于很小的变化范围。
图6.3d给出了对线性模型进行交叉验证的结果:50%的数据用来建立模型,剩下的50%的数据用来做测试。平均绝对误差随着计数时间的增加而减少,当累计时间为240秒的时候,达到10%。相对于更长的累计时间,一小时内有限的人工标注数据并不能产生有统计意义的结果。尽管如此,图6.3a中的计数实例表明,如果把矫正因子0.89用于自动计数的结果中,在30分钟的计数间隔内,其平均绝对误差能减少到5%,一个小时后能减少到2%。在相同的系统条件下,我们也评估了一个完全不同的室外场景,证明了本文提出的计数方法是可靠的;更多细节见参考文献[495]。
6.3.2.3 在嵌入式系统上运行算法
人群追踪算法的实现,最终必然会在智能摄像机上实时运行。目前,尽管算法的所有部分还不能实时运行,但是部分算法模块可以在智能摄像机原型组件上运行。这一节对算法的实现性能和在VC4465智能摄像机上运行的瓶颈作出估计。行人追踪算法的主要部分就是KLT运动分析,HOG行人检测阶段以及ASM验证阶段。对于一个典型的实时场景,每个算法的运行时间可以从以下几个方面进行估计:
①帧分辨率:384×288像素;
②帧速率:15帧/s;
③每帧追踪20个行人;
④每帧测试1500个HOG检测器窗口;
⑤测试HOG检测器在第一阶段产生的20个结果,对每个结果,ASM执行四次迭代;
⑥每帧追踪20个行人,对每个行人,ASM模型执行8次迭代。
在6.3.1节讲述了KLT点追踪器的实时实现。这种实现能直接在智能摄像机上使用。HOG行人检测器已经完全实现了定点运算。对于块累积和归一化的单元,计算中小数点是固定的,使用32bit运算,约6bit的精度表示有效小数部分。为了加快特征的计算,考虑到内存并不是摄像机的瓶颈,实现了9种直方图积分(每种32bit)。所以后续单元的计算都是在这些图像上进行的,使得HOG检测器不取决于检测器窗口的大小。
图6.3 对图6.2地下场景中计数精度的统计评估
a)1小时内的人工计数、自动计数、矫正后计数 b)20s累计时间段内,自动计数与人工计数的线性回归 c)120s累计时间段内,自动计数与人工计数的线性回归 d)线性模型的验证
当设计ASM的应用实现时,关键是确保代码能长期适合于定点结构。Sobel算法用于梯度和方向计算(它的输出也直接用于HOG过程),并且所有耗时的数学运算都被查找表取代。
表6.4给出了各个主要处理阶段花费的时间(包括估计的时间和基准时间)。由于每秒只能处理6帧图像,行人追踪器的实现并不具备实时性能。最慢的算法显然是ASM,它处理每帧大概用时96ms。为了使智能摄像机中实现的速度提高,可以采取以下措施:
①改进ASM的实现,一些部分仍然使用浮点运算,可提高大约30%的速度;
②使用少量的ASM的迭代,对每个行人,用6次迭代代替8个迭代,可提高25%的速度;
③进一步改进KLT的实现,可提高20%的速度。
表6.4 人群追踪核心算法的耗时结果——每帧平均20个行人,时间单位为μs。PC时间基于2.0G的PC X86进行测量,SC时间(估算)基于1G的VC4465智能摄像机进行测量。总的SC时间/帧所在列给出了基于上述运行时间要求的每种检测算法的运行时间 (单位:μs)
考虑到提高速度的各种可能性,我们估测在VC44智能摄像机上,视频序列中平均每帧图像包含20个行人,行人计数应用程序应该以10帧/s的速度运行。前面已经定义了理想的计数性能,我们估测的这一速度低于理想计数性能所要求的最低帧率,但对于某些应用已经足够了。为进一步显著地提高性能,只有去修改和改进算法本身了。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。