本文是韩国延世大学,电气与电子工程学院所发表的基于视频行人重识别的文章。
文章地址:https://openaccess.thecvf.com/content/ICCV2021/papers/Eom_Video-Based_Person_Re-Identification_With_Spatial_and_Temporal_Memory_Networks_ICCV_2021_paper.pdf
源码地址:https://github.com/cvlab-yonsei/STMN

Abstract

人物视频中的空间和时间干扰因素,例如背景杂波和帧上的部分遮挡,分别使这项任务比基于图像的人物识别更具挑战性。我们观察到空间干扰物在特定位置一致地出现,而时间干扰物则表现出几种模式,例如,部分遮挡出现在前几帧,这种模式为预测关注哪一帧提供了信息线索(即时间注意力)。在此基础上,我们提出了一种新的时空记忆网络(STMN)。空间记忆存储了视频帧中频繁出现的空间干扰特征,而时间记忆存储了针对真人视频中典型时间模式优化的注意力。我们利用空间和时间记忆分别细化帧级人物表示,并将细化的帧级特征聚合到序列级人物表示中,有效地处理人物视频中的空间和时间干扰。我们还引入了内存扩散损失,防止我们的模型只在内存中处理特定的项目。

Introduction

1、作者的想法
①数据来自固定相机拍摄,因此背景会产生杂物
②时间上会出现时间模式(就是时序上会出现的问题,作者归结为时间模式)
2、基于上述想法,提出STMN框架利用空间memory和时间memory

STMN框架具体工作

STMN框架主要由encoder、spatial memory、temporal memory组成

  • encoder
    用于提取行人表征和两个查询映射(query map),并且每个查询向量分别用于访问spatial memory、temporal memory。
  • spatial memory
    存储场景细节以及在视频中频繁出现的干扰特征。使用查询向量从空间记忆中提取这些特征,并使用这些特征去细化行人表征,抑制干扰行人识别的信息。
  • temporal memory
    存储行人视频中重复出现的典型的时间模式,对时间模式的注意力进行优化。使用查询向量访问时间记忆,并将细化后的帧级特征聚合到序列级的行人表征上。
    在训练阶段使用memory spread 、三元组和交叉熵损失进行训练。memory spread loss可以防止模型对少数记忆相重复访问,激励模型访问所有项。

STMN中每个模块的具体流程

STMN框架图

encoder

  1. 将视频序列作为输入Fi∣i=1LF_{i}|^{L}_{i=1}Fi​∣i=1L​,i为序列的第i帧,L为帧的总数量
  2. 将ResNet50作为网络的骨干。在本文中作者将ResNet50的stage4层替换为3个head。这3个head分别用于提取行人表征fiof^{o}_{i}fio​、空间查询向量qisq^{s}_{i}qis​和时间查询向量qitq^{t}_{i}qit​

Spatial Memory

1、主要作用:

从下图中我们可以看到在相同背景不同行人的情况下,特征提取的注意力在背景上而不是在行人的位置上,所以 Spatial Memory的作用就是抑制特征中背景杂物,使注意力重新回到行人上。

2、具体流程
  • 将fiof^{o}_{i}fio​和qisq^{s}_{i}qis​作为输入,由于输入帧的不同部分可能包含有区别的场景细节,使用查询向量访问各个组将的memory。

  • 在memory中使用q和k计算余弦相似度,并产生一个1*m的匹配概率图ai,k,nsa^{s}_{i,k,n}ai,k,ns​

    ai,k,ns=exp((qi,ks)TKns)∑n=1Mexp((qi,ks)TKns)a^{s}_{i,k,n}=\frac{exp((q^{s}_{i,k})^{T}K^{s}_{n})}{ {\textstyle \sum_{n=1}^{M}}exp((q^{s}_{i,k})^{T}K^{s}_{n})} ai,k,ns​=∑n=1M​exp((qi,ks​)TKns​)exp((qi,ks​)TKns​)​
    匹配概率图ai,k,nsa^{s}_{i,k,n}ai,k,ns​表示为记录在第n个内存项中的场景细节存在于第i帧的第K个位置的可能性

  • 使ai,k,nsa^{s}_{i,k,n}ai,k,ns​与vnsv^{s}_{n}vns​做一个加权平均值
    Oi,ks=∑n=1Mai,k,nsvnsO^{s}_{i,k}=\sum_{n=1}^{M}a^{s}_{i,k,n}v^{s}_{n} Oi,ks​=n=1∑M​ai,k,ns​vns​
    Oi,ksO^{s}_{i,k}Oi,ks​表示对于第i帧的第k个位置。删除干扰识别行人的信息特征

  • 细化行人表征fi,ks=fi,ko−BN(Oi,ks)f^{s}_{i,k} =f^{o}_{i,k}-BN(O^{s}_{i,k})fi,ks​=fi,ko​−BN(Oi,ks​)。BN层用于调整编码器输出和存储器之间的分布差距

  • 模型中k和v是外部参数(自己初始化的,源代码中可见)通过反向传播进行更新,self-attention的k和v是通过输入特征计算出来的

Temporal Memory

1、主要作用:

对于较少干扰的输入序列,memory与时间平均池化类似,融合相同概率的视频帧。
对于受干扰的输入序列,temporal memory使模型提取对时间变化具有健壮性的行人表征

2、具体流程
  • 将spatial memory细化后的表征fi,ksf^{s}_{i,k}fi,ks​与 时间查询向量qitq^{t}_{i}qit​作为输入

  • 我们首先编码给定序列的时间上下文,例如,遮挡出现在中间帧,使用查询映射。生成qitq^{t}_{i}qit​

  • 使用全局平均池化(GAP)对qitq^{t}_{i}qit​进行空间聚合,并将其输入到LSTM中:
    qt=LSTM[GAP(q1t),GAP(q2t),...,GAP(qLt)]q^{t}=LSTM[GAP(q^{t}_{1}),GAP(q^{t}_{2}),...,GAP(q^{t}_{L})] qt=LSTM[GAP(q1t​),GAP(q2t​),...,GAP(qLt​)]

  • 将qtq^{t}qt用于访问temporal memory

  • 匹配概率anta^{t}_{n}ant​,表示编码时间上下文qtq^{t}qt属于时间模式存储在第n个记忆项KntK^{t}_{n}Knt​的概率
    ant=exp((qt)TKnt)∑n=1Mexp((qt)TKnt)a^{t}_{n}=\frac{exp((q^{t})^{T}K^{t}_{n})}{ {\textstyle \sum_{n=1}^{M}}exp((q^{t})^{T}K^{t}_{n})} ant​=∑n=1M​exp((qt)TKnt​)exp((qt)TKnt​)​

  • 时间注意力
    ot=∑n=1Mantvnto^{t}=\sum_{n=1}^{M}a^{t}_{n}v^{t}_{n} ot=n=1∑M​ant​vnt​

  • oito^{t}_{i}oit​表示第i个输出的元素,表明在序列中第i个项的相关重要性
    ft=∑n=1No^itGAP(fis)f^{t}=\sum_{n=1}^{N}\hat{o}^{t}_{i}GAP(f^{s}_{i}) ft=n=1∑N​o^it​GAP(fis​)这个公式相当于空间和时间的特征融合。其中
    o^it=exp(oit)∑i=1Lexp(oit)\hat{o}^{t}_{i}=\frac{exp(o^{t}_{i})}{{\textstyle\sum_{i=1}^{L}}exp(o^{t}_{i})} o^it​=∑i=1L​exp(oit​)exp(oit​)​

  • ftf^{t}ft是最终的行人表征

先前的方法是根据人的表征来决定在时间融合过程中关注哪些帧。这可能会强制表示对时间背景以及与身份相关的线索进行编码,防止表示具有歧视性,特别是当不同身份的视频序列包含类似的时间背景时。相反,在我们的框架中,人员表示与编码时间上下文分离,其中查询映射qitq^{t}_{i}qit​和临时存储器ktk^{t}kt中的键,对这些上下文进行编码。这鼓励我们的模型提取人员表示,重点关注对区分不同身份有用的信息,从而提高reID任务的性能。

Train loss

Ltotal=Ls+LIDL_{total}=L_{s}+L_{ID} Ltotal​=Ls​+LID​
LsL_{s}Ls​为memory spread loss:使模型可访问多个项,而不是特定的项
Ls=∑n=1M[min(ans)−max(ans)]++[min(ant)−max(ant)]+L_{s}=\sum_{n=1}^{M} [min(a^{s}_{n})-max(a^{s}_{n})]_{+}+[min(a^{t}_{n})-max(a^{t}_{n})]_{+} Ls​=n=1∑M​[min(ans​)−max(ans​)]+​+[min(ant​)−max(ant​)]+​
LIDL_{ID}LID​可以从视频序列中提取有区别的行人表征

结果

模型比较

论文笔记2:Video-based Person Re-identification with Spatial and Temporal Memory Networks相关推荐

  1. 交通预测论文笔记《Attention Based Spatial-Temporal Graph Convolutional Networks for Traffic Flow Forecasting》

    AAAI2019 0 摘要 交通流数据通常有很高的非线性和很复杂的特征.目前很多交通预测的方法缺乏对交通数据时空相关性的动态建模. 本文提出了一种基于注意力的时空图卷积神经网络(ASTGCN)来解决交 ...

  2. 【论文笔记】Geometry based exhaustive line correspondence determination* ICRA2016

    当无法获得可靠的纹理信息来识别线条特征时,另一种选择是探索模型和相机的各种可能配置,直到我们获得图像和模型特征之间的几何一致性对应. 这包括两种类型的探索,(i)搜索对应地图空间[9],[10](ii ...

  3. 论文笔记-Depth Estimation via Affinity Learned with Convolutional Spatial Propagation Network

    论文信息 标题: Depth Estimation via Affinity Learned with Convolutional Spatial Propagation Network 作者:Xin ...

  4. 【论文笔记】sigmod15-COMMIT A Scalable Approach to Mining Communication Motifs from Dynamic Networks

    相关资源 论文地址 硕士毕业论文 代码(仅有可执行文件) 作者主页 问题 本文的问题是:动态时序图中挖掘motif,可以认为是在时序图中挖掘频繁子图.子图中的边满足相同的顺序. 在有向.无标签.有重边 ...

  5. 论文笔记 EMNLP 2018|Collective Event Detection via a Hierarchical and Bias Tagging Networks with Gated

    文章目录 1 简介 1.1 创新 2 背景知识 3 方法 4 实验 1 简介 论文题目:Collective Event Detection via a Hierarchical and Bias T ...

  6. 论文翻译 Deep Steering: Learning End-to-End Driving Model from Spatial and Temporal Visual Cues

  7. 论文笔记目录(ver2.0)

    1 时间序列 1.1 时间序列预测 论文名称 来源 主要内容 论文笔记:DCRNN (Diffusion Convolutional Recurrent Neural Network: Data-Dr ...

  8. [深度学习论文笔记]医学图像分割U型网络大合集

    [深度学习论文笔记]医学图像分割U型网络大合集 2015 U-Net: Convolutional Networks for Biomedical Image Segmentation (MICCAI ...

  9. 《Improved Crowd Counting Method Based onScale-Adaptive Convolutional Neural Network》论文笔记

    <Improved Crowd Counting Method Based onScale-Adaptive Convolutional Neural Network>论文笔记 论文地址 ...

最新文章

  1. LeetCode 2 两数相加
  2. java中web应用中重定向与转发的区别
  3. oracle结束过程,oracle 结束被锁的包或存储过程
  4. php本地的调试安装,教你本地安装、运行、调试PHP程序
  5. linux下使用gpio控制代码,zynq linux 下控制gpio的c代码
  6. [UE4]Cast to转换数据类型
  7. 什么是 Elasticsearch?一篇搞懂
  8. java实例 之 商品管理系统
  9. 使用EasyPoi完成复杂一对多excel表格导出功能
  10. 工业无线技术在未来工厂运营中的机遇和挑战
  11. DevOps八荣八耻了解下,哈哈~
  12. VMware临时文件清理
  13. python代码有for循环时没有报错但是不能运行
  14. VDT (virtual device on tcp) 基于tcp通信的虚拟设备工具集
  15. Hibernate简单配置
  16. 二维图形旋转公式的推导
  17. OpenMMLab简介
  18. windows 如何批量修改文件后缀名?
  19. 如何使用JavaMailSender给曾经心爱的她发送一封特别的邮件
  20. 20191225-How to read a paper 如何读英文文献

热门文章

  1. 推荐几款高效的Python文本编辑器!
  2. c语言头文件格式图片_请高手赐教C语言图片文件头文件格式的解释,该怎么处理...
  3. 为什么你裹成粽子还冷得瑟瑟发抖,别人在雪山徒步却轻装上阵,全因这件黑科技上装!...
  4. Day1:Angry young women: A new generation of activists is challenging misogyny
  5. ORACLE审计管理
  6. redis哨兵模式-sentinel ,java客户端动态切换master
  7. Prometheus监控系统存储容量优化攻略,让你的数据安心保存!
  8. Servlet数据传输Jason核心知识
  9. python冷知识—程序员的快乐“\a“
  10. Mac 下 python 环境问题