几个月前我做了TSM的测试工作,由于的确比较笨,用pretrained model测试单个视频我都费了好多天。
总体:
TSM达到三维卷积的效果,但是只有2维卷积的复杂度。Temporal Shift Module就是沿着时间维度移动部分通道,因而方便帧之间的信息交换。
第二个图是双向的TSM,将过去和未来的帧与现在的帧交融。多余的截断,缺少的补零。离线模型。
第三个图同向TSM。只将过去帧和当前帧进行交融。因为这个是实时预测,不能获取未来帧的信息。
这种操作就是shift,翻译为移位/位移,但移动的多了效果并不好,shift所有的channel效果并不好(也要保持空间特征的学习能力啊),推断时也费时间。
网络结构:
backbone为ResNet50(也可以是其他预训练的模型,MobileNetV2则可放移动端),在每个残差模块(residual block)都嵌入了TSM,时间域感受野增大1倍,仅仅通过移位的操作就能实现伪3D模型的效果,也没有增加计算量。
在线模型在推断时,保存每个残差模块的1/8特征图到内存中,在下一帧替换掉该帧的前1/8,并将该1/8存入内存,因此使用的是7/8当前帧的特征图和1/8的旧的特征图。
batch_size=64,dropout=0.5,初始学习率0.01,采用kinetics数据预训练的权重进行fine-tune,固定BN层,为提高acc,复杂的视频内容sample较多的clips(8或16帧为一个clip)在somethingV1数据上只有一个clip,中心crop,224*224
代码就不看了。没时间了。
另外有相关问题可以加入QQ群讨论,不设微信群
QQ群:868373192
语音图像视频深度-学习群