閱讀筆記-TNT-Transformer in Transformer

來(lái)源:CVPR2021
單位:諾亞方舟、軟件所


Title

我個(gè)人真的挺討厭各種夸大宣傳的,有些工作確實(shí)有貢獻(xiàn),但現(xiàn)在的趨勢(shì)怎么就成了包裝和宣傳競(jìng)賽呢。。。

這篇文章宣傳稱致敬Network in Network工作,其本質(zhì)一句話概括就是在ViT的基礎(chǔ)上對(duì)每一個(gè)patch進(jìn)行了Transformer。

Introduction

在介紹部分的幾句結(jié)論我覺(jué)得值得商榷。

  1. CV models purely based on transformer are attractive because they provide an computing paradigm without the image-specific inductive bias.
    純transfomer框架能夠完全避免圖像特定的歸納偏置嗎?我認(rèn)為除非你采用全連接,否則不可能,即使ViT開始時(shí)將圖像劃分成不同的patch就是一種圖像特定的歸納偏置啊。

  2. 在講一些已存的純transformer框架的網(wǎng)絡(luò)時(shí),如ViT時(shí)說(shuō):

However, these visual transformers ignore the local relation and structure information inside the patch which is important for visual recognition. By projecting the patch into a vector, the spatial structure is corrupted and hard to learn.

在ViT這種方法中確實(shí)是將圖像劃分成了patch,但每個(gè)patch在提取該patch的embedding時(shí),本身是考慮有局部信息的,只能說(shuō)可能表達(dá)不夠充分,要說(shuō)空間信息破壞,我認(rèn)為更嚴(yán)重的其實(shí)是每個(gè)patch的邊緣破壞較大,更好的做法應(yīng)該是建立相鄰patch的邊緣之間的關(guān)系,或許重疊的patch可以嘗試以下。

Approach

TNT, Transformer iN Transformer

TNT的網(wǎng)絡(luò)結(jié)構(gòu)如上圖所示,我們?nèi)鯂?guó)將a圖中彩色豎條紋部分忽略,以及將TNTBlock 替換成 Transformer block,顯然就是ViT的結(jié)構(gòu)。
那現(xiàn)在彩色豎條紋飾pixel 級(jí)的transformer,這是后的TNT Block如b所示,inner T-Block是對(duì)內(nèi)部像素層級(jí)的transformer,將其輸出變換后與patch的embedding結(jié)合送到outer T-Block中即patch層級(jí)的transformer。
值得注意的是,在做像素級(jí)的transformer時(shí),并不是把每個(gè)像素位置的特征作為一個(gè)類似query的向量,而是對(duì)patch進(jìn)行了尺度變換,縮小了分辨率,然后從每個(gè)位置抽取對(duì)應(yīng)特征用作sequence,本質(zhì)是對(duì)patch又進(jìn)行了劃分(可重疊)區(qū)域
另外一點(diǎn),針對(duì)于像素級(jí)的transformer,并不是在patch的一層transformer內(nèi)完成一次像素級(jí)的多層(12)層transformer, 而是將patch和pixel的transformer對(duì)應(yīng),同時(shí)傳入下一層

位置編碼

對(duì)于patch而言,每個(gè)patch有一個(gè)獨(dú)立的可學(xué)習(xí)得位置編碼,而對(duì)于pixel級(jí)的序列而言,位置是在patch中相對(duì)位置的編碼,每個(gè)patch的對(duì)應(yīng)位置的pixel的位置編碼是相同的,如下圖:


pos encoding

復(fù)雜度

直觀上明顯復(fù)雜度多出的一部分是pixel層級(jí)的transformer的計(jì)算,這部分通過(guò)控制數(shù)據(jù)維度和規(guī)模,能夠保證復(fù)雜度提升不是很大。

實(shí)驗(yàn)

實(shí)驗(yàn)部分最關(guān)注的訓(xùn)練設(shè)備和時(shí)間沒(méi)說(shuō),但估計(jì)又是資源咖。。。 224x224的分辨率,batch_size能達(dá)到1024,需要多少V100?


training hyper-parameters

分離實(shí)驗(yàn)部分分析了不同的inner T-Block中的head數(shù),不同的輸入patch分辨率以及位置編碼等多種設(shè)置。
我們只管看一下視覺(jué)中間值的效果。


image.png

作者認(rèn)為通過(guò)對(duì)每個(gè)patch加上pixel的transformer,能夠更好的保留局部信息。這好像只能說(shuō)更好的細(xì)節(jié)信息吧,能體現(xiàn)局部信息嗎?b圖作者將最后一層transformer的384個(gè)特征圖通過(guò),這里的384是指輸出通道數(shù)。作者認(rèn)為TNT的特征分布更加分散,其包含的特征更加豐富。

作者還發(fā)現(xiàn)淺層能更好的保留局部信息,(難道這不是顯然的嗎?),網(wǎng)絡(luò)越深其表示能力越來(lái)越抽象。

作者還進(jìn)行了其他多個(gè)數(shù)據(jù)集上不同任務(wù)的實(shí)驗(yàn),結(jié)果表明:

  1. 本文方法在分類上能取得和CNN方法相當(dāng),甚至更好的實(shí)驗(yàn)結(jié)果
    2.本文方法相對(duì)于ViT和DeiT的參數(shù)量更少,但性能甚至更好。

總結(jié)

本文的工作是在ViT的基礎(chǔ)上關(guān)注每一個(gè)patch塊,對(duì)patch塊再次進(jìn)行transformer,在分類任務(wù)上獲得了相對(duì)于ViT更小更好的模型。
個(gè)人總認(rèn)為將圖像直接劃分成patch太過(guò)粗糙,我么是不是可以使用有重疊的劃分,或者想采用SS proposal這一類方法提取不同的有意義的包含完整或者大部分信息的區(qū)域,使用這些區(qū)域表示圖像進(jìn)行transformer?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容