ViT 你准备用了么?
Vision Transformer 最近被我学了一下,发现其机理确实能够很好的突出数据的特征,所以性能比CNN好(在大致情况下)。但是Vision Transformer 有一个主要的缺点就是,计算量会很大,参数很多,预测新图片时间会很慢。
但是我想,后面会不会有一大批来研究如何减少模型计算量的论文,果不其然,很多啊,如下面这篇:
Coarse-to-Fine Vision Transformer
论文地址:https://arxiv.org/pdf/2203.03821v1.pdf
该论文讲了一个通俗的概念
ViT划分的patch数量的多少影响模型的计算量。该论文里,作者做了一个实验,输入图像X划分了不同的patch,然后不同的patch经过Attention得到的分数如图中(b)所示,然后在(a)中去除一部分的tokens,发现:那些得分小的tokens对准确率的影响不大,那些绿色的tokens对准确率影响比较大
因此,作者提出的CF-VIT的想法如下:
首先,为了减少计算量,输入图像X一开始划分的patch数量少一点,也就是每一块的token比较大,然后送入VIT模型进行推理,看看推理的得分情况如何。
假如,得分情况很好,就输出推理结果;要是得分情况很差,就重新在原来得分情况的基础上,再一次细分patchs,然后送入VIT模型再次推理输出
作者的网络如下:
看下结果:
精确度几乎不增不减,但是计算量FLOPs减少比较大,还有图里时间增加了1-2倍。 对比主流的VIT发现,性能并不弱,且计算量FLOPs几乎最少。
还记得刚开始提出的VIT的问题么?
VIT计算量太大,大于CNN,但现在一步一步在减少,本文也是减少计算量的一步。
最后,想要了解其中细节就下载论文看看,其还有代码。
|