I3D

发布时间 2023-04-24 15:22:20作者: 诸葛村夫CC

本文提出一个新的3D模型,以及一个大的视频数据(注意这是一篇2018年的文章了)

它告诉我们如何使用在2D领域中已经取得成功的网络如何扩展到3D,甚至是使用预训练好的参数

当时已经有很多视频数据集,但这些数据不是因为太大,普通玩家都玩不动,就是内容比较局限。所以作者利用这个机会提出了kinetic数据集,一经提出就得到了广泛应用。数据集的大小、难度适中,类别均衡。

 

这篇文章没有relate work这一章,因为本文的方法和相关工作有非常强的关系,所以直接出现在了方法里

说之前有三种方法处理视频,第一种是先用一个CNN提空间,然后送lstm提时间。第二种是3D网络,第三种是双流网络

第一种效果一直都不是很好,第二种会好一点,但是也不尽如人意(作者提出如果数据量够了,能发挥出威力来,所以最终方案中有3D),第三种是15/16年以来碾压3D的主流方法。图d只是将第三种网络最后的late fusion换成了一个3D卷积,称为early fusion。这篇文章作者认为只要数据够用,3D总是能展现出不错的性能,所以有了图e

作者这里提出了一个双流的,扩张的3D网络,扩张是说从2D扩来的。其实就是把2D网络(例如Resnet,VGG等)3*3的kernel变成3*3*3。因为设计出一个成功的网络需要调太多结构上的超参了,直接借鉴是比较好的方法。这种方法现在仍然在用,例如将Vision transformer直接扩充成time transformer。此外,作者发现光3D也不够,加上双流以后的提升还是很大的

方法:

说inflate(2D扩3D),作者提到time transformer ,video swin transformer,后面都得拿来看看

前面说过,2D到3D网络直接就是原模型扩一维就行,但是模型架构虽然没变,具体每一步都变了操作,如何复用之前2D网络的参数?这里也是将参数直接复几份,扩充到三维。朱老师这里讲到我们在检查使用预训练参数初始化的时候通产是在原网络上跑一边,在初始化网络上跑一遍,看结果是不是完全一样来判断初始化有没有问题。在这里作者也是把一张图片复制了n桢做成了一个静止视频,来检查2D到3D网络参数初始化是否正确,这样的做法确保之前简单复制的参数得到的输入都是一模一样的。