當前位置: 華文星空 > 知識

電腦視覺中的Transformer

2021-11-23知識

將Transformer套用到CV任務中現在越來越多了,這裏整理了一些相關的進展給大家。這裏CVer先推薦大家看一下最近的兩篇視覺Transformer綜述:

導讀

將Transformer套用到CV任務中現在越來越多了,這裏整理了一些相關的進展給大家。

Transformer結構已經在許多自然語言處理任務中取得了最先進的成果。Transformer 模型的一個主要的突破可能是今年年中釋出的GPT-3,被授予NeurIPS2020「最佳論文「。

在電腦視覺領域,CNN自2012年以來已經成為視覺任務的主導模型。隨著出現了越來越高效的結構,電腦視覺和自然語言處理越來越收斂到一起,使用Transformer來完成視覺任務成為了一個新的研究方向,以降低結構的復雜性,探索可延伸性和訓練效率。

以下是幾個在相關工作中比較知名的專案:

  • DETR (End-to-End Object Detection with Transformers),使用Transformers進行物體檢測和分割。
  • Vision Transformer (AN IMAGE IS WORTH 16X16 WORDS: Transformer FOR IMAGE RECOGNITION AT SCALE),使用Transformer 進行影像分類。
  • Image GPT (Generative Pretraining from Pixels),使用Transformer進行像素級影像補全,就像其他GPT文本補全一樣。
  • End-to-end Lane Shape Prediction with Transformers ,在自動駕駛中使用Transformer進行車道標記檢測
  • 結構

    總的來說,在CV中采用Transformer的相關工作中主要有兩種模型架構。一種是純Transformer結構,另一種是將CNNs/主幹網與Transformer相結合的混合結構。

  • 純Transformer
  • 混合型:(CNNs+ Transformer)
  • Vision Transformer 是基於完整的自註意力的Transformer結構沒有使用CNN,而 DETR 是使用混合模型結構的一個例子,它結合了摺積神經網絡(CNNs)和Transformer。

    一些問題

  • 為什麽要在CV中使用Transformer?如何使用
  • benchmark上的結果是什麽樣的?
  • * What are the constraints and challenges of using Transformer in CV?*
  • 哪種結構更高效和靈活?為什麽?
  • 你會在ViT、DETR和Image GPT的下面的深入研究中找到答案。

    Vision Transformer

    Vision Transformer(ViT)將純Transformer架構直接套用到一系列影像塊上進行分類任務,可以取得優異的結果。它在許多影像分類任務上也優於最先進的摺積網絡,同時所需的預訓練計算資源大大減少(至少減少了4倍)。

    Vision Transformer模型結構

    影像序列patches

    它們是如何將影像分割成固定大小的小塊,然後將這些小塊的線性投影連同它們的影像位置一起輸入變壓器的。然後剩下的步驟就是一個幹凈的和標準的Transformer編碼器和解碼器。

    在影像patch的嵌入中加入位置嵌入,透過不同的策略在全域範圍內保留空間/位置資訊。在本文中,他們嘗試了不同的空間資訊編碼方法,包括無位置資訊編碼、1D/2D位置嵌入編碼和相對位置嵌入編碼。

    不同位置編碼策略的對比

    一個有趣的發現是,與一維位置嵌入相比,二維位置嵌入並沒有帶來顯著的效能提升。

    數據集

    該模型是從多個大型數據集上刪除了重復數據預訓練得到的,以支持微調(較小數據集)下遊任務。

  • ILSVRC-2012 ImageNet數據集有1k類和130萬影像
  • ImageNet-21k具有21k類和1400萬影像
  • JFT擁有18k類和3.03億高分辨率影像
  • 模型的變體

    像其他流行的Transformer 模型(GPT、BERT、RoBERTa)一樣,ViT(vision transformer)也有不同的模型尺寸(基礎型、大型和巨大型)和不同數量的transformer層和heads。例如,ViT-L/16可以被解釋為一個大的(24層)ViT模型,具有16×16的輸入影像patch大小。

    註意,輸入的patch尺寸越小,計算模型就越大,這是因為輸入的patch數目N = HW/P*P,其中(H,W)為原始影像的分辨率,P為patch影像的分辨率。這意味著14 x 14的patch比16 x 16的影像patch在計算上更昂貴。

    Benchmark結果

    影像分類的Benchmark

    以上結果表明,該模型在多個流行的基準數據集上優於已有的SOTA模型。

    在JFT-300M數據集上預訓練的vision transformer(ViT-H/14, ViT-L/16)優於所有測試數據集上的ResNet模型(ResNet152x4,在相同的JFT-300M數據集上預訓練),同時在預訓練期間占用的計算資源(TPUv3 core days)大大減少。即使是在ImageNet-21K上預訓練的ViT也比基線表現更好。

    模型效能 vs 數據集大小

    預訓練數據集大小VS模型效能

    上圖顯示了數據集大小對模型效能的影響。當預訓練數據集的大小較小時,ViT的表現並不好,當訓練數據充足時,它的表現優於以前的SOTA。

    哪種結構更高效?

    如一開始所提到的,使用transformer進行電腦視覺的架構設計也有不同,有的用Transformer完全取代CNNs (ViT),有的部份取代,有的將CNNs與transformer結合(DETR)。下面的結果顯示了在相同的計算預算下各個模型結構的效能。

    不同模型架構的效能與計算成本

    以上實驗表明:

  • 純Transformer架構(ViT)在大小和計算規模上都比傳統的CNNs (ResNet BiT)更具效率和可延伸性
  • 混合架構(CNNs + Transformer)在較小的模型尺寸下效能優於純Transformer,當模型尺寸較大時效能非常接近
  • ViT (vision transformer)的重點

  • 使用Transformer架構(純或混合)
  • 輸入影像由多個patch平鋪開來
  • 在多個影像辨識基準上擊敗了SOTA
  • 在大數據集上預訓練更便宜
  • 更具可延伸性和計算效率
  • DETR

    DETR是第一個成功地將Transformer作為pipeline中的主要構建塊的 目標檢測 框架。它與以前的SOTA方法(高度最佳化的Faster R-CNN)的效能匹配,具有更簡單和更靈活的pipeline。

    DETR結合CNN和Transformer的pipeline的目標檢測

    上圖為DETR,一種以CNN和Transformer為主要構建塊的混合pipeline。以下是流程:

    1. CNN被用來學習影像的二維表示並提取特征
    2. CNN的輸出是扁平化的,並輔以位置編碼,以饋入標準Transformer的編碼器
    3. Transformer的解碼器透過輸出嵌入到前饋網絡(FNN)來預測類別和包圍框

    更簡單的Pipeline

    傳統目標檢測pipeline和DETR的對比

    傳統的目標檢測方法,如Faster R-CNN,有多個步驟進行 錨的生成 NMS 。DETR放棄了這些手工設計的元件,顯著地簡化了物體檢測pipeline。

    當擴充套件到全景分割時,驚人的結果

    在這篇論文中,他們進一步擴充套件了DETR的pipeline用於全景分割任務,這是一個最近流行和具有挑戰性的像素級辨識任務。為了簡單解釋全景分割的任務,它統一了2個不同的任務,一個是傳統的 語意分割 (為每個像素分配類標簽),另一個是 例項分割 (檢測並分割每個物件的例項)。使用一個模型架構來解決兩個任務(分類和分割)是非常聰明的想法。

    像素級別的全景分割

    上圖顯示了全景分割的一個例子。透過DETR的統一pipeline,它超越了非常有競爭力的基線。

    註意力視覺化

    下圖顯示了Transformer解碼器對預測的註意力。不同物體的註意力分數用不同的顏色表示。

    透過觀察顏色/註意力,你會驚訝於模型的能力,透過自註意在全域範圍內理解影像,解決重疊的包圍框的問題。尤其是斑馬腿上的橙色,盡管它們與藍色和綠色局部重疊,但還是可以很好的分類。

    預測物體的解碼器註意力視覺化

    DETR的要點

  • 使用Transformer得到更簡單和靈活的pipeline
  • 在目標檢測任務上可以匹配SOTA
  • 並列的更有效的直接輸出最終的預測集
  • 統一的目標檢測和分割架構
  • 大目標的檢測效能顯著提高,但小目標檢測效能下降
  • Image GPT

    Image GPT是一個在像素序列上用影像補全訓練的GPT-2 transformer 模型。就像一般的預訓練的語言模型,它被設計用來學習高質素的無監督影像表示。它可以在不知道輸入影像二維結構的情況下自回歸預測下一個像素。

    來自預訓練的影像GPT的特征在一些分類基準上取得了最先進的效能,並在ImageNet上接近最先進的無監督精度。

    下圖顯示了由人工提供的半張影像作為輸入生成的補全模型,隨後是來自模型的創造性補全。

    來自Image GPT的影像補全

    Image GPT的要點:

  • 使用與NLP中的GPT-2相同的transformer架構
  • 無監督學習,無需人工標記
  • 需要更多的計算來生成有競爭力的表示
  • 學習到的特征在低分辨率數據集的分類基準上實作了SOTA效能
  • 總結

    Transformer在自然語言處理中的巨大成功已經在電腦視覺領域得到了探索,並成為一個新的研究方向。

  • Transformer被證明是一個簡單和可延伸的框架,用於電腦視覺任務,如影像辨識、分類和分割,或僅僅學習全域影像表示。
  • 與傳統方法相比,在訓練效率上具有顯著優勢。
  • 在架構上,可以采用純Transformer的方式使用,也可以與cnn結合使用混合的方式使用。
  • 它也面臨著挑戰,比如在DETR中檢測小目標的效能較低,在Vision Transformer (ViT)中,當預訓練數據集較小時,效能也不是很好。
  • Transformer正在成為學習序列數據(包括文本、影像和時間序列數據)的更通用的框架。
  • 英文原文:https:// towardsdatascience.com/ transformer-in-cv-bbdb58bf335e

    更多電腦視覺中的Transformer可參考影片