论文阅读笔记(十一)【ICCV2017】:Jointly Attentive Spatial-Temporal Pooling Networks for Video-based Person Re-Identification
Introduction
(1)Motivation:
当前采用CNN-RNN模型解决行人重识别问题仅仅提取单一视频序列的特征表示,而没有把视频序列匹配间的影响考虑在内,即在比较不同人的时候,根据不同的行人关注不同的部位,如下图:
(2)Contribution:
将注意力模型考虑进行人重识别中,提出了时空联合注意力池化网络(jointly Attentive Spatial-Temporal Pooling Networks,ASTPN).
The Proposed Model Architecture
(1)简述:
建立了时空注意力网络(a recurrent-convolutional network with jointly attentive spatial-temporal pooling,ASTPN),其工作原理是:将一对视频序列传入孪生神经网络,获得两者的特征表示,并生成它们的欧几里德距离。如图所示,每个输入(包含光流的视频帧)通过CNN网络,并从最后一个卷积层中提取出特征映射。然后将这些特征映射输入到空间池层中,每一个时间步获得一个图像表示。然后,我们把时间信息考虑在内,利用循环神经网络生成视频序列的特征集。最后,由循环神经网络产生的所有时间步被注意力时间池结合起来,形成序列特征表示。
(2)卷积层:
输入:网络的输入由三个彩色通道和两个光流组成。颜色通道提供服装和背景等空间信息,而光流通道提供时间运动信息。给定输入序列 v = {v1, …, vT},我们利用下表所示的卷积网络获得特征映射集 C = {C1,…,CT}。然后将每个 Ci∈Rc×w×h 输入空间池化层,得到图像级表示 ri。
(3)空间池化层(Spatial Pooling Layer):
使用空间金字塔池化(SPP)层来组成空间注意力池,具体如下:
假设池化核大小集为{(mwj, mhj)| j = 1, …, n},则确定第 j 个池化核窗口大小:
第 j 个池化步长为:
然后通过公式得到结果向量 ri:
其中 fp 表示采用窗口大小 win 和步长 str 的最大池化函数。fR 表示重构函数,将矩阵重构成一个向量。除此之外,⊕ 表示向量连接操作。
令一个序列表示为r = {ri∈RL | i = 1, …, T},其中:。
(4)注意力时间池化层(Attentive Temporal Pooling Layer)
将上一层得到的 r 输入到循环神经网络提取时间步信息,循环层可以计算表示为:
其中 st-1∈RN 是包含上一时间步信息的隐藏层结点,ot 是时间t的输出。全连接权重 U∈RL*N 将循环层输入 rt 从 RL 映射到 RN,全连接权重 W∈RN*N 将隐藏层结点 st-1 从 RN 映射到 RN 。注意到循环层通过矩阵U将特征向量嵌入到低维特征中。在第一个时间步中,隐藏层结点被初始化为0,隐藏层通过tanh函数激活传递。
定义矩阵 P∈RT*N 和 G∈RT*N,其第 i 行分别表示检测数据和对照数据在循环网络的第 i 个时间步的输出,我们计算注意力矩阵 A∈RT*T:
其中 U∈RN*N 是网络学习的信息分享感知矩阵。
之后,对 A 分别应用列最大池化和行最大池化来获得时间权重向量 tp∈RT 和 tg∈RT。tp 的第 i 个元素表示探测序列中第 i 帧的重要得分,tg 同理。再对时间权重向量 tp 和 tg 应用softmax函数,来生成注意力向量 ap∈RT 和 ag∈RT。ag 的第 i 个元素可以计算为:
最后,应用 P、G 和 ap、ag 之间的点乘来获得序列级表示 vp∈RN 和 vg∈RN,分别计算为:
(5)损失函数:思想与上篇论文类似【传送门】
孪生神经网络的铰链损失:
将识别身份的损失考虑在内,训练目标为:
Experimental Results
(1)实验设置:
① 数据集:iLIDS-VID、PRID-2011、MARS
② 参数设置:截取的帧数 k = 18,孪生代价函数的边距 m = 3,特征空间维数为128,初始学习率0.001,批量设置为1.
③ 对比方法:RNN-CNN、RFA、VR、AFDA
(2)预处理:
① 裁剪、镜像来增强数据,裁剪后的子图像的宽度和长度都比原图像小8个像素,在整个序列随机使用镜像操作,概率 p=0.5。
② 将图像精确地转换为YUV颜色空间,并将每个颜色通道归一化为零均值和单位方差;使用Lucas-Kanade方法在每对相邻图像之间提取垂直和水平的光流,然后提取光流通道正规化为[-1, 1]
(3)实验结果:
① 与对比方法比较:
② 在MARS数据集上结果:
③ 不同池化策略的比较:
④ 交叉数据集上测试结果:
在ILIDS-VID数据集上进行训练,然后在PRID-2011数据集上进行测试。