APP下载

融合深度信息的双向人流量统计方法的研究与实现

2021-06-03张文利朱清宇

测控技术 2021年5期
关键词:人流量质心计数

张文利, 王 宁, 郭 向, 杨 堃, 马 超, 朱清宇

(1.北京工业大学 信息学部,北京 100124; 2.中建科技集团有限公司,北京 100070)

智慧建筑利用物联网、云计算、智能感知等现代信息技术,实现自然环境与人的沟通与交互。智慧建筑始终应以人为服务中心,相关研究[1]表明人们每天80%~90%的时间都处于室内建筑环境中,为给室内人员提供更好的体验,因此感知室内人员及人员流动状况成为智慧建筑的基础前提。在室内办公区,人流量统计数据能够为自动化控制建筑内部的温湿度、光线强度、电梯规划、工位规划等提供可靠数据支撑,营造舒适、人性化的办公环境。对于商场店铺而言,参考客流量信息分析客户的购物习惯和偏好,统筹商场布局、布置商品货柜,避免商品资源浪费。而走廊等狭窄环境光照条件较昏暗,存在拥挤、踩踏等安全隐患,通过掌握该场景中的人流数量及流动方向,能够实时评估场所的拥挤程度,从而做到提前预警和指导疏散引流措施的部署。

综上所述,人流量统计技术不仅为智慧建筑的自动化、智慧化控制提供了可靠的判断依据,同时在资源合理调配以及公共安全防控等方面发挥着重要作用,具有广泛的应用前景和社会价值。

目前,为满足多个应用场景的需求,人流量统计方法分为纵向、横向人流量统计方法,其中横向人流量统计即对从左向右和从右向左运动的人员进行计数;纵向人流量统计即对远离摄像头和接近摄像头的人员分别进行计数。

① 纵向人流量统计方法[2-10]。韩晓微等[2]通过判断RGB视频帧中目标的的初始位置和结束位置与门的相对位置关系,对纵向行走的人进行计数。张开生[3]首先定义RGB视频帧中进入场景的正方向向量,然后计算目标进入场景和离开场景的位置的向量与定义的正方向之间的夹角,若夹角大于90°则count加1,对纵向行走的人进行计数。刘军[7]通过基于加权的K近邻多目标跟踪算法跟踪每一个确认的人头目标,检测目标是否穿过虚拟线对人流量进行计数。周珂等[10]通过帧差法对运动目标进行检测,当目标未进入检测区域时,只对目标检测,不进行跟踪、画框;目标进入检测区域后,对目标画框,并进行跟踪;目标离开检测区域后,对目标进行计数。

② 横向人流量统计方法[11-13]。张小红[11]应用卡尔曼滤波的最近邻匹配跟踪算法对行人进行实时跟踪;根据人员在检测线左边(右边)状态,对人员进行左右方向的计数。杨亦乐等[12]通过DeepSORT对检测到的行人进行跟踪,判断连续两帧目标位置的连线与计数线是否相交决定是否对此行人进行计数。

但是现有人流量统计方法仍存在以下问题:

① 密集人群场景下,只能对左右或者上下方向人流量进行统计,不能提供全方位人流量信息。

② 现有多目标跟踪方法多采用IoU距离度量检测边框之间的位置相似度并进行关联,但在目标框频繁重叠的密集人群中,仅基于IoU距离的关联策略在密集人群中的可靠性较差。

③ 大多数RGB-D(RGB图像+Depth图像)多目标跟踪工作跟踪过程仍沿用已有基于RGB图像的跟踪方法,难以判断并处理跟踪过程中的目标遮挡。

④ 现有双向人员计数方法多依据两帧间目标轨迹的二维坐标变化,判断人员过线时的运动方向,而对于不规则运动的目标或相机视角变化情况易导致目标过线方向判断错误。

针对现有人流量统计方法存在的问题,为适应全方位计数场景,本文提出了融合深度信息的双向人流量统计方法,即对横、纵双向经过计数区域的人员同时计数,对人流量进行全方位监测,创新点如下:

① 提出一种基于边框IoU和深度变化率联合约束的目标匹配策略,结合目标的位置相似度和深度相似度来提高目标关联的可靠性,降低匹配过程中的错误和遗漏。

② 提出一种基于轨迹上下文深度差的目标遮挡判断策略,判断目标当前的遮挡状态,并依据遮挡状态优化轨迹处理策略,以处理关联过程中出现的人员遮挡问题,恢复长时间遮挡的轨迹。

③ 提出一种基于三维质心坐标的人员运动方向判断方法,该方法依据轨迹在当前帧的遮挡状态、三维质心坐标以及轨迹在前N帧的三维质心坐标,判断当前帧人员的运动方向,减少由于人员不规则运动或相机视角变化导致的过线方向判断错误。

1 总体框架

本文提出融合深度信息的双向人流量统计方法的总体架构,如图1所示。算法架构步骤如下。

图1 融合深度信息的双向人流量统计方法框架

① RGB-D视频序列提取模块。利用Kinect相机同时拍摄特定场所的RGB图像和深度图像,并将RGB图像与同一场景下的深度图像进行配对,组成一组RGB-D图像,输出RGB-D视频序列。

② YOLOv3[14]人员检测模块。将从上述步骤①中获取的RGB视频序列作为输入,采用YOLOv3目标检测算法检测行人头部,获取RGB视频序列的当前帧中所有人员的头部区域边框坐标并输出。

③ 融合深度信息的多目标跟踪模块。将从步骤②中获取到的行人头部边框坐标作为输入并将其标记为行人轨迹的起始位置,对行人进行跟踪,其中利用深度变化率和边框IoU优化目标匹配过程,联合上下文深度差判断遮挡状态,自适应调整轨迹的更新和注销,优化轨迹处理过程,输出匹配成功的行人轨迹和遮挡状态信息。

④ 基于三维质心坐标的双向人流量统计模块。将从步骤③中获取到的行人运动轨迹和遮挡状态作为输入,依据轨迹遮挡状态、三维质心坐标判断当前帧人员的运动方向,并根据人员运动方向和运动轨迹,对横、纵双向经过主计数线的人员进行计数,并将计数结果、人员遮挡状态、人员运动轨迹和横、纵运动方向等信息输出到步骤⑤。

⑤ 人流量信息可视化。统计并可视化人员数量,实时日志,人员运动轨迹,人员遮挡状态和横、纵运动方向。

RGB-D视频序列提取模块得到成对图像,如图2所示。本文应用YOLOv3目标检测算法检测行人头部,检测结果如图3所示。以下将对图1中③、④模块进行详细说明。

图2 视频序列中RGB和深度图像分组

图3 检测结果

1.1 融合深度信息的多目标跟踪模块

本文在DeepSORT算法[15]的基础上引入场景深度信息,增加了“基于IoU和深度变化率联合约束的目标匹配策略”和“利用轨迹上下文深度差判断遮挡状态”两个步骤,提高跟踪匹配的精准性和可靠性,总体流程如图4所示。本模块利用深度变化率对目标轨迹进行约束,提高目标匹配的可靠性,同时联合轨迹上下文深度差判断目标的遮挡状态,对目标轨迹进行优化。

图4 融合深度信息改进的DeepSORT多目标跟踪算法

1.1.1 基于边框IoU和深度变化率联合约束的目标匹配策略

如图1中的模块③所示,本步骤在利用DeepSORT算法中预训练的CNN网络提取目标的外观描述后,通过卡尔曼滤波器预测获得目标的两个运动信息:位置信息及位置的不确定性信息,为基于边框IoU和深度变化率联合约束的目标匹配策略提供输入数据。

传统方法使用硬间隔对IoU进行分类,硬间隔即应用超平面将所有值进行正确分类。但IoU硬间隔可靠性差,易导致匹配错误。本文提出一种联合约束目标匹配方法,采用软间隔的方式平滑决策边界,即引入边框IoU和深度变化率作为松弛量,允许有一定的分类误差,流程图如图5所示。深度变化率dr定义为:轨迹存储的第i-1帧的平均深度值减去目标在当前第i帧的平均深度,最后除以100取百分数,计算公式如式(1)所示。

图5 基于IoU和深度变化率联合约束的目标匹配策略

(1)

具体步骤如下。

① 计算IoU代价矩阵。计算初次匹配结果中所有未匹配轨迹的集合trk与未匹配检测的集合det之间的IoU代价矩阵C,IoU代价可以通过式(2)和式(3)计算获得。

(2)

(3)

② 计算深度变化率代价矩阵dr。获取所有未匹配轨迹的深度均值Dtrk以及所有未匹配检测结果的深度均值Ddet,并计算两两之间的深度变化率矩阵dr,其计算公式如下:

(4)

③ 联合约束。采用软间隔的方式平滑决策边界: 若0.6≤Cij≤0.8,利用Cij和drij联合约束代价矩阵;若Cij>0.8,表明二者位置相似度很低,drij≥0.8,表明二者深度相似度十分微小,上述两种情况拒绝trki与detj关联;若0≤Cij≤0.6,表明二者的位置相似度具有较高的可靠性。联合约束公式如下:

(5)

(6)

Cij=Cij,0≤Cij<0.7或Cij>0.8

(7)

Cij=1,drij≥0.8

(8)

④ 应用匈牙利算法[16]输出最优匹配。本文将联合约束后的代价矩阵C输入到匈牙利算法中,获得trk与det之间的最优匹配结果。

1.1.2 利用轨迹上下文深度差判断遮挡状态

经过1.1.1节的目标匹配操作之后,需要对不同状态的轨迹进行后续处理和更新,在密集人群场景下,容易发生目标长时间被遮挡的情况,导致目标跟丢。本文提出一种遮挡状态判断方法,基于轨迹上下文深度差的目标遮挡判断策略,如图6所示。判断人员在当前帧的遮挡状态下,利用遮挡状态自适应调整目标最大存活时间max_ages,有效降低因目标长时间被遮挡导致跟丢的概率。

图6 基于轨迹上下文深度差判断遮挡状态

轨迹上下文深度差是指包括当前时刻在内,轨迹连续N帧的帧间深度差,帧间深度差ΔD定义为:当前时刻检测结果的深度均值Ddet与对应的轨迹在上一时刻存储的深度均值Dtrk之差的绝对值,计算方法如下:

ΔD=|Ddet-Dtrk|

(9)

具体算法如下。

① 定义轨迹属性。对于每个初始化的轨迹赋予3个属性参数:occState,用于记录当前轨迹的遮挡状态;unoccTimer,用于记录当前轨迹保持无遮挡状态的时间;roiDepthMean,当前检测结果或轨迹的平均深度值。

② 计算轨迹与检测结果之间的深度差ΔD。首先需要计算二者的平均深度值,平均深度值roiDepthMean的计算方法如图7所示,先将目标边框坐标映射到深度图像上,提取人员的头部区域;本文中通过计算感兴趣区域中所有非零元素的最小值,来填充深度缺失值,减少背景像素深度的干扰。进一步以感兴趣区域的中心点为中心,向外拓展6×6大小的矩形窗口,计算该矩形窗口下的深度均值作为感兴趣区域的深度均值。最后获得当前时刻检测结果的深度均值Ddet以及对应的轨迹在上一时刻存储的深度均值Dtrk,通过式(9)计算帧间深度差以用于后续遮挡判断。

图7 平均深度值的计算步骤

③ 利用轨迹上下文深度差判断目标的遮挡状态。依据遮挡变化与深度变化之间的关联性,本文利用轨迹上下文深度差判断目标的遮挡状态,当前帧与上一帧目标深度差过大时判定为目标被遮挡,当目标连续N次无遮挡时判定为无遮挡状态。

分析遮挡变化与深度变化的关联性。如图8所示,由于跟踪过程中人员的运动连续性,当人员头部处于无遮挡状态时,帧间深度差ΔD将保持小数值范围内的变化。如图8(a)所示,当头部被实心固定物遮挡时,相对应的ΔD变化为:数值波动—小数值—数值波动。如图8(b)所示,人头被空心固定物遮挡时,对应的ΔD将在一定时间内介于小数值与大数值之间进行数值波动。如图8(c)所示,人头被多人重叠遮挡时,此情况下由于人员的运动方向、速度等属性通常具有随机性,人员遮挡情况较为复杂,难以定量捕捉ΔD的显著变化规律,ΔD仍将在一定时间进行小数值与大数值之间的上下波动。

图8 运动遮挡变化分析

利用轨迹上下文深度差判断遮挡状态。当帧间深度差ΔD大于等于最大深度差阈值T时,更新当前目标的遮挡状态为“被遮挡”;若轨迹在连续N帧内的帧间深度差均满足ΔD

(10)

④ 依据遮挡状态优化的轨迹处理策略。对于未匹配的轨迹,本文利用目标的遮挡状态,自适应调整轨迹的最大存活时间max_ages。首先为max_ages设置固定初始值S(本文设置为15),若当前轨迹的消失帧数time_since_update≤S,则保留该轨迹进行后续匹配;反之则检查该轨迹的遮挡状态;若当前轨迹处于“无遮挡”状态,则有足够证据表明该轨迹对应的目标已从视频帧中消失,因此删除该轨迹;若为“被遮挡状态”,令max_ages+1,适当延长该轨迹的最大存活时间,从而有助于恢复被长时间遮挡的目标的轨迹;与此同时设置最大截断值end,当处于“被遮挡”的轨迹满足max_ages≥end时,删除该轨迹,以避免跟踪过程中存储过多无效轨迹。

1.2 基于三维质心坐标的双向人流量统计模块

基于三维质心坐标的双向人流量统计模块主要分为两个部分:首先针对二维质心坐标对人员运动方向容易判断错误,本文引入深度信息,利用目标的三维质心坐标对运动方向进行判断,提升目标运动方向判断的准确性;其次双向人员计数方法部分引入两条虚拟计数线,对过线目标进行计数。具体方法如下。

1.2.1 基于三维质心坐标的人员运动方向判断方法

传统方法仅依据两帧间目标轨迹的二维坐标变化判断人员运动方向,判断不规则运动人员过线时的运动方向时易导致方向判断错误,此外过度依赖于二维平面坐标系,忽略了目标在场景中的三维距离变化,对相机的拍摄视角敏感。为解决上述问题,本文提出一种基于三维质心坐标的方向判断方法,引入目标的深度信息,同时联合多帧质心,判断人员横向和纵向的运动方向,算法流程如图9所示,算法具体步骤如下。

图9 基于三维质心坐标的人员运动方向判断方法

① 获取检测结果的三维质心坐标Centroiddet。对于匹配成功的轨迹,获取当前帧检测结果的三维质心坐标Centroiddet,三维质心可以表示为(x,y,d),其中x,y,d分别为质心横坐标、纵坐标和质深度。

② 获取对应轨迹的质心队列preCentroids。每个轨迹都具有一个最大长度为N的质心队列preCentroids,用于记录该人员在前N帧的三维质心坐标。本文中N取10,即轨迹最大能够记录从当前时刻向前10次成功匹配的三维质心。

③ 判断人员的运动方向。本文所提方法能够同时实现对纵向(上、下) 和横向(左、右)的方向判断。

对于纵向方向判断,分为以下两种情况。若当前时刻人员处于无遮挡状态,计算前N帧质心深度均值与当前质心深度差值,得到目标运动方向,如式(11)所示:

(11)

式中,preCentroidsd=[d1,d2,…,dN]代表从preCentroids提取的质心深度队列。

若当前时刻人员处于被遮挡状态,此时质心深度可能发生波动而不适用于定量计算,因此计算前N帧质心纵坐标均值与当前质心纵坐标做差,得到目标运动方向,如式(12)所示。

(12)

式中,preCentroidsy=[y1,y2,…,yN]代表从preCentroids提取的质心纵坐标队列。

最后依据目标遮挡状态和diff的符号,利用式(13)和式(14)判断当前时刻人员的纵向运动方向directy。

(13)

(14)

对于横向方向判断,由于相机镜头的法线方向与人员运动平面垂直,使得人员横向运动时深度变化较小,因此本文采用通过质心横坐标的变化判断人员的横向运动方向,计算方法见式(15)和式(16)。

(15)

(16)

在纵向运动方向directy的取值中,up代表人员的运动方向为由下向上,down则代表由上向下;在横向运动方向directx的取值中,left代表人员的运动方向为从右向左,right则代表从左向右;0则代表静止状态,也用于表示轨迹在首帧的初始方向。

④ 更新轨迹参数。在完成人员在当前帧的方向判断后,利用当前帧的计算结果,更新轨迹的三维质心坐标、横/纵运动方向、平均深度值等参数,并将当前帧的三维质心坐标压入到preCentroids队列中,用于后续帧的判断和处理。

1.2.2 双向人员计数方法

在1.1节获取人员运动轨迹以及1.2.1节获取人员运动方向后,本文对横、纵双向经过主计数线的人员进行计数,从而记录双向人流量,同时结合人员起始位置和两条辅助计数线,处理人员折返等异常运动状态,减少重复计数和错误计数的发生,提高计数的准确率。双向人流量统计方法如图10所示。

图10 双向人流量统计可视化结果

下文以纵向计数为例,描述所提双向人员计数方法的具体步骤。

① 获取当前轨迹的三维质心坐标、质心队列和运动方向。由1.1节多目标跟踪结果获取当前轨迹的三维质心坐标centroid、质心队列preCentroids,由1.2.1节人员运动方向判断结果获取当前轨迹的运动方向direct。

② 设置主计数线。对于纵向计数,本文在视频帧的中央设置一条水平主计数线,用于对向上和向下经过计数线的人员进行分别计数。本文中所采用的视频序列,分辨率为640像素×480像素,因此主计数线的纵坐标记为Ly=240。

③ 判断轨迹的起始位置。判断起始位置的目的是避免目标在首次出现但还未过线时被错误计数。对于纵向计数,通过质心队列中纵坐标大于(小于)Ly的个数与阈值S作比较,对目标起始位置进行判断,轨迹的起始位置位于计数线上半部分,记Flagup=1,反之为0,本文将阈值S设置为3,Flagup和Flagdown的计算公式如下:

(17)

(18)

④ 统计首次穿越计数线的人员数量。布尔参数counted初始化为0,用于记录该人员ID是否已经被计数。若当前轨迹尚未计数,则依据运动方向可分为以下3种情况:若direction=0,表明目标静止或当前为轨迹的首帧,因此不纳入计数;若direction<0,并且当前质心纵坐标在主计数线上半部分,即centroidy0,且满足centroidy>Ly,Flagup=1,表明目标由上向下运动并越过主计数线,因此向下计数值加1,并更新轨迹参数counted=1。

⑤ 设置辅助计数线,处理折返目标的重复计数。针对已计数的轨迹,本文依据其到达的最远位置来判断是否重复计数。

对于纵向计数,首先以主计数线为中心,分别在距其上、下方dis的位置设置第1、第2辅助计数线。若direction<0且满足centroidy

推广到横向计数中,实现对左、右方向人流量的统计,从而完成对横、纵双向人员流量的精准统计。

2 实验分析与对比

2.1 数据集选择

在实际场景下,以沿相机镜头法线运动的纵向计数应用最为广泛,横向计数与其原理基本一致。为了验证本文融合场景深度信息的双向人流量统计方法的有效性,笔者选取MICC数据集进行实验验证。MICC数据集由Bondi等[17]提供,该数据集以俯角45°对人员密集场景进行拍摄,其中由FLOW、QUEUE、GROUPS 3个集合构成,其场景示意图如图11所示,其包含了多种行人运动模式,具有一定的挑战性,下面对3个数据集进行详细介绍。

图11 MICC在3个场景下的样本示例

① FLOW。如图11(a)所示,FLOW数据集共1148帧,其中包括9名人员。其模拟了地下通道以及建筑出入口等人员纵向快速流动的场景,同时包含了部分横向移动。本文利用该序列评估所提算法在快速运动和方向变化情况下的人流量统计精度。

② GROUPS。如图11(b)所示,GROUPS数据集共917帧,其中包括9名人员。人员首先运动至画面中,并分为两组进行相互交谈,其模拟了会议室等人员从运动到聚集停留的场景。本文利用该序列评估所提算法在人员聚集情况下的人流量统计精度。

③ QUEUE。如图11(c)所示,QUEUE数据集共1128帧,其中包括10名人员。人员以有序队列的形式依次向前缓慢移动,其模拟了店铺、售票厅的排队场景。本文利用该序列验证所提算法在人员小幅度运动情况下的人流量统计精度。

2.2 评价指标

本文通过精准率(Precision)、召回率(Recall)和F1分数来评估双向人流量统计的精度。

2.3 实验对比

本实验使用Pytorch1.0深度学习框架,在装有NVIDIA GTX1080Ti和CUDA10.2 的Ubuntu18.04系统上训练模型。

本文分别在FLOW、GROUPS和QUEUE 3个数据集上测试所提双向人流量统计方法的精度,与文献以及仅基于RGB图像的YOLOv3-DeepSORT方法进行对比,并进行消融实验,在YOLOv3-DeepSORT基础上验证联合约束的目标匹配方法和遮挡状态判断方法的有效性,对比实验结果见表1~表3。其中GTs代表视频序列中真实纵向、横向运动的人数,文献[10]采用YOLOv3与SORT跟踪算法的组合实现人流量统计。

由表1~表3的结果可以看出,在YOLOv3-DeepSORT算法分别加入联合约束的目标匹配方法和遮挡状态判断方法后精准率和召回率有了明显提升,漏检误检情况极大降低,说明了两种方法的有效性。本文所提算法同时加入两种方法后在3个不同场景的数据集上进行测试,虽然速度有一些下降,但仍能达到实时效果,且性能有了大幅度提升。在3个数据集中,当某运动方向没有行人走动时,算法精准率为0;当某方向被统计的行人全部被正确统计时,其F1值和Recall值为100%。

表1 FLOW数据集上的对比实验结果

在FLOW数据集上,文献[10]的方法以及仅基于RGB图像的YOLOv3-DeepSORT方法均出现了不同程度的人员漏检和错检,导致F1分数的降低,本文算法通过组合RGB信息和深度信息,在人员快速流动的横、纵方向计数中,F1分数超过95%,甚至高达100%,明显优于上述两种算法。

在GROUPS数据集上,由于人员聚集而产生的交叉遮挡使得仅基于RGB图像的方法出现较多目标误检,本文方法通过融合场景的三维数据强化了对目标的特征描述,从而增强了算法处理遮挡的能力,使得F1分数显著优于对比算法。

表2 GROUPS数据集上的对比实验结果

在QUEUE数据集上,基于RGB图像的方法产生了大量人员漏检,经分析主要是由于人员小幅度移动导致了长时间遮挡,与此同时人员在计数线附近徘徊也使得误检的风险增大。而本文所提方法能够有效地应对上述情况,使横、纵双向的人流量统计保持较高的精度。

表3 QUEUE数据集上的对比实验结果

3 结论

① 为解决基于IoU距离的关联策略在密集人群中的可靠性较差的问题,本文提出基于IoU和深度变化率联合约束的目标匹配策略,利用位置相似度和深度相似度联合约束目标和运动轨迹,提升匹配可靠性;

② 提出基于轨迹上下文深度差的目标遮挡判断策略,有效判断目标遮挡状态,并及时调整其轨迹更新策略;

③ 由于人员不规则运动和沿成像平面法线运动在二维坐标上具有很小的差异,因此本文提出利用三维质心坐标判断运动方向,引入深度信息,得到目标间的位置差异,使以上问题得到解决。

现阶段人流量统计方法仅实现了二维平面上人员的定位与跟踪,后续将考虑拓展到三维空间中定位人员位置并分析人员分布;而且目前本方法可承载最大人流量约为10~15人,后续考虑对该方法进行优化,提升可承载人流量容量。

猜你喜欢

人流量质心计数
重型半挂汽车质量与质心位置估计
古人计数
基于GNSS测量的天宫二号质心确定
递归计数的六种方式
自动门人流量检测系统设计
古代的计数方法
提高高职院校图书馆现刊阅览室人流量的策略研究
这样“计数”不恼人
三级客运汽车站服务能力影响因素分析
一种海洋测高卫星质心在轨估计算法