论文题目:Video-based Person Re-identification with Spatial and Temporal Memory Networks
代码语言:javascript复制论文链接:https://arxiv.org/abs/2108.09039
项目主页:https://cvlab-yonsei.github.io/projects/STMN
代码链接:https://github.com/cvlab-yonsei/STMN
本文介绍一篇来自韩国延世大学cvlab的论文,该文针对视频行人重识别任务提出了一种双记忆网络,并在多个数据集上达到SOTA性能。
01动机
基于视频的行人重识别(reID)主要通过多个摄像头的数据来检索与当前查询人员身份一致的行人视频片段。在视频数据中,行人表观在空间和时间上相比图像数据有更多的干扰因素,例如视频背景的杂乱和视频帧出现的部分遮挡,这些因素使得这项任务比基于图像的reID更具挑战性。
上图详细说明了视频数据中存在的各种干扰因素和时序特性,(1)由于视频序列是由一系列的固定摄像头拍摄得到,因此这些序列中可能包含固定的背景噪声,如上图(a)中所示。
从时间角度出发,(2)可以观察到,有些行人可能会消失在序列的末尾,如上图(b)中列所示。而有些行人会在序列的开始阶段受到遮挡,如上图(b)右侧所示,这些现象提供了非常关键时间注意力线索。
基于以上分析,本文提出了一种时空记忆网络STMN(Spatial and Temporal Memory Networks)。网络包含有两个记忆模块,分别用来学习和存储空间记忆和时间记忆。
其中空间模块用来存储那些经常出现的空间干扰项,而时间模块用来存储行人视频数据中常态化的时序模式(temporal patterns)。
在模型的测试阶段,将训练时存储好的记忆模块作为查找表(look-up tables),帮助网络在空间层面对特征干扰项进行抑制,在时间层面通过记忆向量对特征进行增强。
02本文方法
本文提出的STMN主要由三个部分构成:编码器、空间记忆模块和时间记忆模块。编码器对输入的每个视频帧提取一个行人表征和两个查询向量,分别对应于访问空间记忆模块和时间记忆模块。
其中空间记忆模块主要存储当前场景中经常出现的场景细节。使用空间查询向量可以从空间模块中将这些细节信息提取出来,帮助细化当前的输入的行人特征向量,抑制其中包含的空间噪声。时间记忆向量抽象了当前场景中经常出现的时序注意力,后续也可以对行人特征向量进行增强。
2.1 空间记忆模块
空间记忆模块的主要作用是细化当前输入的行人特征,未经处理的行人特征中可能包含一些当前场景特定的背景外观信息,例如背景中的树,自行车以及道路上的纹理等等,这些外观可能会干扰网络在同一场景区分不同行人的鉴别能力,空间记忆模块的构成如下图所示。
记忆模块采用key-value匹配机制,共包含M个记忆向量,输入的行人特征向量
首先作为查询向量
输入到模块中进行匹配,需要注意的一点是,在匹配时,需要先将
按照空间维度展开与所有的记忆key向量进行对应,并通过余弦相似度计算相似度:
计算得到的匹配概率
可以看作是当前输入行人特征中包含有背景干扰项的概率,作者认为背景干扰项存在多种,因此使用M个记忆向量分别进行存储,通过加权求和可以得到聚合记忆特征,随后使用输入的行人特征
减去该聚合特征达到抑制背景噪声的作用,具体过程如下:
2.2 时间记忆模块
由于使用空间记忆模块对行人特征进行处理时,是独立的一帧一帧进行操作,作者认为这样处理无法捕捉视频序列中的时序上下文信息,可能导致整体框架会受到帧与帧之间遮挡和错误的影响,因此额外设计了一个时间记忆模块,构成如下图所示:
时间记忆模块同样采用key-value匹配机制,但是模块的输入是一系列查询特征向量构成的序列
和经过空间记忆模块细化后的序列特征
,随后经过一个全局平均池化(GAP)和LSTM网络捕获每个序列的时序特征:
其中
是每个LSTM网络最后时刻的输出,包含了序列的上下文信息,随后使用类似于空间记忆模块计算相似度的方式计算得到当前输入行人特征与模块中存储最接近的记忆向量
:
之后使用同样的方式对空间模块细化后的特征向量
计算全局平均池化,并与记忆模块匹配得到的结果
相乘就得到整个网络的最终输出,作为当前输入行人序列的特征。
2.3 损失函数
整体框架的损失函数有两部分联合构成,分别是记忆传播损失和身份识别损失,整体损失函数的公式如下:
由于在训练过程中,除了行人的身份标签之外,没有使用其他额外的监督信号,因此在初始阶段,记忆模块中的key向量并不清楚应该如何与输入的行人特征进行匹配,在这种情况下,模型可能会单一的选择其中一个记忆向量,而忽略了其他向量的更新,如下图所示:
为了解决这个问题,作者提出了如下的记忆传播损失:
该损失通过在两个记忆模块的匹配概率矩阵中设置一个最大最小值的差距阈值,来强制网络在训练期间访问和更新所有的记忆向量,避免出现上图左侧中只更新中间向量的情况。对于身份识别损失,本文与其他行人重识别方法类似,使用交叉熵和三元组损失相结合的形式。
03实验效果
本文在三个具有代表性的视频行人重识别数据集上进行了实验,分别是MARS,DukeMTMC-VideoReID和LS-VID。
其中对于MARS数据集,作者首先将训练集分成了两个子集,身份占比为500/125,并使用这些身份对应的7075/1223个帧序列作为训练集和验证集,对于查询帧序列,是从上一步划分出来的验证集中随机选择200个帧序列对记忆模块进行训练和更新。本文方法与其他现有方法的对比如下表所示:
上表中展示了RSS(restricted random sampling)[1]采样设定和全部帧采样的实验效果,其中RSS采样方式会首先将每个序列分成L个块,然后从每个块中随机选择一帧构成序列再送入网络。
在本文的实验中,使用RSS采样训练的STMN网络甚至超过了之前方法在所有帧上训练的效果,这表明STMN可以仅需要采样帧的信息就可以高效的鉴别视频中行人的身份,这一特性对于需要迅速从海量视频中检索出关键人物的视频ReID任务非常重要。
此外,作者还将空间记忆模块和时间记忆模块中存储的记忆特征向量进行了可视化,下图为记忆模块的可视化效果:
左侧为拥有相同匹配key的输入帧,可以看到每个记忆key都对应了一种相近的场景细节,例如第一行背景中的体育场,第二行中的路灯和第三行的道路纹理。
这验证了本文的记忆模块可以根据每个视频帧的场景细节来访问空间记忆向量。右侧为经过记忆模块抑制处理之后的特征向量可视化效果。
对于时间记忆模块,作者也可视化了一部分具有相同匹配key的输入序列,如下图所示,可以观察到每个key检索到的序列具有相似的时序模式,如下图左侧的序列中,行人都是在序列的末尾消失,在右侧的序列中,行人的外观在整个序列中都非常相似。这也验证了时间记忆模块可以存储不同的行人运动模式。
04总结
本文针对视频行人ReID任务提出了一种双记忆模块增强的方法,称为STMN,该方法分别针对视频中的空间和时间干扰因素进行建模和抑制,并通过两个不同的外部记忆模块进行存储和表示。
随后使用两个模块的记忆向量对行人特征进行细化和增强,使其更加专注于学习行人的身份特征。同时为了提高记忆模块的存储质量,作者还提出了一种记忆传播损失来缓解记忆模块的冗余现象。
参考
[1] Shuang Li, Slawomir Bak, Peter Carr, and Xiaogang Wang. Diversity regularized spatiotemporal attention for video-based person re-identification. In CVPR, 2018.