電腦視覺

視覺Transformer(vision transformer, ViT)

/ VIZH-un trans-FOR-mer (V-I-T) /

視覺Transformer把Transformer——也就是驅動現代語言模型的那套架構——用到了圖像上。它的巧妙之處,在於把一張圖當成一個句子來對待。它把圖像切成一格格的小方塊(比如每塊16×16像素),按順序排好,再把每一塊當作一個「詞」。然後它使用Transformer的核心機制——自注意力——讓每一塊去看其他所有塊,並衡量彼此之間有多相關。一塊毛皮可以去「注意」圖像另一頭很遠處的一塊耳朵,從而共同得出「貓」這個結論。

這是一次顯著的轉向。近十年來,卷積網路(CNN)一直主導著視覺;它們用小小的局部濾鏡掃描圖像,內建了一個假設:相鄰的像素最重要。ViT拋掉了這個假設,讓注意力直接去學習長距離的關係。2020年提出它的那篇論文,標題直白得就是要說明這一點:只要數據足夠多,你根本不需要卷積,也能做出出色的圖像辨識。

關鍵的提醒,恰恰就在那最後一句:只要數據足夠多。因為ViT沒有內建的「局部性」概念,它必須從零學起這種結構,這意味著它對數據很「飢渴」——在小數據集上,一個樸素的ViT可能輸給CNN。它真正大放異彩,是在用海量圖像集合預訓練、再做微調之後。實踐中,界限已經模糊:許多現代系統把Transformer與卷積的思想混在一起,所以「ViT對CNN」與其說是一場戰爭,不如說是一份菜單,按你手頭的數據和算力來點。

一個ViT把224×224的照片切成196塊16×16像素的小方塊。為了認出一隻紅鶴,顯示它彎曲脖頸的那一塊,可以直接去「注意」顯示它粉色長腿的那一塊——儘管二者在圖像裡相距很遠——而不必像卷積那樣一個像素一個像素地傳遞信號。

把圖像當作一串小方塊;注意力直接連接相距很遠的方塊。代價是對數據的飢渴。

ViT相對CNN的優勢,主要在大規模下才顯現;在數據量不大的情況下,CNN內建的局部性往往勝出。「Transformer取代了視覺裡的CNN」這種說法言過其實——許多頂尖系統其實是混合體,正確的選擇取決於你的數據和算力預算。

又稱
ViT视觉Transformer視覺Transformerimage transformer