本发明涉及图像处理技术领域,尤其是涉及一种人群计数模型的训练方法、人群计数方法、装置和服务器。
背景技术:
随着监控摄像头的普及以及人工智能技术的发展,智能安防系统在维护社会稳定和保障人民生命财产安全方面发挥了重要作用,其中,智能安防是通过计算机视觉等人工智能技术分析监控摄像头捕捉的图像,解析出监控图像中出现的人、物以及事件。
相关技术中,通常通过人群计数方法估计摄像头监控画面中出现的总人数,该人群计数方法需要人工预先标注监控图像得到训练样本,再通过训练样本对深度学习模型进行训练,以通过训练后的深度学习模型进行人群计数,但由于人工标注监控图像比较困难,尤其是在拥挤场景中标注图像需要消耗大量的时间和人力,导致获得的训练样本较少,因此基于少量训练样本训练的深度学习模型容易过拟合,导致模型的泛化能力较差,难以得到正确的人数统计结果。
技术实现要素:
本发明的目的在于提供一种人群计数模型的训练方法、人群计数方法、装置和服务器,以提高模型的泛化能力和统计精度。
第一方面,本发明实施例提供一种人群计数模型的训练方法,该方法包括:基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型;其中,第一样本集合包括多个样本对和与每个样本对对应的第一标识,每个样本对包括具有父子关系的两张图像;该第一标识用于指示样本对的两张图像中包含的人数多少关系;基于预设的第二样本集合训练中间模型,得到人群计数模型;其中,第二样本集合包括多张样本图像和与每张样本图像对应的第二标识,该第二标识用于指示样本图像中的人数。
在本发明较佳的实施例中,在上述基于预设的第一样本集合对预设的初始模型进行训练之前,通过下述方式生成样本对:对预先获取的每张待处理图像进行裁剪,得到第一图像和第二图像;其中,该第一图像的全部内容与第二图像中的部分内容相同,或者,第二图像的全部内容与第一图像的部分内容相同。
在本发明较佳的实施例中,在上述基于预设的第一样本集合对预设的初始模型进行训练之前,通过下述方式生成第一标识:根据上述样本对中两张图像的父子关系生成第一标识。
在本发明较佳的实施例中,上述根据样本对中两张图像的父子关系生成第一标识,包括:如果第一图像的全部内容与第二图像中的部分内容相同,则生成第一符号作为第一标识;如果第二图像的全部内容与第一图像中的部分内容相同,则生成第二符号作为第一标识。
在本发明较佳的实施例中,在上述基于预设的第二样本集合训练中间模型之前,还包括通过以下方法生成第二标识:获取与第二样本集合中每张样本图像对应的标注结果,其中,该标注结果用于表示样本图像被人工识别的人数;基于该标注结果生成所述第二标识。
在本发明较佳的实施例中,上述预设的初始模型为神经网络模型,包括特征提取层、池化层和输出层;其中,特征提取用于对输入的图像进行特征提取,得到图像特征;池化层用于对输入的图像特征进行全局平均池化操作,得到全局特征;输出层用于对输入的全局特征进行分析,得到人数预测结果。
在本发明较佳的实施例中,上述基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型的步骤,包括:基于预设的第一样本集合确定待训练的样本对;将该样本对输入至预设的初始模型中,得到输出结果;其中,该输出结果包括:样本对对应的两张图像中包含的人数的多少关系;通过预设的第一损失函数和第一标识,计算该输出结果的第一损失值;根据第一损失值训练初始模型,直至第一损失值收敛,得到中间模型。
在本发明较佳的实施例中,上述样本对的两张图像分别为第一图像和第二图像;上述输出结果还包括:与第一图像中包含的人数对应的第一指示值和与第二图像中包含的人数对应的第二指示值。
在本发明较佳的实施例中,上述第一损失函数包括:l1=-ylogp-(1-y)log(1-p);其中,l1为第一损失值;y为样本对的第一标识,log用于表示对数运算;
在本发明较佳的实施例中,上述根据第一损失值训练初始模型,直至第一损失值收敛,得到中间模型的步骤,包括:根据第一损失值调整初始模型的参数;如果调整后的参数均收敛,将参数调整后的初始模型确定为中间模型;如果调整后的参数没有均收敛,继续执行基于预设的第一样本集合确定待训练的样本对的步骤,直至参数均收敛。
在本发明较佳的实施例中,上述根据第一损失值调整初始模型的参数的步骤,包括:计算第一损失值对初始模型中待调整参数的导数
在本发明较佳的实施例中,上述基于预设的第二样本集合训练中间模型,得到人群计数模型的步骤,包括:基于预设的第二样本集合确定待训练的样本图像;将样本图像输入至中间模型中,输出训练结果;通过预设的第二损失函数和样本图像中的第二标识,计算中间模型输出的训练结果的第二损失值;根据第二损失值调整中间模型的参数,继续执行基于预设的第二样本集合确定待训练的样本图像的步骤,直至第二损失值收敛,得到人群计数模型。
在本发明较佳的实施例中,上述第二损失函数为l2=|z-y*|;其中,l2为所述第二损失值,z为中间模型输出的训练结果,y*为样本图像的第二标识;上述根据第二损失值调整中间模型的参数的步骤,包括:计算第二损失值对中间模型中待调整参数的导数
第二方面,本发明实施例提供一种人群计数方法,该方法包括:获取待计算图像;将待计算图像输入至预先训练完成的人群计数模型,输出待计算图像中包含的人数;该人群计数模型通过上述人群计数模型的训练方法训练得到。
第三方面,本发明实施例提供一种人群计数模型的训练装置,该装置包括:第一模型训练模块,用于基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型;其中,第一样本集合包括多个样本对和与每个样本对对应的第一标识,每个样本对包括具有父子关系的两张图像;该第一标识用于指示样本对的两张图像中包含的人数多少关系;第二模型训练模块,用于基于预设的第二样本集合训练中间模型,得到人群计数模型;其中,该第二样本集合包括多张样本图像和每张样本图像对应的第二标识,该第二标识用于指示所述样本图像中的人数。
在本发明较佳的实施例中,上述装置还包括样本对生成模块,用于:对预先获取的每张待处理图像进行裁剪,得到第一图像和第二图像;其中,第一图像的全部内容与第二图像中的部分内容相同,或者,第二图像的全部内容与第一图像的部分内容相同。
在本发明较佳的实施例中,上述装置还包括第一标识生成模块,用于:根据样本对中两张图像的父子关系生成所述第一标识。
在本发明较佳的实施例中,上述第一标识生成模块,还用于:如果第一图像的全部内容与第二图像中的部分内容相同,则生成第一符号作为第一标识;如果第二图像的全部内容与第一图像中的部分内容相同,则生成第二符号作为第一标识。
在本发明较佳的实施例中,上述装置还包括第二标识生成模块,用于:获取与第二样本集合中每张样本图像对应的标注结果,其中,标注结果用于表示样本图像被人工识别的人数;基于标注结果生成第二标识。
在本发明较佳的实施例中,上述预设的初始模型为神经网络模型,包括特征提取层、池化层和输出层;其中,特征提取层用于对输入的图像进行特征提取,得到图像特征;池化层用于对输入的图像特征进行全局平均池化操作,得到全局特征;输出层用于对输入的全局特征进行分析,得到人数预测结果。
在本发明较佳的实施例中,上述第一模型训练模块,包括:样本对确定单元,用于基于预设的第一样本集合确定待训练的样本对;输入单元,用于将样本对输入至预设的初始模型中,得到输出结果;其中,输出结果包括:样本对对应的两张图像中包含的人数的多少关系;计算单元,用于通过预设的第一损失函数和第一标识,计算输出结果的第一损失值;第一训练单元,用于根据第一损失值训练初始模型,直至第一损失值收敛,得到中间模型。
在本发明较佳的实施例中,上述样本对的两张图像分别为第一图像和第二图像;上述输出结果还包括:与第一图像中包含的人数对应的第一指示值和与第二图像中包含的人数对应的第二指示值。
在本发明较佳的实施例中,上述第一损失函数包括:l1=-ylogp-(1-y)log(1-p);其中,l1为第一损失值;y为样本对的第一标识,log用于表示对数运算;
在本发明较佳的实施例中,上述第一训练单元,用于:根据第一损失值调整初始模型的参数;如果调整后的参数均收敛,将参数调整后的初始模型确定为中间模型;如果调整后的参数没有均收敛,继续执行基于预设的第一样本集合确定待训练的样本对的步骤,直至参数均收敛。
在本发明较佳的实施例中,上述第一训练单元,用于第一训练单元,用于:计算第一损失值对初始模型中待调整参数的导数
在本发明较佳的实施例中,上述第二模型训练模块,用于:基于预设的第二样本集合确定待训练的样本图像;将样本图像输入至所述中间模型中,输出训练结果;通过预设的第二损失函数和样本图像中的第二标识,计算中间模型输出的训练结果的第二损失值;根据第二损失值调整中间模型的参数,继续执行基于预设的第二样本集合确定待训练的样本图像的步骤,直至第二损失值收敛,得到人群计数模型。
在本发明较佳的实施例中,上述第二损失函数为l2=|z-y*|;其中,l2为所述第二损失值,z为中间模型输出的训练结果,y*为样本图像的第二标识;上述第二模型训练模块,还用于:计算所述第二损失值对所述中间模型中待调整参数的导数
第四方面,本发明实施例提供一种人群计数装置,该装置包括:图像获取模块,用于获取待计算图像;人数输出模块,用于将该待计算图像输入至预先训练完成的人群计数模型,输出待计算图像中包含的人数;该人群计数模型通过上述人群计数模型的训练方法训练得到。
第五方面,本发明实施例提供一种服务器,包括处理器和存储器,该存储器存储有能够被处理器执行的机器可执行指令,该处理器执行机器可执行指令以实现上述人群计数模型的训练方法或者上述人群计数方法。
第六方面,本发明实施例提供一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述人群计数模型的训练方法或者上述人群计数方法。
本发明实施例带来了以下有益效果:
本发明提供了一种人群计数模型的训练方法、人群计数方法、装置和服务器,首先基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型;其中,该第一样本集合包括多个样本对和与每个样本对对应的第一标识,每个样本对包括具有父子关系的两张图像;该第一标识用于指示样本对的两张图像中包含的人数多少关系;再基于预设的第二样本集合训练中间模型,得到人群计数模型。该方式中,在第一样本集合中,第一标识仅用于指示样本对的两张图像中包含的人数多少关系,因而第一标识可自动得到,无需人工标注,因此,第一样本集合中可包含大量的样本对,节省了大量的时间和人力成本,而且基于大量的样本对训练模型可以提高模型的泛化能力;在第一样本集合对模型进行训练的基础上,再通过第二样本集合中携带有人数第二标识的样本图像对模型进行训练,可进一步提高模型的计数精度,因此,通过上述方式训练得到的模型具有较高的泛化能力,同时统计精度较高。
本发明的其他特征和优点将在随后的说明书中阐述,或者,部分特征和优点可以从说明书推知或毫无疑义地确定,或者通过实施本发明的上述技术即可得知。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施方式,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种人群计数模型的训练方法的流程图;
图2为本发明实施例提供的另一种人群计数模型的训练方法的流程图;
图3为本发明实施例提供的另一种人群计数模型的训练方法的流程图;
图4为本发明实施例提供的一种特征提取层的结构示意图;
图5为本发明实施例提供的另一种人群计数模型的训练方法的流程图;
图6为本发明实施例提供的一种人群计数方法的流程图;
图7为本发明实施例提供的一种人群计数模型的训练装置的结构示意图;
图8为本发明实施例提供的一种人群计数装置的结构示意图;
图9为本发明实施例提供的一种服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
人群计数是智能安防系统的一个重要组成部分,人群计数的目的通常是自动估计出监控画面中出现的总人数,该技术可以用于公共场所的实时预警,以预防人群拥挤等一系列突发情况的发生。传统的人群计数方法通常需要人工提取图片的特征(例如,边缘、纹理和梯度等),然后基于该图片特征训练回归器,以通过该回归器统计待处理图像中的总人数,但是该方式中人工提取的图片特征缺乏高层语义信息,因此该回归器的精度较差。
为了提高精度,相关技术中采用深度学习模型进行人群计数,由于深度学习模型中包括多层网络结构,可以学习到图像特征的高层语义信息,因此模型的精度较高,但是训练高精度的深度学习模型,需要大规模高质量的数据集,但人群计数数据集的标注是非常困难的,特别是对于拥挤场景,统计图像中出现的人数非常消耗时间和人力,导致获得的训练样本较少,因此基于少量训练样本训练的深度学习模型容易过拟合,导致模型的泛化能力较差,难以得到正确的人数统计结果。
基于上述问题,本发明实施例提供一种人群计数模型的训练方法、人群计数方法、装置和服务器,该技术可以应用于各种智能安防系统的监控场景中,尤其是图像监控的人数统计场景中。为便于对本实施例进行理解,首先对本发明实施例所公开的一种人群计数模型的训练方法进行详细介绍,如图1所示,该方法包括如下步骤:
步骤s102,基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型;其中,该第一样本集合包括多个样本对和与每个样本对对应的第一标识。
每个样本对均对应具有父子关系的两张图像,该父子关系指的是一张图像的全部内容与另一张图像的部分内容相同,也即是两张图像的内容具有包含关系,该内容包括像素和像素间的排列方式。上述具有父子关系的两张图像可以是由一张待处理图像进行裁剪或者分割得到,而且在对图像进行裁剪和分割后,需要选取图像内容具有包含关系的两张图像作为样本对的两张图像。为了提高人群计数模型的应用广泛性,上述待处理的图像可以包含各种监控场景下的图像,例如,拥挤场景、人员稀少场景等;该带处理图像除包含人物外,还可以包含景物、动物、建筑物等。
第一标识用于指示样本对的两张图像中包含的人数多少关系,即第一标识用于指示样本对中的一张图像包含的人数比另一张图像包含的人数多或少。由于一个样本对中的两张图像具有父子关系,因此可以根据父子关系自动生成第一标识。该第一标识可以用数字表示,例如,一个样本对中的两张图像分别为图像1和图像2时,当图像1的全部内容与图像2的部分内容相同时,第一标识为设置为1,表示图像1包含的人数小于图像2包含的人数;当图像2的全部内容与图像1的部分内容相同时,第一标识设置为0,表示图像2包含的人数小于图像1包含的人数。
上述预设的初始模型通常可以是深度学习模型、神经网络模型等。在对初始模型训练的过程中,需要从第一样本集合中选择样本对,然后将选择的样本对输入至初始模型中,输出结果,根据该输出结果调整初始模型的参数,再次从第一样本集合中选择样本对对调整参数后的初始模型进行训练,直到该初始模型收敛,得到中间模型。
步骤s104,基于预设的第二样本集合训练中间模型,得到人群计数模型;其中,该第二样本集合包括多张样本图像和与每张样本图像对应的第二标识,该第二标识用于指示样本图像中的人数。
上述第二样本集合中包含多张样本图像,以及该样本图像对应的第二标识,该样本图像可以包含各种监控场景下的图像,例如:拥挤场景、人员稀少场景等;该样本图像中除包含人物外,还可以包含景物、动物、建筑物等。上述第二标识通常是由人工标注的样本图像中的人数,该人数通常是人工统计得到的样本图像中包含的人数值。
基于上述第二样本集合中的样本图像可以调整中间模型中各个部分的参数,以达到训练的目的。当中间模型中各个参数收敛时,训练结束,得到人群计数模型。
本发明提供了一种人群计数模型的训练方法,首先基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型;其中,该第一样本集合包括多个样本对和与每个样本对对应的第一标识,每个样本对包括具有父子关系的两张图像;该第一标识用于指示样本对的两张图像中包含的人数多少关系;再基于预设的第二样本集合训练中间模型,得到人群计数模型。该方式中,在第一样本集合中,第一标识仅用于指示样本对的两张图像中包含的人数多少关系,因而第一标识可自动得到,无需人工标注,因此,第一样本集合中可包含大量的样本对,节省了大量的时间和人力成本,而且基于大量的样本对训练模型可以提高模型的泛化能力;在第一样本集合对模型进行训练的基础上,再通过第二样本集合中携带有人数第二标识的样本图像对模型进行训练,可进一步提高模型的计数精度,因此,通过上述方式训练得到的模型具有较高的泛化能力,同时统计精度较高。
本发明实施例还提供了另一种人群计数模型的训练方法,该方法在上述实施例方法的基础上实现;该方法重点描述基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型的具体过程(通过下述步骤s202-s208实现);如图2所示,该方法包括如下步骤:
步骤s202,基于预设的第一样本集合确定待训练的样本对;该第一样本集合包括多个样本对和与每个样本对对应的第一标识,每个样本对包括具有父子关系的两张图像;该第一标识用于指示样本对的两张图像中包含的人数多少关系。
在具体实现时,该预设的第一样本集合中的样本对可以通过下述方式生成:对预先获取的每张待处理图像进行裁剪,得到第一图像和第二图像;其中,该第一图像的全部内容与第二图像中的部分内容相同,或者,该第二图像的全部内容与第一图像的部分内容相同。
上述待处理图像可以是第二样本集合中的样本图像,也可以是采集的新的图像,该待处理图像可以包含各种监控场景下的图像,例如:拥挤场景、人员稀少场景等;该待处理图像除包含人物外,还可以包含景物、动物、建筑物等。通常需要对获取到的每个待处理图像进行裁剪,也即是将待处理图像裁剪为多个子图像,该方式可以增加样本的数量。
对待处理图像进行裁剪后,可得到多个子图像,然后对多个子图像进行筛选,得到多组图像内容具有包含关系子图像(如第一图像和第二图像)。具有包含关系的两个子图像中,可以是第一图像的全部内容与第二图像中的部分内容相同,也可以是第二图像的全部内容与第一图像的部分内容相同;而且基于第一图像和第二图像的包含关系,可以确定第一图像包含的人数不小于第二图像包含的人数,或者第二图像包含的人数不小于第一图像包含的人数。
在具体实现时,上述预设的第一样本集合中的样本对对应的第一标识,可以通过下述方式生成:根据样本对中两张图像的父子关系生成第一标识。该父子关系通常可以指一张图像的全部内容与另一张图像的部分内容相同,也即是两张图像的内容具有包含关系。
上述根据样本对中两张图像的父子关系生成第一标识时,如果第一图像的全部内容与第二图像中的部分内容相同,则生成第一符号作为第一标识;如果第二图像的全部内容与第一图像中的部分内容相同,则生成第二符号作为第一标识。
上述第一符号和第二符号可以用数字或者字母表示。例如,当第一图像的全部内容与第二图像中的部分内容相同,也即是第二图像包含的人数不小于第一图像包含的人数时,确定第一标识对应的第一符号为1;当第二图像的全部内容与第一图像中的部分内容相同,也即是第一图像包含的人数不小于第二图像包含的人数时,确定第一标识对应的第二符号为0。上述第一标识是根据样本对中两张图像的父子关系,自动确定的,无需人工标注,从而降低了人工标注待处理图像的时间和人力成本,同时该方式可以自动生成大量的、人数多少关系已知的样本对。
步骤s204,将上述样本对输入至预设的初始模型中,得到输出结果;其中,该输出结果包括:样本对的两张图像中包含的人数多少关系。
在将样本对输入至初始模型之前,可以将样本对中的第一图像和第二图像调整至预设大小,如224*224。上述输出结果通常是两个标量,该标量可以表征样本对的两张图像中包含的人数多少关系;通常该标量的数值越大,代表图像中包含的人数越多,例如,上述第一图像中包含的人数大于上述第二图像中包含的人数,第一图像对应的输出结果为10,第二图像对应的输出结果为5。
步骤s206,通过预设的第一损失函数和第一标识,计算输出结果的第一损失值。
将第一标识和上述输出结果输入至预设的第一损失函数,可以得到该输出结果对应的第一损失值。该预设的第一损失函数可以为均方误差损失函数、交叉熵损失函数或者损失函数等,该第一损失值通常可以表征第一标识与输出结果之间差距,通常第一损失值越大,第一标识与输出结果之间的差距越大。
步骤s208,根据上述第一损失值训练初始模型,直至该第一损失值收敛,得到中间模型。
基于该第一损失值可以调整上述初始模型中各个部分的参数,以达到训练的目的。在训练的过程中,不断地从预设的第一样本集合确定待训练的样本对,并将该样本对输出至初始模型中,以得到第一损失值,直到初始模型中各个参数收敛,也即是第一损失值收敛时,训练结束,得到中间模型。
步骤s210,基于预设的第二样本集合训练上述中间模型,得到人群计数模型;其中,该第二样本集合包括多张样本图像和与每张样本图像对应的第二标识,该第二标识用于指示样本图像中的人数。
在具体实现时,上述第二样本集合中样本图像的第二标识,通常可以通过下述步骤10-11实现:
步骤10,获取与第二样本集合中每张样本图像对应的标注结果,其中,该标注结果用于表示样本图像被人工识别的人数。该人数通常是人工统计得到的样本图像中包含的人数值。
步骤11,基于上述标注结果生成第二标识。
本发明实施例提供的人群计数模型的训练方法,首先基于预设的第一样本集合确定待训练的样本对,该每个样本对包括具有父子关系的两张图像;该第一标识用于指示样本对的两张图像中包含的人数多少关系;再将样本对输入至预设的初始模型中得到输出结果;进而通过预设的第一损失函数和第一标识,计算输出结果的第一损失值;根据第一损失值训练初始模型直至第一损失值收敛,得到中间模型;再基于预设的第二样本集合训练中间模型,得到人群计数模型。该方式中可以自动确定第一标识,无需人工标注,因此,第一样本集合中可包含大量的样本对,节省了大量的时间和人力成本,而且基于大量的样本对训练模型可以提高模型的泛化能力。
本发明实施例还提供了另一种人群计数模型的训练方法,该方法在上述实施例方法的基础上实现;该方法重点描述通过预设的第一损失函数和第一标识,计算输出结果的第一损失值的具体过程(通过下述步骤s306实现),以及根据第一损失值训练初始模型,得到中间模型的具体过程(通过下述步骤s308-s312实现);如图3所示,该方法包括如下步骤:
步骤s302,基于预设的第一样本集合确定待训练的样本对;其中,该第一样本集合包括多个样本对和与每个样本对对应的第一标识,每个样本对包括具有父子关系的两张图像;该第一标识用于指示样本对的两张图像中包含的人数多少关系。
步骤s304,将上述样本对输入至预设的初始模型中,得到输出结果;其中,该输出结果包括:样本对的两张图像中包含的人数多少关系。
上述预设的初始模型可以为神经网络模型,包括特征提取层、池化层和输出层;其中,该特征提取层用于对输入的图像进行特征提取,得到图像特征;池化层用于对输入的图像特征进行全局平均池化操作,得到全局特征;输出层用于对输入的全局特征进行分析,得到人数预测结果。其中,特征提取层包括依次连接的卷积层、批归一化层和激活函数层。该特征提取层可以提取样本对中图像的特征,以获得图像特征的高层语义信息,为了特征提取层的性能,通常该特征提取层包括多组依次连接的卷积层、批归一化层和激活函数层。图4示出了一种特征提取层的结构示意图;图4中包括四组依次连接的卷积层、批归一化层和激活函数层。
特征提取层中的批归一化层用于对卷积层输出的特征图进行归一化处理,该过程可以加快特征提取层以及初始模型的收敛速度,并且可以缓解在多层卷积网络中梯度弥散的问题,使得特征提取层更加稳定。特征提取层中的激活函数层可以对归一化处理后的特征图进行函数变换,该变换过程打破卷积层输入的线性组合,该激活函数层具体可以为sigmoid函数、tanh函数、relu函数等。
池化层可以对特征提取层得到的图像特征进行全局平均池化操作,得到输入图像的全局特征;输出层是一个全连接层,可以根据输入的图像的全局特征,得到输出结果。该输出结果通常为样本对的两张图像中包含的人数多少关系,当样本对的两张图像为第一图像和第二图像时,该输出结果也可以为第一图像中包含的人数对应的第一指示值和第二图像中包含的人数对应的第二指示值;该第一指示值和第二指示值为标量,该标量可以表征第一图像包含的人数与第二图像包含的人数的多少关系。
步骤s306,通过预设的第一损失函数和第一标识,计算输出结果的第一损失值,其中,该第一损失函数包括:l1=-ylogp-(1-y)log(1-p);其中,l1为第一损失值;y为样本对的第一标识,log用于表示对数运算;
将上述初始模型输出的第一指示值和第二指示值代入中间函数
步骤s308,根据上述第一损失值调整初始模型的参数。
在实际实现时,可以预先设置函数映射关系,将初始模型的参数和第一损失值输入至该函数映射关系中,即可计算得到更新的参数。不同参数的函数映射关系可以相同,也可以不同。上述步骤s208通常可以通过下述步骤20-21实现:
步骤20,计算第一损失值对初始模型中待调整参数的导数
步骤21,调整待调整参数,得到调整后的待调整参数
步骤s310,判断调整后的初始模型的参数是否均收敛,如果均收敛,执行步骤s312;否则执行步骤s302。
如果调整后的初始模型的参数不是均收敛,则继续基于预设的第一样本集合确定待训练的样本对,直到调整后的初始模型的参数均收敛。
步骤s312,将参数调整后的初始模型确定为中间模型;执行步骤s314。
步骤s314,基于预设的第二样本集合训练上述中间模型,得到人群计数模型。
上述人群计数模型的训练方法,根据第一损失值调整初始模型的参数,如果调整后的初始模型的参数不是均收敛,继续根据样本对调整初始模型的参数,直到所有参数均收敛后得到中间模型,然后基于预设的第二样本再对中间模型进行训练,得到人群计数模型。该方式通过大量的样本对对初始模型进行训练,可以缓解样本数量少对模型训练带来的负面影响,从而增加了模型的泛化能力。
本发明实施例还提供了另一种人群计数模型的训练方法,该方法在上述实施例方法的基础上实现;该方法重点描述基于预设的第二样本集合训练中间模型,得到人群计数模型的具体过程(通过下述步骤s504-s510实现);如图5所示,该方法包括如下步骤:
步骤s502,基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型;其中,第一样本集合包括多个样本对和与每个样本对对应的第一标识,每个样本对包括具有父子关系的两张图像;第一标识用于指示样本对的两张图像中包含的人数多少关系。
步骤s504,基于预设的第二样本集合确定待训练的样本图像。
上述第二样本集合中包含多张样本图像,该样本图像中除包含人物外,还可以包含景物、动物、建筑物等,而且每张样本图像通常都携带有第二标识,该第二标识通常是由人工标注的样本图像中的人数。
步骤s506,将上述样本图像输入至中间模型中,输出训练结果。
该训练结果通常是通过中间模型输出的样本图像中包含的人数,当中间模型精度较高时,模型输出的人数应当与样本图像的第二标识中的人数一致,或者相差很少。
在另一种实施方式中,为了输出更好的训练结果,可以对中间模型中的输出层的参数重新进行初始化(例如,重新进行训练),其他网络层的参数保留,然后将样本图像输入至初始化完成后的中间模型中,输出训练结果。
步骤s508,通过预设的第二损失函数和样本图像中的第二标识,计算中间模型输出的训练结果的第二损失值。
上述第二损失函数可以比较训练结果与样本图像中的第二标识的差距,也即是训练结果与真实数据的差距,通常差距越大,该第二损失值越大。在具体实现时,上述所述第二损失函数为l2=|z-y*|;其中,l2为第二损失值,z为中间模型输出的训练结果,y*为样本图像的第二标识。
步骤s510,根据上述第二损失值调整中间模型的参数,继续执行基于预设的第二样本集合确定待训练的样本图像的步骤,直至第二损失值收敛,得到人群计数模型。
基于该第二损失值可以调整上述中间模型中各层网络的参数,以达到训练的目的。当中间模型中各个参数收敛时,训练结束,得到人群计数模型。在具体实现时,根据第二损失值调整中间模型的参数的过程,通常可以通过下述步骤30-31实现:
步骤30,计算第二损失值对中间模型中待调整参数的导数
步骤31,调整上述待调整参数,得到调整后的待调整参数
通常得到各个待调整参数的导数后,再调整待调整参数,得到调整后的待更新参数;该过程也可以称为随机梯度下降算法;各个待调整参数的导数也可以理解为基于当前的待调整参数,第二损失值下降最快的方向,通过该方向调整参数,可以使第二损失值快速降低,使该参数收敛。另外,当中间模型经一次训练后,得到一个第二损失值,此时可以从中间模型中各个参数中随机选择一个或多个参数进行上述的调整过程,该方式的模型训练时间较短,算法较快;当然也可以对中间模型中所有参数进行上述的调整过程,该方式的模型训练更加准确。
上述人群计数模型的训练方法,通过大规模的样本对初始模型进行训练,再通过携带有第二标识的样本图像对模型参数进行微调,得到人群计数模型,该方式缓解了样本数量少对模型训练带来的负面影响,从而增加了模型的泛化能力,而且该方式训练得到的模型精度高。
在上述人群计数模型的训练方法实施例的基础上,本发明实施例提供了一种人群计数方法,如图6所示,该方法包括如下步骤:
步骤s602,获取待计算图像;该待计算图像可以是图片,可以是从视频文件中截取的视频帧,也可以是从监控摄像头获取到的场景监控图像。
步骤s604,将上述待计算图像输入至预先训练完成的人群计数模型,输出待计算图像中包含的人数;该人群计数模型通过上述人群计数模型的训练方法训练得到。
上述人群计数方法,首先获取待计算图像,然后再将待计算图像输入至预先训练完成的人群计数模型,输出待计算图像中包含的人数。该方式仅需将待计算图像输入至人群计数模型,即可得到待计算图像中包含的人数,而且得到的人数准确度较高,有利于用户对人群数量的监控。
对应于上述人群计数模型的训练方法实施例,本发明实施例还提供了一种人群计数模型的训练装置,如图7所示,该装置包括:
第一模型训练模块70,用于基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型;其中,第一样本集合包括多个样本对和与每个样本对对应的第一标识,每个样本对包括具有父子关系的两张图像;该第一标识用于指示样本对的两张图像中包含的人数多少关系。
第二模型训练模块71,用于基于预设的第二样本集合训练上述中间模型,得到人群计数模型;其中,该第二样本集合包括多张样本图像和每张样本图像对应的第二标识,第二标识用于指示所述样本图像中的人数。
上述人群计数模型的训练装置,首先基于预设的第一样本集合对预设的初始模型进行训练,得到中间模型;其中,该第一样本集合包括多个样本对和与每个样本对对应的第一标识,每个样本对包括具有父子关系的两张图像;该第一标识用于指示样本对的两张图像中包含的人数多少关系;再基于预设的第二样本集合训练中间模型,得到人群计数模型。该方式中,在第一样本集合中,第一标识仅用于指示样本对的两张图像中包含的人数多少关系,因而第一标识可自动得到,无需人工标注,因此,第一样本集合中可包含大量的样本对,节省了大量的时间和人力成本,而且基于大量的样本对训练模型可以提高模型的泛化能力;在第一样本集合对模型进行训练的基础上,再通过第二样本集合中携带有人数第二标识的样本图像对模型进行训练,可进一步提高模型的计数精度,因此,通过上述方式训练得到的模型具有较高的泛化能力,同时统计精度较高。
具体地,上述装置还包括样本对生成模块,用于:对预先获取的每张待处理图像进行裁剪,得到第一图像和第二图像;其中,该第一图像的全部内容与第二图像中的部分内容相同,或者,第二图像的全部内容与第一图像的部分内容相同。
进一步地,上述装置还包括第一标识生成模块,用于:根据样本对中两张图像的父子关系生成所述第一标识。
具体地,上述第一标识生成模块,还用于:如果第一图像的全部内容与第二图像中的部分内容相同,则生成第一符号作为第一标识;如果第二图像的全部内容与第一图像中的部分内容相同,则生成第二符号作为第一标识。
进一步地,上述装置还包括第二标识生成模块,用于:获取与第二样本集合中每张样本图像对应的标注结果,其中,该标注结果用于表示所述样本图像被人工识别的人数;基于该标注结果生成所述第二标识。
在具体实现时,上述预设的初始模型为神经网络模型,包括特征提取层、池化层和输出层;其中,该特征提取层用于对输入的图像进行特征提取,得到图像特征;池化层用于对输入的图像特征进行全局平均池化操作,得到全局特征;输出层用于对输入的全局特征进行分析,得到人数预测结果。
进一步地,上述第一模型训练模块70,还包括:样本对确定单元,用于基于预设的第一样本集合确定待训练的样本对;输入单元,用于将样本对输入至预设的初始模型中,得到输出结果;其中,该输出结果包括:样本对对应的两张图像中包含的人数的多少关系;计算单元,用于通过预设的第一损失函数和第一标识,计算输出结果的第一损失值;第一训练单元,用于根据上述第一损失值训练初始模型,直至该第一损失值收敛,得到中间模型。
具体地,上述样本对的两张图像分别为第一图像和第二图像;上述输出结果还包括:与第一图像中包含的人数对应的第一指示值和与第二图像中包含的人数对应的第二指示值。上述第一损失函数包括:l1=-ylogp-(1-y)log(1-p);其中,l1为第一损失值;y为样本对的第一标识,log用于表示对数运算;
进一步地,上述第一训练单元,用于:根据第一损失值调整初始模型的参数;如果调整后的参数均收敛,将参数调整后的初始模型确定为中间模型;如果调整后的参数没有均收敛,继续执行基于预设的第一样本集合确定待训练的样本对的步骤,直至参数均收敛。
进一步地,上述第一训练单元,还用于:计算第一损失值对初始模型中待调整参数的导数
进一步地,上述第二模型训练模块71,用于:基于预设的第二样本集合确定待训练的样本图像;将样本图像输入至中间模型中,输出训练结果;通过预设的第二损失函数和样本图像中的第二标识,计算中间模型输出的训练结果的第二损失值;根据第二损失值调整中间模型的参数,继续执行基于预设的第二样本集合确定待训练的样本图像的步骤,直至第二损失值收敛,得到人群计数模型。
具体地,上述第二损失函数为l2=|z-y*|;其中,l2为第二损失值,z为中间模型输出的训练结果,y*为样本图像的第二标识;上述第二模型训练模块71,还用于:计算第二损失值对中间模型中待调整参数的导数
本发明实施例所提供的人群计数模型的训练装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
对应于上述人群计数方法实施例,本发明实施例还提供了一种人群计数装置,如图8所示,该装置包括:
图像获取模块80,用于获取待计算图像。
人数输出模块81,用于将上述待计算图像输入至预先训练完成的人群计数模型,输出待计算图像中包含的人数;该人群计数模型通过上述人群计数模型的训练方法训练得到。
上述人群计数装置,首先获取待计算图像,然后再将待计算图像输入至预先训练完成的人群计数模型,输出待计算图像中包含的人数。该方式仅需将待计算图像输入至人群计数模型,即可得到待计算图像中包含的人数,而且得到的人数准确度较高,有利于用户对人群数量的监控。
本发明实施例还提供了一种服务器,参见图9所示,该服务器包括处理器101和存储器100,该存储器100存储有能够被处理器101执行的机器可执行指令,该处理器101执行机器可执行指令以实现上述人群计数模型的训练方法或者上述人群计数方法。
进一步地,图9所示的服务器还包括总线102和通信接口103,处理器101、通信接口103和存储器100通过总线102连接。
其中,存储器100可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口103(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。总线102可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图9中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
处理器101可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器101中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器101可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessor,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器100,处理器101读取存储器100中的信息,结合其硬件完成前述实施例的方法的步骤。
本发明实施例还提供了一种机器可读存储介质,该机器可读存储介质存储有机器可执行指令,该机器可执行指令在被处理器调用和执行时,该机器可执行指令促使处理器实现上述人群计数模型的训练方法或者上述人群计数方法,具体实现可参见方法实施例,在此不再赘述。
本发明实施例所提供的人群计数模型的训练方法、人群计数方法、装置和服务器的计算机程序产品,包括存储了程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和/或电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。