发明内容
本发明的目的在于提供一种基于多任务深度学习的行人再识别方法,提高了行人再识别的准确率和模型的泛化能力。
为实现上述目的,本发明提供如下技术方案:
一种基于多任务深度学习的行人再识别方法,其特征在于,包括以下步骤:
S1,构建多任务深度学习网络,包括骨干网络和三个子任务网络,所述子任务网络包括全局特征网络、人体部件分割网络和行人属性网络;
S2,分别构建三个子任务网络的损失函数,加权求和得到多任务深度学习网络的损失函数;
S3,准备每个子任务网络的训练数据集,并进行训练;
S4,将多任务深度学习网络中的子任务网络输出的特征向量拼接,作为多任务深度学习网络最终的输出特征。
进一步的,所述全局特征网络包括依次连接的池化层、向量拼接层、BN层、全连接层和softmax层;所述池化层,对输入进行全局平均池化和全局最大池化;所述向量拼接层,对全局平均池化结果和全局最大池化进行拼接。
进一步的,所述人体部件分割网络包括依次连接的3×3逆卷积层、BN层、relu层和1×1卷积层。
进一步的,所述行人属性网络包括依次连接的分割层、全局平均池化层、第一向量拼接层、全连接层、softmax层和第二向量拼接层;所述分割层,将输入水平分割成6块;所述全局平均池化层,将分割后的块分别进行平均池化;所述第一向量拼接层,将平均池化得到的向量拼接成1个向量;所述全连接层,数量与行人属性的数量相同,将拼接后的向量转化为行人属性结果向量;所述softmax层,将多个行人属性结果向量进行归一化;所述第二向量拼接层,将归一化后的多个行人属性结果向量拼接成一个向量作为属性输出向量。
进一步的,所述行人属性包括性别,年龄,头发长度,袖子长度,下身衣服长度,下身衣服类型,是否佩戴帽子,是否背包,是否拎包,是否手拿包,上身衣服颜色以及下身衣服颜色。
进一步的,所述全局特征网络的损失函数为:
L(g)=L(id)+L(tri)+βL(C)
其中,L(g)为全局特征网络的损失;L(id)为全局特征网络输出的ID结果向量与训练图片真实ID标签的交叉熵,L(tri)为全局特征网络输出的两种池化结果拼接成的向量的三元损失函数;L(C)为全局特征网络输出的两种池化结果拼接成的向量的中心损失函数;β为L(C)的权重系数。
进一步的,所述人体部件分割网络的损失函数为:
其中,L(ps)为人体部件分割网络的损失;
为第k个部件内平均的交叉熵损失,K为部件个数。
进一步的,所述行人属性网络的损失函数为:
其中,L(attr)为行人属性网络的损失;f_attr[j]是第j个属性结果向量;Nj为该属性结果向量的维数,y为训练图片的真实属性标签。
进一步的,所述S3中,对所述训练数据集进行增强处理;
S31,将图像大小变换至规定大小;
S32,将图像进行随机水平翻转;
S33,将图像的边缘外扩10个像素;
S34,从外扩后的图像中随机裁剪出规定大小的图像;
S35,对图像进行归一化;
S36,对归一化后的图像,随机擦除图像中5%~10%面积的矩形块。
进一步的,所述S4中,最终的输出特征由全局特征网络的BN层输出与行人属性网络的属性输出向量拼接而成。
与现有技术相比,本发明的有益效果是:在训练阶段,本发明采用三个子任务网络对模型进行训练,包括全局特征网络、人体部件分割网络、行人属性网络,提高了行人再识别的准确率。在测试阶段,本发明去除了人体部件分割网络,以全局特征网络和行人属性网络的结果拼接作为输出,减少了网络计算量。
具体实施方式
下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供一种基于多任务深度学习的行人再识别方法,包括以下步骤:
S1,构建多任务深度学习网络,包括骨干网络和三个子任务网络,所述子任务网络包括全局特征网络、人体部件分割网络和行人属性网络。请参照图1,所述骨干网络采用ResNet,骨干网络ResNet最后一层conv5_1的步长由2改为1;全局特征网络和行人属性网络连接ResNet的conv5_x层,即ResNet的conv5_x层的输出作为全局特征网络和行人属性网络的输入;同理,人体部件分割网络连接ResNet的conv4_x层。
三个子任务网络的结构如下:
①全局特征网络
请参照图2,所述全局特征网络包括依次连接的池化层、向量拼接层、BN层、全连接层和softmax层;所述池化层,对输入进行全局平均池化和全局最大池化;所述向量拼接层,对全局平均池化结果和全局最大池化进行拼接输出拼接向量feature f_t;所述BN层,对拼接后的向量feature f_t进行批量标准化得到feature f_i;所述softmax层,输出ID结果向量feature f_id。
②人体部件分割网络
请参照图3,所述人体部件分割网络包括依次连接的3×3逆卷积层、BN层、relu层和1×1卷积层。部件分割结果为8×48×16的张量,即有48×16的二维向量每个像素点有一个长度为8的一维向量,这个长度为8的一维向量对应该像素点部件分割的结果。8个部件优选为:背景/头部/上臂/下臂/躯干/臀部及大腿/小腿/脚。
③行人属性网络
请参照图4,所述行人属性网络包括依次连接的分割层、全局平均池化层、第一向量拼接层、全连接层、softmax层和第二向量拼接层;
所述分割层,将输入水平分割成6块,得到8个块,分别是局部特征1至局部特征6,能够有效提取整张图像的局部特征,提高行人属性识别准确性;所述全局平均池化层,将分割后的块分别进行平均池化;所述第一向量拼接层,将平均池化得到的向量拼接成1个向量;所述全连接层,数量与行人属性的数量相同,本实施例优选行人属性的数量为12,将拼接后的向量转化为12个行人属性结果向量;所述softmax层,将多个行人属性结果向量进行归一化;所述第二向量拼接层,将归一化后的多个行人属性结果向量拼接成一个向量作为属性输出向量。
值得一提的是,所述行人属性及其标签包括③性别(男/女),年龄(儿童/青少年/成年/老年),头发长度(长/短),袖子长度(长/短),下身衣服长度(长/短),下身衣服类型(裤子/裙子),是否佩戴帽子,是否背包,是否拎包,是否手拿包,8种上身衣服颜色(黑/白/红/黄/灰/蓝/绿/棕),以及9种下身衣服颜色(黑/白/紫/黄/灰/蓝/绿/棕/红)。
S2,分别构建三个子任务网络的损失函数,加权求和得到多任务深度学习网络的损失函数。
具体的,所述全局特征网络的损失函数为:
L(g)=L(id)+L(tri)+βL(C)
其中,L(g)为全局特征网络的损失;L(id)为全局特征网络输出的ID结果向量与训练图片真实ID标签的交叉熵,L(tri)为全局特征网络输出的两种池化结果拼接成的向量的三元损失函数(triplet loss);L(C)为全局特征网络输出的两种池化结果拼接成的向量的中心损失函数;β为L(C)的权重系数,优选为0.005。
其中,y为训练图片的真实属性标签,f_id[i]为全局特征网络的输出ID结果向量feature f_id,i代表图像的序号。
L(tri)=[dp-dn+α]+
其中,在训练过程中输入的一批次训练图像中,随机选取的一个样本作为固定样本,正样本为和固定样本属于同一类的样本,负样本为和固定样本属于不同类的样本。上式中,dp为固定样本和正样本f_t的欧式距离,dn为固定样本和负样本f_t的欧式距离,α为正负样本设置一个常数余量,优选设为0.3;下标+表示[]内的值大于零的时候,取该值为损失,小于零的时候,损失为零。
其中,yj为一个训练过程中输入的批处理图像一批次图像中的第j个图像的真实ID标签,Cyj为第yj个类别的类中心feature,B为该批次图像数量的大小。
所述人体部件分割网络的损失函数为:
其中,L(ps)为人体部件分割网络的损失;
为第k个部件内平均的交叉熵损失,K为部件个数。
所述行人属性网络的损失函数为:
其中,L(attr)为行人属性网络的损失;f_attr[j]是第j个属性结果向量;Nj为该属性结果向量的维数,y为训练图片的真实属性标签。
将三个子任务网络的损失函数进行加权求和,即得到多任务深度学习网络总的损失函数L(total):
L(total)=L(g)+L(ps)+L(attr)
S3,准备每个子任务网络的训练数据集,并进行训练;
具体的,对所述训练数据集进行增强处理;
S31,将图像大小变换至规定大小384×128;
S32,将图像进行50%随机水平翻转;
S33,将图像的边缘外扩10个像素;
S34,从外扩后的图像中随机裁剪出规定大小384×128的图像;
S35,对图像进行归一化;
S36,对归一化后的图像,50%随机擦除图像中5%~10%面积的矩形块。
训练数据集的训练过程为:market1501集训练全局特征网络;coco部件分割数据集训练人体部件分割网络;market1501 Attribute集训练训练行人属性网络。训练过程为:依次读取3个训练集数据对多任务深度学习网络进行前传得到预测值,计算损失函数,反向传播计算当前梯度,累加3个分支的梯度,根据累加的梯度更新网络参数,然后清空过往梯度重复以上操作继续训练。
S4,将多任务深度学习网络中的子任务网络输出的特征,具体为对全局特征网络的BN层输出feature f_i与行人属性网络的属性输出向量feature f_attr进行拼接,作为多任务深度学习网络最终的输出特征。最终的输出特征两个归一化的向量,平衡了图片全局特征维度(2048维)与行人属性维度(27维)相差较大带来的权重失衡。
人体部件分割网络仅作为辅助网络对多任务深度学习网络参数施加软约束,使得模型能够关注人体本身,抑制背景影响,从而显著提高模型的泛化性能。在测试阶段可以去除该分支,减少网络计算量。
在S4前,还包括对ResNet骨干网络的赋值,具体采用ImageNet预训练好的ResNet网络参数赋值给ResNet骨干网络。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。