這篇文章是從改進(jìn)ViT輸入的角度來做的,在最初版本的ViT中,是將圖像分成16*16個patch,每個patch展開為一個向量,作為ViT的序列化輸入。這種做法雖然簡單,但是這種簡單粗暴的序列化方式破壞了圖像原有的結(jié)構(gòu)性,使得網(wǎng)絡(luò)無法捕捉圖像原有的結(jié)構(gòu)化特征,如邊緣、線條等。因此,本文作者提出了一種token2-to-tokens的方式,通過不斷對圖像進(jìn)行有overlap的patch展開以及圖像恢復(fù),來達(dá)到逐步將相鄰像素的結(jié)構(gòu)化特性聚集到token中,且逐步減少token數(shù)目的目的。

上圖展示了一輪T2T的過程,首先將上一層transformer的輸入token恢復(fù)為圖像,然后進(jìn)行有overlap的patch采樣,最后將每個patch的特征展開,作為下一個層的輸入。T2T重復(fù)兩次,最終backbone的輸入為14*14個token,與之前的ViT類似。這種token2token的方式模擬了卷積操作來捕捉局部特性,利用self-attention捕捉全局依賴,相比簡單的劃分patch,確實可以更好的對輸入進(jìn)行預(yù)處理。
不過因為T2T階段token數(shù)過多,會使得計算量和顯存占用巨大。而通過可視化ViT的特征圖發(fā)現(xiàn),很多通道都是全0的,會帶來一定的冗余,因此作者采用了deep-narrow的網(wǎng)絡(luò)設(shè)計思想,降低特征的通道數(shù),來減少參數(shù)量和計算量。
