一、ViT 的誕生背景
在計算機視覺領域的發展中,卷積神經網絡(CNN)一直占據重要地位。自 2012 年 AlexNet 在 ImageNet 大賽中取得優異成績后,CNN 在圖像分類任務中顯示出強大能力。隨后,VGG、ResNet 等深度網絡架構不斷出現,推動了圖像分類、目標檢測、語義分割等任務的性能提升,促進了計算機視覺技術的快速發展。
然而,CNN 也逐漸顯露出一些局限性。一方面,CNN 依賴局部感知,通過卷積核捕獲局部區域的特征。盡管多層卷積可以提取高維語義信息,但在處理長距離依賴關系(如圖像的全局信息)時,由于卷積核感受野有限,CNN 的能力受限,可能需要增加層數或設計復雜架構來彌補,這增加了模型復雜度和訓練難度。另一方面,隨著網絡深度增加,CNN 的參數數量和計算量顯著增長,對硬件資源的需求也隨之提高,增加了部署成本,并限制了其在資源受限設備上的應用。
為了解決這些問題,研究者開始探索其他架構,其中 Transformer 架構受到廣泛關注。Transformer 最初在自然語言處理(NLP)領域提出,憑借自注意力機制在捕捉序列中任意位置依賴關系方面的優勢,成為 NLP 主流模型。受此啟發,研究者嘗試將其應用于視覺領域,Vision Transformer(ViT)因此誕生,為視覺任務提供了新的方法,標志著視覺模型發展的重要轉變。
二、ViT 的核心原理
(一)Transformer 架構回顧
Transformer 架構于 2017 年在論文《Attention Is All You Need》中提出,最初用于解決自然語言處理中的機器翻譯任務。在此之前,循環神經網絡(RNN)及其變體(如 LSTM、GRU)是處理序列數據的主要模型,但這些模型存在梯度消失或爆炸問題,難以捕捉長距離依賴,且計算效率較低,難以并行化。
Transformer 的核心是自注意力機制,通過計算輸入序列中每個位置與其他位置的關聯程度,動態分配注意力權重,聚焦于關鍵信息。
例如,在處理句子“蘋果從樹上掉下來,小明撿起了它”時,自注意力機制能讓模型在處理“它”時關注“蘋果”,準確理解其指代對象。相比 RNN 按順序處理序列,自注意力機制允許模型直接參考整個序列,大幅提升捕捉長距離依賴的能力。
多頭注意力機制是自注意力機制的擴展,通過并行多個注意力頭,每頭學習不同的表示并拼接結果,增強模型從不同角度捕捉信息的能力。例如,在分析復雜句子時,不同注意力頭可分別關注語法結構、語義關系等。
此外,Transformer 引入位置編碼來彌補自注意力對順序不敏感的缺陷,通過為每個位置添加唯一編碼向量,將位置信息融入輸入;前饋網絡則對注意力輸出進行非線性變換,提升特征學習能力。
(二)ViT 架構設計
前面我們在 計算機視覺 |解鎖視頻理解三劍客——ViViT 中簡單介紹了 VIT 架構,本文我們將詳細介紹它的架構設計。
1. 圖像分塊
ViT 首先將輸入圖像劃分為固定大小的 patch。例如,輸入圖像為 224 × 224 224\times224 224×224,通常劃分為 16 × 16 16\times16 16×16 的 patch,生成 14 × 14 = 196 14\times14 = 196 14×14=196 個 patch。每個 patch 展平為一維向量,形成序列,作為 Transformer 的輸入。這種分塊將圖像轉化為序列形式,使 Transformer 能以處理序列的方式處理圖像,突破 CNN 局部卷積的限制,直接捕捉不同區域間的長距離依賴。
2. 線性嵌入
展平后的 patch 通過線性投影嵌入到低維空間。使用可學習的線性變換矩陣(全連接層),將每個 patch 向量映射為固定維度的嵌入向量。例如,若 patch 展平后維度為 16 × 16 × 3 16\times16\times3 16×16×3(RGB 三通道),目標嵌入維度為 d d d(如 d = 768 d = 768 d=768),則通過 ( 16 × 16 × 3 ) × d (16\times16\times3)\times d (16×16×3)×d 的權重矩陣變換,得到維度為 d d d 的嵌入向量。嵌入維度影響表達能力和計算復雜度,需在性能和資源間權衡。
3. 位置編碼
由于自注意力機制對輸入順序不敏感,而圖像的空間位置信息重要,ViT 引入位置編碼。默認使用可學習的 1D 位置編碼,將二維 patch 按固定順序展平為一維序列,為每個位置分配編碼向量并與嵌入向量相加,使模型感知 patch 的相對位置。可選的正弦/余弦固定位置編碼也常用于提供豐富位置信息。
4. Transformer 編碼器
Transformer 編碼器是 ViT 的核心,由多個 Transformer 塊組成。每個塊包含多頭自注意力和前饋網絡兩個子層。
多頭自注意力層通過計算不同頭的注意力權重,捕捉圖像中不同尺度和語義的依賴關系。輸入嵌入向量序列通過線性變換生成查詢、鍵、值矩陣,計算點積并經縮放和 Softmax 歸一化后,得到注意力權重,再與值矩陣加權求和。例如,12 個頭可分別關注物體輪廓、紋理等,最后拼接輸出。
前饋網絡對注意力輸出進行非線性變換,包含兩個線性層和激活函數(如 GELU),增強特征學習能力。殘差連接和層歸一化用于加速訓練和穩定優化。
5. 分類頭
分類頭位于 ViT 末端,用于圖像分類。在編碼器輸出序列中添加分類標記,與其他 patch 嵌入向量一起計算,僅作為分類標識。編碼器處理完成后,提取分類標記的輸出向量,通過全連接層映射到分類結果。例如,在 1000 類任務中,輸出 1000 維向量,經 Softmax 轉換為概率分布。
三、ViT 的訓練與優化
(一)預訓練與微調
ViT 通常在大規模數據集上預訓練以學習通用圖像特征。例如,在 JFT-300M 數據集(1400 萬張圖像)上預訓練,通過最小化交叉熵損失更新參數,使用 AdamW 優化器(學習率約 1e-4,權重衰減 0.05),模型逐漸收斂。
預訓練后,ViT 可在下游任務中微調。例如,在 CIFAR-10 上微調時,替換分類頭為 10 類輸出,使用較小學習率(如 1e-5)訓練,適應新任務并提升準確率。
(二)數據增強
數據增強是提升 ViT 性能的重要方法。常見技術包括旋轉、翻轉、裁剪、縮放、顏色抖動等,增強模型對角度、方向、局部特征、光照變化的魯棒性。
新興方法如 TransMix 基于注意力圖混合標簽,改進傳統 Mixup,根據像素重要性權重生成新樣本。在 ImageNet 上,TransMix 可提升 ViT 的 top-1 準確率約 0.9%,增強泛化能力。
(三)優化器與超參數調整
AdamW 是 ViT 常用的優化器,加入權重衰減防過擬合,參數 β1=0.9、β2=0.999、eps=1e-8 確保優化穩定。
超參數如分塊大小、嵌入維度、層數、注意力頭數、學習率、Dropout 概率需調整。分塊大小影響全局與細節捕捉,嵌入維度和層數影響表達能力,注意力頭數影響細節關注,學習率需通過調度(如余弦退火)優化,Dropout(0.1-0.3)防過擬合。可用網格搜索等方法優化超參數。
四、ViT 的性能分析
(一)與 CNN 的對比
在大數據集上,ViT 憑借全局建模能力優于 CNN。例如,在 JFT-300M 預訓練后,ViT 在 ImageNet 上準確率超過傳統 CNN,特別在復雜全局結構圖像中表現更佳。
在小數據集上,CNN 因歸納偏置(如平移不變性)更具優勢,ViT 易過擬合。例如,在 CIFAR-10 上,ResNet 通常優于未充分預訓練的 ViT。
ViT 自注意力機制計算復雜度高,與序列長度平方成正比,高分辨率圖像處理時資源需求大,而 CNN 卷積操作更高效。CNN 的卷積核可解釋性也優于 ViT 的注意力權重。
(二)不同數據集上的表現
在大規模數據集(如 JFT-300M)上,ViT 性能卓越,充分利用數據學習復雜特征。在小數據集(如 MNIST、CIFAR-10)上,ViT 表現不如 CNN,易過擬合。數據規模增加時,ViT 準確率可提升 5%-10%,泛化能力增強。
五、ViT 的變體與改進
(一)DeiT
DeiT 通過知識蒸餾提升性能,引入蒸餾標記與分類標記共同優化,模仿教師模型(如 RegNet)預測。在 ImageNet 上,DeiT 準確率提升 3%-6%。
DeiT 采用 RandomErase、Mixup、Cutmix 等數據增強技術,結合優化參數初始化和學習率調度,提高訓練效率和泛化能力。
(二)Swin Transformer
Swin Transformer 采用分層結構,通過多階段下采樣提取多尺度特征,適用于目標檢測、語義分割等任務。
其滑動窗口注意力機制在窗口內計算自注意力,降低復雜度( O ( M 2 ? H W ) O(M2 \cdot \frac{H}{W}) O(M2?WH?) vs. O ( H W 2 ) O(HW2) O(HW2)),移位窗口增強全局信息交互,適合高分辨率圖像處理。
六、ViT 的應用場景
(一)圖像分類
ViT 在圖像分類中表現優異。例如,ViT-B/16 在 ImageNet 上達到 77.9% 的 top-1 準確率。在醫療影像(如肺炎分類,準確率超 90%)和工業檢測(如缺陷識別,準確率約 95%)中應用廣泛。
(二)目標檢測
ViT 可作為骨干網絡用于目標檢測。例如,DETR 在 MS COCO 上 AP 達 42.0%。但計算復雜度高和對小目標檢測效果較弱是其挑戰。
(三)語義分割
ViT 的全局建模能力適合語義分割。例如,SegFormer 在 ADE20K 上 mIoU 達 45.1%。但高分辨率圖像處理資源需求大,細節捕捉能力稍遜于 CNN。
七、總結與展望
Vision Transformer(ViT)是計算機視覺的重要創新,通過 Transformer 架構捕捉圖像全局依賴,在圖像分類、目標檢測、語義分割中展現潛力。
其核心是將圖像分塊并嵌入,結合位置編碼輸入 Transformer 編碼器,通過自注意力建模全局關系。預訓練與微調、數據增強、優化器調整提升了性能。
ViT 在大規模數據集上表現優異,但小數據集易過擬合,計算復雜度高,可解釋性待提升。DeiT 和 Swin Transformer 等變體優化了效率和性能。
未來可從效率優化、訓練策略、可解釋性、新領域應用(如多模態融合)等方面進一步發展 ViT,推動視覺技術進步。(CNN)一直占據重要地位。自 2012 年 AlexNet 在 ImageNet 大賽中取得優異成績后,CNN 在圖像分類任務中顯示出強大能力。隨后,VGG、ResNet 等深度網絡架構不斷出現,推動了圖像分類、目標檢測、語義分割等任務的性能提升,促進了計算機視覺技術的快速發展。
延伸閱讀
-
計算機視覺系列文章
計算機視覺|從0到1揭秘Diffusion:圖像生成領域的新革命
計算機視覺 |解鎖視頻理解三劍客——ViViT
計算機視覺 |解鎖視頻理解三劍客——TimeSformer
計算機視覺 |解鎖視頻理解三劍客——SlowFast
計算機視覺實戰|Mask2Former實戰:輕松掌握全景分割、實例分割與語義分割
計算機視覺|Mask2Former:開啟實例分割新范式
計算機視覺|目標檢測進化史:從R-CNN到YOLOv11,技術的狂飆之路
輕量化網絡設計|ShuffleNet:深度學習中的輕量化革命
計算機視覺基礎|輕量化網絡設計:MobileNetV3
計算機視覺基礎|數據增強黑科技——AutoAugment
計算機視覺基礎|數據增強黑科技——MixUp
計算機視覺基礎|數據增強黑科技——CutMix
計算機視覺基礎|卷積神經網絡:從數學原理到可視化實戰
計算機視覺基礎|從 OpenCV 到頻域分析
-
機器學習核心算法系列文章
解鎖機器學習核心算法|神經網絡:AI 領域的 “超級引擎”
解鎖機器學習核心算法|主成分分析(PCA):降維的魔法棒
解鎖機器學習核心算法|樸素貝葉斯:分類的智慧法則
解鎖機器學習核心算法 | 支持向量機算法:機器學習中的分類利刃
解鎖機器學習核心算法 | 隨機森林算法:機器學習的超強武器
解鎖機器學習核心算法 | K -近鄰算法:機器學習的神奇鑰匙
解鎖機器學習核心算法 | K-平均:揭開K-平均算法的神秘面紗
解鎖機器學習核心算法 | 決策樹:機器學習中高效分類的利器
解鎖機器學習核心算法 | 邏輯回歸:不是回歸的“回歸”
解鎖機器學習核心算法 | 線性回歸:機器學習的基石
-
深度學習框架探系列文章
深度學習框架探秘|TensorFlow:AI 世界的萬能鑰匙
深度學習框架探秘|PyTorch:AI 開發的靈動畫筆
深度學習框架探秘|TensorFlow vs PyTorch:AI 框架的巔峰對決
深度學習框架探秘|Keras:深度學習的魔法鑰匙