基于区域生成网络的行人重识别算法优化
2021-03-01徐振国丁亚男
徐振国,张 旭,丁亚男,汤 健
(上海工程技术大学 航空运输学院,上海 201620)
0 引 言
行人重识别是指用给定待识别的行人图像,从采集自不同时间点、不同摄像头的图像或者视频中检索特定行人的任务。行人重识别可以弥补目前固定摄像头的视觉局限,并可与目标检测、目标跟踪技术相结合,应用于视频监控、智能安防等领域[1]。在实际情况中,因摄像头安装位置、拍摄视角、环境光照变化及遮挡干扰等因素的影响,造成行人的姿态变化及外观差异,给行人识别带来巨大挑战。
行人的特征表示的鲁棒性对行人重识别算法的准确度有很大的影响,越好的特征表示能够获取到更加全面的特征信息,对应算法的效果就越好。早期的行人重识别一般都是提取手工设计的特征,包括颜色、方向梯度直方图、LOMO、SIFT 等,之后利用KISSME 或XQDA 度量相似性[2-3]。但在复杂场景下,传统的手工特征描述能力有限,相似性度量也会很难求解,随着深度特征在各任务中表现出相较于传统特征更强的表征能力,目前行人重识别都是基于深度卷积神经,自动提取深度特征。起初基于深度学习的行人重识别方法主要是用深度网络学习图像的全局特征,用分类损失或者度量损失进行训练,文献[4]提出了一个基于难样本采样的三元组损失算法,通过在一个训练批量中挑选出特征距离较大的正样本和特征距离较小的负样本进行训练,能够明显加快模型的收敛,提高网络的泛化能力;当只用图像的全局特征作为特征,表示识别的方法遇到瓶颈,文献[5]提出一种基于水平切块的局部特征的模型,将每一个局部特征作为一个独立的特征连接损失函数单独训练,将局部特征拼接起来,得到最终的特征。引入基于局部的精确池化(Refined part pooling,RPP)方法,用注意力机制对水平切块进行修正,进一步提升了算法的性能。但使RPP 需预先训练好网络模型,再冻结模型参数重新训练,因此整个模型不能端到端的训练,且仅使用单一尺度的局部特征会丢失一部分有用的视觉信息。文献[6]引入人体骨架关键点模型,提取人体关键点,利用关键点通过区域候选网络提取7 个身体子区域,然后根据子区域的不同语义层次与关系在不同的阶段将特征向量进行融合,得到一个联合全局特征和多阶段局部特征的行人重识别特征;文献[7]提出了一种全局到局部对齐的描述子学习方法(Global-Local-Alignment Descriptor,GLAD),通过估计人体的4 个关键点把图像分成头部、上半身和下半身,然后将原图和3 个局部图像一起连接到一个4 分支共享权重的卷积网络中,分别学习3 个局部特征和全局特征,利用全局平均池化(Global average pooling,GAP)来提取各自的特征,最后特征融合了全局以及3 个局部图像的信息。上述方法利用行人姿态点提取特征,虽然可以对齐不同图像中的人体结构信息,但是需要一个额外的姿态估计模型,算法效率低,且分块区域共享权重可能会导致信息丢失,影响行人识别的准确度[8]。
为减少图像背景对行人信息表征的影响,本文将RPN 引入到行人重识别算法中,通过RPN 获取不同尺度信息的候选区域,更关注图像中的行人区域,将候选区域投影到特征图上,经过后处理筛除得到最终的候选区域;再结合ROI 池化层处理不同尺度大小的特征图,实现多尺度信息的协调统一;搭建了一个联合全局特征、水平切块的局部特征以及基于RPN 和ROI 特征的多分支网络结构,利用局部分支关注细粒度的行人特征弥补全局分支中的信息缺失,进而得到一个联合全局和局部多尺度信息的多分支网络。另外,训练阶段在难样本采样的三元组损失上引入正样本的最小距离为类内距离,提高正样本之间的聚类性能,防止结果过拟合。
1 基本原理
1.1 网络结构
本文的模型结构如图1 所示,采用联合全局特征、水平切块的局部特征以及经过区域生成网络提取ROI 的多尺度特征。全局特征关注行人整体特征,水平切块的局部特征关注细粒度的行人特征,区域生成网络提取ROI 的多尺度特征抑制背景噪声。
图1 网络模型结构Fig.1 Structure of the network model
模型的主干网络采用Resnet50 网络,在原来网络的基础上移除最后的平均池化层和全连接层,定义特征维度并添加分类器。将骨干网络最后一个残差块的最后一层卷积层的步长设置为1,将提取的特征图尺寸增大一倍,提取更加细粒度的特征。
将经过主干网络提取的特征图分别经过3 个分支:
(1)全局分支:经过全局平均池化得到2048 维的特征,再经过一个BNNeck 结构;
(2)局部分支:利用水平池化得到8 个局部特征,经由BN 层对特征向量和权重向量作归一化处理,之后采用1×1 卷积对特征向量降维,最后利用动态对齐算法(DMLI)对齐局部信息;
(3)区域生成网络分支:在特征图上生成候选区域并提取ROI 的多尺度特征。
使用带标签平滑的分类损失和难样本采样的改进三元组损失进行联合训练优化,测试阶段联合3个分支进行相似性匹配。
1.2 融合区域生成网络ROI 池化的多尺度特征
图像切块是一种简洁有效的提取局部特征方法。考虑到在行人重识别数据集中,一部分图像背景噪声区域过大,一部分图像只包含部分前景,造成识别的困难,本文引入区域生成网络选择候选区域,再通过ROI 池化层提取ROI 的多尺度特征,降低背景噪声的影响。
当pH为4.0的时候,浓度为2 μg/ml氯霉素标准品的出峰时间是10.27 min。峰图有稍微的拖峰现象。
区域生成网络(Region Proposal Network,RPN)由Faster R-CNN 一文提出,RPN 网络在特征图上生成目标候选区域,并对目标候选区域的位置进行回归[9]。具体操作为:首先,在卷积网络提取的特征图上,用一个3×3 的滑动窗口检测,找到与滑动窗口中心点对应原始图像上的区域,将框的中心作为锚点,并生成预先定义的K个候选窗口,滑动窗口每滑动一个位置,生成一个256 维的特征向量,遍历得到一个新的特征图;其次,对整个特征图分别进行两次1×1 卷积,得到每个特征向量的类别分数和候选框的回归参数;最后,通过筛除越界的候选框、非极大值抑制及偏移,得到最终的候选框。
使用RPN 网络生成候选区域后,将RPN 网络生成的候选框投影到特征图上,获得相应的特征矩阵,由于经过RPN 网络生成的候选区域具有不同的尺度和形状,不能直接通过全连接层预测分类,因此本文又将每个特征矩阵通过一个ROI 池化层获得统一大小的特征图。具体操作为:首先,将经过RPN 网络生成的候选区域映射到特征图上;其次,对映射后的区域进行划分,使之与输出的维度相同;最后,对划分后的每个部分进行最大池化,得到固定大小的特征图。
本文在区域生成网络的基础上做出修改,如图2 所示。
图2 区域生成网络分支结构Fig.2 Structure of the region proposal network
(1)本文主干采用Resnet50 网络,输出2 048 维的特征图,为了减少计算量,在区域生成网络之前先进行一次1×1 卷积,得到512 维的特征,经过区域生成网络之后输出16×8×512 维的特征;
(2)对于上述得到的特征,可以看作是16×8 的512 通道的图像,在图像上的每个位置定义候选窗口,考虑到特征提取网络的图像是256×128 像素的行人图像,因此定义3 种比例的矩形锚框,分别是H∶W={2∶1,3∶2,1∶1};
(3)利用分类层输出每个位置候选框属于行人的概率,筛除得分排序低的结果,再经过非极大值抑制得到最终的预测;
(4)利用ROI 池化层统一特征向量大小时,首先将每个候选区域划分为8×1 块,对各部分进行平均池化;接着将得到的8×1 维的特征张量水平切分成8 个特征向量;将ROI 池化后的特征先联合全局分支和局部分支连接三元组损失训练优化;对8×1维的特征张量再进行全局平均池化,通过全连接层计算分类损失。
1.3 损失函数
分类损失可以看作是在特征空间学习几个超平面,把不同类别的特征划分到不同的子空间里。将特征归一化到超球面,再优化分类损失,取得更好的效果。基于分类损失的方法比较鲁棒,训练也比较稳定,但当训练的ID 数过多时,分类损失会容易过拟合。而三元组损失(Triplet loss)可以缩短正样本对之间的距离,增加负样本对之间的距离,最终在特征空间中让同一行人的图像形成聚类。
由于三元组损失适合在自由的欧式空间里约束,如果把特征约束到超球面上,特征分布的自由区域会大大减小,导致三元组损失把正负样本对推开的难度增加,因此若将特征归一化到超球面上,再用三元组损失优化网络,网络的性能通常会变差。文献[10]提出一种BNNeck 结构,将网络全局池化得到的特征ft直接连接一个三元组损失,再将ft经过一个BN 层的归一化得到fi,使一个批量里面fi的各个维度近似地分布在超球面附近,最后再经过一个分类的全连接层连接一个ID 损失,这样可以使得三元组损失能够在自由的欧式空间里约束特征,而分类损失可以在一个超球面附近约束特征。
本文使用BNNeck 结构的分类损失和三元组损失联合优化的训练方法。分类损失函数采用交叉熵损失(CrossEntropy Loss),利用行人ID 作为训练标签来训练模型。由于传统的三元组随机从训练数据中采样的样本大部分都是简单易区分的样本对,而且三元组损失没有考虑到正样本对之间的绝对距离,不利于网络学习到更好的表示。本文使用难样本采样三元组损失(TriHard Loss),用更难的样本去训练网络,并在此基础上引入样本的类内距离,提高网络的泛化能力。本文的TriHard 损失表示式如下:
其中,(z)+表示max{z,0 };α是设定的阈值参数;da,p为行人正样本对特征向量的欧式距离;da,n为行人负样本对特征向量的欧式距离;A为与a相同行人ID 的图像集;B为不同行人ID 的图像集。
对于每一个训练batch,随机挑选p个同一行人ID 的行人,每个行人随机选择k张不同的图片,即一个batch含有p × k张图片。对于batch中的每一张图片a,可以挑选一个最难的正样本和一个最难的负样本与a组成一个三元组。TriHard Loss 会计算a和batch中的每一张图片在特征空间的欧式距离,选出与a距离最远的正样本p和距离最近的负样本n来计算三元组损失,再增加一项优化类内损失。
2 实验结果与分析
2.1 数据集及评估指标
为了验证本文算法的有效性,在Market1501、DukeMTMC-reID 数据集上进行实验,评估算法的性能。使用Rank-1 和mAP这两个指标评估模型的性能。Rank-1 表示在ReID 算法返回的行人识别排序列表中第1 位命中检索的行人;mAP指标反应检索的人在数据库中所有正确的图片排在列表前面的程度,能更加全面的衡量ReID 算法的性能。
2.2 实验环境和参数设置
实验平台使用搭载NVIDIA GTX1060 GPU,16G内存的计算机。实验采用PyTorch 深度学习框架,使用在ImageNet 数据集上预训练的ResNet50 的残差卷积网络为骨架,调整行人图像的尺寸为256×128 像素,将ResNet50 的最后一个残差块的最后一层卷积层的步长设置为1,移除最后的平均池化层和全连接层,在原来模型的基础上重新定义分类器,行人图像经过骨架网络输出的特征图的尺寸为16×8×2 048。在定义网络前向传播时,使用ROI 池化,最后对特征进行归一化处理。设置训练过程中初始学习率为0.000 2,每训练100 个epoch 学习率衰减10%,权重衰减系数为0.000 5,采用Adam 优化器进行参数更新。
2.3 对比实验及结果分析
为了验证本文所提算法的有效性,将所提算法与基准模型在Market1501 和DukeMTMC-ReID 两个数据集上进行对比实验,实验结果见表1 和图3所示。采用Alignedreid模型作为本文的基准模型并对基准模型重新复现,结果显示在Market1501 数据集上,Rank1 精度为89.6%,平均精确度mAP为76.2%,在Duke MTMC-reID 数据集上,Rank1 精度为79.3%,平均精确度mAP为64.9%。采用BNNeck结构,使用原始的TriHard 损失训练模型,结果显示模型的性能有了大幅度的提升。
为了验证所提引入样本类内距离的TriHard 损失的有效性,将原始的TriHard 损失改为引入正样本类内距离的TriHard 损失,保证实验中除了TriHard 损失不同,其他的设置完全一致。如图3 所示,图3(a)表示所提算法在Market1501 数据集的CMC,图3(b)表示所提算法在Duke MTMC-reID 数据集的CMC。绿色虚线表示采用原始的TriHard 损失训练的结果,蓝色实线表示采用引入样本类内距离的TriHard 损失的结果。实验结果表明,引入样本类内距离后的TriHard 损失模型在Market1501 和Duke MTMC-reID 数据集上的性能更好。
为了验证区域生成网络分支在本文模型中的有效性,在上述模型的基础上引入区域生成网络分支进行训练,保持其他的设置完全一致。从表1 可以看出,加入区域生成网络分支一起训练后,在数据集Market1501 上的Rank1 精度提高到了94.7%,mAP精度提高到了85.8%;在数据集Duke MTMC-reID上的Rank1 精度提高到了86.8%,mAP精度提高到了74.3%。图3 给出了所提算法CMC 曲线对比,其中红色实线表示加入区域生成网络分支后的CMC曲线。对比实验表明,引入区域生成网络分支,行人重识别的检测效果有显著的提升,验证了区域生成网络模块的有效性。加入区域生成网络分支后识别率提高的原因是区域生成网络分支可以有效降低图像中噪声区域的干扰,从而提取到判别性更强的行人特征。
图3 改进算法在Market1501 数据集和Duke MTMCreID 数据集CMC 曲线对比Fig.3 Comparison of CMC curve of the improved algorithm between Market1501 dataset and Duke MTMC-reID dataset
表1 实验结果分析对比Tab.1 Analysis and comparison of experimental results
综上所述,当模型同时采用BNNeck 结构、引入样本类内距离的TriHard 损失以及加入区域生成网络分支进行训练时,所提算法能够明显提升模型性能,验证了所提算法的有效性。
使用Re-ranking算法后,本文算法在Market1501 数据集上的Rank1 精度为95.3%,mAP精度为93.5%,在Duke MTMC-reID 数据集上的Rank1 精度为88.6%,mAP精度为86.1%。部分行人识别Rank10 的结果如图4 所示。实验查询图像分别选择行人遮挡、图像模糊、背景复杂的情况,其中右侧虚线框内红框标记的图像表示匹配错误,绿色图像表示匹配正确。从结果可以看出本文算法取得了较好的结果。
图4 在Market1501 数据集的部分图像查询识别效果Fig.4 Some image query recognition effect in the Market1501 dataset
2.4 实验结果与主流算法比较
为了验证所提算法的有效性,将本文算法与SCPNet、PCB、Pyramid、GLAD、MGN、Multi-Scale、MLFN、HPM、HACNN 等主流算法进行对比,结果见表2,可以看出本文算法在Market1501 和Duke MTMC-reID 这两个数据集上的Rank1 精度和mAP精度优于绝大部分对比的算法。
表2 本文算法在Market1501 和Duke MTMC-reID 上与其他主流算法的对比Tab.2 Comparison of our algorithm with other mainstream algorithms on Market1501 and Duke MTMC-reID
3 结束语
本文提出了一种基于区域生成网络的行人重识别改进算法。算法采用联合全局分支、水平切块的局部分支以及区域生成网络ROI 池化分支的三分支网络结构。其中全局分支关注行人整体特征,水平切块的局部分支关注细粒度的行人特征,通过引入区域生成网络选取候选区域,使用ROI 池化层提取不同尺度的特征,抑制数据集中部分图像背景噪声过大的影响,使学习到的特征具有更强的判别性。本文使用交叉熵损失函数和三元组损失联合优化的训练方法,在难样本采样三元组损失的基础上引入正样本的类内距离,提高网络的泛化能力。通过在Market1501 和Duke MTMC-reID 数据集上进行实验验证,该方法取得了较好的识别效果,进一步提高了行人重识别的精度,表明所提方法的有效性。