可能大家心裡都有一種錯誤認知,做自然語言處理任務的模型不能夠用來進行計算機視覺任務。其實不然,現階段已出現好多研究,它們通過算法的改進,將在 NLP 領域表現良好的模型,如 Transformer、GPT 等進行改進並應用於視覺任務,不僅實現了模型跨界,而且取得了不錯的性能。
模型跨界效果如何呢?
人工智慧的快速發展已經淋漓盡致地體現在我們的日常生活中,從人臉識別、語音識別到機器翻譯等等,無不展示著 AI 帶來的便利。已經落地的產品層出不窮,其後的算法模型你又了解多少呢?有些模型不僅在自己的領域表現出色,更能跨界出圈。
近幾年,NLP 領域的算法勢如破竹,不斷取得新突破,CV 領域同樣不斷取得創新。新工具、新算法、新算力等不斷迭代更新,在各自領域大放異彩。如果說將 NLP 領域的模型應用到 CV 領域,或反之,那效果該如何呢?模型跨界是否可行?
答案是肯定的。下面我們來盤點一下模型的跨界、破界表現如何?本文介紹的內容包括:
《End-to-End Object Detection with Transformers》:Facebook 將 Transformer 應用於目標檢測任務;
《Generative Pretraining from Pixels》:OpenAI 用 GPT-2 做圖像分類的嘗試;
《LAMBDANETWORKS: MODELING LONG-RANGE INTERACTIONS WITHOUT ATTENTION》:匿名論文,提出 LambdaNetworks,無需注意力機制進行視覺任務,由其衍生出的 LambdaResNets,極大地改善了圖像分類模型的速度與準確性權衡;
《AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》:匿名論文,提出 Vision Transformer,將 Transformer 應用於圖像識別。
《Learning Texture Transformer Network for Image Super-Resolution》:來自上海交大的微軟研究院實習生發表的超解析度領域的圖像,使用 Transformer 來解決超解析度的問題。
《Feature Pyramid Transformer》:南理、南洋理工等聯合發表的論文,提出特徵金字塔 Transformer(FPT),用於視覺識別任務。
論文一:目標檢測新範式,Detection Transformer(DETR)進行目標檢測由於 Transformer 廣泛應用於序列數據的處理任務,尤其是在語言建模、機器翻譯等任務中表現出良好的性能,那麼在 NLP 領域表現良好的模型是否可以用到視覺領域?來自 Facebook AI 的研究者實現了這一功能。
該研究把 Transformer 用到了目標檢測任務中,還取得了媲美 Faster R-CNN 的效果。該研究推出的 Transformer 視覺版本——Detection Transformer(以下簡稱 DETR),可用於目標檢測和全景分割。與之前的目標檢測系統相比,DETR 的架構有了根本上的改變,也是第一個將 Transformer 成功整合為檢測 pipeline 中心構建塊的目標檢測框架。基於 Transformer 的端到端目標檢測,沒有 NMS 後處理步驟、真正的沒有 anchor,且對標超越 Faster RCNN。
論文連結:https://arxiv.org/pdf/2005.12872v1.pdf
項目地址:https://github.com/facebookresearch/detr
算法實現:處理目標檢測任務的全新架構
DETR 通過將常見的 CNN 與 Transformer 架構相結合,直接(並行)預測最終的檢測結果。在訓練階段,二分匹配將唯一的預測分配給 GT 框。不匹配的預測應產生無對象(∅)類預測。
DETR 的工作流程可以歸為以下步驟:Backbone -> Transformer -> detect header。
將 DETR 的結構具體化,如下圖所示:
DETR 使用常規的 CNN 主幹來學習輸入圖像的 2D 表示。模型將其展平並在將其傳遞到 transformer 編碼器之前進行位置編碼補充。然後,transformer 解碼器將少量固定數量的學得位置嵌入作為輸入,稱為對象查詢,並另外參與編碼器的輸出。將解碼器的每個輸出嵌入傳遞到預測檢測(類和邊界框)或無對象類的共享前饋網絡(FFN)。
更為具體的 DETR 架構如下:
上圖給出了 DETR 中使用 transformer 的詳細說明,並在每個注意力層傳遞了位置編碼。來自 CNN 主幹的圖像特徵通過了 transformer 編碼器,並將空間位置編碼與添加到查詢和鍵處的空間編碼一起傳遞。然後,解碼器接收查詢(最初設置為零),輸出位置編碼(對象查詢)和編碼器內存,並通過多個多頭自注意力和解碼器 - 編碼器注意力來生成最終的一組預測類標籤和邊界框。此外可以跳過第一解碼器層中的第一自注意力層。
論文二:iGPT 做圖像分類,實現 SOTA 性能在一篇被 ICML 2020 接收的論文中,OpenAI 推出了用於圖像分類的模型 iGPT,在圖像上訓練 GPT-2(這些圖像被分解為長像素序列),結果發現這種模型能夠理解物體外觀和類別等 2D 圖像特徵。該模型生成的特徵在多個分類數據集上( CIFAR-10、CIFAR-100、STL-10 和 ImageNet )實現了 SOTA 性能,並且獲得了良好的圖像補全效果。
論文連結:https://cdn.openai.com/papers/Generative_Pretraining_from_Pixels_V2.pdf
項目地址:https://github.com/openai/image-gpt
算法實現
OpenAI 研究者提出的方法包含兩個階段:預訓練和微調。
在預訓練階段中,研究者探索自回歸目標和 BERT 目標,並使用序列 Transformer 架構來預測像素,而非語言 token。
如下圖所示,該方法首先對原始圖像進行預處理,將其調整為低解析度和 1D 序列;然後在自回歸下一像素預測或掩碼像素預測這兩個預訓練目標中選擇一個;最後,利用 linear probe 或微調,對這些目標學得的表示進行評估。
方法 1:linear probe,即使用訓練好的模型從下遊數據集圖像中提取特徵,然後將 logistic 回歸與標籤進行擬合;
該研究在 ImageNet 上訓練了三個 transformer 模型:iGPT-S、iGPT-M 和 iGPT-L,它們分別包含 76M、455M 和 14 億參數。此外,研究者還基於 ImageNet 和網絡圖片的混合數據訓練了 iGPT-XL,參數量達 68 億。
由於使用密集注意力建模長序列的計算成本較高,因此該研究選擇使用較低的解析度:32x32、48x48 和 64x64。
解析度繼續降低可以進一步減少計算成本,但是之前研究表明在這種情況下,人類的圖像分類能力會急劇下降。因此,該研究受早期顏色顯示調色板(color display palettes)的啟發,創建了 9-bit 顏色調色板來表示像素。使用該調色板可以得到長度僅為標準 (R, G, B) 1/3 的輸入序列,同時還能有效編碼顏色。
iGPT 的局限性
儘管該研究表明 iGPT 能夠學習強大的圖像特徵,但是該方法仍存在很大的局限性。
由於該研究採用的是用於語言任務的 GPT-2 的通用序列 Transformer,所以需要大量計算:iGPT-L 在 V100 上大約需要訓練 2500 天,而性能類似的 MoCo 模型大約只需要訓練 70 天。
此外,該研究用 Transformer 對低解析度輸入建模,而大多數自監督結果採用的是基於卷積的編碼器,這些編碼器可以輕鬆地處理高解析度輸入。可能需要一種新的架構,例如與域無關的多尺度 Transformer,以實現進一步擴展。
考慮到這些局限性,該研究主要是概念證明,證明了基於 Transformer 的大型語言模型在一些新領域中可以學習優秀的無監督表徵,而無需硬編碼領域的知識。但是,訓練這些模型需要大量的資源成本,而基於卷積神經網絡的方法又具有更高的準確率,這讓這些表徵在視覺領域中無法實際應用。
最後,生成模型可能會呈現出偏差,這些偏差是模型訓練所用的數據造成的。這些偏差中有許多都是有用的,例如假設棕色和綠色像素的部分代表葉子上覆蓋的分支,然後用這種偏差繼續生成圖像。
論文三:LambdaNetworks:無需注意力機制,應用於視覺任務Transformer 功能強大,但由於其注意力機制對內存的需求是輸入圖像的二次方,在圖像識別上會存在計算效率過低的挑戰。不僅如此,圖像的 head 個數也會帶來很大的顯存消耗。針對這一問題,出現了一種新的網絡 LambdaNetworks,無需建立昂貴的注意力即可捕捉長距離交互,為捕獲模型輸入和上下文信息的結構化集合之間的長期交互提供了一個通用框架。由其衍生出的 LambdaResNets,極大地改善了圖像分類模型的速度與準確性權衡。
LambdaNetworks 通過將可用上下文轉換為線性函數(lambda 函數),並將這些線性函數分別應用於每個輸入來捕獲此類交互。用 Lambda 層來替代注意力機制。注意力機制在輸入和上下文元素之間定義了一個相似核,而 Lambda 層則是將上下文信息總結為一個固定大小的線性函數,從而繞過了需要大量記憶的注意映射。
在 ImageNet 分類、COCO 目標檢測和實例分割三方面的對照實驗表明,LambdaNetwork 顯著優於基於卷積和注意力的同類方法,並且計算效率更高、運行速度更快。
最後,提出了 LambdaResNets,它顯著改善了圖像分類模型的速度——準確性權衡。LambdaResNets 在實現 SOTA ImageNet 準確性的同時,運行速度是 EfficientNets 的 4.5 倍左右。
論文連結:https://openreview.net/pdf?id=xTJEN-ggl1b
GitHub 連結:https://github.com/lucidrains/lambda-networks
算法實現
Lambda 層與注意力機制對比如下圖所示:
研究者證明了 lambda 層的通用性,展示了它們的實現可以被用來捕獲全局、局部或掩模上下文中基於內容和位置的交互。利用 lambda 生成的神經網絡 LambdaNetworks 計算效率很高,能夠以很小的內存成本建模長程依賴,因而可用於高解析度圖像等大型結構化輸入。由此產生的神經網絡體系架構 LambdaNetworks 具有高效的計算能力,並且可以通過直接調用現代神經網絡庫中可用的操作來輕鬆實現。
下表 1 給出了 lambda 層的超參數、參數等:
LAMBDA 層將上下文轉換為線性函數需要以下四步:
1. 生成上下文 lambda 函數:Lambda Layer 將上下文轉換為線性函數,生成 Contextual Lambda Function。lambda 層首先通過線性映射上下文來計算鍵和值,並且通過 softmax 操作跨上下文位置對鍵進行標準化,進而得到生成標準化的鍵 K^-。它的實現可以被看作是一種函數傳遞形式,每個上下文元素貢獻一個內容函數 和一個位置函數。函數是通過加和 context 得到的:
式中 content lambda 為λ^c ,position lambda 為λ_n^p ;λ^c 是對上下文元素的排列不變性,在所有查詢位置 n 之間共享,並編碼如何僅基於上下文內容對 q_n 進行轉換;對比之下,λ_n^p 編碼如何基於內容 c_m 和位置 (n,m) 轉換查詢內容 q_n ,從而支持對此類圖像進行結構化的建模輸入。
2. 將 lambda 應用於查詢,將輸入 x_n 轉換為查詢 ,得到 lambda 層的輸出為:
3. lambda 解釋,λ_n∈R^|k|x|v | 矩陣的列可以看作是 | k|x|v | 維的上下文特徵的固定大小集合。這些上下文特徵是根據上下文的內容和結構匯總得出的。利用 lambda 線性函數動態分配這些上下文特徵,以產生 輸出。這個過程用來捕捉密集的內容和基於位置的遠距離互動,而不產生 Attention Map。
4. 歸一化,該研究的實驗表明,在計算查詢和值之後應用批歸一化是很有用的。
論文四:Vision Transformer(ViT),將 Transformer 應用於圖像識別在計算機視覺中,卷積仍然佔主導地位。受到 NLP 領域中 Transformer 縮放成功的啟發,該研究嘗試將標準 Transformer 直接應用於圖像,並儘可能減少修改。為此,將圖像分割成多個圖像塊(patch),並將這些圖像塊的線性嵌入序列作為 Transformer 的輸入。然後用 NLP 領域中處理 token 的方式處理圖像塊,並以監督的方式訓練圖像分類模型。
研究表明:處理圖像時,對 CNN 的依賴不是必需的,當直接應用於圖像塊序列時,transformer 也能很好地執行圖像分類任務。該研究基於大量數據進行模型預訓練,並遷移至多個圖像識別基準數據集(ImageNet、CIFAR-100、VTAB 等),結果表明 Vision Transformer(ViT)模型可以獲得與當前最優卷積網絡相媲美的結果,而其訓練所需的計算資源大大減少。
該研究提出的 Vision Transformer 在 JFT-300M 數據集上進行預訓練,在多個圖像識別基準上接近或超過了 SOTA 水平,在 ImageNet 上達到了 88.36% 的準確率,在 ImageNet ReaL 上達到了 90.77% 的準確率,在 CIFAR-100 上達到了 94.55% 的準確率,在 VTAB 基準 19 個任務中達到了 77.16% 的準確率。
論文連結:https://openreview.net/pdf?id=YicbFdNTTy
算法實現
Vision Transformer 模型的設計儘可能的遵循 Transformer 原始設計。如下為模型架構圖:
標準 Transformer 接收 1D 序列的 token 嵌入為輸入。為了處理 2D 圖像,研究者將圖像 x ∈ R^H×W×C 變形為一系列的扁平化 2D patch x_p ∈ R^N×(P^2 ·C),其中 (H, W) 表示原始圖像的解析度,(P, P) 表示每個圖像 patch 的解析度。然後,N = HW/P^2 成為 Vision Transformer 的有效序列長度。
Vision Transformer 在所有層使用相同的寬度,所以一個可訓練的線性投影將每個向量化 patch 映射到模型維度 D 上(公式 1),相應的輸出被稱為 patch 嵌入。
與 BERT 的 [class] token 類似,研究者在一系列嵌入 patch (z_0^0 = x_class)之前預先添加了一個可學習嵌入,它在 Transformer 編碼器(z_0^L )輸出中的狀態可以作為圖像表示 y(公式 4)。在預訓練和微調階段,分類頭(head)依附於 z_L^0。
位置嵌入被添加到 patch 嵌入中以保留位置信息。研究者嘗試了位置嵌入的不同 2D 感知變體,但與標準 1D 位置嵌入相比並沒有顯著的增益。所以,編碼器以聯合嵌入為輸入。
Transformer 編碼器由多個交互層的多頭自注意力(MSA)和 MLP 塊組成(公式 2、3)。每個塊之前應用 Layernorm(LN),而殘差連接在每個塊之後應用。MLP 包含兩個呈現 GELU 非線性的層。
作為將圖像分割成 patch 的一種替代方案,輸出序列可以通過 ResNet 的中間特徵圖來形成。在這個混合模型中,patch 嵌入投影(公式 1)被早期階段的 ResNet 取代。ResNet 的其中一個中間 2D 特徵圖被扁平化處理成一個序列,映射到 Transformer 維度,然後饋入並作為 Transformer 的輸入序列。最後,如上文所述,將分類輸入嵌入和位置嵌入添加到 Transformer 輸入中。
Vision Transformer(ViT)模型局限性
在中等規模的數據集(如 ImageNet)上訓練時,模型產生的結果並不理想,準確率比同等大小的 ResNet 低幾個百分點。但這個結果是可以預料的:Transformer 缺少一些 CNN 固有的歸納偏置,例如平移同變性和局部性,因此在數據量不足的情況下進行訓練後,Transformer 不能很好地泛化。
論文五:紋理 Transformer(TTSR),用 Transformer 來實現端到端的超解析度任務該研究為圖像超解析度(SR)領域,旨在從低解析度(LR)圖像中恢復真實的紋理。具體而言,該研究提出了一種新穎的用於圖像超解析度的紋理 Transformer 網絡(TTSR:Texture Transformer Network for ImageSuper-Resolution ),其中低解析度 LR 和參考 Ref 圖像分別表示為 Transformer 中的查詢和關鍵字。
TTSR 有四個模塊組成:DNN 的可學習紋理提取器;相關性嵌入模塊;用於紋理傳遞的硬注意力模塊;用於紋理合成的軟注意力模塊。所提出的紋理 Transformer 以跨尺度的方式進一步堆疊,從不同級別(例如從 1x 倍到 4x 倍放大率)恢復紋理。大量的實驗表明,在定量和定性評估方面,TTSR 都較最新技術有了顯著改善。
論文連結:
https://openaccess.thecvf.com/content_CVPR_2020/papers/Yang_Learning_Texture_Transformer_Network_for_Image_Super-Resolution_CVPR_2020_paper.pdf
算法介紹
紋理 Transformer 架構如下:LR,LR↑和 Ref 分別代表輸入圖像,4 倍 bicubic-upsampled 的輸入圖像和參考圖像。依次對 Ref 應用具有相同 4 倍因子的 bicubic 下採樣和上採樣,以獲得與 LR↑domain-consistent 的 Ref↓↑。紋理 Transformer 將 Ref、Ref↓↑、LR↑和主幹產生的 LR 特徵作為輸入,並輸出同樣大小的特徵圖,該特徵圖將進一步用於生成 HR 預測。
紋理 Transformer 包含四個部分:可學習的紋理提取器(LTE)、相關性嵌入模塊(RE)、用於功能轉移的硬注意模塊(HA)和用於特徵合成的軟注意模塊(SA)。
跨尺度特徵集成:跨尺度特徵集成模塊(CSFI)以跨尺度方式堆疊多個紋理 Transformer 的體系結構。RB 表示一組殘餘塊。
堆疊的紋理 Transformer 輸出三個解析度級別(1×,2× 和 4×)的合成特徵,以便將不同尺度的紋理特徵融合到 LR 圖像中。而跨尺度特徵集成模塊(CSFI),以在不同尺度的特徵之間交換信息。每次將 LR 功能上採樣到下一個比例時,都會應用 CSFI 模塊。CSFI 模塊通過上 / 下採樣來接收來自其他級別的交換特徵,隨後是通道尺寸中的級聯操作。然後,卷積層會將要素映射到原始數量的通道中。
在這樣的設計中,從堆疊的紋理 Transformer 傳遞來的紋理特徵可以跨每個比例進行交換,從而獲得更強大的特徵表示。
論文六:特徵金字塔 Transformer(FPT),用於視覺識別任務將 Transformer 應用於對特徵金字塔 FPN 的改進上,本文提出了一種在空間和尺度上完全活躍的特徵交互,稱為特徵金字塔 Transformer(FPT)。它通過使用三個專門設計的 Transformer:Self-Transformer(ST)、Grounding Transformer(GT)和 Rendering Transformer(RT),以自上而下和自下而上的交互方式,將任何一個特徵金字塔變換成另一個同樣大小但具有更豐富上下文的特徵金字塔。
FPT 作為一個通用的視覺框架,具有合理的計算開銷。最後,本文在實例級(即目標檢測和實例分割)和像素級分割任務中進行了實驗,使用不同的主幹和頭部網絡,並觀察到比所有基準方法和最先進的方法一致的改進。
大量的實驗表明,FPT 可以極大地改善傳統的檢測 / 分割網絡:1)在 MS-COCO test-dev 數據集上,用於框檢測的百分比增益為 8.5%,用於遮罩實例的 mask AP 值增益為 6.0%;2)對於語義分割,分別在 Cityscapes 和 PASCAL VOC 2012 測試集上的增益分別為 1.6%和 1.2%mIoU;在 ADE20K 和 LIP 驗證集上的增益分別為 1.7%和 2.0%mIoU。
論文連結:https://arxiv.org/pdf/2007.09451.pdf
項目地址:https://github.com/ZHANGDONG-NJUST/FPT
算法介紹
FPT 的輸入是一個特徵金字塔,而輸出是一個變換的金字塔,其中每個 level 都是一個更豐富的特徵圖,它編碼了跨空間和尺度的非局部 non-local 交互作用。然後,可以將特徵金字塔附加到任何特定任務的頭部網絡。FPT 中特徵之間的交互採用了 transformer-style。具有整潔的查詢 query、鍵 key 和值 value 操作,在選擇遠程信息進行交互時非常有效,以適當的規模進行非局部 non-local 交互。另外,就如其他 transformer 模型一樣,使用 TPU 減輕計算開銷。
上圖為 FPT 網絡的總體架構。不同的紋理圖案表示不同的特徵 transformer,不同的顏色表示不同比例的特徵圖。Conv 表示輸出尺寸為 256 的 3×3 卷積。每個層次的轉換特徵圖(紅色、藍色和綠色)被重新排列到相應的地圖大小,然後與原始 map 連接,最後再輸入到卷積層,將它們調整到原始厚度。
參考連結:
https://blog.csdn.net/weixin_42137700/article/details/106487743https://www.thepaper.cn/newsDetail_forward_9621937https://zhuanlan.zhihu.com/p/149186888?utm_source=wechat_sessionhttps://blog.csdn.net/sinat_17456165/article/details/106678740https://yongqi.blog.csdn.net/article/details/107873296