基于特征点相关性的行人重识别方法

2020-07-29 07:45江伟忠余海铭陈世峰
集成技术 2020年4期
关键词:分块分支粒度

江伟忠 余海铭 陈世峰

1(中国科学院深圳先进技术研究院 深圳 518055)

2(中国科学院大学深圳先进技术学院 深圳 518055)

3(爱奇艺公司 北京 100010)

1 引 言

在智能安防、智能监控和疑犯追踪等领域中,首要工作是判断某个行人是否出现在不同摄像机的视域中。然而目前普遍使用人工进行判断的方法不仅需要耗费大量的人力、物力,而且准确率较低[1]。随着社会需求逐渐增加以及计算机视觉技术日渐成熟,行人重识别技术已成为当前研究的一个热点方向。其中,行人重识别是一种旨在识别不同摄像机视域中是否出现某个特定目标行人的技术[2]。

传统的行人重识别主要关注设计手工视觉特征与度量相似性两个问题。随着深度学习的发展,分类、检测、识别和检索等计算机视觉子领域都取得了巨大的突破[3]。将深度学习应用于行人重识别领域也成为了一种必然的趋势。基于深度学习的方法,研究人员对行人重识别进行了大量、更深入的研究[4]。与传统方法相比,基于深度学习的行人重识别方法可以自动提取特征,更加高效和精准[4]。然而,行人重识别还存在着诸多的挑战,如遮挡、模糊、拍摄视角不同和检测算法性能不佳等[2]。这些问题都可能导致行人背景过多或行人区域缺失。针对行人背景过多以及背景干扰的问题,Song 等[5]采用二进制分割掩模去除了行人背景的干扰,并以完整图像、身体和背景三个部分的特征连接三元组损失函数强制模型学习到对杂乱背景鲁棒的特征。Xu 等[6]创建了基于姿态引导下的区域注意力机制方法,以此减少背景噪声的干扰。行人姿态多变也是行人重识别面临的极大挑战,因此,Zheng 等[7]通过构造 PoseBox,将姿态不变嵌入法作为行人描述子,消除了行人姿态多变对行人重识别的影响。若仅仅利用行人重识别的全局特征,行人重识别模型无法捕捉到足够的差异性特征,而引入局部特征是提高行人重识别性能的一种思路[8]。Kalayeh 等[9]利用语义分割的方法引导模型从行人身体不同区域提取了局部特征。目前,对行人进行分块并搭建一个多粒度网络使模型更加关注局部区域是最为常见的思路。Sun 等[10]提出一种基于分块的卷积基准网络(Partbased Convolutional Baseline,PCB),通过将行人均等分为六分块引导网络更加关注局部粒度信息。Huang 等[11]提出一种基于分块对齐池化(Part Aligned Pooling,PAP)方法的多粒度网络,提升了模型在跨数据集测试的性能。Su 等[12]利用一种姿态估计将行人分块并以特征权重网络给不同区域赋予不同的权重。Wang 等[13]也提出一种将判别信息与各粒度相结合的多粒度网络(Mutiple Granularity Network,MGN)。

但目前性能最好的行人重识别方法依然存在不少问题。例如,若引入姿态估计以及分割的方法,则会引入额外数据集的先验;若不借助姿态估计或分割等方法,行人重识别算法的性能则会受到行人图片中背景的干扰[5]。同时,出现部分行人区域缺失的问题也没能得到较好的解决。另外,大部分多粒度网络在不引入额外数据集的情况下,最常用的分块方法是先横向均等分块,再对每一块所提取的特征进行对比,如头部跟头部对比。但在图片中存在背景过多或部分行人区域缺失时,将会出现头部与背景对比的情况,这导致了行人重识别性能急剧下降。并且,多粒度模型也忽视了粒度特征之间的相关性。为解决上述问题,研究像素点或者特征之间的相关性对行人重识别具有极大的意义。其中,在行人重识别网络模型中引入背景区域特征与行人区域特征之间的弱相关性信息,可实现行人的弱检测效果,这避免了背景区域的干扰。在行人重识别网络模型中引入行人区域特征点之间的强相关性信息,则可实现特征点缺失时图像信息相对完整,这将有效地解决行人区域部分缺失或遮挡等问题。此外,如果特征点相关性在不同视角下具有不变性,那么将对解决行人姿态多变有所帮助。

在图像相邻邻域的相关性研究中,特征相关性普遍存在于文本与图像中,表示一个或多个特征与其他特征之间存在一定的依赖关系。在文本分析领域中,Deerwester 等[14]在 1990 年提出了经典的浅层语义分析(Latent Semantic Analysis,LSA)方法,通过使用词-文档矩阵来描述词与文档之间的依赖关系。此后 Hofmann[15]提出概率潜在语义分析(Probabilistic LSA)模型对 LSA 进行改进,利用概率生成模型对文本进行话题分析。由于相邻领域存在的相关性也普遍存在于图像中,故概率潜在语义分析也被大量应用于图像分类、检测、检索等领域[16-17]。图像像素存在一定相关性最早体现在灰度共生矩阵中,它描述了相邻像素之间的灰度存在较强依赖性的现象[18]。这种相关性不仅存在于相邻邻域,在图像的不同区域也可以存在较强相似性,如行人的两只鞋子区域之间、两只手所在区域之间、两条腿所在区域之间都应该存在较强的相关性。

本文的整体设想及分析部分借鉴了 Wang 等[19]提出来的非局部神经网络(Non-local Neural Networks)。其中,Non-local 网络结构可以模块化特征图中任意两个特征点之间的关系。本文借鉴 Non-local 网络的思路设计了 CIP 模块,并将 CIP 模块组成的网络称为 Contextual Information Processing Network(CIPN)。CIPN 能够捕获视角不变性的特征点关系并具有弱检测功能。在嵌入 CIPN 后,行人重识别模型将更加关注行人区域以及粒度之间的关系,使得基于分块的行人重识别模型的性能得到显著的提升。本文在行人重识别的 4 个数据集上进行了充分的测试实验,并使用两个评估指标验证了该模块的有效性。同时,本文通过可视化工作呈现了弱检测效果及显著特征点的相关性效果,验证了该模块的有效性机理。

2 研究方法

2.1 基于深度学习的行人重识别网络结构

本文的行人重识别网络结构基本可以分为特征提取网络、粒度全连接网络、能够捕获视角不变性的特征点关系并具有弱检测功能的 CIPN 三部分,具体如图 1 所示。其中,特征提取网络为用于提取行人基础特征的基础网络,如 VGG[20]、ResNet[21]、DenseNet[22]等。考虑到目前大部分方法普遍使用 ResNet50 作为特征提取网络,本文在图 1 中也使用 ResNet50 作为特征提取网络图示。

粒度全连接网络主要包括分块、全局最大池化、降维全连接层和分类全连接层。按照分块方式,粒度全连接网络可分为单粒度和多粒度全连接网络。单粒度全连接网络是对特征提取网络输出的整个特征进行全局最大池化操作,从而得到一个全局的单粒度行人特征向量。而多粒度全连接网络则是对特征提取网络输出的特征先进行分块,再对每一块进行全局最大池化操作,从而得到多个局部的粒度行人特征向量,如图 1 的粒度全连接网络为三分块粒度全连接网络。目前大部分基于分块的行人重识别网络粒度数量从六个到十几个不等。一般在不引进新数据集的情况下,分块方法普遍使用横向均等分块。降维全连接层可以对全局最大池化操作所得到的初步行人特征向量进行降维,得到降维后的粒度行人特征向量。特征降维后,在各分支后面分别接上分类全连接层,即可组成完整的粒度全连接网络。其中,降维全连接层的维度与具体模型相关,分类全连接层的维度与数据集类别数相关。

CIPN 连接在 ResNet50 中的 layer 3 后面。本文的 CIPN 由两个 CIP 模块(图 1 分别表示为 CIP module 1 以及 CIP module 2)和连接在中间的残差 layer(图 1 表示为 CIP-layer)组成。CPlayer 的结构与 ResNet50 的第 4 个卷积块堆叠层一样,但卷积核的步长为 1。ResNet50 的 layer 3 输出的浅层特征先输入到第 1 个 CIP 模块,再经过 1 个 CIP-layer 以及第 2 个 CIP 模块,最后得到具有视角不变性与弱检测效果的初步行人特征。CIPN 后半部分连接的网络与粒度全连接网络一致:先将初步行人特征输入 GMP 进行全局最大值池化操作,然后连接一个降维全连接层得到降维后的 CIP 行人特征向量,最后再连接一个分类全连接层。

2.2 CIP 模块的数学表示与模块实现

在特征图中,任意两个点之间都存在一定程度的相关性。这种相关性可以借鉴 Non-local 的数学表达式:

图1 嵌入 CIP 模块的 ResNet50Fig.1 The ResNet50 with CIP modules

其中,x 为输入的特征,y 为输出的特征,两者的大小一致;f(xi, xj)为特征图位置 i 与位置 j 的相关性,f(xi, xj)值越大,表示两个位置的相关性越强;g(xj)表示位置 j 处的输入信号;C(x)为归一化因子。

CIP 模块的输出值 Y 由输入的特征 X、 和自适应调节因子 γ 组成,具体如公式(4)所示:

图2 CIP 模块的图示Fig.2 Illustration of the CIP

2.3 损失函数与相似性度量

在粒度全连接网络后面各分支接上各自的损失函数(Granularity Loss),表示为 LG。由于本文主要关注 CIPN 网络,所以对粒度全连接网络后面各分支所使用的损失函数 LG不作更多的阐述。为了学习到更具有判别力的特征,并使得整个训练简单高效,本文在 CIPN 后面接上交叉熵损失函数,表示为 LCIP。在行人重识别网络中,交叉熵损失函数通过 Softmax 函数输出行人类别的预测值概率,并以该预测概率与指示变量进行损失评估,具体如公式(5)所示:

总损失函数设置为 LCIP与各粒度损失函数 LG的总和,具体如公式(6)如所示:

在训练阶段,通过不断最小化损失函数 LCIP训练 CIPN 分支,使得 CIPN 能更好地学习到点与点的相关性。在测试阶段,先将该分支的 CIP 行人特征向量与粒度全连接层所得到的粒度行人特征向量进行拼接,得到最后的行人特征向量,然后采用欧式距离进行相似度度量,具体如图 1 所示。

3 实 验

3.1 数据集与评估方法

为对本文提出的方法进行分析与评估,选择 4 个常用的行人重识别的数据集(Market-1501[23]、 CUHK03[24]、 DukeMTMCReID[25]和 MSMT17[26])进行实验,各数据集的基本情况如表 1 所示。其中,MSMT17 是目前行人 ID 数量最多、图片数量最多、拍摄场景最为复杂和挑战性最大的数据集。数据集一般分为训练集和测试集,测试集中包含查询图片(Query)与候选图片集(Gallery)。

目前大部分行人重识别的相关研究采用两个评价标准:第一配准率(Rank-1)和平均准确率(Mean Average Precision,mAP)。其中,第一配准率主要用于模型对简单样本配准性能的评估,而平均准确率则兼顾了模型对困难样本配准性能的评估。

3.2 实验参数设置及实验过程

本文实验基于 EANet 的开源代码[11],使用 Pytorch 深度学习框架实现,并在 NVIDIA GTX 1080Ti GPU 硬件上运行。在数据集处理方面,所有的设置都与基础模型一致。如在 PAP[11]与PAP+CP 实验中,仅采用垂直翻转进行数据增强,所有的图片均被转化为宽 128 像素且高 256 像素。在训练参数设置方面,本文使用随机梯度下降法作为优化算法,冲量(Momentum)设置为 0.9,批大小设置为 32,权重衰减系数设置为 0.000 5,总的训练周期(Epoch)数量为 60 个。在训练过程中,先将预训练好的 ResNet50(已在 ImageNet 上进行预训的模型)参数固定,然后采用 0.2 的学习率对新增加的层进行 1 个训练周期的微调。微调结束后,开放网络所有的层,对模型的所有参数训练 60 个训练周期。此时新增加的层的起始学习率为 0.2,其他层的起始学习率为 0.1,每 25 个训练周期的学习率下降为原来的 1/10。所有的损失函数均采用交叉熵损失函数。训练总损失为所有分支损失之和,且每个分支的损失函数权重一致,均设置为 1。在测试过程中,批大小仍然为 32,采用欧氏距离作为相似性度量方法。具体的实验流程如图 3 所示。

4 实验结果与分析

4.1 模块的有效性验证分析

为验证 C I P 模块的性能,本文分别在 ResNet50、PCB[10]、EANet[11]和 MGN[13]四个基础模型中选择合适的模型加上 CIP 模块进行实验。其中,PCB、EANet 和 MGN 均为目前性能较好的多粒度网络。接入方式采用 CIPN 分支接入,具体如图 1 所示。CIPN 分支提取的特征为 1 024 维的向量,其他基础分支的维度因模型而异,但需保持和基础模型一致。最终将所有分支得到的行人特征向量拼接后进行相似度匹配。本文分别在单数据集和跨数据集对 CIP 模型的有效性进行验证。

表1 常用的行人重识别数据集Table 1 Typical person re-identification datasets

图3 实验流程Fig.3 Experiment flow chart

在单数据集测试中,本文在 ResNet50、PCB、PAP[11]和 MGN 四个基础模型加上 CIP 模块,并在 4 个数据集进行训练与测试。其中,数据集 MSMT17 最为复杂,更具有代表性。从表 2 可知,加上 CIP 模块后,所有的基础网络在 4 个数据集的 Rank-1 与 mAP 两个评价指标上都有明显的提升。CIP 模块对基础网络 ResNet50 的性能提升最为明显,其中在 CUHK03 数据集上 mAP 提升了 7.3%,在 MSMT17 数据集上 mAP 提升了 5.2%,甚至在两项评价指标上已经接近多粒度网络 PCB 的性能。增加 CIP 模块对多粒度网络 PCB 的精度同样具有非常明显的提升,其中在 MSMT17 数据集上 mAP 提升了 5.0%。然而,从表 2 可看出,随着模型分支的逐渐增多,CIP 模块对网络精度的提升作用越来越微弱。主要是因为增加的 CIP 分支随着网络分支总数的增加,CIPN 分支产生的特征对总特征的占比会越来越小。但即使对于 MGN 这种具备 3 个分支、8 个粒度的大型网络,MGN+CIP 模型在 4 个数据集上的各项评估指标也有小幅度的性能改善。

在跨数据集测试中,本文在 ResNet50、PCB 和 PAP 三个基础模型加上 CIP 模块,并在两个数据集进行训练与测试。训练测试结果如表 3、表 4 所示。从表 3 和表 4 可知,加上 CIP 模块的 3 个网络在跨数据集的性能均有显著的提升,表明该方法对跨数据集行人重识别也能起到一定的作用。在单数据集测试中,CIP 模块对模型精度的提升效果随着模型分支的增加而减弱,但在跨数据集测试中这种现象有所减缓。以 M→D 数据集测试为例,CIP 模块对 ResNet50、PCB 和 PAP 在 Rank-1 指标的提升分别是 2.4%、2.4%、3.1%,在 mAP 指标的提升分别是 1.8%、2.9%、2.9%。这表明通过增加 CIP 模块,模型更加关注区域与区域之间的关系,并在一定程度上提升了模型的泛化能力。通过对比单数据集测试与跨数据集测试两个实验可看出,CIP 模块对多粒度网络模型的性能提升在跨数据集中的表现更为明显。

表2 单数据集测试Table 2 Single-domain tests

表3 跨域数据集测试 1Table 3 Cross-domain tests 1

表4 跨域数据集测试 2Table 4 Cross-domain tests 2

表 5 为将本文方法与其他深度学习的行人重识别方法在 4 个数据集的结果进行比较。从表 5 可看出,本文复现的 MGN*+CIP 模块性能总体优于其他的行人重识别方法。虽然相对于 MGN*仅有小幅度的提升,但由于 MGN*本身是一个具有 3 个分支及 8 个粒度,针对各条分支结合了三元组损失函数和交叉熵损失函数进行复杂调试的模型,所以提升相对困难。尽管如此,CIP 模块还是能在一定程度增强了该模型的性能。而且在存在大量行人背景区域过多的数据集 CUHK03 上,Rank-1 和 mAP 指标分别提升了 2.2%、1.8%。这说明了 CIP 模块从弱检测效果上对 MGN 的精度具有更大的提升效应。

4.2 模块的可视化验证分析

为深入探究 CIP 模块能够起作用的机理,本文在 ResNet50 上进行了可视化探究的实验。其中,实验所采用的照片均来自 MSMT17 数据集。

表5 与表现最佳方法的比较Table 5 Comparison with recent state-of-the-art methods

本文在 CIPN 第 2 个 CIP 模块(即图 1 中的 CIP module 2)输出的特征上使用类激活映射(Class Activation Mapping)[29],对 CIPN 分支更加关注的区域进行可视化,结果如图 4 所示。从图 4 可以明显观察到,模型更加关注行人所在区域。这是由于模型通过学习点与点之间的相关性,而背景区域与行人区域的差异相对较大,从而使得模型更为关注行人区域,达到了某种程度的弱检测效果。

图4 用类激活映射对 CIP 模块输出的特征图进行可视化Fig.4 Visualized feature maps output by the CIP modules

图5 图片块之间的相关性进行可视化Fig.5 Visualization of the correlations between image patches

5 结 论

本文提出一种适用于行人重识别的 CIP 模块及 CIP 的嵌入方法 CIPN。CIP 模块主要通过关注特征图中点与点之间的依赖来学习视角不变性及区分行人背景的特征。在 4 个数据集上进行的充分实验结果表明,通过嵌入 CIP 模块,大部分多粒度行人重识别方法都得到了显著的提升。其中,通过整合 CIP 模块到 MGN 上,本文在 4 个数据集上均获得了最好的结果。此外,CIP 模块具有较好的兼容性,能够很方便地嵌入到任何行人重识别网络。同时,本文也通过可视化的方法验证了 CIP 模块的有效机理。

猜你喜欢
分块分支粒度
面向量化分块压缩感知的区域层次化预测编码
钢结构工程分块滑移安装施工方法探讨
一类离散时间反馈控制系统Hopf分支研究
一类四次扰动Liénard系统的极限环分支
关于4×4分块矩阵的逆矩阵*
粉末粒度对纯Re坯显微组织与力学性能的影响
巧分支与枝
懒交互模式下散乱不规则分块引导的目标跟踪*
双粒度混合烧结矿颗粒填充床压降实验
泉州湾表层沉积物粒度特征分析