1. 磐创AI-开放猫官方网站首页
  2. Medium

并非所有图像都值16×16字:具有自适应序列长度的动态视觉转换器

引言

  • 此篇為Vit的延伸閱讀,看格式是要發在NeurIPS的,原本的Vit和其他相關的架構提出固定長度的补丁程序,但是通常長度越高,精準度越高,計算量越高,如何拿捏這些折衷就是這篇想討論的,且又考慮到在不同的圖片和不同的物件需要的精度也不同,因此拿捏补丁程序(令牌)的大小也十分重要。

  • 因此這篇針對转换器的架構提出了动态视觉转换器(DVT)、透過遞增Token Number的方式訓練,讓其可以動態調整Token大小、Testing的時候就會如下圖依序用不同的Patch Size直到指定的Confiability、此外提出了Feature-Wise和Relationship Reuse的機制降低運算量。

方法

  • 透過訓練很多不同补丁大小的变压器並透過置信度得分達到提前终止,以及使用功能重用、关系重用阻止減少運算量。

  • D_TRAIN:训练集
  • (x,y):D_TRAIN中的示例
  • L_CE:交叉熵
  • P_i:第i个出口输出的软最大预测概率。

  • 複習一下VIT,msa是多头自我注意,LN是层规范,l表示层,mlp是多层感知器。

特征重用

  • 透過级联的方式將前一層变压器的输出功能跟下一層的变压器融合,在级联之前输出功能會先透過下圖右邊的LN-mlp之後Up Sample,之所以要先Reshape是為了保留圖像空間,Flten是因為Vit的Patch架構。

  • E_l是指下行模型的分层嵌入、作者稱他為上下文嵌入、透過F_l讓維度從D變為D‘、再跟原本的输入特征图拼接、所以實際上可以把(3)改成(5)、讓上游的結果可以傳下來就不用从头开始学习了,效果也會比較好。

关系重用

  • 跟Feature Reuse概念大致相同,只是針對Attribute的部分。

  • 公式如下,q、K、V是Attribute的Query、Key、Value,d是Q和K的Hidden Dimension,N_up表示上游模型有多少Token,N_ATT_UP表示上游模型有多少注意图,也就是头数(N_H)*层数(L),因此可以把(7)改成(9)。

  • 而(9)的r()架構如下,概念也是Reshape、Up Sample、Flatten,輸出的維度會和MultiHead Attribute的Heads數量相同.

自适应推理

  • 如上面图2、對每個变压器的输出做软最大预测、當最大的p大過某個阈值就會提早停止,不然就會被切成更多令牌往下個变压器丟,最後一個变压器就不會有阈值、每個变压器的令牌嵌入的維度都不變。
  • Threshold的設計如下公式、D_val是Validation Set、B是计算预算、其值大於0。

实验

数据集:Imagenet、CIFAR-10/100

主干:T2T-Vit-12[52]、T2T-Vit-14[52]和Deit-Smallll(不带蒸馏)

  • 在ImageNet上的結果,图6是用T2T-VIT[52]當主干,图7是用设备[35]當主干,能提高不少速度。

  • 這個表格是基於T2T-VIT-12,兩個Exit大小為7×7和14×14的DVT,可在較小Patch Size的Backbone提高準確度,在較大Patch Size的Backbone提升速度。

消融研究

  • 這邊用基於T2T-VIT-12的三出口DVT做實驗,並且把提前终止取消掉,雖然在第一個出口有降一些準確度,但整體來說還是可以用很少的計算量換取準確度。

  • 這邊針對每個Reuse再做Ablation Study,這次用基於T2T-VIT-12的Three-Exit(7×7,10×10)DVT做實驗.

  • 以及針對提前终止的方式做比較。

  • 最後可以看到第一個Exit的(Easy)和第三個Exit的(Hard)Output結果,可以觀察到確實Easy的場景和物件相對單一,图10是表示计算预算增加的時候有多少圖片是從不同Exit結束的。

参考文献

[arxiv][arxiv]

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/13/%e5%b9%b6%e9%9d%9e%e6%89%80%e6%9c%89%e5%9b%be%e5%83%8f%e9%83%bd%e5%80%bc16x16%e5%ad%97%ef%bc%9a%e5%85%b7%e6%9c%89%e8%87%aa%e9%80%82%e5%ba%94%e5%ba%8f%e5%88%97%e9%95%bf%e5%ba%a6%e7%9a%84%e5%8a%a8/

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息