Vision Transformer(ViT)是一種將 Transformer 架構應用於圖像處理的深度學習模型,與傳統卷積神經網路(CNN)不同,ViT 將圖片拆分成一系列不重疊的小塊(patches),並將這些塊視為 Transformer 的輸入序列來處理。
ViT 架構重要步驟:
1. 圖像切片(Patch Splitting) 將輸入圖像分割成固定大小的小塊(例如 16x16 像素),每個塊類似於NLP中的「詞」。2. 塊展平與嵌入(Flattening and Embedding) 每個圖像塊展平成一維向量,再經過一個線性全連接層,將其映射到一個高維的嵌入空間。
3. 位置編碼(Positional Encoding) 由於 Transformer 本身缺乏序列位置信息,ViT 會將位置向量加到每個圖像塊的嵌入向量中,以保留空間結構資訊。
4. Transformer Encoder 加入位置編碼後的圖像塊嵌入序列被輸入多層Transformer編碼器(由多頭自注意力層和前饋層組成),模型通過自注意力捕捉圖像各部分間的關聯。
5. 分類符號(CLS token) 在序列前加入一個可訓練的特殊符號,經過 Transformer 編碼後,該符號的輸出預測整張圖片的分類結果。
ViT的優勢:
• 能捕捉到圖像中全局的關聯與長距離依賴結構,較 CNN 更靈活。
• 在大數據和大量計算資源支持下,ViT 可展現優越性能。
• 架構一致性,使它在跨模態學習(如圖片+文字)更易整合。
挑戰:
• 需要較多的訓練數據和算力,較小數據集上表現不及具有先驗偏差的 CNN。
• 對於小尺寸圖像或局部細節捕捉相對弱於 CNN。
簡單比喻:
ViT 把圖片切成「小拼圖」,像處理詞語一樣,把這些拼圖作為序列交給 Transformer,模型能理解每個拼圖及其間關係,整合成對圖像的整體理解。
總結:
Vision Transformer 是將 Transformer 序列處理架構引入圖像領域,通過切分圖像為小塊並進行自注意力運算,開啟了圖像理解的新途徑,成為現代視覺任務重要的替代架構。