论文:Temporal Segment Networks: Towards Good Practices for Deep Action Recognition
论文链接:https://arxiv.org/abs/1608.00859
代码链接一:https://github.com/yjxiong/temporal-segment-networks
代码链接二:https://github.com/yjxiong/tsn-pytorch

这篇ECCV2016的文章主要提出TSN(temporal segment network)结构用来做视频的动作识别。TSN可以看做是双流(two stream)系列的改进(关于双流网络可以参看论文链接:https://arxiv.org/abs/1406.2199或者博客链接),在此基础上,文章要解决两个问题:1、是长时间视频的行为判断问题(有些视频的动作时间较长)。2、是解决数据少的问题,数据量少会使得一些深层的网络难以应用到视频数据中,因为过拟合会比较严重。

针对第一个问题,首先,为什么目前的双流结构网络难以学习到视频的长时间信息?因为其针对的主要是单帧图像或者短时间内的一堆帧图像数据,但这对于时间跨度较长的视频动作检测而言是不够的。因此采用更加密集的图像帧采样方式来获取视频的长时间信息是比较常用的方法,但是这样做会增加不少时间成本,同时作者发现视频的连续帧之间存在冗余,因此想到用稀疏采样代替密集采样,也就是说在对视频做抽帧的时候采取较为稀疏的抽帧方式,这样可以去除一些冗余信息,同时降低了计算量。

针对第二个问题,可通过常规的数据增强方式,比如随机裁剪,水平翻转等;另外还有作者提到的交叉预训练,dropout等方式来减少过拟合。这些后面会详细解释。

Figure2是作者用到的输入数据形式。我们知道对于图像而言,特征可能就只有图像本身,但是视频的特征就比较丰富,除了帧以外,还有光流(optical flow)等,如Figure2所示。注意,这也是作者解决数据量少的一种方法,那就是从有限的数据中提取更多有用的特征。从最左边开始说起,RGB image就是video中的某一帧图像;RGB difference是相邻两帧图像的差,可以用来表达动作信息;optical flow field和warped optical flow field是视频的光流信息。RGB image和光流正是双流网络论文中的spatial stream convnet和temporal stream convnet两条支路的输入。因此这里作者相当于想额外研究RGB difference和warped optical flow对动作检测效果的影响。

Figure1就是作者提出的TSN网络。网络部分是由双路CNN组成的,分别是spatial stream ConvNets和temporal stream ConvNets,这和双流网络文章中介绍的结构类似,在文中这两个网络用的都是BN-Inception(双流论文中采用的是较浅的网络:ClarifaiNet)。那么这两路CNN以什么为输入呢?spatial stream ConvNets以单帧图像作为输入,temporal stream ConvNets以一系列光流图像作为输入,换句话说两个网络的输入类型是不一样的。
当然最重要的是temporal segment network(包含多个spatial stream convnet和temporal convnet,参看Figure1)的输入不是单帧图像或短时间内的一堆图像帧,而是从视频中稀疏采用得到的一系列snippets,这就是为了获取视频的长时间信息所做的改进。

Figure1的最左边是一个Video,用V表示,将V分成K份(文中K采用3),用(S1,S2,…,Sk)表示。这样TSN网络就可以用下面这个式子表示:

这里的(T1,T2,…,Tk)表示K个snippets,snippets翻译过来也是小片段,也就是说Tk是从(S1,S2,…,Sk)中对应的视频片段Sk中随机采样出来的结果,Tk是一个snippet,每个snippet包含一帧图像和两个光流特征图。这也就完成了作者说的稀疏采样。上面式子中的W就是网络的参数,因此F(Tk;W)就是网络的输出,也就是该snippet属于每个类的得分。F函数的输出结果就是Figure1中spatial convnet或temporal convnet的输出结果,可以看Figure1中convnet图后面的绿色条形图,代表的就是socre在类别上的分布。g是一个融合函数,在文中采用的是均值函数,就是对所有snippet的属于同一类别的得分做个均值,毕竟我们最后要求的是这个video属于哪个类别,而不是这个video的某个snippet属于哪个类别。g函数的输出结果就是Figure1中segmental consesus的输出结果。最后用H函数(文中用的softmax函数)根据得分算概率,概率最高的类别就是该video所属的类别。注意,在输入softmax之前会将两条网络的结果进行合并,默认采用加权求均值的方式进行合并,文中用的权重比例是spatial:temporal=1:1.5。另外需要强调的是:Figure1中的K个spatial convnet的参数是共享的,K个temporal convnet的参数也是共享的,实际用代码实现时只是不同的输入过同一个网络。

网络的损失函数如下(standard categorical cross-entropy),C表示类别数,yi是标签。

其中G表示:

也就是说G是一个长度为C的向量,表示一个video属于每个类别的得分

前面提到过为了防止过拟合,作者采取了多个措施,其中一个就是交叉预训练,预训练我们都很熟悉,以图像为输入的spatial ConvNets网络可以用在imagenet数据集上预训练的网络来初始化。而以光流作为输入的temporal stream ConvNets网络该怎么初始化呢?答案就是交叉预训练,交叉预训练其实是将图像领域的预训练模型迁移到光流领域。 另外一个是partial BN,冻结了除第一个BN层以外的所有BN层的均值和方差。

实验结果:
Table1是关于不同训练策略下双流网络的效果对比。可以看出交叉预训练(主要提升了temporal convnets的效果)和partial BN with dropout是有效的。

Table2是关于网络的几种不同输入形式下two stream convnets的效果对比,数据集是UCF101。可以看到一般而言融合多种类型的输入可以达到更好的效果,尤其要利用光流信息。

Table3是关于前面TSN公式中的不同g函数对实验结果的影响。最后文章采用的是average的融合方式。

Table5是总结本文的一些基于双流网络的改进效果。

Table6是和其他视频行为识别算法在HMDB51和UCF101数据集上的对比,效果还是比较明显的。

最后的Figure3是作者对网络的可视化,个人感觉做的很不错。将两条网络,以及是否预训练的差异表达出来了。预训练后的网络显然可以提取到有效的特征信息。

TSN(Temporal Segment Networks)算法笔记相关推荐

  1. 行为识别论文笔记|TSN|Temporal Segment Networks: Towards Good Practices for Deep Action Recognition

    行为识别论文笔记|TSN|Temporal Segment Networks: Towards Good Practices for Deep Action Recognition Temporal ...

  2. [行为识别论文详解]TSN(Temporal Segment Networks)

    摘要 本文旨在设计有效的卷积网络体系结构用于视频中的动作识别,并在有限的训练样本下进行模型学习.TSN基于two-stream方法构建. 论文主要贡献: 提出了TSN(Temporal Segment ...

  3. TSN(temporal segment networks)环境配置

    1. anaconda创建虚拟环境 conda create -n Tsn python=3.7 2. 安装pytorch torchvision conda install pytorch==1.0 ...

  4. 【TSN(Temporal Segment Networks)】

      TSN可以看做是双流(two stream)系列的改进.   在此基础上,TSN网络要解决两个问题1.是长时间视频的行为判断问题(有些视频的动作时间较长).2.是解决数据少的问题,数据量少会使得一 ...

  5. 动作识别阅读笔记(三)《Temporal Segment Networks: Towards Good Practices for Deep Action Recognition》

    (注:为避免中文翻译不准确带来误解,故附上论文原句.) 论文:Wang L , Xiong Y , Wang Z , et al. Temporal Segment Networks: Towards ...

  6. 论文学习:(TSN)Temporal segment networks: Towards good practices for deep action recognition

    论文:<Temporal Segment Networks:Towards Good Practices for Deep Action Recognition> 目录 0.导论 1.TS ...

  7. Temporal Segment Networks for Action Recognition in Videos 用于动作识别的时序分割网络

    Temporal Segment Networks for Action Recognition in Videos 用于动作识别的时序分割网络 本文原创,欢迎转载 https://blog.csdn ...

  8. 视频动作识别--Temporal Segment Networks: Towards Good Practices for Deep Action Recognition

    Temporal Segment Networks: Towards Good Practices for Deep Action Recognition ECCV2016 https://githu ...

  9. 【论文阅读】Temporal Segment Networks: Towards Good Practices for Deep Action Recognition

    Abstract 卷积网络在动作识别领域带来的提升不像图像领域那么大 提出TSN,基于长距离时序建模的思想,结合时序稀疏采样(sparse temporal sampling)策略和视频级监督(vid ...

最新文章

  1. 从Nature 封面文章“天机”芯片看脑科学与AI的融合
  2. 系列TCP/IP协议-广播与多播(010)
  3. python测试用例怎么写_Python单元测试unittest的具体使用示例
  4. Android电商抢购倒计时,Android限时抢购倒计时实现代码
  5. python中的成员运算符_在Python中使用成员运算符的示例
  6. glassfish发布应用_Arquillian 1.0.0.Final正式发布! 准备使用GlassFish和WebLogic! 所有虫子死亡!...
  7. Lambda表达式使用2
  8. 复制带随机节点的链表
  9. 海奥华预言--第一章 神秘邀请
  10. 比反射更快:委托 第3部分
  11. 为什么ctrl+shift+方向键不管用了_键盘侠丨Shift键的快捷运用
  12. HBase权威指南【中文版】
  13. jQuery初学笔记一,美元符号$
  14. 【LG-P1251】餐巾计划问题
  15. 【JZOJ1320】拯救奶牛
  16. 软件项目管理 6.5.自下而上估算法
  17. 借用 potplayer 播放器,在本地播放 b 站视频也能看弹幕了
  18. 使用Wiredtiger恢复MongoDB中collection-x-xxx.wt文件数据
  19. wireshark--工具使用记录----TCP acked unseen segment
  20. 什么是物联网平台,从完整的物联网系统架构来介绍物联网平台

热门文章

  1. 荣耀全明星不显示服务器,LoveLive!学园偶像祭 全明星无法连接服务器是什么原因...
  2. Android 经典 Crash 分析,Android Crash 原理分析
  3. 6-2 统计专业人数 (10分)
  4. vue使用高德地图搜索地址添加标记marker,定位,拖拽选址功能
  5. iOS 大型项目开发漫谈
  6. 开源中国码云git连接
  7. 解决win10更新打印机共享问题
  8. vim 全局替换_有一说一,Intellij IDEA 自带的 Vim 插件真心不错!
  9. 消费商时代来临,日常消费成为投资
  10. 工作5年的阿里Java程序员分享从业心得总结,写给还在迷茫的朋友