一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于多部位检测的排队统计方法、装置、设备和介质与流程

2023-02-04 17:32:49 来源:中国专利 TAG:


1.本发明涉及图像检测、图像跟踪技术领域。尤其是涉及一种基于多部位检测的排队统计方法、装置、设备和介质。


背景技术:

2.随着机器学习在计算机视觉中的应用,特别是基于cnn卷积网络的深度神经网络算法,使得一般场景下人行人检测算法已经比较成熟。常见的算法如yolo系列,ssd系列,fasterrcnn等,在行人检测中都得到了比较成功的应用。常见的基于深度学习的人群计数或人群密度估计方法也有了很大提升,用于商场景点等的人群计数方法节省了人力降低了成本。但是上述人群计数方法都是用来评估场景内出现所有人的数量,用于专门细分应用场景时如筛选出图片内排队的人的数量时很难适用。另外人群估计方法基于人的整体特征,用来判定人是否在队列中时无法准确判断。
3.场景内是否存在排队人群和排队人数计数是一个很重要的需求。如在商场内排队买商品,进出如景点等各种场所时去除无关人的排队计数等都是很直接的需求。因此,继续一种能够针对排队人群检测及排队人数计数的方法。


技术实现要素:

4.鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于多部位检测的排队统计方法、装置、设备和介质,用于解决现有技术中人群计数的问题。
5.为实现上述目的及其他相关目的,本发明提供一种基于多部位检测的排队统计方法,所述方法包括:步骤s1:获取图片数据并进行预处理;
6.步骤s2:使用检测模型检测预处理后的所述图片数据中每个人的头部、上半身、下半身、全身,对每个部位采用预设的包含坐标信息的数据结构表示,并获取分别对应头部、上半身、下半身、全身的集合a、b、c、d;步骤s3:依据各部位之间的相交情况对集合a、b、c、d分别进行重组合并,以得到分别对应个人的集合pi、pk、pm、pn,并全部放入总集合p中;步骤s4:依据总集合p内每个集合pi中元素的坐标分别计算各集合pi对应的顶点、中心点、底点及倾斜度;步骤s5:按照总集合p内各集合pi对应的中心点的横轴的大小顺序做升序或降序排列以得到列表t,对列表t内各元素进行交集判断、筛选、排序以得到列表r;步骤s6:对列表r内各元素进行近似直线判断,以确定排队列表及对应的排队人数。
7.于本发明的一实施例中,所述获取图片数据并进行预处理,包括:将获取的所述图片数据的图片大小重置为[3,m,n];其中,3为重置后通道数,m为重置后的高,n为重置后的宽;所述图片数据为3个m*n大小的矩阵,矩阵值为所述图片数据的像素值;令所述像素值减去3个矩阵各自的均值,再除以3个矩阵各自的方差,以得到归一化后的图片数据。
[0008]
于本发明的一实施例中,所述检测模型的获取包括:对预处理后的每张图片数据分别标记图片中所有人的头部、上半身、下半身、全身;将标记后的图片数据按一定比例划分为训练集和测试集;分别选择多种目标检测算法,对训练集中的图片数据和标注的目标
部位进行迭代训练,直到训练集的损失函数不再下降,同时测试集的平均精度均值不再提升,以得到对应各所述目标检测算法的训练模型;将各训练模型在测试集上进行测试,选择平均精度均值的训练保存为检测模型。
[0009]
于本发明的一实施例中,所述预设的数据结构为:{class,[x1,y1,x2,y2]};其中,class表示目标类别,取值1-4,分别对应头部、上半身、下半身、全身;[x1,y1,x2,y2]表示目标坐标,x1为左上角横坐标,y1为左上角纵坐标,x2为右下角横坐标,y2为右下角横坐标。
[0010]
于本发明的一实施例中,所述步骤s3的方法包括:步骤s301:分别创建集合pi、pk、pm、pn以表示集合a、b、c、d中各元素对应的个人,并放入总集合p中;步骤s302:按集合d到集合a的顺序,依次寻找所有前项集合中与本项集合中每个对应个人的元素满足预设交相面积比的相交部位元素;步骤s303:将前项集合中的相交部位元素移至相应个人所对应的集合中,并将相交部位元素从前项集合中删除;步骤s304:循环上述各步骤,以得到分别对应个人的集合pi、pk、pm、pn。
[0011]
于本发明的一实施例中,所述步骤s3中得到集合pi的方法包括:步骤s311:创建集合pi以表示集合d中各元素di对应的个人,将各元素di加入集合pi,将集合pi放入总集合p;步骤s312:依次计算集合c内各元素cj与di相交的面积除以cj本身的面积,得到面积比sj;步骤s313:若面积比sj大于预设值sc,则表示cj与di属于同一个人,将cj加入集合pi,并将cj从集合c中删除;步骤s314:根据步骤s312、s313,再依次计算集合b内各元素bj与di的相交情况,将满足预设交相面积比的bj加入集合pi,并将bj从集合b中删除;步骤s315:根据步骤s312、s313,再依次计算集合a内各元素aj与di的相交情况,将满足预设交相面积比的aj加入集合pi,并将aj从集合a中删除。
[0012]
于本发明的一实施例中,所述步骤s313的方法还包括:若轮循完集合c后,集合pi内包含多个集合c中的元素cj,则选择与di相交的面积比为最大的cj,其余cj从集合pi中删除并加回集合c中;和/或,若轮循完集合c后,集合pi内存在多个相同交相面积比的元素cj,则计算cj与di的中心点距离,并保留中心点距离最小值对应的cj,其余cj从集合pi中删除并加回集合c中。
[0013]
于本发明的一实施例中,所述cj与di的中心点距离计算公式如下:d
center
=sqrt{[(x1
cj
x2
cj
)/2-(x1
di
x2
di
)/2]*2 [(y1
cj
y2
cj
)/2-(y1
di
y2
di
)/2]*2};其中,x1,x2,y1,y2分别表示元素cj、di对应的坐标;sqrt表示开平方计算。
[0014]
于本发明的一实施例中,所述对列表t内各元素进行交集判断、筛选、排序以得到列表r,包括:创建集合qi表示列表t内元素ti相交所有元素的集合,将ti加入集合qi;依次判断集合q1到集合qi-1是否已经包含ti,若某个集合qk包含ti,则删除集合qi,并指定qk为ti所属的集合;依次计算列表t中元素tj与ti的交并比,若交并比大于预设值s
iou
,则认为tj与ti相交,将tj加入集合qi或集合qk;依次判断列表t内元素ti,若其对应集合qi的数量小于预设阈值数量sq,则认为ti不在一个队列中,将ti及集合qi从列表t中删除;对列表t内任一元素ti,对与ti相交的集合qi内元素qj进行排序,以qj与ai两者的中心点距离进行升序或降序排列,得到排序后列表r。
[0015]
于本发明的一实施例中,所述步骤s6包括:对列表r内各元素进行邻域排序进行倾斜度、中心点直线、顶点直线、底点直线中任意一或多项的判断;若列表r中有预设阈值sn个元素满足倾斜度、中心点直线、顶点直线、底点直线中至少一项的判断条件,则判定列表r为
一排队队列,列表r内元素数量为排队人数。
[0016]
为实现上述目的及其他相关目的,本发明提供一种基于多部位检测的排队统计装置,所述装置包括:获取模块,用于获取图片数据并进行预处理;处理模块,用于使用检测模型检测预处理后的所述图片数据中每个人的头部、上半身、下半身、全身,对每个部位采用预设的包含坐标信息的数据结构表示,并获取分别对应头部、上半身、下半身、全身的集合a、b、c、d;依据各部位之间的相交情况对集合a、b、c、d分别进行重组合并,以得到分别对应个人的集合pi、pk、pm、pn,并全部放入总集合p中;依据总集合p内每个集合pi中元素的坐标分别计算各集合pi对应的顶点、中心点、底点及倾斜度;按照总集合p内各集合pi对应的中心点的横轴的大小顺序做升序或降序排列以得到列表t,对列表t内各元素进行交集判断、筛选、排序以得到列表r;对列表r内各元素进行近似直线判断,以确定排队列表及对应的排队人数。
[0017]
为实现上述目的及其他相关目的,本发明提供一种计算机设备,所述设备包括:存储器与处理器;所述存储器存储有计算机程序,所述处理器执行所述计算机程序实现如上所述的方法。
[0018]
为实现上述目的及其他相关目的,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
[0019]
如上所述,本发明的一种基于多部位检测的排队统计方法、装置、设备和介质,通过获取图片数据并进行预处理;使用检测模型检测预处理后的所述图片数据中每个人的头部、上半身、下半身、全身,对每个部位采用预设的包含坐标信息的数据结构表示,并获取分别对应头部、上半身、下半身、全身的集合a、b、c、d;依据各部位之间的相交情况对集合a、b、c、d分别进行重组合并,以得到分别对应个人的集合pi、pk、pm、pn,并全部放入总集合p中;依据总集合p内每个集合pi中元素的坐标分别计算各集合pi对应的顶点、中心点、底点及倾斜度;按照总集合p内各集合pi对应的中心点的横轴的大小顺序做升序或降序排列以得到列表t,对列表t内各元素进行交集判断、筛选、排序以得到列表r;对列表r内各元素进行近似直线判断,以确定排队列表及对应的排队人数。
[0020]
具有以下有益效果:
[0021]
本发明可只用了一张2d图像即可实现相对准确的排队计数功能,对于密集场景下行人互相遮挡,可针对只有局部可见的头部、上半身、下半身、全身等多部位进行检测,可以提高遮挡下的检出与准确率,进一步节省了排队统计的人力和成本。
附图说明
[0022]
图1显示为本发明于一实施例中基于多部位检测的排队统计方法的流程示意图。
[0023]
图2显示为本发明于一实施例中步骤s3的流程示意图。
[0024]
图3显示为本发明于一实施例中步骤s3中得到集合pi的流程示意图。
[0025]
图4显示为本发明于一实施例中基于多部位检测的排队统计装置的模块示意图。
[0026]
图5显示为本发明于一实施例中计算机设备的结构示意图。
具体实施方式
[0027]
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书
所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
[0028]
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
[0029]
现有的人群计数方法主要用来统计场景内所有的人的数量,而对于细分场景无法适用。比如统计排队人数,需要排除掉不在一个队列中的人,这时现有人群计数方法无法解决。
[0030]
为解决上述问题,本发明提出一种基于多部位检测的排队统计方法,本发明只用了一张2d图像即可实现相对准确的排队计数功能,对于密集场景下行人互相遮挡,可针对只有局部可见的头部、上半身、下半身、全身等多部位进行检测,可以提高遮挡下的检出与准确率,以进一步节省排队统计的人力和成本。
[0031]
如图1所示,展示本发明于一实施例中的基于多部位检测的排队统计方法的流程示意图。如图所述,所述方法包括:
[0032]
步骤s1:获取图片数据并进行预处理。
[0033]
于本技术一实施例中,所述获取图片数据并进行预处理,包括:
[0034]
步骤s101:将获取的所述图片数据的图片大小重置为[3,m,n];其中,3为重置后通道数,m为重置后的高,n为重置后的宽;所述图片数据为3个m*n大小的矩阵,矩阵值为所述图片数据的像素值;
[0035]
步骤s102:令所述像素值减去3个矩阵各自的均值,再除以3个矩阵各自的方差,以得到归一化后的图片数据。
[0036]
举例来说,对输入图片数据,设输入形状为(c,h,w)(c表示通道数,h表示高,w表示宽),首先重置图片数据的大小为(3,m,n),例如重置为(3,512,512),其中,3表示重置后通道数,512表示调整后高,512表示重置后宽,此时图片数据变成3个512*512大小的矩阵,矩阵值为图片的像素值,像素值减去3个矩阵各自的均值(123.675,116.28,103.53),再除以3个矩阵各自的方差(58.395,57.12,57.375),得到归一化后的图片数据,大小仍为(3,512,512)。
[0037]
步骤s2:使用检测模型检测预处理后的所述图片数据中每个人的头部、上半身、下半身、全身,对每个部位采用预设的包含坐标信息的数据结构表示,并获取分别对应头部、上半身、下半身、全身的集合a、b、c、d。
[0038]
于本技术一实施例中,所述检测模型的获取及训练方法包括:
[0039]
步骤s201:对预处理后的每张图片数据分别标记图片中所有人的头部、上半身、下半身、全身;
[0040]
步骤s202:将标记后的图片数据按一定比例划分为训练集和测试集;
[0041]
步骤s203:分别选择多种目标检测算法,对训练集中的图片数据和标注的目标部位进行迭代训练,直到训练集的损失函数不再下降,同时测试集的平均精度均值不再提升,
以得到对应各所述目标检测算法的训练模型;
[0042]
步骤s204:将各训练模型在测试集上进行测试,选择平均精度均值的训练保存为检测模型。
[0043]
在一或多个可实现的实施例中,本发明在通用目标检测方法的基础上,提出一种人群中排队判断与排队人数计数的算法,其中检测模型的获取及训练方法可示例如下:
[0044]
步骤一、图片标注:对一张图片数据,分别标记图片中所有的人的头部,上半身,下半身,全身的坐标。坐标由目标的左上角和右下角组成(x1,y1,x2,y2),x1为左上角横坐标,y1为左上角纵坐标,x2为右下角横坐标,y2为右下角横坐标。
[0045]
步骤二、数据划分:设数据的总数量为l,可按照一定比例,如8:2的比例把数据划分为训练集和测试集。
[0046]
步骤三、训练:选择一种目标检测算法,所述目标检测算法包括:yolov4、yolov5、yolov7、cascade_rcnn中任意一种或多种,如在一些实施例中本发明使用yolov4,对训练集中的图片数据和标注的目标进行迭代训练,直到训练集损失函数不再下降同时测试集平均精度均值(map)不再提升,,以得到对应各所述目标检测算法的训练模型。优选地,在训练过程中,每隔10个迭代保存一次模型权重。
[0047]
步骤四、选择模型:训练过程中保存的训练模型在测试集上进行测试,选择map最高的模型保存为best模型,即作为检测模型。
[0048]
于本技术一实施例中,所述预设的数据结构为:
[0049]
{class,[x1,y1,x2,y2]};
[0050]
其中,class表示目标类别,取值1-4,分别对应头部、上半身、下半身、全身;[x1,y1,x2,y2]表示目标坐标,x1为左上角横坐标,y1为左上角纵坐标,x2为右下角横坐标,y2为右下角横坐标。
[0051]
简单来说,每个部位可用如上数据结构表示,其包含了对应部位的类别,可用于划分不同部位的集合;还包含了坐标信息,如x1为左上角横坐标,y1为左上角纵坐标,x2为右下角横坐标,y2为右下角横坐标等坐标信息,可用于后续顶点、中心点、底点及倾斜度等的计算。
[0052]
此外,本发明还将检测到的不同部位划分至相应部位的集合中,如所有头部目标记为集合{a},所有上半身目标记为集合{b},所有下半身目标记为集合{c},所有全身目标记为集合{d}。
[0053]
步骤s3:依据各部位之间的相交情况对集合a、b、c、d分别进行重组合并,以得到分别对应个人的集合pi、pk、pm、pn,并全部放入总集合p中。
[0054]
于本技术一实施例中,所述步骤s3的方法包括:
[0055]
步骤s301:分别创建集合pi、pk、pm、pn以表示集合a、b、c、d中各元素对应的个人,并放入总集合p中;
[0056]
步骤s302:按集合d到集合a的顺序,依次寻找所有前项集合中与本项集合中每个对应个人的元素满足预设交相面积比的相交部位元素;
[0057]
步骤s303:将前项集合中的相交部位元素移至相应个人所对应的集合中,并将相交部位元素从前项集合中删除;
[0058]
步骤s304:循环上述各步骤,以得到分别对应个人的集合pi、pk、pm、pn。
[0059]
简单来说,令集合d依次判断与前项集合c、b、a中的相交元素,并将相交元素移至d,再令集合c依次判断与前项集合b、a中的相交元素,并将相交元素移至c,再令集合b依次判断与前项集合a中的相交元素,并将相交元素移至b,最后形成新的对应个人的集合pi、pk、pm、pn。
[0060]
具体地,所述步骤s3中得到集合pi的方法包括:
[0061]
步骤s311:分别创建集合pi以表示集合d中各元素di对应的个人,将各元素di加入集合pi,将集合pi放入总集合p;
[0062]
步骤s312:依次计算集合c内各元素cj与di相交的面积除以cj本身的面积,得到面积比sj;
[0063]
步骤s313:若面积比sj大于预设值sc,则表示cj与di属于同一个人,将cj加入集合pi,并将cj从集合c中删除;
[0064]
于本技术一实施例中,所述步骤s313的方法还包括:
[0065]
a、若轮循完集合c后,集合pi内包含多个集合c中的元素cj,则选择与di相交的面积比为最大的cj,其余cj从集合pi中删除并加回集合c中;
[0066]
和/或,
[0067]
b、若轮循完集合c后,集合pi内存在多个相同交相面积比的元素cj,则计算cj与di的中心点距离,并保留中心点距离最小值对应的cj,其余cj从集合pi中删除并加回集合c中。
[0068]
步骤s314:根据步骤s312、s313,再依次计算集合b内各元素bj与di的相交情况,将满足预设交相面积比的bj加入集合pi,并将bj从集合b中删除;
[0069]
步骤s315:根据步骤s312、s313,再依次计算集合a内各元素aj与di的相交情况,将满足预设交相面积比的aj加入集合pi,并将aj从集合a中删除。
[0070]
在一些实施例中,依次对集合{d}内元素di进行的操作可示例如下:
[0071]
首先,创建集合{pi}表示di对应的人,把di加入{pi},把{pi}加入{p}。
[0072]
然后,依次计算集合{c}内元素cj与di相交的面积除以cj本身的面积,得到面积比sj:
[0073]
sj=area(cj∩di)/area(cj);
[0074]
其中,area指计算面积,若sj大于预设阈值sc,则认为cj与di属于同一人,把cj加入{pi},并把cj从集合{c}中删除。
[0075]
其中,若轮循完集合{c}后,{pi}包含多个{c}中元素cj,则首先选择与di面积比pj最大值对应的cj,其余c从{pi}删除并加入{c}中;和/或,若存在多个相同的pj值,则计算cj与di中心点距离d_center,计算公式如下:
[0076]dcenter
=sqrt{[(x1
cj
x2
cj
)/2-(x1
di
x2
di
)/2]*2 [(y1
cj
y2
cj
)/2-(y1
di
y2
di
)/2]*2};
[0077]
其中,x1,x2,y1,y2分别表示元素cj、di对应的坐标;sqrt表示开平方计算。然后,保留d
center
最小值对应的cj,其余c从{pi}删除并加入{c}中。
[0078]
其次,使用与步骤s312、s313相同的方法判断集合{b}内元素bj与di关系,符合条件的bj加入{pi}。
[0079]
最后,使用与步骤s312、s313相同的方法判断集合{a}内元素aj与di关系,符合条
件的aj加入{pi}。
[0080]
在一些实施例中,依次对集合{c}内元素di进行的操作可示例如下:
[0081]
创建集合{pk}表示ck对应的人,把ck加入{pk},把{pk}加入{p}。
[0082]
使用与步骤s312、s313相同的方法判断集合{b}内元素bj与ck关系,符合条件的bj加入{pk}。
[0083]
使用与步骤s312、s313相同的方法判断集合{a}内元素aj与ck关系,符合条件的aj加入{pk}。
[0084]
在一些实施例中,依次对集合{b}内元素di进行的操作可示例如下:
[0085]
创建集合{pm}表示bm对应的人,把bm加入{pm},把{pm}加入{p}。
[0086]
使用与步骤s312、s313相同的方法判断集合{a}内元素aj与bm关系,符合条件的aj加入{pm}。
[0087]
在一些实施例中,依次对集合{a}内元素di进行的操作可示例如下:
[0088]
创建集合{pn}表示an对应的人,把an加入{pn},把{pn}加入{p}。
[0089]
步骤s4:依据总集合p内每个集合pi中元素的坐标分别计算各集合pi对应的顶点、中心点、底点及倾斜度。
[0090]
需要说明的是,计算顶点、中心点、底点及倾斜度所依据的坐标,是由步骤s2中监测模型检测到的坐标数据,并由预设的数据结构{class,[x1,y1,x2,y2]}表示出来的。
[0091]
于本技术一实施例中,所述步骤s4中顶点的计算方法包括:
[0092]
若集合pi包含集合a中的元素ai,设ai的坐标为[x1,y1,x2,y2],则集合pi的顶点vi的计算公式为:vi=[(x1 x2)/2,y1];
[0093]
若集合pi不包含集合a中的元素ai,则集合pi的顶点vi为空。
[0094]
于本技术一实施例中,所述步骤s4中中心点的计算方法包括:
[0095]
若集合pi分别包含集合b中的元素bi、集合c中的元素ci、集合d中的元素di,分别设bi坐标为[bx1,by1,bx2,by2],ci坐标为[cx1,cy1,cx2,cy2],di坐标为[dx1,dy1,dx2,dy2],则中心点计算公式如下:
[0096]
center i
x
={[(bx1 bx2)/2 (cx1 cx2)/2]/2 (dx1 dx2)/2}/2;
[0097]
center iy={[(by1 by2)/2 (cy1 cy2)/2]/2 (dy1 dy2)/2}/2;
[0098]
其中,center i
x
表示中心点横坐标,center iy表示中心点纵坐标;
[0099]
若集合pi不包含集合b中的元素bi、集合c中的元素ci,但集合pi包含集合d中的元素di,则中心点计算公式如下:
[0100]
center i
x
=(dx1 dx2)/2;
[0101]
center iy=(dy1 dy2)/2;
[0102]
若集合pi不包含集合d中的元素di,但集合pi包含集合b中的元素bi、集合c中的元素ci,则中心点计算公式如下:
[0103]
center i
x
=[(bx1 bx2)/2 (cx1 cx2)/2]/2
[0104]
center iy=[(by1 by2)/2 (cy1 cy2)/2]/2
[0105]
若集合pi非上述情况,则中心点为空。
[0106]
于本技术一实施例中,所述步骤s4中底点的计算方法包括:
[0107]
若集合pi包含集合c中的元素ci、集合d中的元素di,设ci坐标为[cx1,cy1,cx2,
cy2],di坐标为[dx1,dy1,dx2,dy2],则集合pi的底点按如下公式计算:
[0108]
bottom i
x
=[(cx1 cx2)/2 (dx1 dx2)/2]/2;
[0109]
bottom iy=(cy2 dy2)/2;
[0110]
其中,bottom i
x
表示底点横坐标,bottom iy表示底点横坐标;
[0111]
若集合pi只包含集合c中的元素ci或集合d中的元素di中的一个,设其坐标为[x1,y1,x2,y2],集合pi的底点按如下公式计算:
[0112]
bottom i
x
=(x1 x2)/2;
[0113]
bottom iy=y2;
[0114]
若集合pi非上述情况,则底点为空。
[0115]
于本技术一实施例中,所述步骤s4中倾斜度的计算方法包括:
[0116]
设顶点坐标为[vx,vy],中心点坐标为[cx,cy],底点坐标为[bx,by];
[0117]
若集合pi存在顶点和中心点,则倾斜度in计算公式为:
[0118]
in=arctan(|cy-vy|/|cx-vx|);
[0119]
其中,||为求绝对值,arctan为求反正切;
[0120]
若集合pi存在底点和中心点,倾斜度in计算公式为:
[0121]
in=arctan(|cy-by|/|cx-bx|);
[0122]
若集合pi存在顶点、底点和中心点,倾斜度in计算公式为:
[0123]
in=[arctan(|cy-vy|/|cx-vx|) arctan(|cy-by|/|cx-bx|)]/2;
[0124]
若集合pi非上述情况,则倾斜度in为空。
[0125]
步骤s5:按照总集合p内各集合pi对应的中心点的横轴的大小顺序做升序或降序排列以得到列表t,对列表t内各元素进行交集判断、筛选、排序以得到列表r。
[0126]
简单来说,首先通过排序得到列表t。具体地,对集合{p}内元素{pi}按照pi中心点的横轴的大小顺序做升序或降序排列,构成列表t。再通过对列表t内各元素进行交集判断、筛选、排序得到列表r。
[0127]
于本技术一实施例中,所述对列表t内各元素进行交集判断、筛选、排序以得到列表r,包括:
[0128]
a、创建集合qi表示列表t内元素ti相交所有元素的集合,将ti加入集合qi;
[0129]
b、依次判断集合q1到集合qi-1是否已经包含ti,若某个集合qk包含ti,则删除集合qi,并指定qk为ti所属的集合;
[0130]
c、依次计算列表t中元素tj与ti的交并比,若交并比大于预设值s
iou
,则认为tj与ti相交,将tj加入集合qi或集合qk;
[0131]
d、依次判断列表t内元素ti,若其对应集合qi的数量小于预设阈值数量sq,则认为ti不在一个队列中,将ti及集合qi从列表t中删除;
[0132]
e、对列表t内任一元素ti,对与ti相交的集合qi内元素qj进行排序,以qj与ai两者的中心点距离进行升序或降序排列,得到排序后列表r。
[0133]
具体来说,依次对列表{t}内元素ti进行的操作示例如下:
[0134]
交集判断的步骤包括:首先,创建集合{qi}表示ti相交所有元素的集合,把ai加入{qi}。
[0135]
其次,依次判断集合{q1}到{qi-1}是否已经包含ti。如果有某个集合{qk}包含ti,
则删除集合{qi},指定{qk}为ti所属集合。
[0136]
然后,依次计算列表t中元素tj与ti的交并比iou,其中j》i。计数公式如下:
[0137]
iou=a∩b/(a∪b-a∩b);
[0138]
如果iou大于预设阈值s
iou
,如s
iou
为0.1,则认为tj与ti相交,把tj加入{qi}或{qk}。
[0139]
筛选的步骤包括:依次判断列表{t}内元素ti,若其对应{qi}元素数量小于预设阈值数量sq,如sq为3,则认为ti不在一个队列中,把ti及{qi}从列表t中删除。
[0140]
排序的步骤包括:对列表{a}内任一元素ti,对与ti相交的集合{qi}内元素qj进行排序,以qj与ti两者的中心点距离进行升序或降序排列,得到排序后列表{ri}。
[0141]
步骤s6:对列表r内各元素进行近似直线判断,以确定排队列表及对应的排队人数。
[0142]
于本技术一实施例中,所述步骤s6包括:
[0143]
a、对列表r内各元素进行邻域排序进行倾斜度、中心点直线、顶点直线、底点直线中任意一或多项的判断。
[0144]
于一或多个实施例中,所述步骤s6中倾斜度的判断包括:
[0145]
循环判断列表r中元素rj,若rj与集合pi的倾斜度相差大于预设阈值so,如so取30,则判定rj不在集合pi所在队列中,从列表r中删除rj。
[0146]
于一或多个实施例中,所述步骤s6中中心点直线的判断包括:
[0147]
将列表r中元素rj的中心点与rj 1的中心点相连得直线lj,将rj 1的中心点与rj 2的中心点相连得直线l
j 1
,计算lj与l
j 1
夹角a,公式为:
[0148]
a=arccos[(lj*l
j 1
)/(||lj||*||l
j 1
||)];
[0149]
其中,lj*l
j 1
表点积,||lj||和||l
j 1
||表求模计算;
[0150]
若角度a小于预设角度阈值上sa,如sa取30,则认为rj、rj 1、rj 2三者可连成直线,则判定rj、rj 1、rj 2在一个队列中。
[0151]
于一或多个实施例中,所述步骤s6中顶点直线的判断包括:
[0152]
将列表r中元素rj的中心点与rj 1的顶点相连得直线lj,将rj 1的顶点与rj 2的顶点相连得直线l
j 1
,计算lj与l
j 1
夹角b,公式为:
[0153]
b=arccos[(lj*l
j 1
)/(||lj||*||l
j 1
||)];
[0154]
其中,lj*l
j 1
表点积,||lj||和||l
j 1
||表求模计算;
[0155]
若角度b小于预设角度阈值上sb,如sb取30,则认为rj、rj 1、rj 2三者可连成直线,则判定rj、rj 1、rj 2在一个队列中。
[0156]
于一或多个实施例中,所述步骤s6中底点直线的判断包括:
[0157]
将列表r中元素rj的中心点与rj 1的底点相连得直线lj,将rj 1的底点与rj 2的底点相连得直线l
j 1
,计算lj与l
j 1
夹角c,公式为:
[0158]
c=arccos[(lj*l
j 1
)/(||lj||*||l
j 1
||)];
[0159]
其中,lj*l
j 1
表点积,||lj||和||l
j 1
||表求模计算;
[0160]
若角度c小于预设角度阈值上sc,如sc取30,则认为rj、rj 1、rj 2三者可连成直线,则判定rj、rj 1、rj 2在一个队列中。
[0161]
b、若列表r中有预设阈值sn个元素满足倾斜度、中心点直线、顶点直线、底点直线
中至少一项的判断条件,则判定列表r为一排队队列,列表r内元素数量为排队人数。
[0162]
具体来说,若列表{ri}中至少有预设阈值sn个元素满足中心点直线,顶点直线,底点直线其中一条,即判断{ri}为一排队队列。最终得到列表{t}及子列表{ri},其中{ri}可以不存在。最终存在的列表{ri}即为排队列表,列表{ri}元素数量即为其队列人数。
[0163]
综上所述,本发明可只用了一张2d图像即可实现相对准确的排队计数功能,对于密集场景下行人互相遮挡,可针对只有局部可见的头部、上半身、下半身、全身等多部位进行检测,可以提高遮挡下的检出与准确率,进一步节省了排队统计的人力和成本。
[0164]
如图4所示,展示本发明于一实施例中的基于多部位检测的排队统计装置的模块示意图,如图所示,所述基于多部位检测的排队统计装置400包括:
[0165]
获取模块401,用于获取图片数据并进行预处理;
[0166]
处理模块402,用于使用检测模型检测预处理后的所述图片数据中每个人的头部、上半身、下半身、全身,对每个部位采用预设的包含坐标信息的数据结构表示,并获取分别对应头部、上半身、下半身、全身的集合a、b、c、d;依据各部位之间的相交情况对集合a、b、c、d分别进行重组合并,以得到分别对应个人的集合pi、pk、pm、pn,并全部放入总集合p中;依据总集合p内每个集合pi中元素的坐标分别计算各集合pi对应的顶点、中心点、底点及倾斜度;按照总集合p内各集合pi对应的中心点的横轴的大小顺序做升序或降序排列以得到列表t,对列表t内各元素进行交集判断、筛选、排序以得到列表r;对列表r内各元素进行近似直线判断,以确定排队列表及对应的排队人数。
[0167]
可以理解的是,所述装置400通过各模块的运行,能够实现如图1所述的基于多部位检测的排队统计方法。
[0168]
需要说明的是,应理解以上装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,处理模块402可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上处理模块402的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
[0169]
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(application specific integrated circuit,简称asic),或,一个或多个微处理器(digital signal processor,简称dsp),或,一个或者多个现场可编程门阵列(field programmable gate array,简称fpga)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(central processing unit,简称cpu)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称soc)的形式实现。
[0170]
如图5所示,展示本发明于一实施例中的计算机设备的结构示意图,如图所示,所述计算机设备500包括:存储器501、及处理器502。所述存储器501存储有计算机程序,所述
处理器502执行所述计算机程序序实现如图1所述的基于多部位检测的排队统计方法。
[0171]
所述存储器501可能包含随机存取存储器(random access memory,简称ram),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0172]
所述处理器502可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0173]
于本发明的一实施例中,一种计算机可读存储介质,其上存储有数据传输程序,该数据传输程序被处理器执行时实现如图1所述的基于多部位检测的排队统计方法。
[0174]
所述计算机可读存储介质,本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的图像处理程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0175]
这些计算机程序程序也可装载到计算机或其他可编程数据处理设备上,使在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0176]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带式磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0177]
综上所述,本发明提供一种基于多部位检测的排队统计方法、装置、设备和介质,可有效克服了现有技术中的种种缺点而具高度产业利用价值。
[0178]
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献