社群計算機視覺課程文件
遷移學習與微調視覺Transformer用於影像分類
並獲得增強的文件體驗
開始使用
遷移學習與微調視覺Transformer用於影像分類
簡介
隨著Transformer架構在自然語言處理領域表現出色,同樣的架構也透過建立影像的小塊並將其視為標記而被應用於影像。其結果便是視覺Transformer(ViT)。在我們開始討論遷移學習/微調概念之前,讓我們先比較一下卷積神經網路(CNN)與視覺Transformer。
視覺Transformer (VT) 概述
總而言之,在視覺Transformer中,影像被重新組織成2D網格補丁。模型就是基於這些補丁進行訓練的。
主要思想見下圖:
但有一個問題!卷積神經網路(CNN)的設計中包含了一個VT中缺失的假設。這個假設基於我們人類感知影像中物體的方式。下面一節將對此進行描述。
CNNs 和 視覺Transformer 有何不同?
歸納偏置
歸納偏置是機器學習中一個術語,用於描述學習演算法用來進行預測的一組假設。簡單來說,歸納偏置就像一個捷徑,幫助機器學習模型根據它目前所看到的資訊做出有根據的猜測。
以下是我們觀察到的CNN中的幾個歸納偏置:
- 平移等變性:一個物體可以出現在影像中的任何位置,CNN可以檢測到它的特徵。
- 區域性性:影像中的畫素主要與其周圍的畫素相互作用形成特徵。
CNN模型在這兩個偏置上表現非常出色。而ViT沒有這個假設。這就是為什麼在資料集大小達到一定閾值之前,CNN實際上比ViT更好。但ViT有另一種優勢!Transformer架構(大部分)是不同型別的線性函式,這使得ViT具有高度可擴充套件性。而這反過來又使得ViT能夠透過海量資料克服上述兩個歸納偏置的問題!
但每個人如何才能獲取海量資料集呢?
並非每個人都能在數百萬張圖片上訓練視覺Transformer以獲得良好效能。相反,可以使用Hugging Face Hub等地方公開的模型權重。
你如何處理預訓練模型呢?你可以應用遷移學習並對其進行微調!
用於影像分類的遷移學習與微調
遷移學習的理念是,我們可以利用在非常大的資料集上訓練的視覺Transformer所學到的特徵,並將這些特徵應用於我們自己的資料集。這可以顯著提高模型效能,特別是當我們的資料集用於訓練的資料有限時。
由於我們正在利用已學習的特徵,因此我們也不需要更新整個模型。透過凍結大部分權重,我們只需訓練某些層即可在更短的訓練時間和更低的GPU消耗下獲得出色的效能。
多類別影像分類
你可以透過這個筆記本學習使用視覺Transformer進行影像分類的遷移學習教程
我們將構建一個影像分類器,用於區分貓狗品種
你的資料集領域可能與預訓練模型的領域不太相似。然而,我們不必從頭開始訓練一個視覺Transformer,而是可以選擇以較低的學習率更新整個預訓練模型的權重,這將“微調”模型,使其在我們的資料上表現良好。
多標籤影像分類
上面的教程教授了多類別影像分類,其中每張影像只分配一個類別。那麼,在多類別資料集中,每張影像有多個標籤的場景呢?
本筆記本將引導你完成使用視覺Transformer進行多標籤影像分類的微調教程
我們還將學習如何使用Hugging Face Accelerate編寫自定義訓練迴圈。這就是多標籤分類教程的預期結果:
額外資源
- 原始視覺Transformer論文:《一圖勝千言:用於大規模影像識別的Transformer》論文
- Swin Transformers 論文:Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 論文
- 一項系統的實證研究,旨在更好地理解Vision Transformers的訓練資料量、正則化、資料增強、模型大小和計算預算之間的相互作用:《如何訓練你的Vision Transformers?Vision Transformers中的資料、增強和正則化》論文