作者:七月de七月小 | 来源:互联网 | 2023-10-16 17:45
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这个视频理解网络。
文章首先提出了下列问题:
- 是否需要3D卷积?如果是,哪些层需要是3D卷积哪些可以是2D卷积?这些操作会和测试的数据有关吗?
- 是否需要将时空信息同时进行卷积操作,或者说是否可以时间信息和空间信息分别提取?
- 如果在之前的工作上,增加模型的准确率和速度,同时减小显存占用?
对应上述问题,文章给出的做法:
- 文章在I3D模型的基础上,提出了两种I3D的变式。一种是Bottom-Heavy-I3D,这种模型就是保持低层卷积(靠近图片输入的层)为3D卷积,高层卷积为2D卷积。还有一种称为Top-Heavy-I3D,这种模型就是保持高层卷积(靠近模型输出的层)为3D卷积,低层卷积为3D卷积。如下图1所示。通过实验文章发现,虽然Top-Heavy-I3D模型忽略了低层运动信息但它却有更高的准确率,并且因为3D卷积是在高层,处理的feature相比于低层要小,所以速度也要快。至于是否需要3D卷积下面会进行说明。
- 为了回答上述第二个问题,文章将网络中的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的缩写。
- 第三问的答案其实前两问已经解决了差不多了,文章另外利用了时空门机制(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^nx∈Rn,y∈Rn分别表示输入输出, W∈Rn×nW\in R^{n\times n}W∈Rn×n表示权重,b∈Rnb\in R^nb∈Rn表示bias。这个机制就是想将σ(Wx+b)\sigma(Wx+b)σ(Wx+b)中预测为重要的x增加一部分权重,不重要的x则减少权重。
这个门操作可以放在网络的任何地方,经过文章实验,文章发现将这个操作放在S3D网络中的每一个[k,1,1]时间卷积后面效果最好,文章称这个网络为S3D-G。
文章的网络结构构建就完成了,具体的实验细节请查询文章。
视频算法交流qq群:657626967