目标识别方法、装置、存储介质及电子设备
技术领域
本公开涉及计算机视觉领域和图像识别领域,具体地,涉及一种目标识别方法、装置、存储介质及电子设备。
背景技术
目前,通过监控摄像头对某些公共场合中的目标进行计数的常用目标计数算法有基于目标检测的目标计数算法和基于密度图的目标计数算法。这两种算法的缺点都在于在某些场景下识别出的目标总数的准确度高,而在另一些场景下识别出的目标总数的准确度低,进而导致智能监控和安保准确度的降低。
发明内容
本公开的目的是提供一种目标识别方法、装置、存储介质及电子设备,能够在任何场景下都高准确度地识别出目标总数,进而确保智能监控和安保的准确度。
根据本公开的第一实施例,提供一种目标识别方法,该方法包括:接收输入图像并识别所述输入图像所属的场景类别;由与识别出的场景类别相对应的目标计数器对所述输入图像中的目标进行识别和计数。
可选地,所述识别所述输入图像所属的场景类别,包括:识别所述输入图像所属的最佳场景类别;以及所述由与识别出的场景类别相对应的目标计数器对所述输入图像中的目标进行识别和计数,包括:由与识别出的最佳场景类别相对应的目标计数器对所述输入图像中的目标进行识别和计数。
可选地,所述识别所述输入图像所属的场景类别,包括:识别所述输入图像所属的所有相关场景类别,依据相关度降序的方式从所述所有相关场景类别中选择相关度靠前的至少N个相关场景类别,并计算所述至少N个相关场景类别各自的权重值;所述由与识别出的场景类别相对应的目标计数器对所述输入图像中的目标进行识别和计数,包括:由与所述至少N个相关场景类别分别相对应的目标计数器对所述输入图像中的目标进行识别和计数;以及所述方法还包括:基于所述与所述至少N个相关场景类别分别相对应的目标计数器的计数值以及所述至少N个相关场景类别各自的权重值来对所述输入图像中的目标进行计数。
可选地,所述与所述至少N个相关场景类别分别相对应的目标计数器的计数值分别为x1,x2,…xN,所述至少N个相关场景类别各自的权重值分别为a1,a2,…aN,则所述基于所述与所述至少N个相关场景类别分别相对应的目标计数器的计数值以及所述至少N个相关场景类别各自的权重值来对所述输入图像中的目标进行计数通过以下公式来实现:
p=x1×a1+x2×x2+…xN×aN
其中,p是对所述输入图像中的目标进行计数的最终计数值,而且a1+a2+…+aN=1。
根据本公开的第二实施例,提供一种目标识别装置,该装置包括:场景类别识别模块,用于接收输入图像并识别所述输入图像所属的场景类别,以及将所述输入图像传输给与识别出的场景类别相对应的目标计数器;所述目标计数器,用于对接收到的输入图像中的目标进行识别和计数。
可选地,所述场景类别识别模块,还用于识别所述输入图像所属的最佳场景类别,并将所述输入图像传输给与识别出的最佳场景类别相对应的目标计数器。
可选地,所述场景类别识别模块,还用于识别所述输入图像所属的所有相关场景类别,依据相关度降序的方式从所述所有相关场景类别中选择相关度靠前的至少N个相关场景类别,计算所述至少N个相关场景类别各自的权重值,以及将所述输入图像传输给与所述至少N个相关场景类别相对应的目标计数器;以及所述装置还包括处理模块,用于基于所述与所述至少N个相关场景类别分别相对应的目标计数器的计数值以及所述至少N个相关场景类别各自的权重值来对所述输入图像中的目标进行计数。
可选地,所述与所述至少N个相关场景类别分别相对应的目标计数器的计数值分别为x1,x2,…xN,所述至少N个相关场景类别各自的权重值分别为a1,a2,…aN,则所述处理模块通过以下公式对所述输入图像中的目标进行计数:
p=x1×a1+x2×x2+…xN×aN
其中,p是对所述输入图像中的目标进行计数的最终计数值,而且a1+a2+…+aN=1。
根据本公开的第三实施例,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开第一实施例所述方法的步骤。
一种电子设备,包括:存储器,其上存储有计算机程序;处理器,用于执行所述存储器中的所述计算机程序,以实现根据本公开第一实施例所述方法的步骤。
通过采用上述技术方案,由于在对输入图像中的目标进行识别和计数之前会首先识别输入图像所属的场景类别,然后再利用与识别出的场景类别相对应的目标计数器对输入图像中的目标进行识别和计数,这样就能够利用恰当的目标计数器进行计数,使得得到的计数结果更准确更接近真实值,从而能够广泛应用于智能监控和安保领域。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1示出了根据本公开一种实施例的目标识别方法的流程图。
图2示出了基于人体检测的人群计数器和基于人头检测的人群计数器所采用的示例算法的流程图。
图3是根据本公开一种实施例的目标识别装置的示意框图。
图4是根据本公开一种实施例的目标识别装置的又一示意框图。
图5是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
发明人发现,通过监控摄像头对某些公共场合中的目标(例如人群)进行计数有非常重要的现实意义。例如,在无人超市中进行人群计数可以自动分析不同时段的客流量变化;在大型活动现场进行人群计数可以及时管控风险,避免由于过于密集的人群未得到疏散而引起意外事故;另外,自动人群计数还能实时监控人群激增现象,并对异常情况发出警报。
以目标是人群为例。基于目标检测的人群计数算法和基于密度图的人群计数算法都能实现人群计数。
然而,基于目标检测的人群计数算法是对图像中的人进行识别,所识别出的人数即为图像包含的总人数。但是,在实际应用中,选取人的哪个部位作为识别目标是影响此算法的识别效果的重要因素之一。例如,对于拍摄视角较低的图像,人体的特征最为稳定和显著,且对人的不同朝向具有鲁棒性,是最佳的识别目标;但是对于拍摄视角较高的图像,甚至是俯拍图像,人体由于视角原因被压缩,以至于特征不再明显,此时若通过基于人体检测的人群计数算法进行计算,则会因为人体被部分或全部遮挡而产生大量漏检,导致结果误差较大,在这种情况下选择人头作为识别目标的效果要优于人体。另外,当摄像头距离拍摄场景较远,导致拍摄到的人在图像中的尺寸过小时,例如假设拍摄的是世界杯决赛现场的图像,则基于目标检测的人群计数算法(例如基于人体或人头检测的人群计数算法)由于难以检测到小目标而失效,此时,基于密度图的人群计数算法则能得到与真实值更接近的结果。基于密度图的人群计数算法首先根据输入图像生成一幅对应的人群密度图,然后对人群密度图进行积分,即可得到图像中的人数估计值。但是,由于基于密度图的人群计数算法是一种估计算法,尽管其适用于人像过小的场景,但在一般场景下,不如基于目标检测的人群计数算法的精度高。
本申请的发明人发现,不同的目标计数算法所适用的场景是不同的。如果能根据输入图像的场景来制定不同的目标计数算法,则能大大提升目标计数算法的整体稳定性,使得在任何场景下都能够得到高精度的目标计数。
图1示出了根据本公开一种实施例的目标识别方法的流程图,如图1所示,该方法可以包括以下步骤S11和S12。
在步骤S11中,接收输入图像并识别所述输入图像所属的场景类别;
在步骤S12中,由与识别出的场景类别相对应的目标计数器对所述输入图像中的目标进行识别和计数。
通过采用上述技术方案,由于在对输入图像中的目标进行识别和计数之前会首先识别输入图像所属的场景类别,然后再利用与识别出的场景类别相对应的目标计数器对输入图像中的目标进行识别和计数,这样就能够利用恰当的目标计数器进行计数,使得得到的计数结果更准确更接近真实值,从而能够广泛应用于智能监控和安保领域。
下面以要识别的目标是人,所采用的人群计数算法包括基于人体的人群计数算法、基于人头的人群计数算法和基于密度图的人群计数算法为例来描述根据本公开实施例的目标识别方法的第一实施例。
首先,接收输入图像。
然后,识别输入图像所属的最佳场景类别。例如,如果输入图像是在拍摄角度较低的情况下得到的图像,则该输入图像就属于可以利用人体检测来对人群进行计数的场景。
则接下来,就由与识别出的最佳场景类别相对应的目标计数器,在上面的示例中为基于人体检测的人群计数器,对输入图像中的目标进行识别和计数。
第一实施例能够筛选出最佳的人群计数器对输入图像中的人群进行计数,使得人群计数的结果更为准确。
接下来仍然以要识别的目标是人,所采用的人群计数算法包括基于人体的人群计数算法、基于人头的人群计数算法和基于密度图的人群计数算法为例来描述根据本公开实施例的目标识别方法的第二实施例。
在第二实施例中,首先,接收输入图像。
然后,识别输入图像所属的所有相关场景类别,例如假设输入图像中既有人体,又有人头,而且输入图像中某些区域的人群还比较密集,则可以识别出该输入图像所属的相关场景类别包括人体场景、人头场景和密度图场景。
接下来,依据相关度降序的方式从所述所有相关场景类别中选择相关度靠前的至少N个相关场景类别。例如,假设输入图像中只有1个人体,10个人头,但是更多的是密密麻麻的人群,则密度图场景与该输入图像的相关度最高,人头场景与该输入图像的相关度位居第二,而人体场景与该输入图像的相关度最低,所以此时可以从识别出的三个场景类别中选出部分场景类别作为后续人群计数的场景依据,例如可以只选择密度图场景,还可以选择密度图场景和人头场景这两种场景类别,或者可以选择密度图场景、人头场景和人体场景这三种场景类别。
接下来,计算所述至少N个相关场景类别各自的权重值。仍然以上面的示例为例,由于密度图场景与该输入图像的相关度最高,人头场景与该输入图像的相关度位居第二,而人体场景与该输入图像的相关度最低,所以密度图场景类别的权重值最大,人头场景类别的权重值位居第二,而人体场景类别的权重值最低,但是这三个权重值之和等于1。
接下来,由与所述至少N个相关场景类别分别相对应的目标计数器对所述输入图像中的目标进行识别和计数。仍然以上面的示例为例,假设先前是从三个场景类别中选择了密度图场景和人头场景这两种场景类别,则在当前步骤中就利用基于密度图的人群计数器和基于人头检测的人群计数器来对输入图像中的人群进行计数。
最后,基于所述与所述至少N个相关场景类别分别相对应的目标计数器的计数值以及所述至少N个相关场景类别各自的权重值来对所述输入图像中的目标进行计数。例如,假设所述与所述至少N个相关场景类别分别相对应的目标计数器的计数值分别为x1,x2,…xN,所述至少N个相关场景类别各自的权重值分别为a1,a2,…aN,则对所述输入图像中的目标进行计数的最终计数值p=x1×a1+x2×x2+…xN×aN,而且a1+a2+…+aN=1。
第二实施例融合了多个人群计数器的结果,因此可以得到更准确的预测值。
另外,在人群计数器被应用于人群计数之前,需要先对人群计数器进行训练。仍然以上面提到的基于人体检测的人群计数器、基于人头检测的人群计数器和基于密度图的人群计数器为例进行说明。
首先,收集不同场景下拍摄的图像例如约1000张,收集的图像数量越大越好,这样训练出来的结果才会更准确。然后,用例如LabelImg标注图像中所有指定目标的边界框。对于人体检测的训练集而言,指定目标为人体,设定类别名为例如“body”;对于人头检测的训练集而言,考虑到不同角度下的人头图像之间差异较大,将人头可以细分为例如三个子类别:人脸、头顶和后脑勺,设定类别名分别为“face”、“top”和“back”,当然,子类别的数量并不局限于三个,此处仅是举例。然后,在标注时,根据被标注人的实际状态,选择某一子类别对其头部进行标注,例如,若被标注人的脸部可见,则标为“face”,若被标注人只有头顶可见,则标为“top”,若被标注人只有后脑勺可见,则标为“back”。其中,人体检测和人头检测可以使用例如单点多框检测器(Single Shot MultiBox Detector,SSD)算法来实现,但是本公开对此不做限制。在训练过程中,人体检测使用类别为“body”的标注,人头检测使用类别为“face”、“top”和“back”的标注优化各自的网络参数。训练完成后,基于人体检测的人群计数器和基于人头检测的人群计数器就可以调用SSD和对应的参数来分别对输入图像中的人体、人头总数进行预测。
图2示出了基于人体检测的人群计数器和基于人头检测的人群计数器所采用的示例算法的流程图。以基于人头检测的人群计数器为例。首先,基于人头检测的人群计数器接收外部输入的图像,例如彩色图像。然后,基于人头检测的人群计数器采用SSD算法来检测人头。然后,基于人头检测的人群计数器设置检测到的人头的边框并确定置信度。然后,基于人头检测的人群计数器去除低置信度的边框。然后,基于人头检测的人群计数器去除重叠的边框。最后,基于人头检测的人群计数器统计剩余的边框,得到所统计的人头数,进而也就得到了输入图像中的人群数。
基于密度图的人群计数器使用例如多列卷积神经网络(Multi-ColumnConvolutional Neural Network,MCNN)算法来对输入图像中的人群进行计数。其中,训练MCNN所需的标注是一幅与原图对应的人群密度图,而不是边界框,因此需要将边界框标注进行转换。转换方法如下:首先创建一个与图像大小一致的全零矩阵A,对于图像中某个被标注为“face”、“top”或“back”的边界框,生成一个具有相同尺寸的高斯滤波器K,归一化后将K叠加到A中,叠加位置与边界框在原图中的位置一致。对所有人头标注重复以上步骤,最终得到的矩阵A即为该图像对应的人群密度图。通过上述方法,即可生成训练集的人群密度图标注。人群密度图具有以下特征:1)某像素点的像素值反映该点的人群密度;2)所有像素值之和即为图像中人数的估计值。使用生成的人群密度图标注对MCNN进行训练后,基于密度图的人群计数器就能够对图像中的总人数进行预测。基于密度图的人群计数器的人群计数算法流程是公知的,此处不再赘述。
另外,在对输入图像所属的场景类别进行识别之前,也需要对场景类别分类模块进行训练。
其中场景类别识别模块只识别输入图像的最佳场景类别的训练过程如下所述。场景类别识别模块采用例如VGG-16网络,训练数据标注的生成方法如下:对训练集中的每幅图像,分别调用训练好的基于人体检测的人群计数器、基于人头检测的人群计数器和基于密度图的人群计数器对其进行人群计数,选择计算结果与真值(其中真值可通过统计边界框个数获得)最相近的人群计数器,将该图像标注为对应的场景类别号(例如人体检测场景类别为0,人头检测场景类别为1,密度图检测场景类别为2,但是类别编号仅是示例)。对每幅图像重复以上步骤,即可获得训练数据的场景分类标注。使用标注的训练数据优化VGG-16后,场景类别识别模块即可根据输入图像的场景,自动选择误差最小的人群计数器,用于计算输入图像中的总人数。
对于场景类别识别模块识别输入图像的所有相关场景类别并从中选取至少N个相关场景类别的训练过程如下所述。以场景类别识别模块最终选择全部的人体检测场景、人头检测场景、密度图场景这三者为例。训练数据标注的生成方法如下:对训练集中的每幅图像,分别调用训练好的基于人体检测的人群计数器、基于人头检测的人群计数器和基于密度图的人群计数器对输入图像中的人群进行计数,分别得到预测值x、y、z,并同样根据边界框个数来统计输入图像的真实人数g,则四元组[x,y,z,g]即为输入图像对应的标注。对每幅图像重复以上步骤,即可获得训练数据的场景分类标注。网络架构依然采用例如VGG-16,但是需要修改输出层,使其输出3个权重值也即a、b、c而不是输出单个预测值。在训练时,得到权重值后,继续计算p=ax+by+cz,并设定均方误差l=(p–g)2为网络的损失函数,对网络参数进行优化。训练完成后,场景类别识别模块即可根据输入图像的场景类别,输出三个权重值a、b、c,然后调用基于人体检测的人群计数器、基于人头检测的人群计数器和基于密度图的人群计数器,分别得到人群计数预测值x、y、z,则最终的人群计算结果为p=ax+by+cz。
图3是根据本公开一种实施例的目标识别装置的示意框图,如图3所示,该装置可以包括:场景类别识别模块31,用于接收输入图像并识别所述输入图像所属的场景类别,以及将所述输入图像传输给与识别出的场景类别相对应的目标计数器;所述目标计数器32,用于对接收到的输入图像中的目标进行识别和计数。
通过采用上述技术方案,由于在对输入图像中的目标进行识别和计数之前会首先识别输入图像所属的场景类别,然后再利用与识别出的场景类别相对应的目标计数器对输入图像中的目标进行识别和计数,这样就能够利用恰当的目标计数器进行计数,使得得到的计数结果更准确更接近真实值,从而能够广泛应用于智能监控和安保领域。
可选地,所述场景类别识别模块31,还用于识别所述输入图像所属的最佳场景类别,并将所述输入图像传输给与识别出的最佳场景类别相对应的目标计数器。
可选地,所述场景类别识别模块31,还用于识别所述输入图像所属的所有相关场景类别,依据相关度降序的方式从所述所有相关场景类别中选择相关度靠前的至少N个相关场景类别,计算所述至少N个相关场景类别各自的权重值,以及将所述输入图像传输给与所述至少N个相关场景类别相对应的目标计数器。如图4所示,根据本公开实施例的目标识别装置还可以包括处理模块33,用于基于所述与所述至少N个相关场景类别分别相对应的目标计数器的计数值以及所述至少N个相关场景类别各自的权重值来对所述输入图像中的目标进行计数。
可选地,所述与所述至少N个相关场景类别分别相对应的目标计数器的计数值分别为x1,x2,…xN,所述至少N个相关场景类别各自的权重值分别为a1,a2,…aN,则所述处理模块通过以下公式对所述输入图像中的目标进行计数:
p=x1×a1+x2×x2+…xN×aN
其中,p是对所述输入图像中的目标进行计数的最终计数值,而且a1+a2+…+aN=1。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种电子设备700的框图。如图5所示,该电子设备700可以包括:处理器701,存储器702。该电子设备700还可以包括多媒体组件703,输入/输出(I/O)接口704,以及通信组件705中的一者或多者。
其中,处理器701用于控制该电子设备700的整体操作,以完成上述的目标识别方法中的全部或部分步骤。存储器702用于存储各种类型的数据以支持在该电子设备700的操作,这些数据例如可以包括用于在该电子设备700上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器702可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件703可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器702或通过通信组件705发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口704为处理器701和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件705用于该电子设备700与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件705可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的目标识别方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的目标识别方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器702,上述程序指令可由电子设备700的处理器701执行以完成上述的目标识别方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。