视频人员重识别:关系引导空间注意力 + 时间特征提取模型
作者 | Ass
编辑 | CV君
报道 | 我爱计算机视觉(微信id:aicvml)
![](https://img.haomeiwen.com/i25355173/88c854108421235b.png)
2020 年顶会论文中,很多都会将关系加入到注意力机制的获取中。
除了该文,还有 2020 年 CVPR 的基于视频的 Multi-Granularity Reference-Aided Attentive Feature Aggregation for Video-based Person Re-identification、基于图像的Relation-Aware Global Attention 等。
该方法都会在这些论文中有着很好的效果,可见这是在行人重识别领域一大发展。
-
论文名称:Relation-Guided Spatial Attention and Temporal Refinement for Video-Based Person Re-Identification(基于关系引导的空间注意力和时间特征提取的基于视频的行人再识别)
-
第一作者:Xingze Li
-
通讯作者:Wengang Zhou
-
作者单位:CAS Key Laboratory of Technology in GIPAS, EEIS Department,中国科学院电子工程与信息科学系 University of Science and Technology of China(中国科学技术大学)
01 看点
RGSA(relation-guided spatial attention)模块:每个 spatial 位置的注意力由它的特征和与所有位置的关系向量决定(也就是关系引导),并最终融合为一个frame的特征,它能够捕捉局部和全局信息,同时定位特征区域而抑制背景信息。同时作者提出,感受野要尽量的小,才能提取出更加具有区别性的特征。
RGTR(relation-guided temporal refinement)模块:所有帧与帧的关系信息使得各个帧之间能够相互补充,有助于增强帧级特征表示。
RM 关系模块:计算特征之间的关系使用的方法不再是 dot 或 inner,而是自己开发了一种 RM 关系模块来生成两个特征的关系向量。
GRV(global relation vector):通过计算每个 spatial 位置的的关系和各个frame 之间的关系,生成 spatial-level 和 frame-level 的 GRV。并分别用在了RGSA 和 RGTR 模型中。
PS:Spatial feature:指的是以(i, j)每个像素为单位的特征。为 1x1xC 维度。
![](https://img.haomeiwen.com/i25355173/2382118c7464c5c3.png)
02Motivation
基于图像的所获得的信息是有限的,尤其是当受到遮挡或者有异常点时。
基于视频的行人重识别领域中,通常的做法是将局部信息融合为全局,然后估计全局(frames)或局部(parts)区域的质量,并将质量用作融合特征的权重。通常,这些方法仅仅单独考虑每个区域的质量,而忽略了区域内的质量差异和上下文信息。
03Contribution
基于视频领域经常使用的方法是RNNs、卷积运算和注意力机制对空间和时间信息进行建模。他们中使用光流来提取低层次的运动信息,或者使用注意力机制来评估每个frame的质量分数。与这些捕捉局部信息的方法不同,我们的方法利用很少探索的全局关系信息来引导空间注意力和时间特征提取。
传统的 Non-Local Mechanisms 中,特征之间的相似性被归一化以用作关注,并且每个特征由所有特征的加权和来更新。在所有上述非局部机制中,特征通过加权求和操作来更新,其中相似的特征具有大的权重。
缺点:这种方法在有效获取上下文信息和识别更新特征的区别区域方面存在局限性。我们的:与这些方法不同,我们的方法探索全局关系信息以聚焦于informative foreground,并使框架在上下文中相互补充。
提出新的 RM 模型用来提取时间和空间特征之间的关系,生成 GRV,可以使得在空间位置上定位特征区域而抑制背景信息。每个位置的注意力由它的特征和与所有位置的关系向量决定,它能够捕捉局部和全局信息。又能在空间位置上进一步提取和增强帧之间的特征,所有帧内的关系信息使得各个帧能够相互补充,有助于增强帧级特征表示。
04Method
主要介绍总体框架、RM(relation module), 基于 RM 生成的 GRV 全局关系向量、RGSA(relation-guided spatial attention module)、 RGTR (relation-guided temporal refinement module)、Loss function
Framework Overview
![](https://img.haomeiwen.com/i25355173/f75590c4949d8f61.png)
![](https://img.haomeiwen.com/i25355173/68897880841347c1.png)
过程:
![](https://img.haomeiwen.com/i25355173/0edc6322c0ad6fd6.png)
![](https://img.haomeiwen.com/i25355173/2ef7a76861b1014b.png)
![](https://img.haomeiwen.com/i25355173/6f90862b0deec11c.png)
采用的损失包含:帧级的交叉熵损失、视频级的交叉熵损失、三元组损失。
Relation Module
两个特征之间的关系,一般使用 np.inner() 或者是 np.dot() 来计算的,但是
因此,我们开发了一个关系模块来生成两个特征的关系向量,与内积和差相比,该关系向量既信息丰富又紧凑。
框架:
![](https://img.haomeiwen.com/i25355173/2da694f132a77345.png)
可以看到的是,输入两个特征,计算两者关系
目的:就是设计一个 RM 模型,通过计算来获取两个特征之间的关系!
步骤:
![](https://img.haomeiwen.com/i25355173/f17ef44f55db8e1a.png)
过程:
① 计算两个特征的差异
![](https://img.haomeiwen.com/i25355173/be48d8cc9385fcf1.png)
![](https://img.haomeiwen.com/i25355173/e515977a8167d0b5.png)
![](https://img.haomeiwen.com/i25355173/ea4b86148607e09c.png)
② 以 difference 为基础,计算 more compact relationvector
![](https://img.haomeiwen.com/i25355173/7201a42650e8d4d6.png)
![](https://img.haomeiwen.com/i25355173/d470d704982668de.png)
![](https://img.haomeiwen.com/i25355173/c1bfc2e2cbb3c82e.png)
![](https://img.haomeiwen.com/i25355173/e037e177124e0144.png)
Relation-Guided Spatial Attention
学习 attention 来关注 foreground object(应该关注的地方),但是传统的Deep stack of convolutional operations时,有效感受野比理论感受野小得多。也就是说,你用卷积来做的话,必然卷积核是大于等于1的,但是往往informative的区域比这还小。也就是 local-aware。
因此我们
提出 Local-aware,以(i, j)每个像素为单位的D层的特征,每个空间位置的注意力由它的特征以及来自所有位置的关系向量决定,揭示了局部和全局信息之间的依赖性。
生成的 GRV 通过和原特征 concat 后经过 FC 层生成权重信息,可以生成被关系引导的 attention,从而更好的实现特征聚合。
框架:GRV 和 RGSA
![](https://img.haomeiwen.com/i25355173/704559cb2c27d962.png)
GRV(步骤①~③) 生成关系向量
![](https://img.haomeiwen.com/i25355173/2662a1a1eceb2d3e.png)
RGSA(步骤④和⑤)
![](https://img.haomeiwen.com/i25355173/bc7a2ebbbc74142b.png)
步骤:
![](https://img.haomeiwen.com/i25355173/d83a36b06ffb0569.png)
过程:
① Reshape 成 spatial vector(X)
![](https://img.haomeiwen.com/i25355173/d1feb38983e8291a.png)
![](https://img.haomeiwen.com/i25355173/63ce3daa2301a7d4.png)
②利用 RM 来计算第i个位置特征和其它位置的关系向量
![](https://img.haomeiwen.com/i25355173/ec6ea4df9cdd2eb2.png)
③ 生成全局 global 关系向量
![](https://img.haomeiwen.com/i25355173/b101bffa8cde4ffa.png)
![](https://img.haomeiwen.com/i25355173/27092838b1dd1e1d.png)
④ 生成 spatial-level 的 GRV
![](https://img.haomeiwen.com/i25355173/4da36603bc6b5ada.png)
![](https://img.haomeiwen.com/i25355173/1e650ef16531e601.png)
![](https://img.haomeiwen.com/i25355173/6b215a2bd103de34.png)
⑤生成 frame-level 特征 f(Xàf)(关系是用的 spatial-level)
最终特征向量融合了空间注意力,为:
![](https://img.haomeiwen.com/i25355173/ef474cae8c8783a2.png)
输出:经过处理的 frame-level 特征 f
Relation-Guided Temporal Refinement
在 Temporal feature fusion 上,常用的方法估计不同帧的质量,并通过加权求和操作融合特征。
但是缺点是:当相互比较时候,乘以低质量的frames可能会包含更多信息(低质量的特征可能也会包含有用的信息),因此我们利用不同的帧可以相互补充,并被细化和聚合以增强区分能力的特性,开发了一个关系引导的时间提取模块,通过它与其他帧的特征的关系来提取帧级特征。
框架:
![](https://img.haomeiwen.com/i25355173/74ace7732a514b2b.png)
目的:获得最终特征!方法和 RGSA 相似!只是最后不再根据权重来计算每一帧的输出,而是求平均。因为,不同 frame 可能含有不同的区别性特征!
步骤:
![](https://img.haomeiwen.com/i25355173/c9c4c746a4c2fc8b.png)
过程:
① 获得 frames 之间的成对关系
通过 RM 获得
![](https://img.haomeiwen.com/i25355173/79c988c4d426f7d8.png)
② 生成 frame-level 的 GRV
![](https://img.haomeiwen.com/i25355173/4421234933cf1881.png)
![](https://img.haomeiwen.com/i25355173/d414d8f3e6227c85.png)
③ 生成 frame-level 特征(关系使用的是 frame-level)
![](https://img.haomeiwen.com/i25355173/dd21454f4c77b9ae.png)
![](https://img.haomeiwen.com/i25355173/939df8f77510c3a8.png)
![](https://img.haomeiwen.com/i25355173/18579d6a6a2cde06.png)
与上面不同的是,这里直接求 mean
![](https://img.haomeiwen.com/i25355173/824a82cd1347afe5.png)
![](https://img.haomeiwen.com/i25355173/a6926f36e5d8b016.png)
补充:GRV 在两个框架的作用
① RGSA
开发辨别区域并抑制背景(因为有权重啊!背景多很显然是被降低了权重)
② RGTR
增强 frame-level 特征的 discriminative 能力,从而强化增强 frame-level 特征的 discriminative 能力,从而强化 clip-level 的特征表示
Loss Function
整体是由交叉熵损失函数和三元组损失组成
cross entropy loss(交叉熵损失函数)
输入:each batch 包含了 P identities and K video
过程:和大多数方法是一样的
![](https://img.haomeiwen.com/i25355173/badc1d71a91f2c64.png)
![](https://img.haomeiwen.com/i25355173/4ec7e83fdf18bd94.png)
![](https://img.haomeiwen.com/i25355173/3f4cb0604b644563.png)
triplet loss
![](https://img.haomeiwen.com/i25355173/478231493f3808de.png)
![](https://img.haomeiwen.com/i25355173/f528acb6f67c48bc.png)
![](https://img.haomeiwen.com/i25355173/f80191c15b3fd956.png)
过程:
Triplet loss方法一般分为batch hard triplet loss和adaptive weighted triplet loss,其中前者选择距离最近的和最远的正负样本,而后者在所有样本,硬样本权重较大,简单样本权重较小。作者选择了后者。
正样本的权重:
![](https://img.haomeiwen.com/i25355173/a8da4354fc125a71.png)
负样本的权重:
![](https://img.haomeiwen.com/i25355173/6190d9f2ae620759.png)
Triplet Loss:
![](https://img.haomeiwen.com/i25355173/ffd541bdfe9dedd4.png)
其中,
![](https://img.haomeiwen.com/i25355173/0ba86249a440fd13.png)
Overall:
![](https://img.haomeiwen.com/i25355173/a8b0c8b9a6466f50.png)
05 Experiments
Implementation Details
Train:
① 数据集:MARS、DukeMTMC-VideoReID、iLIDS-VID、PRID-2011;
② 实验细节:在训练阶段随机从视频中挑选T帧,每个 batch 包含 P 个行人 ID,每个行人 ID 包含 K 个视频;数据输入采取随机翻转、随机擦除;骨干网络采用预训练的 ResNet50;训练阶段选取帧数为 T/2;采用 4 块 NVIDIA Tesla V100 GPU进行训练测试;
其中:Resnet50 框架,最后一层要改掉。
![](https://img.haomeiwen.com/i25355173/0ad12d30a7215bdf.png)
③ 参数设置:P = 18,K = 4,即batch size = 72 T;输入图像规格为 256*128;训练器为 Adam,其 weight decay = 5*10-4;迭代次数为 375 次;学习率为 3*10-4,在 125 个 epoch 和 250 个 epoch 后均下降到 0.1 倍。
Test:
①T->T/2
②所有的 Clip-level 的 frames 被提取之后,并使用 L2 正则化来生成序列特征
③使用余弦距离来匹配 query 和 gallery 的图像
06Ablation Study
![](https://img.haomeiwen.com/i25355173/428be50d8c82aebd.png)
![](https://img.haomeiwen.com/i25355173/5e7a4285da3bbe5b.png)
![](https://img.haomeiwen.com/i25355173/01dc8e1ca2b3c57c.png)
![](https://img.haomeiwen.com/i25355173/ef1d357c582bd364.png)
Table2 和 3 是分别试验了 difference factors 和 difference clip length 的 rank1 和 mAP 分数。
![](https://img.haomeiwen.com/i25355173/776f2e9a2144d636.png)
![](https://img.haomeiwen.com/i25355173/0b6aaceba0ec148d.png)
![](https://img.haomeiwen.com/i25355173/9de596b2f2912274.png)
分别与在 MARS dataset、iLIDS-VID and PRID2011 dataset、DukeMTMC-VideoReID dataset 三个数据集效果。