X3D: Expanding Architectures for Efficient Video Recognition个人论文笔记
https://zhuanlan.zhihu.com/p/129279351
这篇X3D的解读写的比我早,写的挺好的,但有些细节没写上,所以由于强迫症写了这篇个人笔记
X3D为一系列的高效视频分类网络(从2D图像分类网络不断的从各个方面(multiple network axes)进行扩张如帧频网络深度等等,每次只从一个方面进行扩张);渐进的前向扩张后是一个后向压缩从而达到一个固定复杂度的网络;X3D系列最好的网络准确率超越除IG65M预训练的CSN之外所有网络,而且只需要之前大约五分之一的计算量和参数;本文最意外的发现是网络在保持input高像素的同时保持较少通道数可以达到非常好的表现
Candidate axes:
Temporal duration:clip时长
Frame rate:帧频
Spatial resolution:长宽像素
Network width:所有conv的通道数
Bottlenect width:bottleneck 的通道数
Depth:网络深度
本文主要启发于之前增加网络深度,输入图片像素,通道数导致的表现的提升,还基于ML中经典的特现选取(feature selection)方法,可以从最少的一组特征开始每步增加一个引起表现增加最大的特征(forward selection),也可以从所有特征开始,每步减少最不影响表现的特征(backward elimination);主要基于MnasNet改变不同网络结构的EfficientNets(空间,通道数,网络深度);与MnasNet相比,X3D一共5个step,每个step只训练6个仅改变了一个方面(axes)模型,这样的一步一步过程似乎有点忽略各种方法综合在一起的相互影响,但确实非常的简便,比起MnasNet要训练8000多个不同的网络
作者提出了几个猜想:
1.长视频稀疏采样好还是短视频稠密采样好
2.视频的像素增加的表现是否会饱和
3.slow pathway好还是fast pathway好
4.是同时增加所有ResBlock中每个的conv的通道数好,还是只增加所有所有ResBlock的每个bottleneck的通道数好
5.增加网络层数是否需要和增加输入像素相对应(增加感受野),是否对时间像素和空间像素效果同样
X2D,X3D结构主要来源于ResNet和SlowFast的Fast pathway部分,当这六个变量都为1时,input size为1*(112)^2,这时的X3D可以看作为为图像分类模型X2D。所有网络中无时间轴上的pooling或者stride
Z为可能的网络扩展因子组合,c为目标复杂度,C为FLOPS数,J为准确率
前向扩张(Forward expansion)+反向压缩(Backward contraction)
Kinetics-400 240K训练样本,20K验证样本,35K训练样本,400个人类动作类别
KInetics训练技巧:train from scratch(random initialization),和slowfast训练方法一致(同步SGD+MSRA initialization+BN+half-period cosine with initial lr 1.6+lr warmup+momentum 0.9+weight decay 10-5+dropout 0.5)
Charades训练技巧:在kinetics预训练模型上finetune,base lr=0.02,lr/10如果验证集损失饱和,weight decay 10-5
每次一个视频取一个一定帧数clip再做temporal striding,然后再对视频进行random crop或者水平翻转,将图片宽随机取样128或160
更多细节:在对比X3D和EfficientNet3D时,使用之前训练2D mobile model的技巧,SE Block,swish non-linearity(为了节省资源均有限使用),且未使用linear-bottleneck(作者发现加入后会导致不稳定的分布训练);每次的expansion rate=2是因为每次最小的可能的网络扩张就是增加帧数;每个step增加1倍的FLOPS,从6个axes来讲大致是以下操作(由于每步都有差异,所以以下各个axes的操作不一定使得FLOPS乘2,后续由于网络变大会进行一个正则化的扩展,主要通过double batchsize,half lr,drop-connect):
推理:1.K-Center:均匀采样一个视频的10个clip,将图片宽随机取样128或160,然后做center crop 2.K-LeftCenterRight:基本与上述一致除了取三个128*128 crop再做平均
同时X3D-XS,M,L与EfficientNet3D-B0,B3,B4相比,在kinetics400上的准确率均大于后者
结论:高时空像素的输入和低通道数的网络非常的高效