本发明涉及图像处理技术,尤其涉及一种基于联合变量图片生成的行人重识别方法。
背景技术:
行人重识别(personre-identification)又称行人再识别,目标是在不重叠视野的摄像机系统中识别出特定的人,即跨摄像头的行人检索问题。具体地说,当确定某一个摄像头中的行人为目标行人时,行人重识别算法能够判断目标行人是否在别的摄像头内出现。行人重识别对智慧城市的建设起着重要作用。例如我国用于治安防控的“天网工程”,其通过在公共场所大范围地布置监控摄像头来识别行人信息,当识别出地行人信息在检索库中时,就会对其进行标定并报警。几年来,由于深度学习技术在计算机视觉各领域取得了很大进步,涌现了大量基于深度学习的行人重识别方法。深度学习是一种数据驱动的方法,但是现有的行人重识别数据集内的图像数量相对于真实监控场景来说十分有限,神经网络很容易过拟合在较小的数据集。
传统的行人重识别数据集扩增方法本质上还是在原视频上裁剪行人图片,并没有实质性地生成数据。一些单变量的行人重识别数据集扩增方法虽然生成了原本不存在的数据,但是其生成的数据只改变一个变量,如姿态或色域,但实际情况下的行人图像受多变量影响,仅考虑单变量生成的图片与真实场景下的行人图片仍有一定差距。
技术实现要素:
根据现有技术存在的问题,本发明公开了一种基于联合变量图片生成的行人重识别方法,具体包括如下步骤:
s1:选择需要进行数据扩增的行人图像p1;
s2:利用openpose对行人图像进行姿态估计得到原始姿态信息b1;
s3:规定场景类别c和目标行人姿态b2;
s4:建立基于联合变量的图片生成模型,将行人图像p1、原始姿态信息b1、场景类别c和目标行人姿态b2输入到预先训练好的图片生成模型中,得到目标场景及姿态下的行人图像p2;
s5:将生成的图像添加到原始数据集中,进行行人重识别流程。
进一步的,s4具体采用如下方式:
将场景类别c的维度扩充为大小为[k,64,128]的矩阵,并将其与行人图像p1在深度轴上串联得到大小为[3 k,64,128]的矩阵,对原始姿态b1与目标姿态b2进行同样串联操作,得到大小为[36,64,128]的矩阵,将上述得到的两个矩阵传送至图片生成模型进行运算,最后图片生成模型输出目标场景及姿态下的包含同一行人的图像。
所述图片生成模型包括生成器g、判别器da、判别器ds以及判别器dc,
其中生成器g采用如下训练过程:根据输入数据输出生成的行人图像p2,
将生成的行人图像p2与原始图像p1传送至判别器da,标签为true,计算损失,保证生成的行人图像p2中行人外貌与原始图像p1中行人外貌相同;
将生成的行人图像p2与目标行人姿态b2传送至姿态一致性判别器ds,标签为true,计算损失,保证行人图像p2中的行人姿态为目标行人姿态b2;
将生成的行人图像p2传送至判别器dc,标签为场景类别c,计算损失,保证行人图像p2的场景类别与目标场景类别c一致;
将以上的损失加权相加后反向传播,更新生成器g中的参数;
判别器da的训练步骤为:
将行人图像p1和生成的行人图像p2的真值传送至判别器da,标签为true,计算损失;
将行人图像p1和生成的行人图像p2传送至判别器da,标签为false,计算损失,将两部分损失相加,反向传播,更新判别器da中的参数;
判别器ds的训练步骤为:
将目标行人姿态b2和生成的行人图像p2的真值传送至判别器ds标签为true,计算损失;
将目标行人姿态b2和生成的行人图像p2传送至判别器ds,标签为false,计算损失;将两部分损失相加再反向传播并更新判别器ds;
判别器dc的训练步骤:
将生成的行人图像p2的真实值传送至判别器dc,标签为目标场景c,计算损失,反向传播并更新判别器dc。
由于采用了上述技术方案,本发明提供的一种基于联合变量图片生成的行人重识别方法,利用生成对抗网络将原始的行人重识别数据集进行扩充,基于扩充后的数据集来训练行人重识别模型。其中生成模型区别于其他的行人图像生成模型,是一种基于多变量的图像生成模型。本生成模型联合考虑了图像中行人的姿态变化以及行人图像的场景变化,在原始行人图像的基础上,将姿态信息与场景信息作为约束条件加入到生成对抗网络的训练和图像生成过程中,因此生成的图像更接近于真实情况下的行人图像。同时,通过修改输入网络的姿态变量和场景变量,极大的丰富了生成图像的多样性。利用此模型生成的图像是输入图像中的行人在不同姿态、场景下的新图像,故生成的图像可继承原始行人图像的标签,进而用于基于深度学习的行人重识别方法。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明基于联合变量图片生成的行人重识别方法的流程图
图2为本发明中行人姿态信息的提取过程示意图
图3为本发明中利用生成器生成图像的流程图
图4为本发明中生成模型的训练过程示意图
具体实施方式
为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:
如图1所示的一种基于联合变量图片生成的行人重识别方法,其特征在于包括如下步骤:
s1:选择需要进行数据扩增的行人图像p1。
s2:利用openpose对行人图像进行姿态估计,得到原始姿态信息b1。
s3:规定场景类别c和目标行人姿态b2。
s4:将行人图像p1、原始姿态信息b1、目标场景类别c和目标行人姿态b2输入到预先训练好的生成网络,得到目标场景及姿态下的行人图像p2。
s5:将生成的图像添加到原始数据集中,进行行人重识别流程。
进一步的,s1中选择一张行人图像,并将其大小修改为64*128;
进一步的,s2中利用openpose对行人图像进行姿态估计(openpose是一个开源并以训练好的网络,可用作姿态估计的工具)。其过程如图2所示:其中行人图像为3通道的rgb矩阵(大小为[3,64,128])。骨架为18通道的概率热图(大小为[18,64,128]),表示估计出的18个人体关节点所在位置概率。如[i,x,y]表示第i个关节点在位置(x,y)的概率。
进一步的,在同一数据集中由于各个摄像头之间的参数差异,会使得不同摄像头拍摄的图像之间存在色彩差异,s3中以独热编码的形式对摄像头进行编码。例如,若想要生成摄像头6拍摄的图像,则规定场景类别c为[0,0,0,0,0,1],同样,若想生成摄像头1拍摄的图像,则规定场景类别c为[1,0,0,0,0,0]。同时人为选定姿态热图b2作为生成图像中人的姿态。
进一步的,s4中将s1-s3中的准备好的数据送入训练好的图片生成模型,如图3所示,首先,将目标场景独热向量c的维度扩充为[k,64,128](其中k为数据集中包含摄像头的数量),并将其与行人图像p1在深度轴上串联。得到大小为[3 k,64,128]的矩阵。然后对原始姿态b1与目标姿态b2进行同样串联操作,得到大小为[36,64,128]的矩阵。将上述得到的两个矩阵送入生成网络g进行运算。最后生成网络g输出目标场景及姿态下的同一行人图像。其中生成网络包括生成器g、判别器da、判别器ds以及判别器dc。
进一步的,生成器g采用如下训练过程:根据输入数据p1、c、b1以及b2生成行人图像p2。
将生成的行人图像p2与原始图像p1传送至外貌一致性判别网络da,标签为true,计算损失,此步保证生成的图像p2中行人外貌与p1中行人外貌相同;
将生成的图片p2与目标姿态b2传送至姿态一致性判别器ds,标签为true,计算损失,此步保证p2中的行人姿态为目标姿态b2。
将生成的图片p2传送至色域一致性判别器dc,标签为目标场景c,保证生成的图片场景风格与目标场景c一致。
将生成的图片p2与p2的真值进行比较并计算损失;
将以上的损失加权相加后反向传播,更新生成器g中的参数。
进一步的,判别器da的训练步骤为:
(1)将真实数据p1和p2的真值送入网络,标签为true,计算损失。
(2)将真实数据p1和生成的p2送入网络,标签为false,计算损失。
(3)两部分损失相加,然后反向传播,更新判别器da中的参数。
判别器ds的训练步骤:
(1)将目标姿态b2和p2的真值送入网络,标签为true,计算损失。
(2)将目标姿态b2和生成的p2送入网络,标签为false,计算损失。
(3)将两部分损失相加,然后反向传播,更新判别器ds中的参数。
判别器dc的训练步骤:
(1)将p2的真实值送入网络,标签为目标场景c,计算损失。
(2)反向传播,更新判别器dc中的参数。
实施例:将扩充后的数据集用于行人重识别网络的训练。此处以简单的resnet50网络为例,描述行人重识别方法流程。
训练过程:在训练阶段目的是训练网络使其能提取到能代表行人的特征,故网络以分类的形式进行训练,具体步骤为:
(1)网络读取训练集中的行人图像以及该行人的标签。
(2)将行人图像输入网络,网络输出行人的分类结果。
(3)将网络的分类结果与该行人的标签进行比较,计算损失。
(4)损失反向传播。
测试过程:在测试阶段,目的是提取图片的特征向量,故将网络的分类层去掉并用预训练好的网络提取图像特征:①网络读取行人图像,②网络输出该行人的特征。对待检索图像以及检索库中的图像都进行上面①②的操作,则可以用特征向量来代表待检索图像以及检索库中的图像。
验证部分:计算待检测行人图像与检索库中行人图像的特征间的余弦距离。
余弦距离公式如下:
具体来说,针对一张待检测的行人图像,计算其特征与检索库中的每张图像的特征的余弦距离,然后按照距离由小到大将检索库中的图片排序。即越靠前的行人图像越有可能为包含待检测行人的图像。
本发明公开的一种基于联合变量图片生成的行人重识别方法,利用生成对抗网络强大的数据生成能力来对行人重识别任务的数据集进行扩充。具有如下优点:生成的数据与原数据集相比相似度较小。从多变量的角度,同时改变行人姿态以及图像色域,使生成的图像更接近于真实情况下的行人图像。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
1.一种基于联合变量图片生成的行人重识别方法,其特征在于包括:
s1:选择需要进行数据扩增的行人图像p1;
s2:利用openpose对行人图像进行姿态估计得到原始姿态信息b1;
s3:规定场景类别c和目标行人姿态b2;
s4:建立基于联合变量的图片生成模型,将行人图像p1、原始姿态信息b1、场景类别c和目标行人姿态b2输入到预先训练好的图片生成模型中,得到目标场景及姿态下的行人图像p2;
s5:将生成的图像添加到原始数据集中,进行行人重识别流程。
2.根据权利要求1所述的一种基于联合变量图片生成的行人重识别方法,其特征还在于:s4具体采用如下方式:
将场景类别c的维度扩充为大小为[k,64,128]的矩阵,并将其与行人图像p1在深度轴上串联得到大小为[3 k,64,128]的矩阵,对原始姿态b1与目标姿态b2进行同样串联操作,得到大小为[36,64,128]的矩阵,将上述得到的两个矩阵传送至图片生成模型进行运算,最后图片生成模型输出目标场景及姿态下的包含同一行人的图像。
3.根据权利要求1所述的一种基于联合变量图片生成的行人重识别方法,其特征还在于:所述图片生成模型包括生成器g、判别器da、判别器ds以及判别器dc,
其中生成器g采用如下训练过程:根据输入数据输出生成的行人图像p2,
将生成的行人图像p2与原始图像p1传送至判别器da,标签为true,计算损失,保证生成的行人图像p2中行人外貌与原始图像p1中行人外貌相同;
将生成的行人图像p2与目标行人姿态b2传送至姿态一致性判别器ds,标签为true,计算损失,保证行人图像p2中的行人姿态为目标行人姿态b2;
将生成的行人图像p2传送至判别器dc,标签为场景类别c,计算损失,保证行人图像p2的场景类别与目标场景类别c一致;
将以上的损失加权相加后反向传播,更新生成器g中的参数;
判别器da的训练步骤为:
将行人图像p1和生成的行人图像p2的真值传送至判别器da,标签为true,计算损失;
将行人图像p1和生成的行人图像p2传送至判别器da,标签为false,计算损失,将两部分损失相加,反向传播,更新判别器da中的参数;
判别器ds的训练步骤为:
将目标行人姿态b2和生成的行人图像p2的真值传送至判别器ds标签为true,计算损失;
将目标行人姿态b2和生成的行人图像p2传送至判别器ds,标签为false,计算损失;将两部分损失相加再反向传播并更新判别器ds;
判别器dc的训练步骤:
将生成的行人图像p2的真实值传送至判别器dc,标签为目标场景c,计算损失,反向传播并更新判别器dc。
技术总结