张晓涵
(中国石油大学(华东) 计算机科学与技术学院, 青岛 266580)
行人重识别(person re-identification)也称行人再识别, 近年来引起学术界与工业界的广泛关注, 成为一个研究热点. 行人重识别旨在检索跨摄像头下的某一目标行人, 该技术可以与人脸识别、行人检测等相结合, 促进嫌犯追踪、走失救助等智慧安防领域以及无人超市等智慧商业领域的发展. 然而, 在真实的场景下,不同摄像头的同一行人由于受到光照、姿态、遮挡、分辨率等各种因素的影响, 往往呈现很大的外观差异,这给行人重识别的研究与应用带来诸多挑战[1]. 因此,如何提取更具判别力的行人特征, 并采用高效的相似性度量方法以减小类内差距, 增大类间差距成为行人重识别的关键问题.
传统的行人重识别由特征提取与相似性度量两个子任务组成, 首先手工设计颜色、纹理、形状等低级特征对行人进行表示, 然后借助度量学习算法对特征距离进行约束, 无法实现端到端, 费时费力且精度普遍低下. 随着深度学习的兴起, 行人重识别将特征提取与相似性度量整合到一个统一的框架中. 通过卷积神经网络提取行人的高层特征, 同时设计度量损失函数控制类内类间距离, 大大提升了行人重识别的性能.2016 年, Zheng 等[2]提出IDE 模型, 把行人重识别看做一个分类任务, 成为后续很多工作的基线模型. 近年,为了提升行人重识别在数据集上的精度, 大量工作采用结合行人局部特征的方法. Zhao 等[3]提出的Spindle Net, 由姿态估计模型获得人体的若干关键点, 产生7 个子区域, 然后分区域进行特征提取与融合. Kalayeh等[4]提出了SPReID, 为了获取局部特征, 将人体分割模型引入行人重识别中, 得到前景和4 个不同身体区域的掩膜. Sun 等[5]提出了经典的PCB 网络, 把行人图像水平均分为6 块, 得到6 个局部特征向量, 之后每个特征向量都经过降维和全连接层后送入分类器中, 进行单独预测. 基于此工作, Wang 等[6]结合了全局特征设计了MGN 网络, 通过将行人图像分别水平均分为2 块和3 块, 得到了不同粒度的行人局部特征. 这些方法虽然性能表现更好, 但无疑增加了网络的复杂程度.基于姿态估计的方法和基于语义分割的方法需要引入额外的标注信息, 很大程度上依赖于预训练模型的性能. 基于水平切块的方法通常包含多个支路, 且粗暴的划分容易造成相应部件语义不对齐问题. 而基于全局特征的行人重识别网络结构简单, 近年来一直被忽视,具有很大的研究意义. 相似性度量方面, 通过将行人特征映射到欧几里得空间, 最小化度量损失使得正样本间特征距离减小, 负样本间特征距离增大. 行人重识别中的度量损失主要有对比损失[7]、三元组损失[8]、四元组损失[9]等, 其中使用最广泛的是三元组损失. 在三元组损失的基础上, Hermans 等[10]提出了难样本采样三元组损失, 进一步提升模型的泛化性.
本文以ResNet50 为骨干网络, 在特征提取层面做出3 点改进, 最大程度上利用行人的全局特征: (1)设计一种多重感受野融合模块, 采用不同大小的卷积核获取不同感受野的行人信息; (2)采用GeM 池化代替被普遍使用的全局平均池化获取细粒度特征; (3)分别从ResNet50 的Conv4_x 和Conv5_x 层进行采样, 得到两个通道数不同的特征图, 各送入一个分支, 两个分支得到的特征均使用分类损失与难样本采样三元组损失联合训练. 本文方法在Market1501 数据集与DukeMTMCreID 数据集上验证, 实验结果表明, 本文方法具有较好的表现, 甚至优于一些基于局部特征的方法.
此前基于全局特征的行人重识别方法整体流程大致如图1 所示, 网络提取特征后, 采用全局平均池化(GAP)获得全局特征向量, 之后经过全连接层获得低维的输出特征. 这类方法结构简单但精度普遍较低, 在此基础上, 本文对基于行人全局特征的方法进行了改进. 本文整体的网络结构如图2 所示, 使用在ImageNet上预训练过的ResNet50 作为骨干网络, 该网络在行人重识别中被普遍使用. 移除网络最后的平均池化层和全连接层, 把最后一个卷积层的步长由2 设为1 以获取分辨率更高的特征图, 这就使得Conv4_x 与Conv5_x采样的特征图具有相同的尺寸. 之后是两个独立的分支, 第一个分支是从Conv5_x 得到的特征图, 经过本文设计的多重感受野融合模块, 之后进行GeM 池化, 得到2 048 维的特征向量, 使用难样本采样三元组损失约束. 该特征向量经过一个全连接层得到512 维的输出特征, 使用交叉熵损失约束. 第二个分支是从Conv4_x得到通道数为1 024 的特征图, 后续结构与第一分支保持相同. 在测试阶段, 将两个分支经过GeM 池化得到的特征向量进行融合得到3 072 维的向量对行人进行检索.
图1 基于行人全局特征的网络结构
图2 本文网络结构
如图1 所示, 基于全局特征的行人重识别方法在提取特征之后, 通常直接进行池化操作获取行人的全局特征向量. 但是, 在行人重识别中存在行人尺度变化的问题, 而对于尺度不同的的目标来说, 不同大小的感受野将会产生不同的效果. 如果不考虑此问题, 直接将网络提取到的特征输入到后续的池化层中, 将在一定程度上降低行人重识别的识别精度. 为了适应行人的尺度变化, 本文在网络提取特征后先经过本文设计的多重感受野融合模块, 该模块通过在不同分支设置不同的感受野大小, 最后进行融合, 有效利用目标上下文信息. 空洞卷积[11]最初源于语义分割任务, 不需要增加参数量便可实现扩大感受野的目的. 如图3 所示, 多重感受野融合模块共包含3 个分支, 对输入的特征图X分别进行卷积操作. 3 个分支均选取3×3 卷积核, 但空洞率分别为1、2、3, 得到特征图F1、F2、F3. 为了更有效地利用来自不同分支的特征, 关注更重要的信息, 将F1、F2、F3 分别经过一个通道注意力模块, 这里的通道注意力模块源于卷积注意力模块[12], 该模块结构如图4 所示. 在通道注意力模块中, 输入的特征图同时采用最大池化与平均池化得到两个一维的向量,之后被送进权重共享的多层感知机中, 将输出进行逐元素的相加后经过Sigmoid 激活即可得到对应的注意力权重. 将3 个分支得到的注意力权重系数分别于特征图F1、F2、F3 相乘, 得到通道加权后的特征F1′、F2′、F3′. 最后, 将F1′、F2′、F3′进行融合, 即可得到最终的输出特征X′. 多重感受野融合模块可以有效聚合不同感受野的特征, 使行人重识别性能进一步得到提升.
图3 多重感受野融合模块
图4 通道注意力模块
在行人重识别网络中, 提取全局特征之后通常采用全局平均池化, 如图1 所示. 全局平均池化关注的是图像整体的信息, 很容易受到背景和遮挡的干扰. 因此,在本文中, 采用generalized-mean (GeM)池化[13], 该池化方法已在图像检索任务中取得了显著成果. 相比于传统的全局平均池化, GeM 池化包含了可学习的参数捕获细粒度信息. 公式如下:
目前, 大部分行人重识别工作仅利用网络最后一个卷积层提取到的高层语义特征图, 如图1 所示. 高层语义特征能有效获取行人的显著信息, 但会忽视部分细节信息, 而这些细节信息对行人身份的判别同样有效. 因此, 为弥补缺失的细节信息, 本文同时采样低层特征, 进行多层特征融合. 具体来说, 分别采样ResNet50的Conv5_x 的高层显著特征与Conv4_x 低层细节特征, 得到两个特征图, 通道数分别为2 048 和1 024. 如图2 所示, 两个特征图形成两个独立的分支G1 和G2,两分支采用相同的结构, 都经过多重感受野融合模块-GeM 池化-全连接层. 两分支都使用交叉熵损失与难样本采样三元组损失训练, 在测试时, 将两个分支的特征向量进行融合, 通过整合网络不同深度的信息进行预测. 多层特征融合的操作, 结合了行人的高层显著信息与低层细节信息, 使得特征更具判别力.
本文联合交叉熵损失与难样本采样三元组损失预测行人的身份. 交叉熵损失被广泛应用于图像分类任务中, 通过最小化真实概率分布与预测概率分布之间的差异对网络进行优化. 在行人重识别中, 每张行人图像对应一个身份标签, 因此可以转化为一个分类问题.使用身份标签作为监督信号, 类别数即为训练集中行人身份数. 对于第i个学习到的特征fi, 交叉熵损失表示如下:
其中,N表示一个批次中的图像数量,Wk表示对应类别的权重向量,C表示训练集中行人的类别数. 在本文实验中, 把G1 分支学习到的512 维特征与G2 分支学习到的512 维特征计算交叉熵损失. 交叉熵损失函数使得行人图像接近所属的类别, 实现分类的效果.
此外, 行人重识别本质是一个图像检索问题, 这就需要引入一个度量学习函数使网络学习两张图像之间的相似度. 对于行人重识别来说, 就是使得相同行人不同图像之间比不同行人不同图像之间更为相似. 三元组损失经常被用于行人重识别任务中, 但由于行人图像存在大量外观相似的负样本对, 如果采样简单易区分的样本进行训练, 不利于网络学习到更有用的特征从而提升模型的可泛化性. 因此, 本文中对G1 分支的2 048 维特征与G2 分支的1 024 维特征使用难样本采样三元组损失, 公式如下:
本文在行人重识别最常用的Market-1501 数据集和DukeMTMC-ReID 数据集上进行评估与分析. Market-1501 数据集采集自5 个高分辨率摄像头和1 个低分辨率摄像头, 共包含1 501 个行人的32 668 张图像. 其中训练集由751 个行人的12 936 张图像组成, 测试集由其他750 个行人的3 368 张query 图像与19 732 张gallery图像组成. DukeMTMC-ReID 数据集取自DukeMTMC数据集, 该数据集由8 个高分辨率摄像头拍摄的1 404 个行人的36 411 张图像组成. 随机采样702 个行人的16 522 张图像组成训练集, 剩余702 个行人的2 228张query 图像和17 661 张gallery 图像组成测试集.
本文实验使用行人重识别普遍使用的平均准确度mAP (mean average precision)和首位命中率Rank-1 作为评估标准.
本文实验基于PyTorch 框架, 实验环境为NVIDIA Tesla P100. 骨干网络采用在ImageNet 上预训练的ResNet50, 移除最后的全连接层与平均池化层, 并将最后一块的卷积步长设为1. 实验所采用的行人图像尺寸为256×128, 通过随机擦除、随机水平翻转、随机裁剪进行数据增强. 设置一个训练批次为32, 一个批次选取的行人类别数P=4, 一个行人采样的图片数K=8. 超参数 α设置为0.3,pk设置为3. 采用SGD 优化器进行梯度更新, weight decay 设为5E-4, momentum 设为0.9.共训练80 个epoch, 初始学习率为0.05, 训练40 个epoch 后学习率衰减至原来的1/10.
为了分析本文各模块的有效性, 分别在Market-1501 数据集和DukeMTMC-ReID 数据集进行消融实验, 具体结果如表1 和表2 所示. 其中, w/o MFF 表示去掉多重感受野融合模块, w/o GeM 表示去掉GeM 池化采用全局平均池化, w/o MSF 表示去掉多尺度特征融合只保留G1 分支的结果.
表1 Market-1501 数据集上去掉各模块的结果(%)
表2 DukeMTMC-ReID 数据集上去掉各模块的结果(%)
从实验结果可以看出, 本文各模块都起到了一定的作用. 去掉多重感受野融合模块, Market-1501 数据集和DukeMTMC-ReID 数据集的mAP 分别为82.6%和73.9%, 添加多重感受野融合模块之后, 两个数据集上的mAP 分别提升了1.2%和1.0%. 这证明了该模块可以有效获取整合不同感受野的特征, 减轻行人图像尺度变化带来的负面影响. 为了证明本文中GeM 池化更有优势, 将网络中的GeM 池化替换为一般的全局平均池化. 结果表明, 采用GeM 池化后, 在Market-1501数据集上和DukeMTMC-ReID 数据集上的mAP 分别提升了1.6%和2.8%, Rank-1 分别提升了0.8%和1.2%.同时, 相比于去掉G2 分支, 只保留G1 分支训练和测试, 本文方法在Market-1501 数据集上mAP 提升了2.2%, Rank-1 提升了0.6%, 在DukeMTMC-ReID 数据集上mAP 提升了3.9%, Rank-1 提升了1.2%. 结果表明, 融合多层信息可以提升网络性能.
表3 和表4 分别给出了本文方法在Market-1501数据集和DukeMTMC-ReID 数据集上与其他行人重识别方法的对比, 包括传统方法(LOMO+XQDA[14]、BoW+kissme[15]) 和基于深度学习的方法(IDE[2]、SVDNet[16]、HA-CNN[17]、PCB+RPP[5]、Mancs[18]、IANet[19]). 从表中可以看出, 传统方法在数据集上的表现较差. 此外, 相比于近年来基于深度学习的方法, 本文方法均有显著提升. 具体来说, 本文方法在Market-1501 数据集上的mAP 指标达到83.8%, 在引入重排序算法[20]后, mAP 达到了92.6%. 同时, 在DukeMTMCReID 数据集上的mAP 指标达到74.9%, 通过重排序后, 精度进一步提升, 其中mAP 达到了88.6%. 本文方法具有竞争性, 虽然是基于简单的全局特征进行改进,效果却优于部分基于局部特征的方法, 如PCB+RPP[5].
表3 Market-1501 数据集上与其他方法的对比(%)
表4 DukeMTMC-ReID 数据集上与其他方法的对比(%)
将检索结果可视化, 如图5 所示, 实线框的检索结果表示该图像匹配正确, 虚线框的检索结果表示该图像匹配错误. 从匹配结果来看, 本文方法取得了较高的检索准确率. 但一些外观十分相似的不同行人很难区分, 虽然难样本采样三元组损失一定程度上减轻了该问题, 但还是会造成少数样本误检测.
图5 可视化结果
本文提出了一种基于全局特征的行人重识别方法.为适用行人尺度变化, 设计多重感受野融合模块, 采用空洞率不同的卷积核进行卷积操作并使用注意力模块获取关键特征, 然后将各分支的特征进行融合. 此外,将全局平均池化替换为更有效的GeM 池化. 采样网络不同深度的特征送入不同分支, 测试时将多层特征融合用来预测. 在公开数据集上的实验表明, 本文方法具有较好的性能. 未来研究中将考虑行人重识别的实用性, 尤其是在无监督与跨模态方面提升检索准确率.