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

【论文阅读】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.

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值