当前位置: 代码迷 >> 综合 >> 【论文笔记】Revisting Temporal Modeling for Video-based Person ReID
  详细解决方案

【论文笔记】Revisting Temporal Modeling for Video-based Person ReID

热度:25   发布时间:2023-11-23 05:40:03.0

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
      在这里插入图片描述
  • 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
      在这里插入图片描述

-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
  相关解决方案