視覺 Transformer

圖塊合併(patch merging)

圖塊合併是階層式視覺 Transformer 在各階段之間「拉遠鏡頭」的方式,把許多細密的詞元變成較少、較粗、資訊更豐富的詞元。樸素 ViT 從頭到尾維持相同數量、相同解析度的詞元——它是扁平的。但好的視覺通常需要一座金字塔:早期細節、晚期廣脈絡,就像 CNN 一階段一階段地把空間尺寸減半、通道加倍。圖塊合併就是 Transformer 版的那個下採樣步驟。

在機制上,它把每一個 2x2 區塊的相鄰詞元分成一組、融合成一個。四個各為寬度 C 的詞元,被串接成一個寬度 4C 的向量,再通過一個線性層把 4C 投影降到 2C。結果是:空間詞元數降為四分之一(高與寬各減半),而通道維度從 C 增為 2C。於是一個 56x56、C 維詞元的格子,變成一個 28x28、2C 維詞元的格子——數量更少、更「胖」、各自涵蓋更大影像區域的詞元。

在各階段之間重複這件事,便建起了讓 Swin 這類模型勝任密集預測的多尺度階層。從細解析度出發、合併數次,會產出一連串尺度的特徵圖(例如輸入的 1/4、1/8、1/16、1/32),這正是特徵金字塔網路、偵測頭與分割解碼器所消化的東西。它也讓計算保持節制:因為注意力成本隨詞元數的平方成長,每階段把詞元減為四分之一,能大幅降低更深、更寬階段的工作量。

請注意它與最初的圖塊嵌入的對比。圖塊嵌入是輸入端一次性的「像素轉詞元」;圖塊合併則發生在較後、是「詞元轉詞元」、會反覆進行,融合的是已經算出的表徵而非原始像素。它是步長卷積或池化的「學習式、Transformer 原生」對應物,而「先串接再投影」的設計,比單純取平均保留了更多資訊。

先串接再投影是刻意的:它讓線性層去學如何組合那四個鄰居,而不是強制取平均,於是「在 2x2 中的相對位置」資訊得以倖存。天真的平均池化式合併會把這個丟掉,通常會傷害準確率。

又稱
token merging (downsampling)patch merging layer圖塊合併下採樣層