視覺 Transformer

移位視窗注意力(shifted window attention)

移位視窗注意力是一個巧妙的修補,讓視窗化的 Transformer 既保持便宜、又仍能讓資訊跑遍整張影像。它解決的是一個兩難。只在固定的局部視窗內計算注意力,使成本變成線性,這正是 Swin 能擴展的原因,但若視窗永不移動,視窗 A 裡的圖塊就永遠無法直接影響視窗 B 裡的圖塊——資訊被永遠封在每個盒子裡。每隔一層就移位視窗格,就是那道逃生口。

這個配方交替使用兩種層。一個常規視窗層把特徵圖切成互不重疊的視窗格、在每個視窗內跑完整的自注意力。下一層在重新切分之前,把整個格子沿對角線移位半個視窗(對 7x7 的視窗,是往下 3 格、往右 3 格)。移位之後,新的視窗橫跨了舊的邊界:原本位於兩個相鄰視窗邊緣的圖塊,現在共處於一個視窗、相互注意。把這些交替的常規層與移位層堆起來,經過幾個區塊,每個圖塊就能觸及其他每個圖塊——全域連通性從純粹局部的計算中浮現。

天真地移位會在影像邊界產生不完整的視窗、並增加視窗數,傷害效率。Swin 用一個優雅的招式避開這點:循環移位(cyclic shift)把特徵圖滾動(從一邊掉出去的切片繞回對邊),讓視窗保持一致的大小與數量。因為循環移位會把不相鄰的區域放進同一個視窗,於是套上一個注意力遮罩,讓圖塊只在自己真正的子區域內互相注意,之後再把圖滾回去。淨效果是:跨視窗的通訊,幾乎不比純視窗注意力多花任何成本。

在概念上,移位視窗是 Swin 把純視窗化所丟棄的全域感受野重新找回來的方式,恢復了完整 ViT 注意力的一項關鍵優勢、同時維持線性成本。它是讓「階層式、以視窗為基礎」的設計得以成立、而不淪為一堆孤立的局部 Transformer 的唯一機制。

用 7x7 視窗時,第 L 層在固定視窗內注意;第 L+1 層把格子移位 3 格,於是原本在視窗邊緣的圖塊,現在與它跨越邊界的舊鄰居共處一窗——兩層就足以讓資訊跨越任何一條視窗接縫。

又称
SW-MSAshifted windows移位視窗注意力