论文笔记C3D:Learning Spatiotemporal Features with 3D Convolutional Networks

2023-11-06

思考

对视频进行描述,其描述子必须:

1.具有普遍性以适应各种场景;

2.必须短小紧凑

3.必须利于计算

4.必须易于实现

图像识别中,特征提取的很完备和优秀,但不适用于视频。本文致力于利用3D CNN提取时空特征。我们只用线性分类器来分类它们,以验证特征好坏。并且这些特征可以被拿来做各种视频分析任务,无需针对任务再调整模型(就笔者知道的,包括video caption, temporal action detection等任务都有许多人使用C3D来提取特征)。

本文的发现

1.用实验验证了3D卷积深度模型很适合同时提取外貌和时空特征;

2.发现3×3×3的卷积核表现最好

3.在4个任务,6个不同的benchmark上,仅仅用我们提取的特征加上线性分类器已经超过或接近当今最好模型了。

我们的方法输入的就是完整的帧,无需依赖于任何预处理。当然,有些部分和AK那篇和双流那篇有些相似。AK那篇除了Slow Fusion都是2D卷积,而本文将在卷积和池化层都使用3D操作。并且还将展示,建立更深的网络以及在时间空间上逐步池化能保证取得最好的效果。

3D卷积网络

接下来的一节,我们介绍基础的3D卷积操作,以及设计不同的3D卷积网络。

对一张灰度图进行2D卷积,得到一张图片(一个feature map),哪怕是彩色图有三个通道,也是一样,最终得到的还是一张图(一个feature map),它们本质上都是2D卷积,不包含任何时间信息。AK那篇中Slow Fusion,虽然表现比同文中其它模型好,但是在第3层之后运动信息还是丢失掉了。

本文的思路也是empirically地通过对比找到一个好的结构。
卷积核尺寸的确定:受2D CNN的启发,我们固定地将空间维度定为3×3,仅尝试不同时间维度的信息。

网络的输入输出

输入:一个clip
输出:类别

clip的记法:c×l×h×w,分别为通道,clip中帧的数量,每帧的高和宽。
………………..帧分辨率h×w:128×171(大约UCF101分辨率的一半)
………………..clip长度l;16.视频被分成一个个16帧的clip,且无重叠
故clip尺寸为3×16×128×171

网络结构

一共包含5个卷积层,每层的卷积核数量为64,128,256,256,256。在时间和空间上都进行合适的padding操作,并且步长选为一,这样就能够保证卷积前后clip的尺寸不变。

pooling层:第一层上的pooling操作采用1×2×2的kernel size,1代表深度。意图是想尽量保留运动信息不要过早融合。之后的pooling操作均采用2×2×2的kernel size。

超参探索

其实本文的目的之一也是研究如何融合运动信息。但是本文只探索卷积核时间维度的最佳大小,而保持其它设置不变。这里从两个方向进行尝试:1. 均匀时间深度,即所有卷积层都用同样尺寸卷积核;2. 变化时间深度,即对于第一种,我们尝试四个网络,分别用depth值为1,3,5,7的卷积核,深度为d的网络成为depth-d网络。对第二种,尝试两个网络,第一种卷积核increasing,各层卷积核深度为3,3,5,5,,7,第二种卷积核decreasing,为7,5,5,3,3。
所有这些网络在经过最后一个池化层后输出信息尺寸一样(因为有padding)。由实验结果(下图)发现3×3×3的卷积核效果最佳,并且好于2D卷积(depth=1就是2D卷积)

网络整体描述

当面对大型数据集的时候,可以加深网络深度,但卷积核依旧使用3×3×3。从现在开始,正式叫这个网络为C3D。整体介绍一下这个网络的配置:

  • 8 convolution layers,
  • 5 pooling layers,
  • two fully connected layers,
  • a softmax output layer.
  • 所有卷积核均为3×3×3
  • 第一个pooling层1×2×2,Stride=1×2×2,之后都是2×2×2,stride=2×2×2
  • 两个全连接层都是4096

训练

在 Sports-1M数据集上训练。从每个视频中抽取5个clip,每个clip占2秒,每个clip被resize为128×127.训练时又把crop成为16×112×112 的crop。
除了在Sports-1M上重头训练C3D网络,我们还训练了一个已经在I380k上预训练过的模型。

显然,C3D在各个测试上表现都不错,但仅次于Convolution pooling on 120-frame clips。它使用的是长clip,速度必然极其慢。而且clip level 的对比上肯定是120-frame clip的表现好。我们主要对比video层面的表现。

C3D视频描述子

C3D网络也可以用来抽取并描述视频特征,即可以认为第一个全连接层的输出作为对这个clip的描述。对于视频,连续抽取16帧作为一个clip,两个clip之间存在8帧的重合。然后把每个clip输入C3D网络,每个clip对应输出一个4096维的激活向量。把它们做平均之后通过L2-Normalization就可以得到这个视频的描述子。

将这个描述子用在视频动作识别上试试:
在UCF101上测试。方法是,用C3D提取的特征描述子输入SVM进行分类,检验描述子的好坏。这里尝试了不同C3D提取的描述子,包括:

C3D trained on I380K
C3D trained on Sports-1M
C3D trained on I380K
fine-tuned on Sports-1M

下文略

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文笔记C3D:Learning Spatiotemporal Features with 3D Convolutional Networks 的相关文章

随机推荐

  • 数据挖掘的基础

    目录 数据挖掘 一 数据挖掘理解 二 数据准备 1 缺失值处理 2 异常值处理 3 数据偏差的处理 4 数据的标准化 5 特征选择 三 数据建模 1 分类问题 2 聚类问题 3 回归问题 4 关联问题 四 评估模型 1 混淆矩阵与准确率指标
  • C语言删除一个字符串中的多余空格字符

    删除一个字符串中的多余空格字符 使得字符串中的每个单词之间只有一个空格字符 code C C char my delblank char str char newStr char start str while start start st
  • 2021年计算机保研经验帖(真平民)(上交网安、复旦、南大、同济、北航、东南)

    个人背景 中九5 数学辅修 数模省一 组织经历较丰富 干啥啥不行 活动第一名 软著及项目若干 无论文无科研 什么叫学混啊 有强烈的上海和南京倾向 有倾向是好事 但是也不要过于自信 因为各个学校的审核很迷 还是要适当海投保证自己有学上 夏令营
  • (二):Qt信号槽连接及触发原理

    经过 Qt信号槽之 准备阶段 学习 我们知道信号是函数 里面调用了 QMetaObject activate 函数 而对于接收端的槽函数或信号 是通过私有静态函数 qt static metacall 调用元方法 源头是有的 接收端也是有的
  • 【Vue学习笔记6】好用的 Vueuse 工具包

    1 安装Vueuse VueUse 的官方 https vueuse org 的介绍说这是一个 Composition API 的工具集合 适用于 Vue 2 x 或者 Vue 3 x 用起来和 React Hooks 还挺像的 VueUs
  • Altium Designer 13 设计备忘录7——如何让过孔/地孔覆铜全覆盖

    通常在PCB布线布局完成后 都会开始对整块板子进行覆铜 这时可能会出现以下过孔 地孔无法全覆盖的情况 通过菜单栏上的设计 Design 规则 R 找到Plane 选择Polygon Connect Style下 PolygonConnect
  • idea新建文件时没有xml文件的处理办法

    1 大部分人在新建spring项目时 会发现新建项目时没有xml文件的选项 如下图所示 2 此问题是pom文件没有正确引入依赖导致的 可以尝试在pom文件中加入spring依赖尝试一下 在pom文件中加入以下依赖 并且更新maven
  • VS编译OpenCV3

    目录 流程 源码 环境 编译完成库 流程文档转载 防丢 1 下载Cmake 2 下载OpenCV源码 3 编译OpenCV 4 最后一步 VS编译openCV 4 1编译Debug版的openCV 4 2编译Release版的openCV
  • 介绍 Golang Timer(定时器)

    介绍 Golang Timer 定时器 本文介绍Golang Timer 定时器 位于Golang 的time包 常用于衡量代码执行效率 示例 假设一个业务方法需要衡量其执行效率 整个执行时间不能超过60秒 一旦超过发送通知 实现一 pac
  • Flutter生成带图片的二维码

    现在的APP中经常需要用自己的信息生成一个二维码给别人扫 下面就介绍一下Flutter中怎么生成一个带图片的二维码 需要用到的插件qr flutter 首先在 pubspec yaml 文件中添加以下依赖 添加依赖后在 pubspec ya
  • Vc - Qt - 仿照微信聊天窗口 - demov.1.0 初步展示

    项目是开源的 项目所在的github的地址 https github com JLZJMWSY Win32 https github com JLZJMWSY Win32 https github com JLZJMWSY Win32下的Q
  • for循环执行顺序---看一篇就懂了。

    for循环是程序代码中我们使用最多的循环体 当然了while do while也经常使用 其中do while常用于循环体无论判断条件是否正确 都会至少执行一次 for int i 0 i lt 5 i 循环体 执行顺序解抛 执行的顺序如下
  • echarts pie饼图既显示内部又显示外部指示线

    查了echarts 文档 并不能通过简单的配置来实现 原因如下 在单个serie的label中 只能设置一个label 位置可以选择在饼图内部inner 或者饼图外部outer 无法实现同时实现内部 外部显示 想到设置两个serie 让两个
  • Java三部曲(二)JavaWeb

    前言 1 什么是JavaWeb Web 全球广域网 也成为万维网 www 能通过浏览器访问的网站 JavaWeb 用Java开发网站的技术栈 2 本教程的基础框架 网页端 展现数据 HTML 制作页面 CSS 美化页面 JavaScript
  • matlab三维图形的绘制

    采用matlab进行三维图绘制 1 mesh函数 网格图 mesh x y z x是n维向量 y是m维向量 z是m n维向量 x 1 0 1 10 y 1 0 1 10 x y meshgrid x y z x 2 y 2 mesh x y
  • 十种排序算法概览

    十种排序算法概览 快速记忆表格 快速回忆各算法 01 冒泡排序 02 选择排序 03 插入排序 重点 04 希尔排序 05 归并排序 重点 06 快速排序 重点 07 堆排序 重点 08 计数排序 09 桶排序 10 基数排序 练习 本文旨
  • 跟我一起写 Makefile(一)

    跟我一起写 Makefile 陈皓 概述 什么是makefile 或许很多Winodws的程序员都不知道这个东西 因为那些Windows的IDE都为你做了这个工作 但我觉得要作一个好的和professional的程序员 makefile还是
  • 基于深度学习的YOLO目标检测研究-附Matlab代码

    目录 一 引言 二 YOLO的基本思想 三 实验验证 四 参考文献 五 Matlab代码获取 一 引言 目标检测是计算机视觉中的一个研究热点 在很多领域都有应用需求 例如监控安全 自动驾驶 交通监控和机器人视觉等场景 目标检测一般是检测一些
  • 华为OD机试真题2022Q4 A + 2023 B卷(JAVA&JS)

    华为机试题库已于5月10号由2022Q4 A卷 切换 为2023 B卷 各位同学如果收到的是A卷则刷下面的题 如果收到的是B卷则去B卷区刷题 B卷区地址 华为OD机试真题2023 B卷 JAVA JS 华为机试有三道题目 第一道和第二道属于
  • 论文笔记C3D:Learning Spatiotemporal Features with 3D Convolutional Networks

    思考 对视频进行描述 其描述子必须 1 具有普遍性以适应各种场景 2 必须短小紧凑 3 必须利于计算 4 必须易于实现 图像识别中 特征提取的很完备和优秀 但不适用于视频 本文致力于利用3D CNN提取时空特征 我们只用线性分类器来分类它们