论文:Two-Stream Convolutional Networks for Action Recognition in Videos
链接:https://arxiv.org/abs/1406.2199

这篇文章是NIPS 2014年提出一个two stream网络来做video action的分类,比较经典。two stream表示两个并行的网络:spatial stream convnet 和 temporal stream convnet. 这两个并行网络的作用是:The spatial stream performs action recognition from still video frames, whilst the temporal stream is trained to recognise action from motion in the form of dense optical flow.

Figure1是two stream convnet的示意图。其中spatial stream convnet网络的输入是静态图像,该网络是一个分类网络,用来识别行为。temporal stream convnet输入是multi-frame optical flow,optical flow是从video中提取的特征信息。作者在总结中提到对于temporal stream convnet,用optical flow(翻译过来是光流信息)作为输入的效果要远远优于用raw stacked frame(就是简单的一系列帧)作为输入。

可以看出optical flow是文章的关键词,那么什么是optical flow?可以看原文的一段解释如下截图。

所以optical flow是由一些displacement vector fields(每个vector用dt表示)组成的,其中dt是一个向量,表示第t帧的displacement vector,是通过第t和第t+1帧图像得到的。dt包含水平部分dtx和竖直部分dty,可以看Figure2中的(d)和(e)。因此如果一个video有L帧,那么一共可以得到2L个channel的optical flow,然后才能作为Figure1中temporal stream convnet网络的输入。

FIugre2中的(a)和(b)表示连续的两帧图像,(c)表示一个optical flow,(d)和(e)分别表示一个displacement vector field的水平和竖直两部分。

所以如果假设一个video的宽和高分别是w和h,那么Figure1中temporal stream convnet的输入维度应该是下面这样的。其中τ表示任意的一帧。

那么怎么得到Iτ?文章主要介绍了两种Iτ的计算方式,分别命名为optical flow stacking和trajectory stacking,这二者都可以作为前面temporal stream convnet网络的输入,接下来依次介绍。

optical flow stacking
式子1列出了分别得到水平和竖直方向的Iτ的计算公式,其中(u,v)表示任意一个点的坐标。因此 Iτ(u,v,c) 存的就是(u,v)这个位置的displacement vector。原文:For an arbitrary point (u,v), the channels Iτ(u,v,c); c = [1; 2L] encode the motion at that point over a sequence of L frames。如Figure3的左图所示。

trajectory stacking
式子2是关于如何得到Iτ,其中Pk表示k-th point along the trajectory。因此 Iτ(u,v,c) 存的就是vectors sampled at the locations Pk along the trajectory。如Figure3的右图所示。

Figure3分别介绍了optical flow stacking和trajectory stacking。

spatial stream convnet因为输入是静态的图像,因此其预训练模型容易得到(一般采用在ImageNet数据集上的预训练模型),但是temporal stream convnet的预训练模型就需要在视频数据集上训练得到,但是目前能用的视频数据集规模还比较小(主要指的是UCF-101和HMDB-51这两个数据集,训练集数量分别是9.5K和3.7K个video)。因此作者采用multi-task的方式来解决。怎么做呢?首先原来的网络(temporal stream convnet)在全连接层后只有一个softmax层,现在要变成两个softmax层,一个用来计算HDMB-51数据集的分类输出,另一个用来计算UCF-101数据集的分类输出,这就是两个task。这两条支路有各自的loss,最后回传loss的时候采用的是两条支路loss的和。

实验结果:
Table1是两个网络的实验结果,数据集都是UCF-101,该数据集包含13K的videos,平均每个video包含180帧图像,有101个action class。另外multi-task有用到HMDB-51数据集,其包含6.8K的video,有51个action class。(a)是spatial stream convnet,主要对比了从头开始训练(from scratch)和在预训练模型上做fine tune的差别(pre-trained+fine tuning表示用预训练网络的参数初始化所有层,然后对所有层fine tune;pre-trained+last layer同样是用预训练网络的参数初始化所有层,但是只对最后一层fine tune,也就是前面那些层的参数在初始化后固定不变)。从实验结果可以看出直接在UCF-101数据集上从头开始训练容易过拟合。在后面的实验中作者采用第三种做法,也就是在预训练模型的基础上只fine tune最后一层的参数。(b)表示temporal stream convnet的几种不同类型输入的差别,训练都是从头开始(from scratch)。其中optical flow stacking和trajectory stacking在前面都介绍过了,注意L参数对结果的影响,第一行中L=1相当于只给了一帧图像,另外在后面的实验中作者采用L=10。可以看出optical flow stacking的效果要优于trajectory stacking。最后一行的bi-dir表示bi-directional optical flow,感兴趣的可以看原文。通过对比(a)和(b)可以看出temporal stream convnet的效果要优于spatial stream convnet,这说明对于action recognition而言,motion information的重要性。
另外,文中的一句话写得很好:This shows that while multi-frame information is important, it is also important to present it to a ConvNet in an appropriate manner. 翻译过来就是:都知道是那个理,就看你怎么实现了。哈哈

Table2是multi task的实验结果。主要的修改内容包括:(i) fine-tuning a temporal network pre-trained on UCF-101; (ii) adding 78 classes from UCF-101, which are manually selected so that there is no intersection between these classes and the native HMDB-51 classes; (iii) using the multi-task formulation to learn a video representation, shared between the UCF-101 and
HMDB-51 classification tasks. Table2中的实验正是对比这几个修改的效果。

Table3是two-stream convnet的不同构建方式的实验结果对比。几个结论:(i) temporal and spatial recognition streams are complementary, as their fusion significantly improves on both (6% over temporal and 14% over spatial nets); (ii) SVM-based fusion of softmax scores outperforms fusion by averaging; (iii) using bi-directional flow is not beneficial in the case of ConvNet fusion; (iv) temporal ConvNet, trained using multi-task learning, performs the best both alone and when fused with a spatial net.

Table4是two stream convnet和其他算法的对比

Two-Stream Convolutional Networks for Action Recognition in Videos算法笔记相关推荐

  1. 视频动作识别--Two-Stream Convolutional Networks for Action Recognition in Videos

    Two-Stream Convolutional Networks for Action Recognition in Videos NIPS2014 http://www.robots.ox.ac. ...

  2. 双流网络: Two-Stream Convolutional Networks for Action Recognition in Videos

    Contents Introduction Two-stream architecture for video recognition Evaluation Enlightenment Referen ...

  3. 【论文模型讲解】Two-Stream Convolutional Networks for Action Recognition in Videos

    文章目录 前言 0 摘要 1 Introduction 1.1 相关工作 2 用于视频识别的双流结构 3 光流卷积神经网络(时间流) 3.1 ConvNet 输入配置 4 实现细节 4.1 测试 4. ...

  4. 深度学习-视频行为识别:论文阅读——双流网络(Two-stream convolutional networks for action recognition in videos)

    这里写目录标题 视频的行为识别 前言 背景 内容组成 主要贡献 算法介绍 网络结构 双流(two stream)网络结构 空间流卷积网络(Spatial stream ConvNet) 时间流卷积网络 ...

  5. Two-Stream Convolutional Networks for Action Recognition in Videos双流网络论文精读

    Two-Stream Convolutional Networks for Action Recognition in Videos双流网络论文精读 论文:Two-Stream Convolution ...

  6. 【论文学习】Two-Stream Convolutional Networks for Action Recognition in Videos

    Two-Stream Convolutional Networks for Action Recognition in Videos 原文地址 粗略翻译 摘要: 我们研究了视频中用于训练动作识别的深度 ...

  7. 【视频分类论文阅读】Two-Stream Convolutional Networks for Action Recognition in Videos

    论文是视频分类的开山之作,采用了一个双流网络,是空间流和事件流共同组成的,网络的具体实现都是CNN,空间流的输入是静止的图片,来获取物体形状大小等appearance信息,时间流的输入是多个从两帧之间 ...

  8. 译:Two-stream convolutional networks for action recognition in videos

    该篇文章为视频识别十分经典的一篇论文也是入门文章,开创了比较经典的双流(时间流+空间流)神经网络,本人发现很多大神博主翻译的论文不是特别完整,故按照原文与个人理解整理完整翻译见下. 摘要:我们研究了用 ...

  9. [论文阅读笔记]Two-Stream Convolutional Networks for Action Recognition in Videos

    Karen Simonyan Andrew Zisserman  Visual Geometry Group, University of Oxford  fkaren,azg@robots.ox.a ...

最新文章

  1. Activiti——流程执行历史记录(七)
  2. Android-环境问题
  3. new Random().Next(1, 100); 多线程同时执行结果很高概率相同,
  4. webservice 缓存机制
  5. DataWorks支持PyODPS类型任务
  6. ServiceComb抛出llegalStateException: The schema(id=[xxx]) ...异常解决办法
  7. ModuleNotFoundError: No module named ‘Crypto‘ 踩坑
  8. 一篇 CPU 占用高,导致请求超时的故障排查
  9. 弹性盒怎么实现左边图片右边文字_【粉丝问题】如何用ps修改照片中的文字数字?...
  10. php源码 备课系统,电子教案管理系统2012版 V3.2
  11. c语言递归算法兔子问题,Java递归算法经典实例(经典兔子问题)
  12. 从项目中由浅入深的学习vue,react,微信小程序和快应用(1)
  13. MapReduce:Combiner与Shuffle阶段之Reducer输入
  14. java 替换字母_【Java项目】将字符串中的字母全部替换成字母的下一个字母
  15. java 运算符的讲解
  16. 【解决方案】t2gp.exe - 损坏的映像 | libcef.dll没有被指定在 Windows 上运行
  17. SELinux 学习总结
  18. eclipse32位安装教程_Mastercam X6/(32位、64位) 软件安装教程
  19. drill apache_大数据SQL:Apache Drill查询执行功能概述–白板演练
  20. Linux ARM平台开发系列讲解(网络篇) 2.3 Marvell 88EA6321/88EA6320 Switch 设备树的配置分析

热门文章

  1. 企业微信通讯录同步 - Python版
  2. 黑帽seo收徒:目录站群的十三项功能
  3. 九州云获颁“2021年度企业”荣誉奖
  4. 【Python定义一个函数,输出100以内是3的倍数的所有偶数】
  5. Web image标签 有些JPG格式照片不能显示问题 解释及解决
  6. 杰理之SD说明【篇】
  7. 共创·共享·共赢 2020重庆市建筑材料协会行业交流会圆满举行
  8. java计算机毕业设计网上汽车售票系统源代码+数据库+系统+lw文档
  9. 操盘手给你讲市场理念
  10. 机器学习的VC维度(机器学习基石)