<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          最強Vision Trabsformer | 87.7%準(zhǔn)確率!CvT:將卷積引入視覺Transfo...

          共 7498字,需瀏覽 15分鐘

           ·

          2021-04-02 23:54

          點擊上方【AI人工智能初學(xué)者】,選擇【星標(biāo)】公眾號期待您我的相遇與進步63970360ef739103828f5bd04efd5577.webp

          本文將卷積引入視覺Transformer提出CvT,在ImageNet拿下87.7% Top-1準(zhǔn)確率!與其他視覺Transformer和ResNet相比,具有更少的參數(shù)和更低的FLOPs,在垂直任務(wù)應(yīng)用中,也保持性能優(yōu)勢!代碼即將開源!
          作者單位:麥吉爾大學(xué), 微軟云+AI

          1 簡介

          1.1 全文簡述

          在本文中介紹了一種稱為卷積視覺Transformer(CvT)的新體系結(jié)構(gòu),該體系結(jié)構(gòu)通過將卷積引入ViT中來產(chǎn)生兩種設(shè)計結(jié)合的最佳效果,從而提高了視覺Transformer(ViT)的性能和效率。

          CvT主要是通過2個主要改進完成的:包含卷積Token嵌入的Transformer層次結(jié)構(gòu),以及利用卷積映射的卷積Transformer Block。這些變化將卷積神經(jīng)網(wǎng)絡(luò)(CNN)的特性引入到ViT架構(gòu)中(即平移、縮放和旋轉(zhuǎn)不變性),同時保持了Transformers的優(yōu)點(即動態(tài)注意力,全局Context和更好的泛化)。

          706c07ecaf8e11b0cf2d940d962904ab.webp

          圖1 CvT在ImageNet實驗對比圖

          通過進行廣泛的實驗來驗證CvT的有效性,實驗表明該方法與ImageNet-1k上的其他視覺Transformer和ResNet相比,具有更少的參數(shù)和更低的FLOPs,可實現(xiàn)最先進的性能。

          此外,在較大的數(shù)據(jù)集(例如ImageNet-22k)上進行預(yù)訓(xùn)練并針對垂直任務(wù)進行微調(diào)時,可以保持性能提升。CvT-W24在ImageNet-22k上進行了預(yù)訓(xùn)練,在ImageNet-1k val集合上獲得了87.7%的top-1精度。

          最后,實驗結(jié)果表明,位置編碼是現(xiàn)有Vision Transformer的關(guān)鍵組成部分,可以在模型中刪除進而簡化了高分辨率視覺任務(wù)的設(shè)計。

          1.2 相關(guān)總結(jié)

          近幾年,Transformer在自然語言處理(NLP)的任務(wù)領(lǐng)域中得到了廣泛的應(yīng)用。而Vision Transformer(ViT)則是近來第一個完全依賴于Transformer架構(gòu)的計算機視覺模型,同時獲得具有競爭力的圖像分類性能。ViT設(shè)計通過對語言的理解,以最小的修改來適應(yīng)Transformer架構(gòu)。

          首先,圖像被分割成離散的不重疊的小塊(例如16×16);

          然后,將這些小塊作為Token(類似于NLP中的Token),用一種特殊的位置編碼來表示空間信息,然后輸入到標(biāo)準(zhǔn)Transformer層中建模全局關(guān)系,進而進行分類。

          盡管Vision Transformer在一定程度上取得了成功,但在較小的數(shù)據(jù)量上訓(xùn)練時,其性能仍然低于類似規(guī)模的卷積神經(jīng)網(wǎng)絡(luò)(如ResNets)。一個可能的原因可能是ViT缺乏CNN架構(gòu)中固有的特性,而這些特性使CNN適合解決視覺任務(wù)。

          例如,圖像具有很強的二維局部結(jié)構(gòu):空間相鄰像素通常是高度相關(guān)的。CNN的架構(gòu)通過使用局部感受野、共享權(quán)值和空間子采樣來強制捕獲這個局部結(jié)構(gòu),從而也實現(xiàn)了一定程度的平移、尺度和旋轉(zhuǎn)不變性。此外,考慮到不同復(fù)雜程度的局部空間Context,卷積核的層次結(jié)構(gòu)學(xué)習(xí)是從簡單的低級邊緣和紋理到高級語義的學(xué)習(xí)模式。

          1.3 本文出發(fā)點

          在本文中作者假設(shè)卷積可以有策略地引入到ViT結(jié)構(gòu)之中以提高模型的性能和魯棒性同時保持較高的計算和內(nèi)存效率。為了驗證假設(shè)作者提出了一種新的架構(gòu),稱為Convolutional vision Transformer(CvT),它將卷積合并到Transformer中,在(FLOPs)和參數(shù)方面都是高效的。

          CvT設(shè)計在ViT架構(gòu)的2個核心部分引入了卷積:

          首先,將Transformer劃分為多個階段,形成一個分層結(jié)構(gòu)的Transformer。每個階段的開始由一個卷積Token嵌入組成,該卷積Token嵌入在一個二維重塑的Token映射上進行卷積操作(即,將Flattened的Token序列重塑回空間網(wǎng)格),然后是Layer Normalization。這個操作使得模型不僅可以捕獲局部信息,而且還可以逐步減少序列長度,同時在不同階段增加Token特征的維數(shù),實現(xiàn)空間下采樣,同時增加特征映射的數(shù)量。

          其次,將Transformer模塊中每個Self-Attention Block之前的線性投影替換為卷積投影,該卷積投影在二維重塑的Token映射上采用深度可分卷積。這使得該模型在注意力機制中能夠進一步捕獲局部空間語義信息,減少語義歧義。它還允許管理計算復(fù)雜度,因為卷積的Stride可以用于對鍵和值矩陣進行子采樣,以提高4倍或更多的效率,同時最小化性能的損失。

          2 相關(guān)工作

          最近,基于Transformer的體系結(jié)構(gòu)被認(rèn)為是一個可替代卷積神經(jīng)網(wǎng)絡(luò)(CNNs)的架構(gòu),它可以被用到很多CV的垂直領(lǐng)域,如分類、目標(biāo)檢測、分割、圖像增強、圖像生成、視頻處以及3D點云處理等。

          2.1 ViT

          ViT是第一個證明當(dāng)數(shù)據(jù)足夠大(如ImageNet-22k, JFT-300M)時,純Transformer架構(gòu)可以在圖像分類方面達到最先進的性能(如ResNets, EfficientNet)。具體來說,ViT將每幅圖像分解成一組固定長度的token序列(即非重疊patches),然后應(yīng)用多個標(biāo)準(zhǔn)的Transformer(Multi-Head Self-Attention module, MHSA)和位置前饋模塊(position-wise feedforward module, FFN)對這些token進行建模。

          DeiT進一步探索了ViT的數(shù)據(jù)高效訓(xùn)練和蒸餾。在這項工作中,研究了如何結(jié)合CNN和Transformer,并以一種有效的方式建模局部和全局依賴的圖像分類。

          為了更好地模擬視覺Transformer的局部Context,一些并行工作也引入了設(shè)計變更。

          條件位置編碼視覺Transformer(CPVT)用條件位置編碼(CPE)取代了ViT中預(yù)定義的位置嵌入,使Transformer能夠處理任意大小的輸入圖像而無需插值;

          Transformer In Transformer(TNT)既利用處理貼片嵌入的外部Transformer塊,又利用模擬像素嵌入之間關(guān)系的內(nèi)部Transformer,對貼片級和像素級表示進行建模;

          Token To Token(T2T)主要通過將滑動窗口中的多個令牌連接為一個Token來改進ViT中的Token化。然而,該操作與卷積有根本的不同,尤其是在規(guī)范化細節(jié)方面,而且多個標(biāo)記的連接大大增加了計算和內(nèi)存方面的復(fù)雜性;

          PVT為Transformer引入了一種多級設(shè)計(不含卷積),類似于CNNs中的多尺度,有利于密集預(yù)測任務(wù)。

          5506215a3f4653c6dd48cfe569547a30.webp

          表1 Vision Transformer對比

          與以上的工作相比,本文工作的目標(biāo)是通過引入卷積,在圖像域特定的歸納偏差,以達到最好的Transformer結(jié)構(gòu)。表1顯示了上述具有代表性作品和本文CvT在位置編碼的必要性、Token嵌入類型、映射類型和Backbone中的Transformer結(jié)構(gòu)方面的主要區(qū)別。

          2.2 向CNN引入Self-Attention

          Self-Attention在cnn視覺任務(wù)中得到了廣泛的應(yīng)用。在這些工作中,Non-Local Network的設(shè)計是為了通過全局Attention來捕捉長期依賴關(guān)系。Local Relation Networks 根據(jù)local windows內(nèi)像素/特征之間的組成關(guān)系(相似度)來進行權(quán)值聚合,而卷積層則在空間相鄰的輸入特征上采用固定的權(quán)值聚合。這種自適應(yīng)權(quán)值聚合將幾何先驗引入到網(wǎng)絡(luò)中,這對識別任務(wù)很重要。

          最近,BoTNet提出了一種簡單而強大的Backbone,它只是在一個ResNet的最后3個Bottleneck block中用全局的Self-Attention代替了空間卷積,在圖像識別方面取得了不錯的效果。

          相反,本文的工作執(zhí)行了一個相反的研究方向:將卷積引入到Transformer之中。

          2.3 向Transformer引入CNN

          在NLP和語音識別中,卷積被用來修改Transformer Block,或者用卷積層代替Multi-Head Attentions,亦或是以并行或順序的方式增加額外的卷積層,以捕獲局部關(guān)系。之前的其他工作提出通過殘差連接將注意力映射傳播到后續(xù)層,這首先通過卷積進行轉(zhuǎn)換。

          不同于前面的工作,本文推薦在Vision Transformer的2個主要部分引入卷積:

          • 首先,使用卷積投影操作取代現(xiàn)有的Position-wise線性投影;
          • 其次,類似于CNN,使用分層多級結(jié)構(gòu)和不同分辨率的2D Reshaped Token Maps。

          通過以上2個獨特的網(wǎng)絡(luò)設(shè)計相對于以前的工作有了顯著的性能和效率的提升。

          3 CvT 核心原理

          3dd230c1fc77bce212b04fb081d2c8ef.webp

          圖2 CvT架構(gòu)的PipLine

          CvT的整體Pipline如圖2所示。在ViT架構(gòu)中引入了2種基于卷積的操作,即卷積Token嵌入和卷積映射。如圖2(a)所示,本文借鑒了CNN的多階段層次設(shè)計,共采用了3個階段:

          • 首先,輸入圖像經(jīng)過卷積Token嵌入層,卷積層是將重構(gòu)Token的重疊塊卷積到二維空間網(wǎng)格作為輸入(重疊程度可通過步長來控制)。對Token應(yīng)用額外的LN(層歸一化)。這允許每個階段逐步減少Token的數(shù)量(即特征分辨率),同時增加Token的寬度(即特征維度),從而實現(xiàn)空間下采樣和增加R的豐富度。與其他先前的基于變壓器的架構(gòu)不同,我們不將嵌入令牌的額外位置相加。

          • 然后,疊加一些卷積Transformer Block組成每個階段的殘差部分。圖2(b)展示了卷積Transformer Block的架構(gòu),其中使用深度可分離的卷積運算,稱為卷積映射,分別用于查詢、鍵和值的嵌入,而不是ViT中標(biāo)準(zhǔn)的位置線性映射。此外,分類Token只在最后階段添加。

          • 最后,在最后階段輸出的分類標(biāo)記上使用MLP來預(yù)測結(jié)果。

          3.1 卷積Token Embedding

          CvT中的卷積操作旨在通過一種類似CNNs的多級層次方法從Low-level到High-Semantic模擬局部空間Context。

          給定一個2D圖像或者從第階段得到的2D-reshaped Token Map輸出作為第階段的輸入,這里通過學(xué)習(xí)一個函數(shù)將映射到一個新的通道大小為的Token ,的二維卷積核大小為,stride為,padding為p。

          新的Token Map 的高度和寬度為:

          04b89e80ac49ecdcb25c3a3f885fda1e.webp

          然后將平鋪成大小為,并通過LN進行歸一化,以便輸入到第i stage的subsequent Transformer blocks中。

          卷積Token嵌入層允許通過改變卷積運算的參數(shù)來調(diào)整每個階段的Token特征維數(shù)和數(shù)量。通過這種方式,在每個階段逐步減少Token序列長度,同時增加Token特征維數(shù)。這使得Token能夠在越來越大的空間上表示越來越復(fù)雜的視覺模式,類似于CNN的特征層。

          3.2 注意力的卷積映射

          卷積投影層的目標(biāo)是實現(xiàn)對局部空間Context的額外建模,并通過允許K和V矩陣的欠采樣來提高效率。

          從根本上說,提出的Transformer塊具有卷積映射是對原Transformer塊的推廣。而之前的工作嘗試在Transformer中添加額外的卷積模塊對于語音識別和自然語言處理,它們導(dǎo)致更復(fù)雜的設(shè)計和額外的計算成本。相反,本文建議用具有深度可分離卷積的Multi-Head Self-Attention(MHSA)代替原來的位置線性映射進而形成卷積映射層。

          1 復(fù)現(xiàn)細節(jié)

          542a34c537b886959aef6db67452dde4.webp

          圖3(a) ViT中的線性映射

          圖3(a)顯示了ViT中使用的原始位置線性映射

          e15770d2bce0eebf56e570aa7be5d16f.webp

          圖3(b) 卷積映射

          6d16b12ffdb12683d9c1d3121bd77ba6.webp

          圖3(c) 壓縮卷積映射

          圖3(b)顯示了本文提出的s×s卷積投影。如圖3(b)所示,首先將Token重塑為2D Token Map。接下來,使用核大小為s的深度可分離卷積層來實現(xiàn)卷積映射。最后,映射后的Token被平展為1D以供后續(xù)處理。這可以表述為:

          aa7589f04f02090b88edc3607565efa0.webp

          其中是第層Q/K/V矩陣的Token輸入,是卷積投影之前的未擾動Token,Conv2d是深度可分離卷積,其實現(xiàn)方式為:Depth-wise Conv2d—>BatchNorm2d—>Point-wise Conv2d,s為卷積核大小。新的卷積映射層Transformer塊是對原有Transformer塊設(shè)計的推廣。原始的基于位置的線性映射層可以使用內(nèi)核大小為1×1的卷積層來實現(xiàn)。

          2 效率考慮

          本文設(shè)計的卷積投影層有2個效率上的好處:

          • 首先,利用了有效的卷積。直接使用標(biāo)準(zhǔn)的卷積進行卷積映射需要個參數(shù)和的FLOPs,其中C是Token通道維數(shù),T是要處理的Token數(shù)量。相反,將標(biāo)準(zhǔn)的卷積分解為深度可分離的卷積。這樣,與原始的位置線性映射相比每個卷積映射只會引入額外的個參數(shù)和的FLOPs,相對于模型的總參數(shù)和FLOPs,這些都可以忽略。

          • 其次,利用提出的卷積投影來減少MHSA操作的計算成本。卷積投影允許通過使用大于1的步長來減少Token的數(shù)量。圖3(c)顯示了卷積投影,其中的key和value投影是通過步長大于1的卷積進行下采樣的,文章對key和value投影使用步長2,而對query保持不變使用步長1。這樣,key和value的token數(shù)量減少了4倍,以后的MHSA操作計算成本減少了4倍。這帶來了最小的性能損失,因為圖像中的鄰近像素/補丁往往在外觀/語義上有冗余。另外,所提出的卷積投影的局部Context建??梢詮浹a分辨率降低所帶來的信息損失。

          3.3 方法的討論

          1 刪除位置嵌入

          對每個Transformer塊引入卷積映射結(jié)合卷積Token嵌入能夠通過網(wǎng)絡(luò)建模局部空間關(guān)系。這個內(nèi)置屬性允許在不影響性能的情況下刪除網(wǎng)絡(luò)中嵌入的位置,從而簡化了具有可變輸入分辨率的視覺任務(wù)的設(shè)計。

          2 與當(dāng)前一些工作的關(guān)系

          最近,另外兩個相關(guān)的工作也提出通過將CNN的元素整合到Transformer中來改進ViT。Tokensto-Token ViT實現(xiàn)漸進的Token化,然后使用基于Transformer的Backbone,其中Token的長度是固定的。

          相比之下CvT通過在每個階段包含卷積Token嵌入和卷積Transformer塊的多階段過程來實現(xiàn)漸進的Token化。隨著Token的長度在每一階段的減少,Token的寬度(特征維度)可以增加,允許在每個特征空間分辨率上表示的豐富度增加。

          此外,T2T將相鄰的Token連接成一個新的Token,導(dǎo)致內(nèi)存和計算的復(fù)雜性增加,而CvT使用卷積Token嵌入直接執(zhí)行Context學(xué)習(xí),而無需連接,同時提供了控制步長和特征維數(shù)的靈活性。為了管理復(fù)雜性,T2T必須考慮一個深度狹窄的架構(gòu)設(shè)計,其隱藏維度和MLP規(guī)模小于后續(xù)主干中的ViT。相反,CvT通過用卷積投影替換位置相關(guān)的線性投影來更改先前的Transformer模塊。

          金字塔ViT(PVT)克服了將ViT移植到各種密集預(yù)測任務(wù)中的困難。在ViT中,輸出的特征圖只有一個尺度分辨率較低。此外,即使對于普通的輸入圖像大小,計算和存儲成本也相對較高。為了解決這個問題,PVT和CvT從CNN到Transformer結(jié)構(gòu)都采用了金字塔結(jié)構(gòu)。PVT只對投影中的特征映射或key/value矩陣進行空間子樣本,而CvT采用了帶大步的卷積來實現(xiàn)這一目標(biāo)。實驗表明局部鄰近信息的融合對性能有重要的影響。

          4 實驗結(jié)果

          4.1 模型架構(gòu)

          db6d6c6c14029b22f6c95bc813ea2a25.webp

          表2 基于ImageNet分類的架構(gòu)

          輸入的圖像大小默認(rèn)為224×224。Conv. Embed.:卷積Token嵌入。Conv. Proj.:卷積映射。和為第i個MHSA模塊中Head的個數(shù)和嵌入特征維數(shù)。是第i個MLP層的特征維度的擴展比。

          4a5c1c40f0b4a6c39fc433834e6f4bb7.webp

          表3 不同架構(gòu)在ImageNet、ImageNet Real和ImageNet V2上的準(zhǔn)確性

          與基于CNN的模型相比,CvT進一步縮小了基于Transformer模型的性能差距。最小的模型cpt-13具有20M參數(shù)和4.5G FLOPs,在ImageNet top-1精度上比大型的ResNet-152模型高出3.2%,而ResNet-151的參數(shù)是cpt-13的3倍。

          此外,當(dāng)使用更多數(shù)據(jù)時,在ImageNet-22k上預(yù)訓(xùn)練的寬模型CvT-W24*達到在沒有額外數(shù)據(jù)訓(xùn)練的情況下在ImageNet上獲得了87.7%的Top-1精度,以相似的模型參數(shù)和FLOPs數(shù)量比最佳模型ViT-L/16高出2.5%。

          5 參考

          [1].CvT: Introducing Convolutions to Vision Transformers

          [2].https://github.com/leoxiaobin/CvT

          6 推薦閱讀

          CVPR2021全新Backbone | ReXNet在CV全任務(wù)以超低FLOPs達到SOTA水平(文末下載論文和源碼)

          你的YOLO V4該換了 | YOLO V4原班人馬改進Scaled YOLO V4,已開源(附論文+源碼)

          CVPR2021-即插即用 | Coordinate Attention詳解與CA Block實現(xiàn)(文末獲取論文原文)

          Backbone | 谷歌提出LambdaNetworks:無需注意力讓網(wǎng)絡(luò)更快更強(文末獲取論文源碼)

          最強檢測 | YOLO V4?都是弟弟! CenterNet2以56.4mAP超越當(dāng)前所有檢測模型(附源碼與論文)

          全新FPN | 通道增強特征金字塔網(wǎng)絡(luò)(CE-FPN)提升大中小目標(biāo)檢測的魯棒性(文末附論文)

          本文論文原文獲取方式,掃描下方二維碼

          回復(fù)【CvT】即可獲取論文

          長按掃描下方二維碼加入交流群

          聲明:轉(zhuǎn)載請說明出處

          掃描下方二維碼關(guān)注【AI人工智能初學(xué)者】公眾號,獲取更多實踐項目源碼和論文解讀,非常期待你我的相遇,讓我們以夢為馬,砥礪前行?。?!

          點“在看”給我一朵小黃花唄e8c32d57c84f66c1940335f3bef480bd.webp

          瀏覽 87
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产极品久久久 | 欧美偷拍一区二区三区 | 日本A片在线免费观看 | 伊人午夜视频 | 国产一级a毛一级a看免费视频黑人 |