热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

S3D算法详解

S3D论文详解论文地址:RethinkingSpatiotemporalFeatureLearning:Speed-AccuracyTrade-offsinVide

S3D论文详解

论文地址:Rethinking Spatiotemporal Feature Learning: Speed-Accuracy Trade-offs in Video Classification

代码地址(pytorch非官方):https://github.com/kylemin/S3D

文章是谷歌发表于ECCV2018,为了平衡视频理解算法精度和速度,提出了S3D这个视频理解网络。

文章首先提出了下列问题:


  1. 是否需要3D卷积?如果是,哪些层需要是3D卷积哪些可以是2D卷积?这些操作会和测试的数据有关吗?
  2. 是否需要将时空信息同时进行卷积操作,或者说是否可以时间信息和空间信息分别提取?
  3. 如果在之前的工作上,增加模型的准确率和速度,同时减小显存占用?

对应上述问题,文章给出的做法:


  1. 文章在I3D模型的基础上,提出了两种I3D的变式。一种是Bottom-Heavy-I3D,这种模型就是保持低层卷积(靠近图片输入的层)为3D卷积,高层卷积为2D卷积。还有一种称为Top-Heavy-I3D,这种模型就是保持高层卷积(靠近模型输出的层)为3D卷积,低层卷积为3D卷积。如下图1所示。通过实验文章发现,虽然Top-Heavy-I3D模型忽略了低层运动信息但它却有更高的准确率,并且因为3D卷积是在高层,处理的feature相比于低层要小,所以速度也要快。至于是否需要3D卷积下面会进行说明。
  2. 为了回答上述第二个问题,文章将网络中的3D卷积使用时间和空间两种卷积来替换,例如将kt×k×kk_t\times k\times kkt×k×k大小的3D卷积核采用一个空间卷积1×k×k1\times k\times k1×k×k紧跟一个时间卷积kt×1×1k_t\times 1\times 1kt×1×1来取代,其中ktk_tkt表示时间维度的核大小,kkk为空间维度的核大小。文章实验发现这种模型修改方法在效率和准确率上都优于原始的I3D。本文的模型称为S3D,其实是separable3DCNNseparable\ 3D\ CNNseparable 3D CNN的缩写。
  3. 第三问的答案其实前两问已经解决了差不多了,文章另外利用了时空门机制(spatio-temporal gating mechanism)设计了一个新的模型结构称为S3D-G网络提高了最终的模型识别率。

在这里插入图片描述

下面来看一下文章的实验来对上述问题给出答案。


一、网络结构

为了方便解释先将几种结构示意图如下图展示出来。
在这里插入图片描述


1.1 将网络中所有的3D用2D卷积来替换

将I3D网络(上图中的a)所有的3D卷积采用2D卷积来代替,如上面上图中的b。为了减小显存和计算量,在12D中保留两个时序stride为2的max pooling 层。I3D和I2D在数据库Kinetics-Full和Something-Something数据库上的实验如下:

在这里插入图片描述

上面可以很明显的看出I3D的效果在两个数据库上都优于I2D(所有3D卷积是需要的)。还有一个需要注意的是上述实验中有normal和reversed两种实验,normal表示输入的帧是正常的视频顺序,reversed则表示输入的帧是翻转的顺序。可以看出在Kinetics数据集上两种顺序对网络的影响不大,所以这个数据库对于时间顺序这种信息要求不高。但是something-something数据库在I3D网络下性能急剧下降,说明该数据库对于时间顺序信息要求比较高。(比如拿东西和放东西这种情况)。这也进一步能说明I3D能很好的提取出时序特征。


1.2 将网络中的部分3D卷积用2D卷积来替换

将I3D网络中的部分3D卷积用2D卷积来替换,文章给出两种结构一个是上图中c所示的Bottom-Heavy-I3D,一个是上图d所示的Top-Heavy-I3D。

从下图的实验结果可以看出,在相同的FLOPS的情况下Top-Heavy-I3D的效果会比Bottom-Heavy-I3D好。而且很明显的Top-Heavy-I3D会速度更快,因为Top-Heavy-I3D中3D卷积输入的特征图会小。这说明3D卷积更适合放在处理高层次的语义特征。
在这里插入图片描述

到这里已经回答了开篇的问题一,下面来回答问题二。


1.3 将网络中的时空卷积进行时间和空间的拆分(其实就是R(2+1)D的结构)

文章将3D卷积用一个维度为[1,k,k]的2D空间卷积跟上一个维度为[k,1,1]的1D时间卷积来代替。将这种拆分后的结构应用到I3D中,我们称为S3D(separable3DCNNseparable\ 3D\ CNNseparable 3D CNN)。结构如下图所示(在下文中除非有特殊说明,否则S3D都指的是下图的结构)。
在这里插入图片描述

上图中粉色的sep-conv有具体示意图,红色为含有sep-conv的Inception blocks。原始的2D Inception block、3D Inception block和含有sep-conv的Inception block的结构分别如下图所示。

在这里插入图片描述

从下表中的实验结果可以看出S3D不仅效果好,参数量和计算量都比I3D小。

在这里插入图片描述
在这里插入图片描述

并且从上述1.2部分给出的实验结果折线图可以看出,带有separable 3D卷积的Top-Heavy模型(Top-Heavy-S3D)无论是速度还是效果都是最佳的。从图中还可以看到Top-Heavy-S3D线上有一个拐点,我们称为"Fast-S3D",它的结构是top 2的两层为separable 3D,其余层为2D。

到这里已经回答了问题二。文章在S3D的基础上增加了一个门操作进一步提高的网络的精度。


1.4 时空特征门(Spatio-temporal feature gating)

为了进一步提高网络的精度,文章提出了一个Spatio-temporal feature gating的操作。该操作其实很简单,就是对于输入x,输出y通过下式得到:

y=σ(Wx+b)⊙xy=\sigma(Wx+b)\odot xy=σ(Wx+b)x

其中⊙\odot表示元素乘,x∈Rn,y∈Rnx\in R^n,y\in R^nxRn,yRn分别表示输入输出, W∈Rn×nW\in R^{n\times n}WRn×n表示权重,b∈Rnb\in R^nbRn表示bias。这个机制就是想将σ(Wx+b)\sigma(Wx+b)σ(Wx+b)中预测为重要的x增加一部分权重,不重要的x则减少权重。

这个门操作可以放在网络的任何地方,经过文章实验,文章发现将这个操作放在S3D网络中的每一个[k,1,1]时间卷积后面效果最好,文章称这个网络为S3D-G。

文章的网络结构构建就完成了,具体的实验细节请查询文章。

视频算法交流qq群:657626967


推荐阅读
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • navicat生成er图_实践案例丨ACL2020 KBQA 基于查询图生成回答多跳复杂问题
    摘要:目前复杂问题包括两种:含约束的问题和多跳关系问题。本文对ACL2020KBQA基于查询图生成的方法来回答多跳复杂问题这一论文工作进行了解读 ... [详细]
  • PyTorch框架中有一个非常重要且好用的包:torchvision,该包主要由3个子包组成,分别是:torchvision.datasets、torchvision.models、torchv ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
author-avatar
七月de七月小
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有