
深度學習近年來作為解決各種電腦視覺任務(例如影像分類、目標檢測和分割)的方法
而廣受歡迎。在影像分析任務中,卷積神經網路 (CNN) 一直是主流架構。另一方面,Google 在 2020 年推出了名為 Vision Transformer (ViT) 的新架構,該架
構在多個影像分類基準測試中取得了最佳效能。 Transformer 架構最初是為自然語言處
理 (NLP) 任務提出的,是 ViT 的基礎。 Transformer 模型使用自注意力機制處理輸入序
列,從而能夠有效地捕捉長距離依賴關係和上下文資訊。 ViT 模型使用此架構進行影像分
析任務,將影像轉換為一系列標記,然後由 Transformer 編碼器處理。與傳統 CNN 相
比,這種方法具有多項優勢,包括能夠處理任意大小的影像以及更好地捕獲全局上下文資
訊。
●自然語言處理中的 Transformer

Transformer 透過啟用自注意力機制,徹底改變了自然語言處理任務。自注意力機制使
模型能夠在產生輸出時專注於輸入文字的相關部分。這顯著提升了翻譯、摘要和問答等語
言任務的表現。
由於在自然語言處理領域的成功,Transformer 現在也被用於電腦視覺任務。
其核心概念是用自注意力層取代傳統的捲積層,從而使模型能夠更好地理解圖像各個部分
之間的關係。此方法已在影像分類、目標偵測和分割等各種電腦視覺任務中取得了令人欣
喜的成果。
總體而言,Transformer 在自然語言處理方面的成功為其在電腦視覺任務中的應用鋪平
了道路,例如 Vision Transformer (ViT)。
●ViT 架構:

●ViT 架構由兩個主要元件組成
區塊嵌入模組和 Transformer 編碼器模組 。區塊嵌入模組將輸入影像劃分為不重疊的
區塊。之後,每個區塊被線性投影到低維嵌入空間,從而產生一系列嵌入。
1.Transformer 編碼器
由多層構成,每層包含一個多頭自注意力機制和一個前饋神經網路。在對每個影像區塊進
行編碼時,自注意力機制使模型能夠專注於影像的不同部分。自注意力機制的輸出由前饋
神經網路進行非線性變換。經過 Transformer 編碼器後,嵌入序列會傳遞到分類頭,
該分類頭用於預測輸入影像的類別標籤。
2.分類頭
通常實作為具有 softmax 激活函數的簡單前饋神經網路。
3.自注意力機制

Transformer 的自注意力機制使模型能夠在處理過程中選擇性地專注於輸入序列的不同
部分。這是透過計算輸入特徵的加權和來實現的,權重是根據每對特徵的相似性學習的。
這使得模型能夠專注於輸入中最重要的方面,同時忽略不太重要的方面。
ViT 使用這種自注意力機制來處理影像數據,首先將輸入影像劃分為多個區塊,然後將其
展平並線性投影到特徵向量序列。這些特徵向量隨後被輸入到標準 Transformer 編碼器
中,該編碼器使用自注意力機制來處理特徵向量序列。 ViT 可以透過專注於影像中不同抽
象層次的不同部分,提取出對影像分類和目標偵測等下游任務有用的特徵。

需要注意的是,此程式碼假設Q、K和 V 已經線性投影,以分別將其維度降低到 Q
維度、K 維度和 V 維度。
4.Image Patch Embeddings : 圖像區塊嵌入:
輸入影像被分割成固定數量且大小相等、互不重疊的區塊,然後使用 ViT 將其展平為
一維向量。之後,這些向量被線性投影,以產生稱為「區塊嵌入」的低維特徵向量。
在取得區塊嵌入後,它們會由 Transformer 編碼器處理,該編碼器採用自注意力機制來
學習嵌入之間的上下文關係。 Transformer 編碼器由一系列 Transformer 模組組成,
每個 Transformer 模組包含一個多頭自注意力機制和一個前饋神經網路。
Transformer 編碼器的輸出隨後被傳送到分類頭,該分類頭由一個線性層和一個
Softmax 激活函數組成。此模型的最終輸出是類別標籤上的機率分佈。

5. Positional Encoding : 位置編碼:

ViT 使用位置編碼來幫助模型理解不同影像區塊之間的空間關係。它用於將輸入影像的
空間資訊包含在嵌入中。輸入影像被劃分為一組互不重疊的影像區塊,這些影像區塊被
展平並線性投影到 ViT 中的固定維度。然後,為了傳達圖像塊的位置訊息,將一個可學習
的位置編碼向量添加到每個圖像塊嵌入中。這是透過將一組固定的不同頻率的正弦函數合
併到影像區塊嵌入中來實現的。選擇正弦函數的頻率是為了捕捉不同尺度的位置資訊。
在將影像區塊嵌入輸入到 Transformer 網路之前,位置編碼會被加入其中。透過引入位
置編碼,該模型可以更好地理解不同影像區塊之間的空間關係,並捕捉影像的整體結構。

6. Positional_encoding 函數接受兩個參數:
max_len (最大序列長度)
d_model( 模型維度)。
此函數會產生一個由正弦和餘弦函數組成的矩陣,用於對序列中每個元素的位置進行編
碼。函數的輸出是一個形狀為 (1, max_len, d_model) 的張量, 可以將其加入模型的輸
入嵌入中,以提供位置資訊。
7. 分類頭:
ViT 中的分類頭是一個在 Transformer 編碼器上新增的全連接層。它對編碼器的輸出
(即一系列特徵向量)進行線性變換,以產生單一輸出向量。然後,該輸出向量用於預測
輸入影像的類別標籤。
通常,分類頭層的神經元數量設定為與資料集中的類別數量相同。在訓練過程中,
分類頭的權重以及網路其餘部分的權重透過反向傳播和梯度下降進行學習。

●Vision Transformer(ViT)應用
ViT 已股犯應用於電腦影像處理, 例如:
1.Image classification 影像分類
2.Object detection 物體偵測
3.Semantic segmentation 語意分割
4.Instance segmentation 即時分割
5.Dense prediction 密集預測
6.Image synthesis 影像合成
7.Visual question answering 視覺問答
8.Video classification 影片分類
總而言之 ,Vision Transformer 是電腦視覺領域的最新突破,它應用 Transformer 架
構處理影像資料以完成分類任務。 Vision Transformer 在多個基準資料集上都取得了最
佳效能,包括 ImageNet、 CIFAR-100 和 COCO 。
ViT 使用位置編碼來整合空間訊息,並利用自注意力機制來捕捉不同影像區塊之間的相互
依賴關係。 ViT 的架構由一系列 Transformer 模組組成,模組後接一個分類頭。
ViT 已證明其在影像分類任務上的表現優於傳統的捲積神經網路 (CNN),尤其是在處理
大量標記資料的情況下。它在電腦視覺領域的成功證明了 Transformer 架構的多功能性
和有效性,該架構最初是為自然語言處理任務而設計的。
【視頻】ViT_Part1 : Patch Embedding
【視頻】ViT_Part 2 : ATTENTION - An Image is Worth 16x16 Words
- Explanation and Implementation
【視頻】ViT_Part 3 : Implementing Vision Transformer
【程式碼】視頻的程式碼Github Code
https://github.com/explainingai-code/VIT-Pytorch
【視頻】Gen AI 智慧製造交流研討會|群聯電子 潘建成執行長
【TIPS】Vision Transformer(視覺轉換器) 的工作原理
