Revisting Temporal Modeling for Video-based Person ReID
原文链接
代码链接
前言
这篇博客记录了对于视频行人重识别领域的初次尝试,在提取论文的观点后,还会针对代码部分进行分析。
摘要
首先介绍了一个具体的video-based 行人重识别系统应该包含的三个部分(后面也是根据这个完成的论文结构):
- an image-level feature extractor (CNN) 图像特征提取
- a temporal modeling method 时序建模方法去融合时序特征
- loss function 损失函数
虽然已经提出了很多的时序建模方法,但是很难直接比较这些方法的好坏,因为特征的提取方式和损失函数都会对最终的效果产生挺大的影响。
这篇文章就是在保证其他条件相同时,测试了以下4种不同的temporal modeling methods:
- temporal pooling
- temporal attention
- RNN
- 3Dconvnets
还提出了一种新的attention generation network 用来适应时序卷积从不同帧中提取时序信息。
1.Introduction
2.Related Work
上面两部分就是总结了别人的工作,引了一些论文,就不介绍了,可以自行谷歌翻译看原文。
3.Method
这一部分介绍了整个系统结构以及三种temporal modeling methods的实现细节。
整个系统可以分为两个部分:
- a video encoder which extract visual representations from video clips 能够从视频切片中提取有效信息的解码器
- a loss function to optimize the video encoder and a method to match the query video with the gallery videos 一种能够匹配query video和gallery video的方法 ,以及损失函数
一段视频首先被切割成不重复的谦虚的切片ckc_{k}ck?,每个切片都包含T帧。
clip encoding 把clips作为输入,然后对每个clip输出一个D维的特征向量fcf_{c}fc?.
最后视频的特征就是所有clip特征的平均值。
3.1Video CIip Encoder
这里采用了两种类型的CNN网络来建立video clip encoder。
3D CNN直接将一个包含n帧的切片c作为输入,输出一个特征向量fcf_{c}fc?。
2D CNN是先提取一个image-level featuresfct{f^t_{c}}fct?,t=[1,n],然后通过时序建模方法把fct{f^t_{c}}fct?融合成一个单一的向量fcf_{c}fc?。
- 3D CNN
- 使用3D Resnet 模型,采用3D卷积核,专门用于action classification。
- 用person identity输出替代原本的final classification。
- 使用预训练模型
- 将T张连续帧(一个clip)作为输入,将最终分类层之前的层作为representation
2D CNN 采用标准的ResNet50作为图像特征提取器。对于给定的一个image sequence图像序列(一个video clip),输入每一张图片的特征,输出一个image level feature sequencefct{f^t_{c}}fct?,t是第一帧到第n帧,这是一个T×D的矩阵,n是clip sequence length,D是特征的维度。
然后就是使用temporal aggregation method把特征融合成一个clip feature fcf_{c}fc?,它是一个D维的向量。下面就是具体的介绍三种方法:
-
Temporal pooling(TP)
使用pooling层对特征矩阵进行pooling,常用的pooling方式有两种:- max pooling
- average pooling
- max pooling
-
Temporal attention(TA)
在这个模型中对sequence of image feature使用attention weighted average,给每一个切片c一个attention系数,即acta^t_{c}act?,特征向量:
- Resnet50最后一层卷积层得到的tensor size为[w,h,2048]
- attention generation network 将一列特征[T,w,h,2048]作为输入,输出T个attention scores。
- 第一种attention network 是 spatial conv + FC
卷积层input channel = 2048,kernal width =w,kernal height = h, output channel number = dtd_tdt?,即{w,h,2048, dtd_tdt?};全连接层input channel =dtd_tdt?,output channel = dtd_tdt?,卷积层输出是一个scalar vector scts^t_{c}sct?,作为clip c对应t帧的得分。 - 第二种是spatial + temporal conv
第一个卷积层同样为{w,h,2048, dtd_tdt?},对于每个clip的每一帧可以得到一个 dtd_tdt?维的特征,然后对提取到的特征使用一个temporal conv layer{3,d,1}生成temporal attention scts^t_{c}sct?。
对应下图的C部分:
当我们获得了 scts^t_{c}sct?,我们有两种方式计算最终的attention scoreacta^t_{c}act?:
softmax function:
sigmoid function:
-
RNN
- RNN cell在一个time step t处按顺序编码一个图像特征,然后将隐藏状态hth_{t}ht?传递到下一时间步。
- 两种方式考虑融合图像特征到一个单独的切片特征fcf_{c}fc?
- 一种是使用最后一个时间步长的隐藏状态hth_{t}ht?,即fc=htcf_{c}=h^c_{t}fc?=htc?
- 另一种是计算RNN输出{ oto^tot}的平均值
- 测试了两种不同的RNN cell :LSTM and GRU
3.2 loss function
- triplet loss
- Batch Hard triplet
- 对于每个identity随机取P个identities和K个clips(每个clips 包含T帧),所以一个batch总共包含PK clips。
- 对于一个batch中的每个sample a,挑取最难正样本和最难负样本形成triplets去计算loss
- Softmax cross-entropy loss
- 交叉熵损失把PK clips 分类到正确的identities
- 交叉熵损失把PK clips 分类到正确的identities
-total loss
3.3 Similarity calculation for testing
和之前一样,一个视频被切割成连续且不重复的切片c,每个切片都包含T帧。
测试时,提取视频每个切片的clip level representation,video level representation 是所有clip level representation的平均值。
使用L2 distance来测量每个video的相似度。
4.Evaluation
4.1 Evaluation Settings
- Metric
- mAP + CMC
- Dataset
- mars
- Implementions
- Image-based baseline models