<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>

          【深度學(xué)習(xí)】Vision Transformer in CV

          共 9536字,需瀏覽 20分鐘

           ·

          2022-04-18 07:37

          https://github.com/dk-liang/Awesome-Visual-Transformer

          https://github.com/IDEACVR/awesome-detection-transformer


          本文主要包含跟Transformer相關(guān)的CV文章,用簡(jiǎn)短的話(huà)來(lái)描述一下涉及到文章的核心idea。可以看作是vision transformer的idea集,查漏補(bǔ)缺使用。需要精讀的文章前面加了*號(hào)。

          Image Classification

          Uniform-scale

          *ViT [paper] [code]

          最簡(jiǎn)潔的Vision Transformer模型,先將圖片分成16x16的patch塊,送入transformer encoder,第一個(gè)cls token的輸出送入mlp head得到預(yù)測(cè)結(jié)果。


          *DeiT [paper] [code]

          在ViT的基礎(chǔ)上增加了一個(gè)distillation token,巧妙的利用distillation token提升模型精度。

          T2T-ViT [paper] [code]

          將ViT的patch stem改成重疊的滑窗形式,增強(qiáng)patch之間的信息交流。

          Conformer [paper] [code]

          設(shè)計(jì)了一個(gè)CNN和Transformer雙分支結(jié)構(gòu),利用FCU模塊進(jìn)行兩個(gè)分支的信息交流,推理的時(shí)候使用兩個(gè)分支的輸出取平均進(jìn)行預(yù)測(cè)。


          TNT [paper] [code]

          在ViT的基礎(chǔ)上,對(duì)每個(gè)patch進(jìn)一步切分,用嵌套的方式提升每個(gè)patch對(duì)于局部區(qū)域的特征表達(dá)能力,然后將局部提升后的特征和patch特征相加送入下一個(gè)transformer block中。

          XCiT [paper] [code]

          XCiT通過(guò)置換q和k的計(jì)算,從tokens做self-attention轉(zhuǎn)變成channels緯度做self-attention(也就是通道的協(xié)方差計(jì)算),復(fù)雜度從平方降到了線(xiàn)性。

          DeepViT [paper]

          DeepViT發(fā)現(xiàn)隨著深度的增加,ViT的self-attention會(huì)出現(xiàn)坍塌現(xiàn)象,DeepViT提出用Re-Attention來(lái)替代Self-Attention可以避免坍塌,可以訓(xùn)練更深的ViT,Re-Attention在MHSA之后增加了一個(gè)可學(xué)習(xí)的Matrix Transformation。


          *Token Labeling ViT [paper] [code]

          為了增加ViT對(duì)于局部區(qū)域的定位和特征提取能力,token labeling在每個(gè)patch的輸出都增加一個(gè)局部監(jiān)督,token label通過(guò)一個(gè)預(yù)訓(xùn)練過(guò)的特征提取器獲得(本文可以看成是AutoEncoder+CLS的預(yù)訓(xùn)練方法)。由于需要一個(gè)額外的特征提取器,所以需要更多的計(jì)算資源(可以用MaskFeat的方法改進(jìn))。

          SoT [paper] [code]

          對(duì)patch輸出的word token進(jìn)行協(xié)方差池化,然后和cls token的輸出進(jìn)行融合,提高分類(lèi)對(duì)局部區(qū)域的感知能力。


          DVT [paper]

          DVT提出每個(gè)圖片應(yīng)該有自己獨(dú)有的token數(shù)量,于是設(shè)計(jì)了一個(gè)級(jí)聯(lián)tokens數(shù)量逐漸增加的多個(gè)transformer,推理的時(shí)候可以從不同級(jí)的transformer判斷輸出。

          DynamicViT [paper] [code]

          通過(guò)一個(gè)預(yù)測(cè)模塊來(lái)決定token的重要程度,剪枝掉少量不重要的token,將剩余的token送入下一個(gè)block中。

          PSViT [paper]

          為了減少ViT計(jì)算上的冗余,PSViT提出token pooling和attention sharing兩個(gè)操作,其中token pooling用來(lái)減少token的數(shù)量,attention sharing作用在相關(guān)性較強(qiáng)的相鄰層上。

          *TokenLearner [paper] [code]

          利用spatial attention來(lái)提取出最重要的token信息,減少token數(shù)量。


          Evo-ViT [paper]

          增加一個(gè)representative token,通過(guò)global class attention evolution來(lái)判斷patch token的重要程度,重要程度高的送入block中緩慢更新,重要程度低的和representative token(由placeholder token得到)殘差更新。其中vanilla transformer block的MSA輸出和global cls attention相加得到重要性權(quán)重。

          AugViT [paper] [code]

          為了避免ViT出現(xiàn)模型坍塌現(xiàn)象,AugViT設(shè)計(jì)了一個(gè)augmented shortcuts結(jié)構(gòu)。具體地,在MSA結(jié)構(gòu)上并行增加兩個(gè)分支,一個(gè)分支做shortcut操作,另一分支對(duì)每個(gè)patch做augmentation來(lái)增加特征表達(dá)的多樣性,最后將三個(gè)分支的輸出相加到一起。


          CrossViT [paper] [code]

          將兩種不同數(shù)量的patch序列分別送入encoder中,然后通過(guò)cross-attention對(duì)兩個(gè)分支的cls token和patch token同時(shí)進(jìn)行融合,最后將兩個(gè)分支的cls token位置的輸出結(jié)果進(jìn)行融合。

          AutoFormer [paper] [code]

          AutoFormer動(dòng)態(tài)的搜索transformer中每一層的embedding緯度、head的數(shù)量、MLP比例和QKV緯度。

          *CPVT [paper] [code] ?

          CPVT設(shè)計(jì)了一個(gè)PEG結(jié)構(gòu)來(lái)替代PE(positional encoding),PEG通過(guò)feature token生成得到。

          V-MoE [paper]

          V-MoE用Sparse MoE來(lái)替換ViT中的MLP結(jié)構(gòu)。Sparse MoE中的每個(gè)MLP分別保存在獨(dú)立的device上,并且處理相同固定數(shù)量的tokens。


          DPT [paper] [code]

          DPT設(shè)計(jì)另一個(gè)可形變的patch選取方式。


          *EViT [paper]


          EViT通過(guò)計(jì)算每個(gè)patch token和cls token的相關(guān)性來(lái)決定重要程度,重要程度高的直接送入FFN,重要程度低的融合成一個(gè)token。


          Multi-scale

          *SwinTv1 [paper] [code] ?

          *SwinTv2 [paper]

          為了更好的應(yīng)用于det、seg等下游任務(wù),需要對(duì)ViT進(jìn)行多尺度設(shè)計(jì)。SwinT通過(guò)patch merging減少token的數(shù)量,另外設(shè)計(jì)了W-MSA結(jié)構(gòu),只對(duì)windows內(nèi)的patch進(jìn)行self-attention計(jì)算來(lái)降低計(jì)算量,為了增加不同windows之間的信息傳遞,設(shè)計(jì)了SW-MSA結(jié)構(gòu)。


          為了更好的擴(kuò)大SwinT的模型容量和window的分辨率,SwinTv2重新設(shè)計(jì)了block結(jié)構(gòu)。

          1. 用post-norm替代pre-norm

          2. 用cosine attention替代dot product attention

          3. 用log-spaced continuous relative position替代parameterized relative position

          1和2使得SwinT更容易擴(kuò)大模型容量,3使得SwinT更容易跨window分辨率遷移。

          *PVTv1 [paper] [code]

          *PVTv2 [paper]


          PVT設(shè)計(jì)了一個(gè)多stage的多尺度架構(gòu),為了做stage之間的下采樣,將MHSA改造成SRA,SRA中的K和V都下采樣R^2倍。


          PVTv2在PVTv1的基礎(chǔ)上做了三點(diǎn)改進(jìn):

          1. 將SRA的下采樣conv替換成average pooling

          2. 將不重疊的patch embedding替換成重疊的patch embedding

          3. 移除position encoding,并且在FFN中增加一個(gè)dwconv

          1可以將PVT計(jì)算量降到線(xiàn)性,2可以獲得更多局部連續(xù)的特征,3可以處理任意尺寸的圖像。


          *Twins [paper] [code]

          Twins沿用PVT的整體架構(gòu),并且用CPVT中的PEG來(lái)替代PE,同時(shí)將transformer block堆疊設(shè)計(jì)成global attention和local attention交替使用的形式,并且為了減少計(jì)算量,global attention將重要信息總結(jié)成mxn個(gè)表示,同時(shí)每個(gè)表示和其他sub-windows進(jìn)行信息交流。

          CoaT [paper] [code]

          CoaT設(shè)計(jì)了一個(gè)co-scale機(jī)制,通過(guò)一系列串行和并行的block來(lái)預(yù)測(cè)結(jié)果,同時(shí)設(shè)計(jì)了一個(gè)Conv-Attention結(jié)構(gòu)來(lái)替代MHSA,用一個(gè)dwconv來(lái)得到position encoding,另一個(gè)dwconv來(lái)得到relative position encoding。

          CvT [paper] [code]


          CvT去掉position encoding,用conv同時(shí)替換掉token embedding和MHSA中的QKV projection,通過(guò)conv來(lái)引入位置信息。


          Shuffle Transformer [paper] [code]

          通過(guò)shuffle和unshuffle操作,來(lái)增加token之間的信息交流。

          Focal Transformer [paper] [code]

          改變SwinT的劃分windows的方式,每個(gè)query patch對(duì)應(yīng)三種粒度的windows尺寸,如圖所示。將W-MSA替換成Focal Self-Attention整體架構(gòu)和SwinT保持一致。

          CSWinT [paper] [code]

          改變SwinT的劃分windows的方式,每個(gè)query patch通過(guò)兩個(gè)并行分支做self-attention,并且kv從dynaic stripe window中取。

          *MViT [paper] [code]

          MViT通過(guò)對(duì)XQKV池化進(jìn)行下采樣構(gòu)建金字塔架構(gòu)。


          Hybrid ViTs with Convolutions

          LeViT [paper] [code]

          LeViT的patch embedding設(shè)計(jì)成4個(gè)conv3x3堆疊,同時(shí)下采樣的self-attention對(duì)Q進(jìn)行下采樣。

          localViT [paper] [code]

          FC和1x1conv等效,在FFN中增加一個(gè)3x3的DWConv就變成了圖c,輸入輸出增加Img2Seq和Seq2Img的操作。

          ResT [paper] [code]

          ResT在MHSA中增加DWConv降低KV的緯度,另一個(gè)conv用來(lái)增加不同head的信息交流。

          NesT [paper]

          NesT通過(guò)最大池化對(duì)patch進(jìn)行聚合。

          CoAtNet [paper]

          通過(guò)交替堆疊depthwise conv和self-attention來(lái)設(shè)計(jì)架構(gòu)。

          BoTNet [paper]

          模仿ResNet的bottleneck,將Transformer的block設(shè)計(jì)成bottleneck的形式,一個(gè)bottleneck由1x1conv、MHSA、1x1conv堆疊而成。

          ConViT [paper]

          ConViT設(shè)計(jì)了一個(gè)GPSA,只對(duì)patch token進(jìn)行操作,并且引入了位置信息。10個(gè)GPSA堆疊之后接2個(gè)SA。

          MobileViT [paper]


          MobileViT通過(guò)堆疊MobileNetv2 block和MobileViT block構(gòu)成。


          CeiT [paper]

          CeiT設(shè)計(jì)了一個(gè)局部增強(qiáng)的LeFF結(jié)構(gòu),只對(duì)patch token部分做linear projection和depth-wise conv。

          CMT [paper]

          CMT設(shè)計(jì)了一個(gè)CMT block,如圖所示。

          Object Detection

          CNN backbone

          *DETR [paper] [code]

          DETR是第一個(gè)使用Transformer做目標(biāo)檢測(cè)的算法。圖片先通過(guò)CNN提取特征,然后和positional encoding相加送入transformer,最后通過(guò)FFN預(yù)測(cè)結(jié)果。其中decoder部分需要設(shè)置object queries,并行輸出預(yù)測(cè)結(jié)果,訓(xùn)練的時(shí)候pred和target通過(guò)雙邊匹配算法進(jìn)行匹配。

          *UP-DETR [paper]

          為了對(duì)DETR進(jìn)行預(yù)訓(xùn)練,UP-DETR處理了兩個(gè)關(guān)鍵問(wèn)題:

          1. 為了進(jìn)行分類(lèi)和定位對(duì)多任務(wù)訓(xùn)練,UP-DETR固定住預(yù)訓(xùn)練過(guò)的backbone和對(duì)patch特征進(jìn)行重建來(lái)保留transformer的判別力。

          2. 為了對(duì)多個(gè)patch進(jìn)行定位,不同queries設(shè)置不同的區(qū)域和大小。UP-DETR設(shè)計(jì)了兩種預(yù)訓(xùn)練方式,一種是single-query,另一種是multi-query。對(duì)于multi-query設(shè)計(jì)了object query shuffle和attention mask操作來(lái)解決query patches和object queries對(duì)齊問(wèn)題。

          DETReg [paper] [code]

          上圖是DETReg的整體框架。給定一張圖片x,使用DETR得到embeddings v,總共設(shè)計(jì)了三個(gè)分支,一個(gè)分支預(yù)測(cè)box,一個(gè)分支預(yù)測(cè)embdding,還有一個(gè)分支預(yù)測(cè)目標(biāo)分?jǐn)?shù)cat。偽gt區(qū)域提議label通過(guò)selective search得到,偽gt目標(biāo)embedding通過(guò)自監(jiān)督算法SwAV得到,proposal的目標(biāo)分?jǐn)?shù)都設(shè)置為1。通過(guò)雙邊匹配將預(yù)測(cè)proposal和偽label進(jìn)行匹配,不匹配的預(yù)測(cè)proposal分?jǐn)?shù)用0填充。

          SMCA [paper] [code]

          SMCA設(shè)計(jì)了一個(gè)Spatially Modulated Co-Attention組件來(lái)加快DETR的收斂速度,具體地,decoder的每個(gè)query先做一個(gè)spatial prior,然后和key進(jìn)行co-attention。另外SMCA還設(shè)計(jì)來(lái)一個(gè)Multi-Scale Self-Attention來(lái)進(jìn)一步提升精度。


          *Deformable DETR [paper] [code]

          Deformable DETR結(jié)合了deformable conv的稀疏空間采樣和transformer的相關(guān)性建模能力的優(yōu)點(diǎn)。提出的deformable attention module用一些采樣位置作為重要的key元素,并且Deformable DETR將該謀愛(ài)拓展到multi-scale上。


          Anchor DETR [paper] [code]

          Anchor DETR在decoder部分設(shè)計(jì)了基于anchor points的object queries,并且row-column decoupled attention來(lái)替代MHSA,降低計(jì)算復(fù)雜度。


          *Conditional DETR [paper] [code]


          Conditional DETR將content queries和spatial queries獨(dú)立開(kāi),使得各自關(guān)注于content attention weights和spatial attention weights,加快訓(xùn)練的收斂速度。

          *TSP-FCOS [paper]

          本文實(shí)驗(yàn)觀察發(fā)現(xiàn),影響DETR收斂速度的主要原因是cross-attention和雙邊匹配的不穩(wěn)定。于是本文提出只使用transformer的encoder,其中TSP-FCOS設(shè)計(jì)了一種FoI Select來(lái)選擇特征。并且還設(shè)計(jì)來(lái)一種新的雙邊匹配算法來(lái)加快收斂。


          PnP-DETR [paper] [code]

          PnP-DETR設(shè)計(jì)了兩種采樣方式來(lái)降低計(jì)算復(fù)雜度,poll sampler和pool sampler,poll sampler對(duì)feature map對(duì)每個(gè)位置預(yù)測(cè)分?jǐn)?shù),然后挑選出fine的特征,通過(guò)pool sampler對(duì)coarse特征進(jìn)行聚合。


          D^2ETR [paper]


          D^2ETR去掉了DETR的encoder部分,同時(shí)在backbone部分對(duì)不同stage的特征進(jìn)行融合操作。


          Sparse DETR [paper] [code]

          Sparse DETR通過(guò)Deformable cross-attention得到binarized decoder cross-attention map(DAM),用來(lái)作為scoring network的監(jiān)督信號(hào),預(yù)測(cè)出token的重要程度,并且只保留top-p%的token進(jìn)行訓(xùn)練。

          *Efficient DETR [paper]


          Efficient DETR通過(guò)預(yù)測(cè)結(jié)果來(lái)初始化object queries,具體地,選取top-K個(gè)位置的feature當(dāng)作object queries,位置當(dāng)作reference points,k組embedding送入decoder進(jìn)行稀疏預(yù)測(cè),最終Efficient DETR只需要一個(gè)decoder就能超過(guò)DETR 6個(gè)decoder的精度。


          Dynamic DETR [paper]


          Dynamic DETR的dynamic encoder部分引入SE然后用deformable self-attention來(lái)提取多尺度特征,dynamic decoder部分引入可學(xué)習(xí)的box encoding,然后對(duì)encoder的特征做roi池化,最后和decoder的中間層embedding做相乘。



          *DAB-DETR ?[paper] [code]


          DAB-DETR直接動(dòng)態(tài)更新anchor boxes提供參照點(diǎn)和參照anchor尺寸來(lái)改善cross-attention的計(jì)算。


          *DN-DETR [paper] [code]


          DN-DETR在DAB-DETR的基礎(chǔ)上,增加來(lái)一個(gè)denoising輔助任務(wù),從而避免訓(xùn)練前期雙邊匹配的不穩(wěn)定,加快收斂速度。


          *DINO [paper] [code]


          DINO在DN-DETR的基礎(chǔ)上引入了三點(diǎn)改進(jìn):

          1. 增加了一個(gè)新的輔助任務(wù)contrastive denoising training,在相同的gt box添加兩種不同的noise,noise小的當(dāng)作正樣本,noise大的當(dāng)作負(fù)樣本。

          2. 提出mixed query selection方法,從encoder的輸出中選擇初始anchor boxes作為positional queries。

          3. 提出look forward twice方法,利用refined box信息來(lái)幫助優(yōu)化前面層的參數(shù)。


          Pure Transformer

          Pix2Seq [paper]

          Pix2Seq直接把目標(biāo)檢測(cè)任務(wù)當(dāng)成是序列任務(wù),將cls和bbox構(gòu)建成序列目標(biāo),圖片通過(guò)Transformer直接預(yù)測(cè)序列結(jié)果。

          YOLOS [paper] [code]

          YOLOS只使用transformer encoder做目標(biāo)檢測(cè),模仿vit在encoder部分設(shè)置det token,在輸出部分接MLP預(yù)測(cè)出cls和bbox。


          FP-DETR [paper]


          FP-DETR只使用transformer encoder部分,先使用cls token來(lái)做pre-training,然后替換成visual prompts來(lái)做fine-tuning。其中visual prompts由query content embedding和query positional embedding相加得到。

          Instance segmentation

          SOTR [paper] [code]

          SOTR在FPN backbone的基礎(chǔ)上最小修改構(gòu)建的。將多尺度的feature map加上positional embedding送入transformer模型中,通過(guò)cls head和kernel head預(yù)測(cè)出instance cls和dynamic conv,另一個(gè)分支對(duì)多尺度特征進(jìn)行上采樣融合得到,最后和dynamic conv想乘得到不同instance cls的區(qū)域。


          panoptic segmentation

          Max-DeepLab [paper] [code]

          Max-DeepLab設(shè)計(jì)了兩個(gè)分支pixel path和memory path,兩個(gè)分支在dual-path tansformer中進(jìn)行交互,最終pixel path預(yù)測(cè)出mask,memory path預(yù)測(cè)出cls。

          *MaskFormer ?[paper] [code]

          *Mask2Former [paper] [code]

          MaskFormer提出將全景分割看成是mask分類(lèi)任務(wù)。通過(guò)transformer decoder和MLP得到N個(gè)mask embedding和N個(gè)cls pred。另一個(gè)分支通過(guò)pixel decoder得到per-pixel embedding,然后將mask embedding和per-pixel embedding相乘得到N個(gè)mask prediction,最后cls pred和mask pred相乘,丟棄沒(méi)有目標(biāo)的mask,得到最終預(yù)測(cè)結(jié)果。

          Mask2Former在MaskFormer的基礎(chǔ)上,增加了masked attention機(jī)制,另外還調(diào)整了decoder部分的self-attention和cross-attention的順序,還提出了使用importance sampling來(lái)加快訓(xùn)練速度。


          Image Segmentation

          semantic segmentation

          SETR [paper] [code]


          SETR用ViT/DeiT作為backbone,然后設(shè)計(jì)了兩種head形式:SETR-PUP和SETR-MLA。PUP將backbone輸出的feature reshape成二維形式,然后不斷的上采樣得到最終的預(yù)測(cè)結(jié)果;MLA將多個(gè)stage的中間feature進(jìn)行reshape,然后融合上采樣得到最終的預(yù)測(cè)結(jié)果。

          SegFormer [paper] [code]

          SegFormer設(shè)計(jì)了一個(gè)encoder-decoder的分割框架,其中transformer block由Efficient Self-Attn、Mix-FFN、Overlap Patch Merging構(gòu)成。Efficient Self-Attn對(duì)K進(jìn)行下采樣,Mix-FFN額外使用了conv。


          Segmenter [paper] [code]

          Segmenter設(shè)計(jì)了類(lèi)別無(wú)關(guān)的cls token,最后預(yù)測(cè)的時(shí)候分別和patch token進(jìn)行點(diǎn)乘,最后reshap成二維圖像。

          U-Net Transformer [paper]

          TransUNet [paper] [code]

          Swin-Unet [paper] [code]

          在U-Net結(jié)構(gòu)中引入Transformer


          P2T [paper]

          用對(duì)KV做池化的MHSA做下采樣。

          HRFormer [paper]


          HRFormer的block由local-window self-attention和FFN組成。


          往期精彩回顧




          瀏覽 171
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  久久五月天AV | 人人草人人草人人 | 奇米影视7777久久精品 | 国产婷婷一区二区 | 99久久免费看 |