本发明涉及智慧城市、人工智能、仪器仪表技术领域,具体涉及一种基于场的高密度人流量定位与监测方法。
背景技术:
目前,用于检测人流量及人群密度的图像处理系统主要分为两大类。一种是基于检测的统计,主要通过基于深度神经网络的物体检测器得到人物的边界框,并通过边界框的个数来推定人群密度和短时间内的流量变化。基于边界框的方法主要有以下限制:难以检测遮挡的物体,对完全遮挡的物体只能通过跟踪和重识别的方法修正,提高了系统的实时性要求和整体复杂度;随之带来的问题是计算量偏大,只有输入分辨率足够大的图像才能得到足以区分人物的分辨率,存在分辨率瓶颈导致无法得到更小目标的检测结果,进而导致无法平衡计算量和性能;检测精度较低。
另一种是基于热力图的网络来进行人群计数和定位。基于热力图方式的网络同样存在低分辨率容易导致性能劣化的问题,并且存在小目标难以训练的问题。一般情况下基于热力图的网络输出是需要使用概率云的后处理方法进行位置回归的,由于概率云的范围较大,为了避免发生混叠,需要提高网络分辨率并适当缩小训练时的概率云分布,这样又造成了计算量与分辨率的矛盾,又因为网络训练的损失函数是基于均方误差的,所以对于小目标难以训练。
因此,现有人流量定位与监测技术存在计算量大、监测精度低的问题。
技术实现要素:
本发明提供了一种基于场的高密度人流量定位与监测方法,该方法实现了高密度人流量定位与监测,降低了计算量,监测精度更高。
一种基于场的高密度人流量定位与监测方法,该方法包括:
步骤一,根据获取的原始彩色人流量图像生成七通道图像数据t{r,g,b,d,h,m,n},其中,r、g、b为原始彩色图像rgb数据的对应通道分量,d通道为暗通道数据,h通道为亮通道数据,m通道为高光细节,n通道为阴影细节;
步骤二,根据常用的人流量监测数据集生成场数据f{x,y,c,r},作为标注数据,其中,x分量表示横坐标方向上向真值点聚拢的强度,y分量表示纵坐标方向上向真值点聚拢的强度,c分量表示标注位置的置信度,r分量表示标注半径;
步骤三,根据场数据设计损失函数loss=msexy*h(c)+mser,其中,msexy为场数据分量x、y的联合均方误差损失,h(c)为分量c的交叉熵损失,mser为分量r的均方误差损失;
步骤四,将原始彩色人流量图像与标注数据作为样本数据集,基于损失函数loss对深度神经网络进行训练;
步骤五,将待检测原始彩色人流量图像的七通道数据输入训练好的深度神经网络,根据网络输出场数据进行热力图重建,对热力图中亮斑进行计数和定位,实现高密度人流量定位与监测。
步骤一中的暗通道数据为:
d(i,j)=min(r(i,j),g(i,j),b(i,j))
其中,d(i,j)是像素位置(i,j)处暗通道数据d的像素值;
所述亮通道数据为:
h(i,j)=max(r(i,j),g(i,j),b(i,j))
其中,h(i,j)是像素位置(i,j)处亮通道数据h的像素值;
所述高光细节为:
其中,m(i,j)是像素位置(i,j)处高光细节m的像素值;
所述阴影细节为:
其中,n(i,j)是像素位置(i,j)处阴影细节n的像素值。
步骤二中的场数据具体为:
设真值中心点位置为(x’,y’),当前像素位置的坐标为(x,y),distance为当前像素位置与真值点位置之间的距离,
对x分量有:
对y分量有同上的定义:
对c分量有:
对r分量有:
其中,r0为预设的标注半径。
步骤三包括:
根据场数据设计损失函数loss=msexy*h(c)+mser,
场数据分量x、y的联合均方误差损失msexy:
分量r的均方误差mser:
分量c的交叉熵损失h(c):
其中,output(i,j)x、output(i,j)y、output(i,j)r、cout(i,j)分别为输出数据位置(i,j)处场数据中x分量值、y分量值、r分量值、c分量值,gt(i,j)x、gt(i,j)y、gt(i,j)r、clabel(i,j)为标注数据位置(i,j)处场数据中x分量值、y分量值、r分量值、c分量值,rows为输出图像的行数,cols为输出图像的列数,all指代所有像素位置,α为一超参数。
步骤五中的根据网络输出场数据进行热力图重建包括:
对场数据的各分量进行上采样处理,根据上采样结果进行热力图重建,得到热力图heat:
heat=(boxfilter(xup)+boxfilter(yup))*boxfilter(rup)*cup
其中,boxfilter是均值滤波器,xup、yup、rup、cup分别表示经过金字上采样的x分量、y分量、r分量、c分量。
步骤五中的对热力图中亮斑进行计数和定位包括:
采用非极大值抑制对热力图heat中的亮斑进行计数和定位。
步骤五中的对热力图中亮斑进行计数和定位包括:
对热力图heat进行二值化处理;
对二值化处理得到的连通域进行包围框检测得到感兴趣区域roi,采用下式抑制能量过强的亮斑:
其中,hc(roin(i,j))表示感兴趣区域roin位置(i,j)处经过能量抑制的像素值;heat(roin(i,j))为热力图heat感兴趣区域roin位置(i,j)处的像素值;
基于分水岭算法,对能量抑制结果进行图像分割,并对图像分割结果进行连通域计数,得到人流量估计结果;
对每个连通域使用softargmax进行位置回归,得到人的精确位置,实现人流量定位。
本发明的有益效果在于:
本发明使用场来替代热图的概率云,可以降低若干倍的网络输入分辨率来减少计算量;在高分辨率情况下具有更优的精确度,而降低分辨率后的计算量可以减少内存占用,使得网络可以部署在相机端,更具实用性和灵活性;对网络输出结果使用非线性图像处理,降低了后处理计算量。
附图说明
图1为基于场的高密度人流量定位与监测方法流程图;
图2为原始彩色人流量图像示意图;
图3(a)为标注场数据x、y分量求和的可视化图像示意图;
图3(b)为标注场数据c分量的可视化图像示意图;
图3(c)为网络输出重建热力图像示意图;
图3(d)为网络输出c分量的可视化图像;
图4为能量抑制后的热力图像。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种基于场的高密度人流量定位与监测方法。用于处理低分辨率图像中高密度人流量监测,能够得到人的位置及个数。本发明显著降低了计算量并可以直接处理低分辨率输入图像,降低了图像采集设备的硬件要求。在传统语义分割和关键点检测的原理中加入场的概念,提高了网络的分辨率,从各个方面降低了硬件系统的要求,不仅能够运行在云端,也可以运行在相机端。图1为基于场的高密度人流量定位与监测方法流程图。
下面通过具体实施例来进行说明。
实施例一:
基于场的高密度人流量定位与监测方法,该方法包括:
步骤一,根据获取的原始彩色人流量图像生成七通道图像数据t{r,g,b,d,h,m,n},其中,r、g、b为原始彩色图像rgb数据的对应通道分量,d通道为暗通道数据,h通道为亮通道数据,m通道为高光细节,n通道为阴影细节。
本发明使用面阵相机,具体采用一般的监控相机即可。面阵相机的典型分辨率为1920*1080,对于普通的网络而言,输入尽量高分辨率的图像可以提高密集人群的计数准确度。但是,高分辨率会导致计算量猛增,动辄数十gb的内存占用使计算无法在相机端完成。本发明采用低至少四倍的分辨率,减少计算量。以640*384的等效分辨率为例,考虑到网络内中间数据的计算量减少,以mobilenetv2为例,最终使用到的内存占用大致在1gb左右。
需要提前说明的是,本发明中对深度神经网络结构不做具体限定。众所周知,神经网络的前端部分为特征提取部分,有不同的等效实施方法,故本发明着重保护后部分的场特征及其后处理方法。
为了提取彩色图像的非线性特征,需要对原始彩色人流量图像做以下操作生成七通道输入图像t{r,g,b,h,d,m,n},其中,r、g、b分别为原始彩色人流量图像rgb数据的对应通道分量,原始彩色人流量图像如图2所示;
d通道为暗通道数据,在高光区域保留了纯色通道之间的明暗特征细节,对反光物体光晕附近的纹理有恢复高光部分细节的作用:
d(i,j)=min(r(i,j),g(i,j),b(i,j))
其中,d(i,j)是像素位置(i,j)处通道d图像的像素值;
h通道为亮通道数据,能够依靠纯色明暗特征恢复阴影细节,:
h(i,j)=max(r(i,j),g(i,j),b(i,j))
其中,h(i,j)是像素位置(i,j)处通道h图像的像素值;
为了提取增强的高光细节,设计大小为11*11的均值滤波器核k对通道d的图像数据做模糊处理,得到模糊图像d’,进一步提取高光细节:
其中,m(i,j)是像素位置(i,j)处通道m图像的像素值;
为了提供增强的阴影细节,设计大小为11*11的均值滤波器核k对通道h的图像数据做模糊处理,得到模糊图像h’,进一步提取阴影细节:
其中,n(i,j)是像素位置(i,j)处通道n图像的像素值。
原始彩色人流量图像的七通道数据在通过线性加和计算的过程中能够丰富网络的浅层特征提取的多样性。
步骤二,根据常用的人流量监测数据集生成场数据f{x,y,c,r},作为标注数据,其中,x分量表示横坐标方向上向真值点聚拢的强度,y分量表示纵坐标方向上向真值点聚拢的强度,c分量表示标注位置的置信度,r分量表示标注半径。
人流量监测数据集有多种,实施者可以根据实际情况选择合适的数据集生成场数据。常用的数据集包括:malldataset、ucsddataset、zhang等人引入的worldexpo’10crowdcountingdataset(cross-scenecrowdcountingviadeepconvolutionalneuralnetworks);zhang等(single-imagecrowdcountingviamulti-columnconvolutionalneuralnetwork)引入的大规模人群统计数据集shanghaitech,包括1198个图像,330,165个注释头。一种实施例基于shanghaitech数据集生成场数据。
以640*384的人流量图像输入为例,得到场f{x,y,c,r},f为四通道的二维矩阵。下面以像素点(i,j)的场数据fi,j(x,y,c,r)为例进行说明。
fi,j(x,y,c,r)为根据人流量图像以及注释头坐标生成的四通道的标量数据x,y,c,r,其中,x,y代表x分量和y分量向重心聚拢的强度。
设真值中心点位置为(x’,y’),当前像素位置的坐标为(x,y),distance为当前像素位置与真值中心位置之间的距离,
对x分量有:
其中,r0为预设的标注半径。设r0为2,则若当前像素坐标位置与真值点坐标之间的距离distance=0,x=1;若当前像素坐标位置与真值点坐标之间的距离distance小于预设半径r0,则
对y分量有同上的定义:
若当前像素坐标位置与真值点坐标之间的距离distance=0,y=1;若当前像素坐标位置与真值点坐标之间的距离distance小于预设半径r0,则
对c分量有:
若当前像素位置与真值中心位置的距离为0px,c=1;若当前像素位置与真值中心位置的距离为2px,c=1;若当前像素位置与真值中心位置的距离为3px,c=0;若当前像素位置与真值中心位置的距离为无穷远,c=0。
对r分量有:
若当前像素位置与真值中心位置的距离为0px,r=2;若当前像素位置与真值中心位置的距离为2px,r=2;若当前像素位置与真值中心位置的距离为3px,r=0;若当前像素位置与真值中心位置的距离为无穷远,r=0。
综上,对上述定义进行归纳。
distance是距离真值坐标中心的均方根距离。
x分量是一个围绕真值坐标生成的亮斑。亮斑中心值为1,亮斑远处值根据
y分量是一个围绕真值坐标生成的亮斑。亮斑中心值为1,亮斑远处值根据
r分量是标注半径,一般标注人的头部区域。例如,对一个目标标注一个半径为r=2的实心圆形遮罩,圆形遮罩内的r为2,之外的值为0。离视角远的人头部区域,可以以1为半径。
c分量是标注的置信度信息,对所有r不为0的区域都设为1。将人头部区域的亮斑凸显出来。
进一步地,对场数据进行处理,从而得到可视化的场数据展示结果。
对于x、y分量进行求和。求和是将每个人作为一个实例,在单独的图像上进行求和:
xyi=xi+yi
其中i为实例id,在数据集中体现为第i个标注数据。
将所有的求和结果进行按遮罩叠加,来消除粘连和异常值。其中,按遮罩叠加的遮罩是除第i个实例的xyi外,其余位置为0的遮罩。
将每个xyi理解为一个图层,则会出现以下问题,图层的顺序会影响合成的效果,因此,可以进一步通过简单的后处理方法消除异常值。在最终的xy通道求和图像xy中,将实例的id进行升序排列,并按顺序将遮罩内的标注值拷贝至图像xy0对应位置中。由于遮盖的问题,会导致相邻标注值出现明显的切割效果。将实例的id进行降序排列,并按顺序将遮罩内的标注值拷贝至图像xy1对应位置中。同样,由于遮盖的问题,会导致类似的切割效果。对xy0和xy1进行引导滤波处理,将xy0作为引导图,xy1作为原图,进行半径为3,eps为0.01的滤波处理。由于xy0和xy1的纹理近似,因此,两者之中任一作为引导图或原图的顺序不会对结果有明显影响。
图3(a)、图3(b)是标注场数据的可视化结果。其中,图3(a)标注场数据x、y分量求和的可视化图像;图3(b)标注场数据c分量的可视化图像。
步骤三,根据场数据设计损失函数loss=msexy*h(c)+mser,其中,msexy为场数据分量x、y的联合均方误差损失,h(c)为分量c的交叉熵损失,mser为分量r的均方误差损失。
对输出的场数据f{x,y,c,r}的每一通道定义损失函数。
首先,对分量x、分量y有:
lossx(i,j)=(output(i,j)x-gt(i,j)x)2
lossy(i,j)=(output(i,j)y-gt(i,j)y)2
其中,output(i,j)为输出数据位置(i,j)处的场数据,gt(i,j)为标注数据位置(i,j)处的场数据,lossx(i,j)表示分量x的损失,lossy(i,j)表示分量y的损失。
对于分量x、y有联合均方误差损失msexy:
其中,rows为输出图像的行数,cols为输出图像的列数,all指代所有像素位置。
同样,有分量r的均方误差mser函数:
对于分量c,有交叉熵loss:
其中,cout(i,j)分别为输出数据位置(i,j)处场数据中c分量值,clabel(i,j)为标注数据位置(i,j)处场数据中c分量值,rows为输出图像的行数。α为一超参数,α越大,损失函数的惩罚越严重,对于本任务,推荐alpha在5左右。
联合loss为:loss=msexy*h(c)+mser。
步骤四,将原始彩色人流量图像与标注数据作为样本数据集,基于损失函数loss对深度神经网络进行训练。
常用的深度神经网络的结构有很多。一种实施例是以resnet为基础,根据实际情况对resnet进行截取,将输出层去掉,得到前端网络,然后进行通道合并和上采样,并进行连续的卷积操作,若干个卷积模块结构组成了阶段性的神经网络后端。将七通道图像数据t与标注数据送入深度神经网络,基于设计的损失函数,训练深度神经网络。当损失下降到一定阈值时,即可停止训练,保存训练好的深度神经网络。
步骤五,将待检测原始彩色人流量图像的七通道数据输入训练好的深度神经网络,根据网络输出场数据进行热力图重建,对热力图中亮斑进行计数和定位,实现高密度人流量定位与监测。
将待检测原始彩色人流量图像输入训练好的深度神经网络,得到输出的场数据结果。对于训练好的网络,得到的场需要经过后处理得到位置及计数。
首先,对得到的场数据,生成热力图。有快速处理方法,得到重建的热力图像heat:
heat=(boxfilter(xup)+boxfilter(yup))*boxfilter(rup)*cup
其中,boxfilter是均值滤波器,对于640*384的图像,其窗口为5*5;xup、yup、rup、cup分别表示经过金字上采样的x分量、y分量、r分量、c分量。一种实施例是,金字上采样倍数为4,得到分辨率为2560*1536的重建的热力图像heat。图3(c)是网络输出重建热力图像;图3(d)为网络输出c分量的可视化图像。
进一步地,对于上述热力图像heat,可以使用非极大值抑制nms进行人流量计数和定位。也可以使用以下进一步的快速后处理方式。
选择阈值t=mean(heat)进行二值化处理。常见的阈值确定方法有最大类间方差法、固定阈值法等。一种实施例是采用最大类间方差法确定用于图像分割的阈值。对二值化后的热力图像heat进行连通域检测,可以得到多个连通域。
对得到的连通域进行包围框检测得到感兴趣区域roi,并对感兴趣区域roi进行以下处理,从而抑制能量过强的亮斑,使能量较低的亮斑突显出来,得到能量抑制后的热力图像hc:
其中,hc(roin(i,j))表示感兴趣区域roin位置(i,j)处经过能量抑制的像素值;heat(roin(i,j))为热力图heat感兴趣区域roin位置(i,j)处的像素值。
至此,通过抑制能量过强的亮斑来保证能量较低的亮斑能够被后续步骤处理,变化如图4所示,图4为能量抑制后的热力图像。
使用分水岭算法可得到清晰的连通域分割边界,从而得到连通域计数n。
为了得到连通域所包含人的精确位置,使用softargmax进行位置回归。对某一连通域c′n:
重复上述操作,可以逐帧得到人物关键位置,可用于快速分析人流量和当前时刻密集程度。
本发明的处理方法可以克服传统基于非极大值抑制nms后处理导致的小目标无法回归位置的问题。以原画面中3*3像素的目标为例,传统的nms无法得到位置,在网络的下采样过程中该特征也容易丢失。使用本发明的方法可以同时提高计算效率和准确率。非极大值抑制方法计算量非常庞大,通常需要使用gpu处理,而使用二值分割、能量抑制、位置回归方法,可以降低计算量,对计算节点的配置要求更低,在普通的cpu上运行即可。
本发明使用场来替代热图的概率云,可以降低若干倍的网络输入分辨率来减少计算量;在高分辨率情况下具有更优的精确度,而降低分辨率后的计算量可以减少内存占用,使得网络可以部署在相机端,更具实用性和灵活性;对网络输出结果使用非线性图像处理,降低了后处理计算量。
以上实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。