【CV】深度了解自监督学习,就看这篇解读 !SimMIM:掩码图像建模的简单框架...
作者丨科技猛獸
編輯丨極市平臺
導讀
?SimMIM 是繼 BEiT 之后,MSRA 又提出的一個 MIM 任務上的預訓練 CV 模型。這個模型也是直接回歸預測原始像素 RGB 值,而不是像 BEiT 或者 iBOT 一樣重建 tokens。作者在這篇論文中想探討的是:究竟是什么使得 MIM 任務能夠使得目標網絡能學到更好的 visual representation。?
深度了解自監督學習,就看這篇解讀 !Hinton團隊力作:SimCLR系列
深度了解自監督學習,就看這篇解讀 !微軟首創:運用在 image 領域的BERT
深度了解自監督學習,就看這篇解讀 !何愷明新作MAE:通向CV大模型
本文目錄
1 SimMIM
1.1 SimMIM 方法概述
1.2 Masking Strategy
1.3 Encoder 結構
1.4 Prediction head
1.5 Prediction target
1.6 Evaluation protocols
1.7 Masking strategy 對表征學習的影響
1.8 Projection head 對表征學習的影響
1.9 Projection resolution 對表征學習的影響
1.10 Projection target 對表征學習的影響
1.11 ImageNet-1k 實驗結果
1.12 可視化結果
Self-Supervised Learning,又稱為自監督學習,我們知道一般機器學習分為有監督學習,無監督學習和強化學習。而 Self-Supervised Learning 是無監督學習里面的一種,主要是希望能夠學習到一種通用的特征表達用于下游任務 (Downstream Tasks)。其主要的方式就是通過自己監督自己。作為代表作的 kaiming 的 MoCo 引發一波熱議, Yann Lecun也在 AAAI 上講 Self-Supervised Learning 是未來的大勢所趨。所以在這個系列中,我會系統地解讀 Self-Supervised Learning 的經典工作。
1 SimMIM
論文名稱:SimMIM: A Simple Framework for Masked Image Modeling
論文地址:
https://arxiv.org/abs/2111.09886
前段時間,何愷明等人的一篇論文成為了計算機視覺圈的焦點。這篇論文僅用簡單的 idea(即掩蔽自編碼器,MAE)就達到了非常理想的性能,讓人們看到了 Transformer 擴展到 CV 大模型的光明前景,給該領域的研究者帶來了很大的鼓舞:
深度了解自監督學習,就看這篇解讀 !何愷明新作MAE:通向CV大模型
SimMIM 是繼 BEiT 之后,MSRA 又提出的一個 MIM 任務上的預訓練 CV 模型。這個模型更像是 kaiming 的 MAE,也是直接回歸預測原始像素 RGB 值,而不是像 BEiT 或者 iBOT 一樣重建 tokens。作者在這篇論文中想探討的是:究竟是什么使得 MIM 任務能夠使得目標網絡能學到更好的 visual representation。得出了以下3條結論:(1) 在 MIM 任務中,mask patch 的大小如果是32×32,就能使得預訓練任務成為一個 strong pre-text task,非常有利于預訓練大模型性能的提升。(2) 直接回歸預測原始像素 RGB 值的效果并不比復雜設計的patch分類方法差。(3) prediction head 可以設計成輕量化的模型,比如一個線性層,它的表現不比 heavy 模型差。
1.1 SimMIM 方法概述
上來先引用一句名言:)
“What I cannot create, I do not understand.” — Richard Feynman
作者可能是想說:要想玩明白 Masked Signal Learning 任務 (就是指這樣一種任務:擋住輸入信號的一部分,把殘缺的信號送入模型,希望模型能夠預測出這些被 masked 掉的信號),或者說,要想讓模型創造出這些被 masked 掉的信號,就得使得模型首先理解它們。
對于自監督學習的任務而言,我們之前介紹的方法,如 MoCo,MoCo v2,MoCo v3,SimCLR,BYOL 等,它們都是采用對比學習的策略完成,屬于自監督學習范式中的 Contrastive 系列。問:對于圖像而言,Contrastive Learning 的做法真的是最好的嗎?或者,直接把 NLP 領域的 MLM 方法遷移到 CV 領域的 MIM,是可取的嗎?
第一,我們知道對于圖像信號而言,相鄰像素之間聯系非常緊密 (highly correlated),所以解決 MIM 問題的好方法可能是更多地借助或者 copy masked 部分周圍的像素,而不是更高維的語義信息的推理。
第二,語言和視覺信號的語義高度不同,這點和 kaiming 的信息密度的觀點是一致的,即:視覺信號是 raw 和 low-level 的,而文本信號是 high-level 的。那么,預測 low level 信號會有利于 high level 的圖像識別問題嗎?
第三,視覺信號通常是連續的,而文本信號通常是離散的。
總之,基于以上3點分析,作者提出了 SimMIM 模型,和一周之前 kaiming 的 MAE 在思路上面十分相似,很多具體做法都是一樣的,但是在模型設計上給出了不同的見解。不一樣的地方是:MAE 重建所有的 patches,不論是 masked 還是 unmasked,MAE 本質上屬于 Reconstruction 的任務;而 SimMIM 實驗證明重建所有的 patches 的效果不如只重建 masked patches 的效果,SimMIM 本質上屬于 Prediction 的任務。值得注意的是二者是完全同期的工作 (前后只差一周),說明實力很強的大廠對于 CV 大模型的訓練和設計都得出了比較相似的結論。
1.2 Masking Strategy
SimMIM 的 Masking Strategy 和 kaiming 的 MAE 不同,MAE 采取的做法是直接扔掉被 mask 的 patches,但是 SimMIM 采取的做法和 BEiT,BERT 一致,即把 mask 的 patches 替換成可學習的 mask token vector,并隨著網絡一起訓練。mask 的基本單位仍然是 Image Patches,對于 ViT 模型,masked patch size 使用32×32;對于 Swin Transformer 模型,masked patch size 使用4×4-32×32。
1.3 Encoder 結構
即目標網絡的架構,實際使用了 ViT 模型和 Swin Transformer 模型。
1.4 Prediction head
只要輸入與 Encoder 的輸出一致,輸出達到預測目的,Prediction head 就可以具有任意結構,哪怕是一個 Linear Layer。
1.5 Prediction target
作者希望 Prediction head 的輸出就是重建之后的原圖,所以,為了預測輸入圖像在 full-resolution 下的所有像素值,我們將 feature map 映射回原始分辨率,并由這個 feature map 負責對相應原始像素的預測。
比如,當使用 Swin Transformer Encoder 時,輸出是 downsample 32倍的 feature map。此時要先通過1×1的卷積 (或者叫 Linear Layer),輸出維度是3072=3×32×32。再使用 loss:
式中, 是輸入的 RGB 值和預測值, 是 element 的數量。
1.6 Evaluation protocols
作者使用的評價指標是 Fine-tuning,即在模型最后添加一層線性分類器 Linear Classifier (它其實就是一個 FC 層) 完成分類,同時使用全部 label 訓練目標網絡 Backbone 部分的權重和分類器的權重。也報了 linear probing 的結果,即把目標網絡 Backbone 部分的權重凍結,在模型最后添加一層線性分類器 Linear Classifier 完成分類,只訓練 Linear Classifier 的參數。
1.7 Masking strategy 對表征學習的影響
作者采用 Swin-B 作為消融研究的默認骨干。為了減少實驗開銷,默認的輸入圖像大小為 192×192,并將窗口大小調整為6以適應改變的輸入圖像大小。
預訓練配置: AdamW,100 epochs,cosine learning rate scheduler,batch size=2048,base lr=8e-4,weight decay=0.05,warmup epochs=10。
預訓練 Data Augmentation: Random resize cropping,比例范圍為[0.67,1],寬高比范圍為[3/ 4,4 /3],Random flipping + Color normalization。
Fine-tuning 配置: AdamW,100 epochs,cosine learning rate scheduler,batch size=2048,base lr=5e-3,weight decay=0.05,warmup epochs=10,stochastic depth ratio=0.1。
Fine-tuning Data Augmentation: RandAug,Mixup,Cutmix,Label smoothing,Random erasing。
首先研究了不同 masking strategy 對表征學習的影響,結果如下圖1所示。最佳的 random masking strategy 使得 Accuracy 達到了83.0%。此時超參數是 mask patch size=32,mask ratio=50%,即擋住50%的原圖。這個結果比 BEiT 高0.3%。
此外,當 mask patch size=32 時,mask ratio 在10%-70%時都能夠取得很不錯的結果。作者認為這個實驗結果產生的原因是:一個 mask 中心的像素距離邊界可見像素是足夠遠的,因此可以強迫網絡學習到一些 long-range 的關系,即使 mask 掉的像素足夠多。將 mask ratio 由0.4增加至0.8,在 patch size 大小為4,8和16的情況下,準確率分別提高了0.2%,0.4%和0.4%。使用更大的 mask ratio ,這也證明了相對較小的 patch 尺寸有利于微調性能。然而,這些較小的 patch 的總體精度不如較大的 patch(32) 的高。進一步將 patch 大小增加到64的觀測精度下降,可能是由于預測距離太大。
圖1:不同 masking strategy 對表征學習的影響上述觀察和分析也可以很好地反映在一個新提出的 AvgDist 度量,該度量測量掩碼像素到最近的可見像素的平均歐氏距離。 不同掩碼策略與不同掩蔽率的 AvgDist 如圖2(a)所示。從圖中可以看出,所有的 masking strategy 的AvgDist 都隨著 masking ratio 的增大而平滑增大。對于隨機掩碼策略,當 patch size 較小 (如4或8) 時, AvgDist 相對較低,且隨著掩碼率的增加而增長緩慢。另一方面,當 patch size 較大時 (如64),很小的 mask ratio (如10%) 仍然會產生較大的 AvgDist。
圖2(b)繪制了微調精度和 AvgDist 度量之間的關系,它遵循山脊 (ridge) 形狀。微調精度高的條目大致分布在 AvgDist 的[10,20]范圍內,而 AvgDist 越小或越高的條目表現越差。這表明掩碼圖像建模中的預測距離應該適中,既不要太大,也不要太小。
圖2:不同 mask strategy 和 patch size 時的 AvgDist w.r.t. different masking ratios在掩碼預測中,AugDist 太小的話,網絡可能會學習到太多的短連接,AugDist 太大的話,網絡可能會很難學習。這些結果也表明,AvgDist可能是一個很好的指標用于檢測掩碼建模的有效性。
實際使用的 mask ratio=0.6,patch size=32。
1.8 Projection head 對表征學習的影響
下圖3對比了不同結構的 Projection head 對結果的影響。作者依次嘗試了 Linear layer,2層 MLP,inverse 的 Swin-T 和 inverse 的 Swin-B 架構。發現參數量大的 Projection head 會帶來更低的 loss,但是 Top-1 的 Accuracy 反而變低了。這意味著預訓練 impainting 的能力并不代表下游任務的能力。
另外,一個有意思的發現是:之前的基于 Contrastive learning 的自監督學習工作,如 MoCo,MoCo v2,MoCo v3,SimCLR 等等它們發現 Projection head 用2層的比單層 MLP 好一點。原因是 Projection head 太深的話會導致 Pre-text 的任務學習到的 latent representation 與下游任務需要的差距過大。所以 SimMIM 發現 Projection head 就用一層 MLP 就非常好,也意味著 Contrastive learning 任務設計 Projection head 的方法可能并不適用于 MIM 任務。
1.9 Projection resolution 對表征學習的影響
下圖4對比了不同的 Projection resolution 對結果的影響。大范圍的分辨率 (12×12-192×192) 都能表現良好。傳輸性能只有在6×6的分辨率的低分辨率下才會下降,可能是因為6×6的分辨率丟棄了太多信息。這些結果反映了下游圖像分類任務所需的信息粒度。也告訴我們:MLM 任務的 pre-text 屬于分類任務,但是這并不意味著 MIM 任務的 pre-text 的最優選擇也是分類任務,比如 MAE 和 SimMIM 的 pre-text 屬于回歸任務。
圖4:不同的 Projection resolution 對結果的影響1.10 Projection target 對表征學習的影響
下圖5對比了不同的 Projection target 對結果的影響。使用 loss,smooth loss, loss 的結果都差不多。
圖5:不同的 Projection target 對結果的影響值得注意的是:SimMIM 和 MAE 的另一個很重要的不同是:SimMIM 只重建 masked patches (Prediction),而 MAE 則重建所有的 patches (Reconstruction)。SimMIM 也做了實驗:如果目標設置為重建所有的 patches,則性能略有下降。
1.11 ImageNet-1k 實驗結果
預訓練實驗設置:800 epochs,cosine learning rate scheduler,20 epochs linear warm-up。
Fine-tuning 實驗設置:200 epochs,layer-wise learning rate decay。
下圖6為實驗結果,SimMIM 超過了 DINO 和 BEiT,因為和 MAE,iBOT 是2021年11月同時期的工作,所以它們之間沒有互相對比性能。
圖6:ImageNet 實驗結果1.12 可視化結果
下圖7想研究的是 SimMIM 模型通過預訓練 masked image modeling 任務獲得了一種什么樣的能力。我們看到每一行里面的 mask 分為 Random mask,擋住主要物體的 mask,擋住全部主要物體的 mask。結果顯示:
1. 如果使用 Random mask,物體的形狀和紋理可以得到重建。但是,unmasked 部分因為模型沒有學習這部分的重建,導致最終結果出現了很多的 artifacts。
2. 如果擋住主要物體的 mask,模型仍然能夠重建出物體的部分。
3. 如果擋住全部主要物體的 mask,則模型就使用背景去填充。
圖8:可視化結果下圖9對比了只重建 masked patches (Prediction),或者重建所有的 patches (Reconstruction) 的結果。每組圖片的1是原圖,2是 Corrupted image,3是重建所有的 patches 的復原結果,4是只重建 masked patches 的復原結果。顯然,4視覺效果更好,說明只重建 masked patches 的效果更好,這個結論是 MAE 沒注意到的。
圖9:只重建 masked patches,或者重建所有的 patches 的結果下圖10對比了不同大小的 mask patches 的重建結果。注意所有實驗 mask ratio=0.6,結果發現當 mask patches 較小時,可以得到更好的重建結果。
圖10:不同大小的 mask patches 的重建結果總結
SimMIM 是繼 BEiT 之后,MSRA 又提出的一個 MIM 任務上的自監督預訓練 CV 模型。這個模型更像是 kaiming 的 MAE,也是直接回歸預測原始像素 RGB 值,而不是像 BEiT 或者 iBOT 一樣重建 tokens。和 MAE 作法一致的地方是:(1) 隨機 mask image patches。(2) 直接回歸預測原始像素 RGB 值。(3) Decoder (Prediction head) 是輕量的模型。不一樣的地方是:MAE 重建所有的 patches,不論是 masked 還是 unmasked,MAE 本質上屬于 Reconstruction 的任務;而 SimMIM 實驗證明重建所有的 patches 的效果不如只重建 masked patches 的效果,SimMIM 本質上屬于 Prediction 的任務。
如果覺得有用,就請分享到朋友圈吧!
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載黃海廣老師《機器學習課程》視頻課黃海廣老師《機器學習課程》711頁完整版課件本站qq群955171419,加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【CV】深度了解自监督学习,就看这篇解读 !SimMIM:掩码图像建模的简单框架...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习】深度盘点:详细介绍 Pyth
- 下一篇: NodeJs express自定义中间件