Abstract

  1. 解决的问题?

现有的视频标准训练方式每个迭代会从原始视频中采样一个clip(剪辑),然后通过这一个clip来学习video-level级别的标签。本文认为一个clip不具有足够的时间覆盖性来展示需要识别的标签。而且这种学习方式阻碍模型学习长期时间依赖性的能力。

  1. 怎么解决的?

引入了一种协同记忆机制(collaborative memory mechanism),在每个训练步,可以从同一个视频采样的多个clips中学习特征。

  1. 结果如何?

该方法可以适用于不同的架构和任务。在action recognition/detection中都取得了SOTA的结果。

1. Introduction

  1. 现有的研究方法?存在什么问题?
  • 在clip-based backbone之上建立一个分离的网络。这种方式:1)要么无法end-to-end训练(即整个模型要在预先提取的clip-level的features上进行训练);2)要么需要临时的backbones,难以应用在现代的网络架构中。
  1. 本文是怎么解决上述问题?提出了哪些方法
  • 提出了一个协同记忆机制,该记忆机制可以从一个video多个clips中聚集videl-level的上下文信息。在每一个训练步中,将全局的上下文信息注入每一个clip中,从而优化单个clip的表征(representation)。
  1. 本文的主要贡献
  • 一种可以让clip-based模型学习videl-level dependencies的end-to-end新型训练框架
  • 一种可以让多个clips进行信息交换的信息协同记忆机制。并探索了几种实现方式,同时指出了优化的困难点
  • 该方法可以适用于不同的backbones,在action recognition和detection上都取得了SOTA的结果

2. Related Work

3. Methods

给定一个TTT帧视频v={I0,…,IT−1}v = \{I_0, \dots,I_{T-1}\}v={I0​,…,IT−1​},每个训练步从原视频中采样N个clips{C0,…,CN−1}\{C_0,\dots,C_{N-1}\}{C0​,…,CN−1​},Cn={Itn,…,Itn+L−1}C_n=\{I_{t_n},\dots,I_{t_n+L-1}\}Cn​={Itn​​,…,Itn​+L−1​}包含L个连续的帧。N是一个由T和L之间的比例决定的超参数,目的是获得足够的时间覆盖。

Collaborative Memory

Memory interactions

  • Average Pooling: 通过一个平均池化将所有clips的表征聚集起来。其中每个clip-level的表征是一个k×dk \times dk×d的矩阵,k=height×width×lengthk = height \times width \times lengthk=height×width×length,d是通道的数量。平均池化可以数学表示为M=Push({Xn}n=0N−1)=Pool({XnWI}n=0N−1),WI∈Rd×d′M=Push(\{X_n\}^{N-1}_{n=0})=Pool(\{X_nW_I\}_{n=0}{N-1}), W_I \in \mathbb{R}^{d \times d^\prime}M=Push({Xn​}n=0N−1​)=Pool({Xn​WI​}n=0​N−1),WI​∈Rd×d′.对于每一个clip可以通过出栈操作取回这个全局信息:Mn=Pop(M,Xn)=MM_n=Pop(M,X_n)=MMn​=Pop(M,Xn​)=M.可以看到这种方式每个clip取回的全局信息都是相同的。一种更好地设计应该是不同的clip应该能从全局记忆M中取回clip-specific信息。

  • Associative Memory: 受到[1], [21]的启发,设计了一种新的聚集信息以及取回clip-specific信息的方法:

    1. Accumulation:

    Push({Xn}n=0N−1)=1N∑n=0N−1(XnWk)T(XnWv)Push(\{X_n\}^{N-1}_{n=0})=\frac{1}{N}\sum_{n=0}^{N-1}(X_nW_k)^T(X_nW_v)Push({Xn​}n=0N−1​)=N1​n=0∑N−1​(Xn​Wk​)T(Xn​Wv​)

    1. Retrival:

    Mn=Pop(M,Xn)=(XnWq)MM_n=Pop(M,X_n)=(X_nW_q)MMn​=Pop(M,Xn​)=(Xn​Wq​)M

    WiW_iWi​都是需要学习的参数用于记忆交互和维度降低(k×d→d×d′k\times d \rightarrow d \times d^\primek×d→d×d′)。如果把上面两个过程写到一起:

    ()()T()()^T()()T是一个内积计算,可以看做是在求两个表征的相似性因子。所以此时从全局记忆中取回的信息是与当前的clip与其他clip的相似性成比例的。相比self-attention机制,这种方法在计算和内存消耗上更加高效,因为它不需要存储所有的clip-level features也不需要在所有的clips之间进行逐对比较。

Context Infusion

  • residual connection:一种组合MnM_nMn​和XnX_nXn​的方式是通过残差连接:Xn^=MnWO+Xn,WO∈Rd×d′\hat{X_n}=M_nW_O+X_n, W_O \in \mathbb{R}^{d \times d^\prime}Xn​^​=Mn​WO​+Xn​,WO​∈Rd×d′, WOW_OWO​是一个用于匹配特征维度的线性变换。但是这种方式在实验中表现并不好,模型容易对MnM_nMn​过拟合。因为MnM_nMn​相对于XnX_nXn​包含了更加丰富的信息,在训练过程中模型也主要依赖于前者而对后者的使用比较小。(可以参考4.3节的Fig. 5)
  • feature gating:相比于让模型直接接触到MnM_nMn​,feature gating强迫模型使用背景信息对不同clip-level features的强度重新标定。具体是使用如下的方式:

​ Xn^=(J+σ(Mn^WO))⊙Xn\hat{X_n}=(J+\sigma(\hat{M_n}W_O)) \odot X_nXn​^​=(J+σ(Mn​^​WO​))⊙Xn​

​ 其中σ\sigmaσ是sigmoid函数,JJJ是一个用于残差连接的全1矩阵(跟1做乘法不会改变原始数值,σ()\sigma()σ()决定了clip-level特征中每个元素相对原始数值的缩放比例。因此称之为残差),Mn^=GAP(Mn)\hat{M_n}=GAP(M_n)Mn​^​=GAP(Mn​),GAP=global average pooling. feature gating可以看做是channel-wise的注意力机制类似于context gating ([34], [58])以及SE block ([22]).通过使用feature gating,模型的优化变得更加简单了。

Video-level Supervision

Video-level supervision

video-level loss = clip-level loss + aggregated loss of all N clips:

​ Lvideo=1N∑n=0N−1L(h(Xn^))+αL(H)L_{video}=\frac{1}{N}\sum_{n=0}^{N-1}L(h(\hat{X_n})) + \alpha L(H)Lvideo​=N1​n=0∑N−1​L(h(Xn​^​))+αL(H)

其中H=1N∑n=0N−1h(g(Xn,Mn))H=\frac{1}{N}\sum_{n=0}^{N-1}h(g(X_n, M_n))H=N1​∑n=0N−1​h(g(Xn​,Mn​)),在原文中这一过程被称为average pooling。L都是cross-entropy loss。

Coping with the GPU Memory Constraint

Batch reduction

​ 假如在当前环境下允许的最大的batchsize为BBB(单位为clip),则文中所提出的方法可以将batchsize降为B^=round(B/N)\hat{B}=round(B/N)B^=round(B/N), (单位为video,用筛选出的N个clips来代表一个video)。为了能够在更新batchnorm参数时提高clip的多样性,作者提出在计算batch-norm统计值(batch-norm statistics)只使用来自不同video的clips。这种方式不能支持任意大小的N,但是它简单,高效,在实践中可以适用于绝大多数的设置。(没看明白这为什么算是解决内存限制的。

Multi-iteration

​ 相比于在一个batch中直接加载进所有的N个clips,还可以将这N个clips在N个不同的batch中分别用于训练。当与记忆协同机制合并时,只需要执行一个两次扫描(two-scan)过程:

  1. 生成clip-based features,用于构建全局记忆MMM;
  2. 输出注入全局记忆信息后的每个clip的分类结果。

这种方式可以满足任意大小的N,而且对内存是友好的。

Slow-only和R(2+1)D这两个模型,Batch reduction都比Multi-iteration训练的效果更好,分别高了1和2个百分点。

本文没有公开代码,所以具体实现仍然需要研究。

《Beyond Short Clips: End-to-End Video-Level Learning with Collaborative Memories》论文笔记相关推荐

  1. 论文笔记之Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 论文链接:http://dwz.cn/6qPeIb 本文的主要思想是为了剖析出一个跟踪算法中到 ...

  2. 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    本人为目标追踪初入小白,在博客下第一次记录一下自己的论文笔记,如有差错,恳请批评指正!! 论文相关信息:<Understanding and Diagnosing Visual Tracking ...

  3. 论文笔记Understanding and Diagnosing Visual Tracking Systems

    最近在看目标跟踪方面的论文,看到王乃岩博士发的一篇分析跟踪系统的文章,将目标跟踪系统拆分为多个独立的部分进行分析,比较各个部分的效果.本文主要对该论文的重点的一个大致翻译,刚入门,水平有限,如有理解错 ...

  4. 目标跟踪笔记Understanding and Diagnosing Visual Tracking Systems

    Understanding and Diagnosing Visual Tracking Systems 原文链接:https://blog.csdn.net/u010515206/article/d ...

  5. 追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems)

    追踪系统分模块解析(Understanding and Diagnosing Visual Tracking Systems) PROJECT http://winsty.net/tracker_di ...

  6. ICCV 2015 《Understanding and Diagnosing Visual Tracking Systems》论文笔记

    目录 写在前面 文章大意 一些benchmark 实验 实验设置 基本模型 数据集 实验1 Featrue Extractor 实验2 Observation Model 实验3 Motion Mod ...

  7. Understanding and Diagnosing Visual Tracking Systems

    文章把一个跟踪器分为几个模块,分别为motion model, feature extractor, observation model, model updater, and ensemble po ...

  8. CVPR 2017 SANet:《SANet: Structure-Aware Network for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做SANet.作者在论文中提到,CNN模型主要适用于类间判别,对于相似物体的判别能力不强.作者提出使用RNN对目标物体的self-structure进行建模,用于提 ...

  9. ICCV 2017 UCT:《UCT: Learning Unified Convolutional Networks forReal-time Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文模型叫做UCT.就像论文题目一样,作者提出了一个基于卷积神经网络的end2end的tracking模型.模型的整体结构如下图所示(图中实线代表online trackin ...

  10. CVPR 2018 STRCF:《Learning Spatial-Temporal Regularized Correlation Filters for Visual Tracking》论文笔记

    理解出错之处望不吝指正. 本文提出的模型叫做STRCF. 在DCF中存在边界效应,SRDCF在DCF的基础上中通过加入spatial惩罚项解决了边界效应,但是SRDCF在tracking的过程中要使用 ...

最新文章

  1. 转载:常用正则表达式大全!(例如:匹配中文、匹配html)
  2. mxnet METRIC自定义评估验证函数
  3. 使用ramdisk 优化nagios IO性能
  4. OpenCV中LUT函数的使用
  5. C 运算符和语句总结
  6. 看阿里云如何用云上技术创新,帮助哈啰单车实现智能数据收治
  7. Docker自动构建开发测试平台
  8. Grunt-Kmc基于KISSY项目打包
  9. php代码实现tp5监听队列,thinkPHP5的队列使用
  10. linux spi flash id,SPI Flash(W25Q16DV) 基本操作
  11. Silverlight 游戏开发小技巧:技能冷却效果1(Cooldown)
  12. NCPC 2015 A Adjoin the Networks(好题)
  13. spring mvc 响应处理post请求和get请求 测试
  14. 什么是HTTP状态码 常见状态码集合
  15. 到底如何保证线程安全,总结得太好了。。
  16. div标签别样的属性——tabindex
  17. 详解 Redis 应用场景及应用实例
  18. android专项测试题,Android期末测考试试题(附带答案).doc
  19. 500行C++代码实现软件渲染器 - 0.引言
  20. shape文件格式简单说明

热门文章

  1. 罗振宇2022“时间的朋友”跨年演讲全文稿(pdf)
  2. HTTP请求OPTION方法
  3. 2014年中科院地理所博士考试真题遥感概论
  4. 十三、JavaSE-IO体系
  5. shell脚本编程学习笔记2(xdl)——Bash变量
  6. 简单的网页制作期末作业——HTML+CSS+JavaScript小礼品购物商城网站
  7. 沈南鹏@《遇见大咖》: A轮没投,投了8个月以后就证明了张一鸣是对了,在美国都没有张一鸣这种模式...
  8. 了解中国的组织结构后续
  9. Power OJ 2844: New contest【模拟】
  10. html引用外部css文件(使用绝对路径)