【论文阅读】Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks

2023-11-08

【论文阅读】Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks

虽然这是一篇17年ICCV的论文,但是这篇论文里没有使用kinetics数据集,可能应该是作者做相关实验的时候kinetics数据集还没有发布吧,作者关注当时的3D卷积网络计算效率低、参数量大的问题。所以从减少参数量的角度切入,想到了将 3D卷积核因式分解为 (2D+1D)的形式,这种将3D分解为(2D+1D)的形式与之前介绍的一篇论文不谋而合 地址链接。不同的是那篇文章是从卷积网络的卷积层的角度入手,而这篇文章是从卷积核结构的角度入手。
论文地址:下载地址
P3D代码(pytorch):下载地址

正文

3D卷积网络众所周知,参数量太大,计算效率不高,在没有大的数据集的前提下特别容易过拟合,所以本文就将3D卷积核拆分成(2D+1D)的形式,这种拆分有很多的优点:

  1. 网络的参数量很大程度上减少了(这个应该不难理解)
  2. 因为现在3D卷积网络都紧跟2D卷积网络的发展,其结构也大都基于对应的2D网络构建而来,所以拆分后的2D卷积核可以利用对应的2DCNN在ImageNet上预训练的参数。

Pseudo-3D Blocks

既然有了想法,那么接下来的问题就是设计什么样的(2D+1D)卷积核?因为目前在2DCNN中 基于ResNet block 的resnet网络取得了非常好的效果,所以文章决定基于 ResNet Bottleneck block 来设计 Pseudo-3D Block,因为新的 P3D block 将3D卷积拆分成了 2D空间卷积+1D时间卷积,所以在设计之前需要思考2个问题:

  1. 2D空间卷积与1D时间卷积之间是否应该相互有联系?如果两种卷积之间有联系,那么2D空间卷积与1D时间卷积之前是串行的,输入首先通过2D空间卷积,得到的输出结果作为1D时间卷积的输入(根据经验来说都是先空间再时间)。 如果两种卷积之间没有联系,那么2D空间卷积与1D时间卷积之前是并行的,输入同时通过2D空间卷积与1D时间卷积,并对两种卷积的结果融合为最终结果。
  2. 两种卷积是否应该直接作用于输出?如果要直接作用于输出,就需要卷积结果直接与输出相连。

基于以上的两个方面的问题,作者设计了3种Pseudo-3D Block,具体的结构如下图所示。
在这里插入图片描述
上图中,最左侧的为基本的 2D ResNet Bottleneck block,在此基础上,作者分别设计了P3D-A,P3D-B,P3D-C 3种Pseudo-3D Block结构,具体介绍如下:

  • P3D-A:这种设计假设2D空间卷积与1D时间卷积之间应该相互有联系,所以2D空间卷积与1D时间卷积之前是串行的,将1D时间卷积放置在2D空间卷积的后边得到最终的 P3D-A 结构。
  • P3D-B:这种设计假设2D空间卷积与1D时间卷积之间不应该相互有联系,所以2D空间卷积与1D时间卷积之前是并行的,所以输入同时通过2D空间卷积与1D时间卷积中,最终结果为两种卷积结果的加和。
  • P3D-C:这种结构相当于前两种模块结构的形式的合并(相当于 P3D-B在1D卷积前串入2D卷积或者P3D-A添加一路并行的2D卷积)。

设计完了 Pseudo-3D Block,就需要对这3种Block进行实验测测性能了,可以直接将该P3D block 替换原来的Resnet-50中的 Residual Units,最终的实验结果如下表所示:
在这里插入图片描述
可以看到以P3D-A block为基础的 P3D卷积网络得到的性能最好。

Pseudo-3D ResNet

虽然上面的实验可以看出以 P3D-A 为基础的3D卷积网络得到的效果最好,但是作者参考了[1]中的观点,认为在设计网络时,最好还是要保持block的多样性,所以在最终的 Pseudo-3D ResNet 中,上述的3种Pseudo-3D Block 全都包含。设计的方法是 按照 A-B-C 的顺序依次替代 原始Resnet-50中的的Residual Units,如下图所示:
在这里插入图片描述
最终在UCF-101 数据集上的效果还不错,不过感觉3D 卷积网络还是要看kinetics数据集上的准确率比较好,所以这里就不贴了。

探索性实验

本文做的一些可视化和探索性实验还是挺有意思的,尤其是第一个使用 DeepDraw工具生成的可视化图像,可惜不是pytorch版本,以后有时间可以搞一个玩一下。

类别可视化

我们可以通过训练神经网络使之能够对特殊的输入模式产生响应并获得对应的输出,那么我们训练的网络究竟学习到了什么呢?所以上面的 DeepDraw 工具可以让我们网络所学的所有类进行“可视化”。那么如何做呢?一种很简单的方法是,在网络训练完成后,冻结网络的所有参数,然后输入噪声图像,将梯度反向传播到输入中,最后迭代就可以得到可视化的图像了(具体实现时还有一些技巧,可以参考这篇博客)。
文章对P3D中的4种行为类别进行了可视化,如下图所示:
在这里插入图片描述
上图中每一行表示一类行为,对应的输入为16帧,第三行的摩托车比赛看着还是挺明显的,网络学习到了摩托车比赛中的典型的行为(感觉这生成的可视化图像的质量不是很好)。

P3D特征的压缩性

本文也和C3D中一样做了特征压缩性的实验,使用P3D作为特征提取器,经过PCA降维观察特征的准确率的变化,如下图所示:
在这里插入图片描述
可以看到P3D的压缩性是非常地好的。还有一个有意思的现象是使用2D Resnet-152 提取视频帧的卷积特征,其使用PCA降维到一定的程度会迅速地下降。作者认为是因为2D的网络无法学习视频中的时间动态变化关系,所以在特征维度很低时其表示能力急速降低。

P3D特征的可视化

在这里插入图片描述
文章和C3D中一样,从UCF101中随机选择了10K个视频,使用t-SNE 方法对 2D Resnet-152 的特征和 P3D特征进行了可视化,可以看到P3D特征相同的类更加聚集,更容易区分。

[1] Zhang, Xingcheng, et al. “Polynet: A pursuit of structural diversity in very deep networks.” Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on. IEEE, 2017.

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

【论文阅读】Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks 的相关文章

  • nrm 的安装和使用

    NRM介绍 官方解释 开发的npm registry 管理工具 nrm 能够查看和切换当前使用的registry 换言之nrm的作用就是方便用户切换npm的镜像源地址 npm的原始镜像源地址是在国外 国内网络访问比较慢 因此国内的某些大佬机
  • jupyter生成视频动画video anmation

    本文介绍一个正弦余弦波案例来展示jupyter生成动画过程 首先电脑安装一个叫做ffmpeg的软件 只有40M 是一个关于网页制作动画的软件 安装过程见博客 15条消息 安装ffmpeg并写入jupyter matplotlib 山晨啊8的
  • 目录遍历的三种方法

    1 目录的遍历 递归函数 def visitDir path li os listdir path for p in li pathname os path join path p if not os path isfile pathnam
  • Docker与容器的基本概念

    本文主要对Docker和容器的一些基本概念进行一个总结 一 容器与虚拟机 1 什么是容器 Docker官方对容器的解释 一句话概括 容器 Container 就是将软件打包成标准化单元 以用于开发 交付和部署 容器是打包代码及其所有依赖的软
  • mesa图解

    http www sourcecodebrowser com mesa 7 8 2 state 8c html

随机推荐

  • C - Divisors of the Divisors of An Integer Gym - 102040C

    题目链接 题意 就是求n 中因子的因子的个数 题解 n 中某个因子的个数就是n x的累加 证明 其实就是每次褪一层 即每次除去能除于1个3的 依次两个3的 三个3的个数 最终也就能得到3的个数 这里没必要 整除 因为是阶乘 所以即使不能整除
  • Redis初级命令

    一 常用key命令 查看所有key keys 查看key的类型 type key 返回状态1 0 True False 当传入多个key时返回or的结果 即只要有一个存在就返回True exists key key 将key从当前db移动到
  • 学生成绩管理系统数据库设计--MySQL

    MySQL 数据库设计 学生成绩管理系统 设计大纲 友情链接 1 医疗信息管理系统数据库 MySQL 2 邮件管理数据库设计 MySQL 3 点餐系统数据库设计 SQL Server 4 商品管理系统数据库设计 SQL Server 5 S
  • JavaEE架构之传统三层架构,集群架构,分布式架构,微服务架构

    javaEE架构 1 传统三层架构 all in one项目 传统三层架构大致可以分为表现层 业务层和持久层 数据访问层 其中表现层负责接受请求和转发请求 业务层负责处理请求 注 事务管理 日志记录等AOP类型的操作均封装在这一层 持久层主
  • 将web项目导出到远程服务器的tomcat中

    将web项目导出到远程服务器的tomcat中 前期准备 步骤 前期准备 eclipse2017创建的web项目 阿里云服务器中存在tomcat 远程连接工具 windows自带 步骤 1 在eclipse上将完成好的web项目导出为war文
  • ubuntu linux安装pytorch和torchvision

    1 下载镜像 镜像网址 https download pytorch org whl torch stable html 假设你要下载torch1 4 0版本 cp36代表你的环境是python3 6 cu100代表的是你的cuda是10
  • C语言大作业学生成绩管理系统

    1 设计要求 利用所学的知识 理论和实际结合 利用资源 采用模块化的结构 使用模仿修改自主设计相结合的方法 锻炼学生综合分析解决实际问题的编程能力 通过C语言各个函数功能来实现对学生信息的管理 学生信息包括学生姓名 学号 各科成绩 管理方式
  • c++中的成员访问级别和派生继承方式

    1 一个类中的不同变量和函数的访问属性 总共有三种访问级别 public private protected 在类中定义的成员变量和成员函数的时候 如果不在变量前面加上访问级别修饰符 类中默认为私有成员变量或者私有成员函数 而在结构体中如果
  • OOALV data_changed 與data_changed_finished事件

    data changed在可編輯字段的數據發生變化時才會觸發 可用來檢查輸入數據的正確性 data changed finished在回車時和可編輯字段數據發生變化后 光標移動時觸發 如果可編輯字段數據檢查失敗 則不會觸發此事件 這兩個事件
  • 服务器端hsm芯片,数据加密服务CloudHSM

    数据加密服务 CloudHSM 基于国密局认证的物理加密机 Hardware Security Module HSM 利用虚拟化技术 提供弹性 高可用 高性能的数据加解密 密钥管理等云上数据安全服务 符合国家监管合规要求 满足金融 互联网等
  • 戴尔r410服务器虚拟磁盘,DELL服务器R410原装 SAS 6/IR RAID卡 阵列控制器卡 支持RAID0,1...

    SAS 6 iR 功能 Dell 串行连接 SCSI 6 iR 集成控制器和适配器 用户指南 介绍了 Dell串行连接 SCSI SAS 6 iR 控制器的规格 下表对 SAS 6 iR 适配器和 SAS 6 iR 集成控制器的规格进行了比
  • KITTI数据集之点云地图构建

    本文描述了如何通过KITTI数据集 读取激光雷达点云数据 并通过ground truth 对前后两帧点云进行旋转变换 使得二者统一坐标系 不断叠加点云进行点云建图的过程 使用的是KITTI odometry中的07号数据集 其主要内容包括
  • android BSP

    HAL 硬件抽象层 BootLoader 硬件初始化管控 Linux Device Driver Linux 内核驱动
  • Macbook pro搭建unbutu18.04的步骤(省钱又实惠)

    第一步 下载parallels desktop 链接 https pan baidu com s 17Bqw0rWezrfOMLZqTaImag 密码 h0z5 注意 在线下载 离线安装 省钱省事 永久自动激活 小编花了十块钱 第二步 运行
  • AppsFlyer 研究(二)应用内事件

    一 记录应用内事件 应用内事件可助您深入了解应用里正在发生的事 我们建议您花些时间定义要记录的事件 记录应用内事件有助于您衡量KPI 例如ROI 投资回报率 和LTV 生命周期价值 有几种方法可以记录应用内事件 最常见的方法是通过我们在本文
  • Activiti7工作流+idea2021监听器法器的使用

    法器 这次需要个好宝贝 4 监听器 工作流的开头都是创建bpmn文件 注意一点细节问题 需要加监听器了 首先我们得有一个监听器 package listener import org activiti engine delegate pub
  • 2023年电赛---运动目标控制与自动追踪系统(E题)关于网友的问题回复

    如果有嵌入式企业需要招聘校园大使 湖南区域的日常实习 任何区域的暑假Linux驱动实习岗位 可C站直接私聊 或者邮件 zhangyixu02 gmail com 此消息至2025年1月1日前均有效 前言 1 各位私信问问题之前 看看自己的问
  • prometheus监控docker容器实战

    1 cAdvisor介绍 要监控docker状态 需要使用一个软件cAdvisor cAdvisor Container Advisor 是Google开源的容器资源监控和性能分析工具 它是专门为容器而生 可以用于收集正在运行的容器资源使用
  • 企业级日常巡检脚本的编写

    1 系统信息 1 1 操作系统类型 查看操作系统类型命令为 uname 例 root host 134 uname Linux 定义变量 os type uname 1 2 操作系统版本号 查看操作系统版本号命令为 cat etc redh
  • 【论文阅读】Learning Spatio-Temporal Representation with Pseudo-3D Residual Networks

    论文阅读 Learning Spatio Temporal Representation with Pseudo 3D Residual Networks 虽然这是一篇17年ICCV的论文 但是这篇论文里没有使用kinetics数据集 可能