日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Benchmarking Detection Transfer Learning with Vision Transformers(2021-11)

發布時間:2024/3/24 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Benchmarking Detection Transfer Learning with Vision Transformers(2021-11) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


這篇文章是何凱明在MAE之后關于純transformer架構用于目標檢測下游任務的探索,在MAE最后有所提及,之后還有一篇文章ViTDET一脈相承。對于VIT架構用于視覺任務帶來了很多啟發。

簡介

目標檢測作為一個中心的下游任務經常用來測試預訓練模型的性能,例如訓練速度或者精度等。當新的架構如VIT出現時,目標檢測任務的復雜性使得這種基準測試變得更加重要。事實上,一些困難(如架構不兼容、訓練緩慢、內存消耗高、未知的訓練公式等)阻礙了VIT遷移到目標檢測任務研究。論文提出了使用VIT作為Mask RCNN backbone,實現了最初的研究目的:作者對比了五種VITs初始化,包括自監督學習方法、監督初始化以及較強的隨機初始化baseline。

無監督/自監督深度學習是常用的預訓練方法用來初始化模型參數,之后他們遷移到下游任務,例如圖像分類和目標檢測進行finetune。無監督算法的有效性常常使用下游任務的指標(精度度、收斂速度等)來衡量與baseline作一個比較,例如有監督預訓練或者 從頭訓練的網絡(不適用預訓練).

視覺領域的無監督深度學習通常使用CNN模型,因為CNNs廣泛用于大部分下游任務,因此基準原型很容易被定義,可以將使用CNN的無監督算法視為一種即插即用的參數初始化模型。

論文使用Mask RCNN框架評估ViT模型在目標檢測和語義分割領域COCO數據集上的性能,對ViT作最小程度的修改,保留它的簡單、靈活的特性。

結論

論文給出了在Mask RCNN架構中使用VIT基礎模型作為backbone的有效方法。這些方法在訓練內存和時間上都可以被接受,同時沒有使用太多復雜擴展的情況下實現了COCO的強大效果。

  • 得到了有效的訓練公式,能夠對五種不同的ViT初始化方法進行基準測試。實驗表明,Random initation花費的時間比任何pre-training 的初始化都要長4倍,但獲得了比ImageNet-1k監督前訓練更高的AP。MoCo v3,對比無監督學習的代表性算法,表現出了與監督預訓練幾乎相同的性能(但比隨機初始化更差)。
  • 重要的是,一個令人興奮的新結果:基于mask的方法(BEiT和MAE)在監督和隨機初始化方面顯示出了相當可觀的增益,這些增益隨著模型大小的增加而增加。基于supervise的初始化和基于MoCo v3的初始化都沒有觀察到這種sacling 行為。

VIT backbone


使用ViT 作為Mask RCNN 的backbone有兩個問題:

  • 怎樣使它與FPN協同(ViT產生單一尺度的feature map)
  • 如何減少內存消耗和運行時間
  • 針對第1點:
    為了適應FPN的多尺度輸入,對ViT中間層產生的feature map通過四個不同分辨率的模塊進行上采樣或者下采樣產生多尺度特征,如上圖所示綠色module,這四個模塊之間的間隔都為d4\fracozvdkddzhkzd{4}4d?,ddd是transformer blocks的數目,也就是等間隔劃分。

    • 第一個綠色module,通過使用兩個stride-two 的2×22 \times 22×2的轉置卷積對特征映射進行4倍上采樣,首先使用一個2×22 \times 22×2轉置卷積,然后通過Group Normaliztion ,再經過一個Gelu非線性函數,接著再使用一個stride-two 2×22 \times 22×2轉置卷積.
    • 接下來的d4\fracozvdkddzhkzd{4}4d?block 采用一個stride-two2×22 \times 22×2轉置卷積進行2倍上采樣,不使用歸一化和非線性函數。
    • 第三個d4\fracozvdkddzhkzd{4}4d?block 輸出不做任何變化
    • 最后一個block進行stride為2 的2×22 \times 22×2的max pooling 兩倍下采樣。
      這些module,每一個都保留了ViT的Embeding/channel 維度,對于一個size =16 的patch 來說產生的feature map stride 分別為4,8,16,32,然后輸入FPN。(因為原始的ViT 產生的feature 大小為input 116\frac{1}{16}161?,上采樣下采樣后就是論文所說的大小)

    針對第2點:
    ViT中每一個self-attention計算具有O(h2w2)O(h^2w^2)O(h2w2)的空間復雜度,以及把圖像展開成不重疊的h×wh \times wh×w的patches花費的時間。
    在預訓練的時候這種復雜度是可控的,因為一般圖像大小為224×224224 \times 224224×224,patch大小為161616,h=w=14h=w=14h=w=14這是典型設置。但是在目標檢測下游任務中,標準圖像大小為1024×10241024 \times 10241024×1024,這通常是預訓練像素以及patch的20倍大,這么大的分辨率也是為了檢測較大和較小目標所需要的。因此這種情況下,即使是以ViT-base作為Mask RCNN的backbone,在小批量和半精度浮點數的情況下通常也需要消耗20-30GB的GPU內存。

    為了減少空間和時間復雜度,采用受限制的self-attention(也叫 windowed self-attention)(來源于attention is all you need ,沒印象,要去查一下,第一印象是Swin的window attention)。將h×wh \times wh×w的拼接圖像劃分為r×rr \times rr×r個不重疊的窗口,在每個窗口單獨計算self-attention。這種windowed self-attention 擁有O(rh2w2)O(rh^2w^2)O(rh2w2)的空間和時間復雜度。設置 r 為全局自注意力的尺寸,典型值為14。(共有hr×wr個windows,每個window擁有O(r2)復雜度\frac{h}{r} \times \frac{w}{r}個windows,每個window擁有O(r^2)復雜度rh?×rw?windowswindowO(r2))。

    這種做法的一個副作用就是window之間沒有跨窗口信息交互,因此采用了一種混合方法,就像圖中所示,包含4個全局自注意力模塊,與FPN相吻合,這里也就是作者所說的添加額外部分使VIT產生多尺度特征。

    對Mask RCNN module的修改

  • FPN中的卷積使用Batch Normalization
  • 在RPN中使用兩個卷積層而不是一個
  • region-of-interest (RoI) classification and box regression head之后的全連接層使用四個帶有batch normal的卷積層取代原有的帶有Normalization的兩層MLP。
  • 遵循在標準mask head中的卷積使用Batch Normal
    修改代碼位于:https://github.com/facebookresearch/detectron2/blob/main/MODEL_ZOO.md #new-baselines-using-large-scale-jitter-and-longer-training-schedule
  • 采用不同預訓練方法的差異

  • 不同預訓練采用的epoch不一樣,每一個epoch訓練cost也不一樣,論文采用了各個方法默認的epoch,顯然這些方法不具有可比性。
  • BEiT使用可學習的realtive positional bias添加到每個塊的自我注意logits中,而其他方法使用絕對位置嵌入。為了解釋這一點,作者在所有檢測模型中都包含了相對位置偏差和絕對位置嵌入,無論它們在訓練中是否使用。對于BEiT,作者遷移pre-trained bias,并隨機初始化絕對位置嵌入。對其他方法,relative positional bias 進行零初始化,并遷移預訓練的絕對位置嵌入。相對位置偏差在across windowed attention blocks和(單獨)在across global attention blocks中共享。當預訓練和微調之間存在空間維度不匹配時,我們將調整預訓練參數的大小,使其達到所需的分辨率。
  • BEiT在訓練中使用了layer scale,而其他方法沒有使用。在微調過程中,Beit初始化的模型也必須參數化使用來自預訓練模型的layer scale,其他模型在訓練前或微調時都不使用layer scale。
  • 作者試圖將訓練前的數據標準化到ImageNet1k,然而,BEiT使用DALL·E、discrete VAE (dVAE),這是在約2.5億專有和未公開的圖像上訓練的。這些額外的訓練數據的影響還沒有被完全理解。
  • 實驗部分

    • 初始化方法的比較,隨機初始化是沒有預訓練的。
    • finetune epoch 從25-400的收斂比較,可以看到任何一種方法收斂都要比隨機初始化快,并且各種方法取得的AP各不相同,其中MAE與BeiT類似,但顯然ViT-B比起ViT-L 與BeiT的差距更大,這是隨著模型尺寸增大而增大的,表明他們具有很強的伸縮性。

    大部分方法在長時間訓練后,都表現出了過擬合跡象,AP值有所下降,同時觀察到隨機初始化方法的AP要高于MoCo V3 和有監督的IN1k,這是因為COCO數據集對于遷移學習來說是一個有挑戰性的設置,因此隨機初始化可能取得較好的性能。MAE和BEiT提供了第一個令人信服的結果,基于預訓練COCO AP得到極大改善,并且隨著模型尺寸增大AP還有很大的提升潛能。

    消融實驗

    • 基于FPN的多尺度以及單一尺度的變種 對比。

    • 減少時間和內存消耗的策略對比,有四種方案。
  • 14×1414 \times 1414×14window self-attention 代替全部Global attention
  • 混合使用attention
  • 全部使用Global attention with activation checkpointing
  • 不使用以上策略 ,會報錯 out-of-memory (OOM) error阻止訓練。
    第二個方案在精度和訓練時間以及內存方面取得較好的平衡,令人驚訝的是全部使用window attention表現并沒有那么糟糕。這可能是由于卷積操作引入的跨窗口計算以及在Mask R-CNN的RoI Align的其余部分導致的。
    • 位置信息的影響。
      -在BEiT中VIT被修改為在每一個transformer block中使用realtive positional bias,而不是添加absolute positional Embeeding 到Patch embeeding。這種選擇是一種正交增強,其他預訓練方法都沒有使用。
      為了公平比較,默認在所有微調模型中包括relative positional bias(和絕對位置嵌入)。

    表格中含義
    relative position biases (rel)
    absolute position embeddings (abs)
    pt: initialized with pre-trained values;
    rand: random initialization;
    zero: initialized at zero;
    no: this positional information is not used in the fine-tuned model

    • 預訓練epoch的影響。隨著epoch增大,AP也增大。

    • 繪制了ΔAPbox@0.5\Delta AP^{box}@0.5ΔAPbox@0.5的指標。每一條代表修正某種錯誤后可以提升的APAPAP值。
      cls:定位正確(IoU>0.5),分類錯誤
      loc:分類正確但是定位錯誤 (IoU in [0.1, 0.5))
      cls+loc: 分類和定位都出錯
      dup: detection would be correct if not for a higher scoring correct detection
      bg: detection is in the background (IoU <0.1)
      miss: all undetected ground-truth objects not covered by other error types.
      基于mask的方法(MAE /BEiT)比起MoCo V3和有監督初始化方法有更少的定位錯誤,漏檢次數也更少。
    • 模型復雜度。從頭開始訓練時,ResNet101 與ViT-B都取得了48.9APboxAP^{box}APbox,在訓練中VIT-B訓練200個epoch就達到了峰值,ResNet-101要400個epoch.ResNet-101的fps明顯更快。

    總結

    以上是生活随笔為你收集整理的Benchmarking Detection Transfer Learning with Vision Transformers(2021-11)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。