計算機視覺|ViT詳解:打破視覺與語言界限

一、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:深度學習的魔法鑰匙


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72575.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72575.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72575.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringTask 引起的錯誤

SpringTask 引起的錯誤 1. 場景 在使用 SpringBoot 編寫后臺程序時,當在瀏覽器頁面中發起請求時,MP 自動填充來完成一些字段的填充,例如創建時間、創建人、更新時間、更新人等。但是當編寫微信小程序時,由于一些字段無法進行自動…

FPGA學習篇——Verilog學習4

1.1 結構語句 結構語句主要是initial語句和always語句,initial 語句它在模塊中只執行一次,而always語句則不斷重復執行,以下是一個比較好解釋的圖: (圖片來源于知乎博主羅成,畫的很好很直觀!) 1.1.1 initial語句 ini…

【Linux】【網絡】UDP打洞-->不同子網下的客戶端和服務器通信(未成功版)

【Linux】【網絡】UDP打洞–>不同子網下的客戶端和服務器通信(未成功版) 上次說基于UDP的打洞程序改了五版一直沒有成功,要寫一下問題所在,但是我后續又查詢了一些資料,成功實現了,這次先寫一下未成功的…

【Python編程】高性能Python Web服務部署架構解析

一、FastAPI 與 Uvicorn/Gunicorn 的協同 1. 開發環境:Uvicorn 直接驅動 作用:Uvicorn 作為 ASGI 服務器,原生支持 FastAPI 的異步特性,提供熱重載(--reload)和高效異步請求處理。 啟動命令: u…

前端權限流程(基于rbac實現思想)

1. 權限控制 1.1. 實現思想 基于rbac權限控制思想實現,給用戶分配角色,給角色分配權限 給用戶分配角色業務 注意:上方圖片是個示例圖,代表給用戶分配職位(角色),頁面中使用了Element-plus的el- checkbox組件…

軟件高級架構師 - 軟件工程

補充中 測試 測試類型 靜態測試 動態測試 測試階段 單元測試中,包含性能測試,如下: 集成測試中,包含以下: 維護 遺留系統處置 高水平低價值:采取集成 對于這類系統,采取 集成 的方式&…

python3.13安裝教程【2025】python3.13超詳細圖文教程(包含安裝包)

文章目錄 前言一、python3.13安裝包下載二、Python 3.13安裝步驟三、Python3.13驗證 前言 本教程將為你詳細介紹 Python 3.13 python3.13安裝教程,幫助你順利搭建起 Python 3.13 開發環境,快速投身于 Python 編程的精彩實踐中。 一、python3.13安裝包下…

【極客時間】瀏覽器工作原理與實踐-2 宏觀視角下的瀏覽器 (6講) - 2.5 渲染流程(上):HTML、CSS和JavaScript,是如何變成頁面的?

https://time.geekbang.org/column/article/118205 2.5 渲染流程(上):HTML、CSS和JavaScript,是如何變成頁面的? 2.4講了導航相關的流程,那導航被提交后又會怎么樣呢? 就進入了渲染階段。 這…

小模型和小數據可以實現AGI嗎

小模型和小數據很難實現真正的 通用人工智能(AGI, Artificial General Intelligence),但在特定任務或受限環境下,可以通過高效的算法和優化方法實現“近似 AGI” 的能力。 1. 為什么小模型小數據難以實現 AGI? AGI 需…

Android14 OTA差分包升級報kPayloadTimestampError (51)

由于VF 架構, 所以鏡像的打包時間可能存在偏差, 如 boot.img 和 客制化的一些鏡像打包 可能會在 vendor 側進行打包。 而 與system 側進行merge 時,時間戳比較亂,為了解決這個問題,讓時間戳進行統一。 使用adb方式驗證…

CMake學習筆記(一):工程的新建和如何將源文件生成二進制文件

cmake是我們在工作過程中比較常見的一個工具,該系列文章是自己用來學習的筆記。目前只是記錄下自己學習cmake的過程中的一些重要的知識點,其是以項目需求為導向并非完整的cmake的學習路線和系統,同樣也并非適合所有的人。 1.生成一個可執行文…

重定位(1)

一、重定位 1、對于有強大ROM的板子,他們會將上電后的程序放到指定RAM內存 2、無強大片內ROM的板子,自己編程序讓他知道RAM內存指定位置 指定位置:就是鏈接地址,指定哪里,哪里就被編譯好一塊內存用來存放上電的程序 …

自由學習記錄(41)

代理服務器的核心功能是在客戶端(用戶設備)和目標服務器(網站/資源服務器)之間充當“中介”,具體過程如下: 代理服務器的工作流程 當客戶端希望訪問某個網站(比如 example.com)時&…

Jadx Gui 的詳細介紹、安裝指南、使用方法及配置說明

Jadx Gui:安卓應用逆向分析神器 一、Jadx Gui 簡介 Jadx 是一款開源的 Android 反編譯工具,支持將 .apk、.aab、.dex 等文件反編譯為可讀的 Java/Kotlin 源代碼和資源文件(如 XML、PNG)。其特點包括: 圖形化界面&am…

Linux+apache之 瀏覽器訪問云服務器磁盤的圖片,通過tomcat

https://javab.blog.csdn.net/article/details/80580520 安裝tomcact 修改添加 <Context docBase"/home/wyp/images" path"/img" debug"0" reloadable"true" />修改完成后保存重啟tomcat服務。 測試訪問方式&#xff1a;http…

軟件工程與實踐(第4版 新形態) 練習與實踐1

軟件工程與實踐&#xff08;第4版 新形態&#xff09; 練習與實踐1 1.填空題 (1)程序&#xff0c;文檔 (2)系統軟件&#xff0c;支撐軟件&#xff0c;應用軟件 (3)系統方法 (4)軟件開發和維護 (5)工程的概念、原理、技術和方法 (6)實現軟件的優質高產 (7)軟件開發技術和…

基于遺傳算法的無人機三維路徑規劃仿真步驟詳解

基于遺傳算法的無人機三維路徑規劃仿真步驟詳解 一、問題定義 目標:在三維空間內,尋找從起點到終點的最優路徑,需滿足: 避障:避開所有障礙物。路徑最短:總飛行距離盡可能短。平滑性:轉折角度不宜過大,降低機動能耗。輸入: 三維地圖(含障礙物,如立方體、圓柱體)。起…

LIUNX學習-線程

線程概念 一個進程需要訪的大部分資源&#xff0c;諸如自身的代碼、數據、new\malloc的空間數據、命令行參數和環境變量、動態庫、甚至是系統調用訪問內核代碼…都是通過虛擬地址空間來訪問的。換而言之&#xff0c;進程地址空間是進程的資源窗口&#xff01;&#xff01; ? …

1.Big-endian/ little endian大端對齊、小端對齊

一、大端模式、小端模式的介紹 Little endian&#xff1a;是低位字節排放在內存的低地址端、高位字節排放在內存的高地址端。 Big-endian&#xff1a;是高位字節排放在內存的低地址端、低位字節排放在內存的高地址端。 西門子是大端模式&#xff0c;因為比如 MW100 MB100(高位…

[mybatis]resultMap詳解

resultMap Mybatis中提供了resultMap功能&#xff0c;可以將數據庫查詢結果映射到Java對象&#xff0c;用于解決 字段名與屬性名不一致 或 復雜關系&#xff08;如一對多&#xff09;的映射問題。 比如一個User類&#xff0c;在它的屬性里還有另一個子對象&#xff08;或者多…