Multi-Fiber Networks for Video Recognition (MFNet)

Motivation:减少时空网络的计算量,保持视频分类精度的基础上,使速度尽可能接近对应网络的2D版本。
为此提出 Multi-Fiber 网络,将复杂网络拆分成轻量网络的集成,利用 fibers 间的信息流引入多路器模块。
Result:比I3D和R(2+1)D分别少9倍,13倍的计算量,但精度更高,UCF-101, HMDB-51 and Kinetics 上的 state of the art。
2D网络需要10s GFLOP来处理单帧,3D网络需要100s GFLOP处理一个clip,作者认为3D网络有能力进一步提高因为融入了时空信息。
3D卷积开销很大,与Du tran和Xie Saining提出的R(2+1)D和S3D用1x3x3, 3x1x1时空分解卷积替代3x3x3这种做法不同,因为相对其2D版本仍有数量级的复杂度,以上两种方法很难在实际应用,受low-power MobileNet-v2网络的启发以及通过分组卷积稀疏化做法的启发,作者提出稀疏连接结构,并在2D CNN图片分类上实验确认结构的有效性,后扩展为时空CNN。

(a) resnet block (b) resNeXt block (c) fibers(author) (d) 加入multiplexer 传递不同fiber间信息 (e) 两个线性层降维和升维
resNeXt的中间模块对通道分组后分别用3x3卷积,bottleneck结构+分组卷积会很大程度降低计算量。d中可以看出去除了对整个通道的1x1卷积(全连接),引入了multiplexer层弥补信息损失,将主干feature的channel全部分组后,平行的残差计算,其中每一个分支称为(fiber)
resnet两个conv的简化连接数计算,其中Min表示输入channel,Mmid,Mout等同:

如果这个运算单元channel的维数增加k倍,那么运算量将增加K的平方倍。反之,减小也是2次的减小。

对channel切分为N个并行且独立的模块后,总的简化连接的数量,可见是直接resnet模块的1/N倍,实验中N=16。
Multi-Fiber Networks
2D图片域的验证:
1. 基于ResNet-18和MobileNet-v2的baseline,将其中的模块替换为多纤维模块
2. 重新设计了一个2D MF-Net

可以看出,Multi-Fiber结构在ResNet-18和MobileNet-v2上可以在少量降低计算量和参数量的情况下,精度上有一定提高,表明模块的有效性。而MF-Net也在参数和计算量较低的情况下达到了不错的效果。最后一栏实验则表明了Multiplexer模块大概会占据30%的计算量,但对效果的提升也是比较明显的。
3D版本

为了降低计算量,两层卷积只有一层进行了时序上的卷积
UCF101和HMDB51上的结果

Kinetics分类结果分析
在400类中有190类准确率超过80%,349类超过50%。只有17类低于30%效果糟糕。
特别的是那些准确率高的类,其特点:
1. 相对别的类有特殊的物体/背景
2. 跨越较长时间所发生的特殊动作
识别不好的类,其特点:
通常没有可区分的物体或在长视频中目标动作持续很短
部分参考自:
知乎林天威
Multi-Fiber Networks for Video Recognition (MFNet)的更多相关文章
- 【ML】Two-Stream Convolutional Networks for Action Recognition in Videos
Two-Stream Convolutional Networks for Action Recognition in Videos & Towards Good Practices for ...
- Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition Kaiming He, Xiangyu Zh ...
- 目标检测--Spatial pyramid pooling in deep convolutional networks for visual recognition(PAMI, 2015)
Spatial pyramid pooling in deep convolutional networks for visual recognition 作者: Kaiming He, Xiangy ...
- PredNet --- Deep Predictive coding networks for video prediction and unsupervised learning --- 论文笔记
PredNet --- Deep Predictive coding networks for video prediction and unsupervised learning ICLR 20 ...
- SPPNet论文翻译-空间金字塔池化Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
http://www.dengfanxin.cn/?p=403 原文地址 我对物体检测的一篇重要著作SPPNet的论文的主要部分进行了翻译工作.SPPNet的初衷非常明晰,就是希望网络对输入的尺寸更加 ...
- Multi-Agent Reinforcement Learning Based Frame Sampling for Effective Untrimmed Video Recognition
Multi-Agent Reinforcement Learning Based Frame Sampling for Effective Untrimmed Video Recognition IC ...
- 深度学习论文翻译解析(九):Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
论文标题:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition 标题翻译:用于视觉识别的深度卷积神 ...
- Local Relation Networks for Image Recognition
目录 概 主要内容 Hu H., Zhang Z., Xie Z., Lin S. Local relation networks for image recognition. In Internat ...
- 论文阅读笔记二十五:Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition(SPPNet CVPR2014)
论文源址:https://arxiv.org/abs/1406.4729 tensorflow相关代码:https://github.com/peace195/sppnet 摘要 深度卷积网络需要输入 ...
随机推荐
- 【转】Java并发编程:synchronized
一.什么时候会出现线程安全问题? 在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的资源:一个变量.一个对象.一个文件.一个数据库表等,而 ...
- 【转】C++对成员访问运算符->的重载
运算符->的重载比较特别,它只能是非静态的成员函数形式,而且没有参数. 1.如果返回值是一个原始指针,那么就将运算符的右操作数当作这个原始指针所指向类型的成员进行访问: 2.如果返回值是另一个类 ...
- 【转】Linux下gcc生成和使用静态库和动态库详解
一.基本概念 1.1 什么是库 在Windows平台和Linux平台下都大量存在着库. 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不 ...
- hibernate框架学习之对象状态
lHibernate对象共有三种状态 •瞬时状态:瞬时对象 •持久化状态:持久化对象 •托管状态:托管对象 l瞬时对象(Transient Object),简称TO l瞬时对象指的是应用程序创建出来的 ...
- [JLOI2011]飞行路线 不同的算法,不同的悲伤
题目 :BZOJ2763 洛谷P4568 [JLOI2011]飞行路线 一道最短路的题目,想想写个题解也不错(好久没写题解了_(:з」∠)_) 然后这道题中心思路是dijikstra处理最短路,所以没 ...
- hdu 4825 && acdream 1063 01字典树异或问题
题意: 给一个集合,多次询问,每次给一个k,问你集合和k异或结果最大的哪个 题解: 经典的01字典树问题,学习一哈. 把一个数字看成32位的01串,然后查找异或的时候不断的沿着^为1的路向下走即可 # ...
- C++面向对象的特点
C++面向对象的特点 面向对象的特点主要有: 封装, 继承, 多态; 现在自己的简单理解如下, 但要明白具体怎么实现, 背后的原理是什么? 什么是封装, C++怎么实现封装 封装的大致可以分为: 函数 ...
- 转-CSRF&OWASP CSRFGuard
一. 什么是CSRF?CSRF(Cross-Site Request Forgery)直译的话就是跨站点请求伪造也就是说在用户会话下对某个需要验证的网络应用发送GET/POST请求——而这些请求是未经 ...
- php7静态方法的链式调用
2018-1-11 20:25:48 星期四 情景: 以前想要链式调用必须先 new 一个对象, 然后 $obj->aa()->bb()... 现在PHP7 (php7.0.13 php ...
- JS:判断是否是移动端
通过User-Agent判断 代码: if(navigator.userAgent.match(/mobile/i)) { //业务层代码 $('body').removeClass("si ...