【CV】深度了解自監(jiān)督學(xué)習(xí),就看這篇解讀 !SimMIM:掩碼圖像建模的簡單框架
導(dǎo)讀
?SimMIM 是繼 BEiT 之后,MSRA 又提出的一個 MIM 任務(wù)上的預(yù)訓(xùn)練 CV 模型。這個模型也是直接回歸預(yù)測原始像素 RGB 值,而不是像 BEiT 或者 iBOT 一樣重建 tokens。作者在這篇論文中想探討的是:究竟是什么使得 MIM 任務(wù)能夠使得目標(biāo)網(wǎng)絡(luò)能學(xué)到更好的 visual representation。?
深度了解自監(jiān)督學(xué)習(xí),就看這篇解讀 !Hinton團隊力作:SimCLR系列
深度了解自監(jiān)督學(xué)習(xí),就看這篇解讀 !微軟首創(chuàng):運用在 image 領(lǐng)域的BERT
深度了解自監(jiān)督學(xué)習(xí),就看這篇解讀 !何愷明新作MAE:通向CV大模型
本文目錄
1 SimMIM
1.1 SimMIM 方法概述
1.2 Masking Strategy
1.3 Encoder 結(jié)構(gòu)
1.4 Prediction head
1.5 Prediction target
1.6 Evaluation protocols
1.7 Masking strategy 對表征學(xué)習(xí)的影響
1.8 Projection head 對表征學(xué)習(xí)的影響
1.9 Projection resolution 對表征學(xué)習(xí)的影響
1.10 Projection target 對表征學(xué)習(xí)的影響
1.11 ImageNet-1k 實驗結(jié)果
1.12 可視化結(jié)果
Self-Supervised Learning,又稱為自監(jiān)督學(xué)習(xí),我們知道一般機器學(xué)習(xí)分為有監(jiān)督學(xué)習(xí),無監(jiān)督學(xué)習(xí)和強化學(xué)習(xí)。而 Self-Supervised Learning 是無監(jiān)督學(xué)習(xí)里面的一種,主要是希望能夠?qū)W習(xí)到一種通用的特征表達(dá)用于下游任務(wù) (Downstream Tasks)。其主要的方式就是通過自己監(jiān)督自己。作為代表作的 kaiming 的 MoCo 引發(fā)一波熱議, Yann Lecun也在 AAAI 上講 Self-Supervised Learning 是未來的大勢所趨。所以在這個系列中,我會系統(tǒng)地解讀 Self-Supervised Learning 的經(jīng)典工作。
1 SimMIM
論文名稱:SimMIM: A Simple Framework for Masked Image Modeling
論文地址:
https://arxiv.org/abs/2111.09886
前段時間,何愷明等人的一篇論文成為了計算機視覺圈的焦點。這篇論文僅用簡單的 idea(即掩蔽自編碼器,MAE)就達(dá)到了非常理想的性能,讓人們看到了 Transformer 擴展到 CV 大模型的光明前景,給該領(lǐng)域的研究者帶來了很大的鼓舞:
深度了解自監(jiān)督學(xué)習(xí),就看這篇解讀 !何愷明新作MAE:通向CV大模型
SimMIM 是繼 BEiT 之后,MSRA 又提出的一個 MIM 任務(wù)上的預(yù)訓(xùn)練 CV 模型。這個模型更像是 kaiming 的 MAE,也是直接回歸預(yù)測原始像素 RGB 值,而不是像 BEiT 或者 iBOT 一樣重建 tokens。作者在這篇論文中想探討的是:究竟是什么使得 MIM 任務(wù)能夠使得目標(biāo)網(wǎng)絡(luò)能學(xué)到更好的 visual representation。得出了以下3條結(jié)論:(1) 在 MIM 任務(wù)中,mask patch 的大小如果是32×32,就能使得預(yù)訓(xùn)練任務(wù)成為一個 strong pre-text task,非常有利于預(yù)訓(xùn)練大模型性能的提升。(2) 直接回歸預(yù)測原始像素 RGB 值的效果并不比復(fù)雜設(shè)計的patch分類方法差。(3) prediction head 可以設(shè)計成輕量化的模型,比如一個線性層,它的表現(xiàn)不比 heavy 模型差。
1.1 SimMIM 方法概述
上來先引用一句名言:)
“What I cannot create, I do not understand.” — Richard Feynman
作者可能是想說:要想玩明白 Masked Signal Learning 任務(wù) (就是指這樣一種任務(wù):擋住輸入信號的一部分,把殘缺的信號送入模型,希望模型能夠預(yù)測出這些被 masked 掉的信號),或者說,要想讓模型創(chuàng)造出這些被 masked 掉的信號,就得使得模型首先理解它們。
對于自監(jiān)督學(xué)習(xí)的任務(wù)而言,我們之前介紹的方法,如 MoCo,MoCo v2,MoCo v3,SimCLR,BYOL 等,它們都是采用對比學(xué)習(xí)的策略完成,屬于自監(jiān)督學(xué)習(xí)范式中的 Contrastive 系列。問:對于圖像而言,Contrastive Learning 的做法真的是最好的嗎?或者,直接把 NLP 領(lǐng)域的 MLM 方法遷移到 CV 領(lǐng)域的 MIM,是可取的嗎?
第一,我們知道對于圖像信號而言,相鄰像素之間聯(lián)系非常緊密 (highly correlated),所以解決 MIM 問題的好方法可能是更多地借助或者 copy masked 部分周圍的像素,而不是更高維的語義信息的推理。
第二,語言和視覺信號的語義高度不同,這點和 kaiming 的信息密度的觀點是一致的,即:視覺信號是 raw 和 low-level 的,而文本信號是 high-level 的。那么,預(yù)測 low level 信號會有利于 high level 的圖像識別問題嗎?
第三,視覺信號通常是連續(xù)的,而文本信號通常是離散的。
總之,基于以上3點分析,作者提出了 SimMIM 模型,和一周之前 kaiming 的 MAE 在思路上面十分相似,很多具體做法都是一樣的,但是在模型設(shè)計上給出了不同的見解。不一樣的地方是:MAE 重建所有的 patches,不論是 masked 還是 unmasked,MAE 本質(zhì)上屬于 Reconstruction 的任務(wù);而 SimMIM 實驗證明重建所有的 patches 的效果不如只重建 masked patches 的效果,SimMIM 本質(zhì)上屬于 Prediction 的任務(wù)。值得注意的是二者是完全同期的工作 (前后只差一周),說明實力很強的大廠對于 CV 大模型的訓(xùn)練和設(shè)計都得出了比較相似的結(jié)論。
1.2 Masking Strategy
SimMIM 的 Masking Strategy 和 kaiming 的 MAE 不同,MAE 采取的做法是直接扔掉被 mask 的 patches,但是 SimMIM 采取的做法和 BEiT,BERT 一致,即把 mask 的 patches 替換成可學(xué)習(xí)的 mask token vector,并隨著網(wǎng)絡(luò)一起訓(xùn)練。mask 的基本單位仍然是 Image Patches,對于 ViT 模型,masked patch size 使用32×32;對于 Swin Transformer 模型,masked patch size 使用4×4-32×32。
1.3 Encoder 結(jié)構(gòu)
即目標(biāo)網(wǎng)絡(luò)的架構(gòu),實際使用了 ViT 模型和 Swin Transformer 模型。
1.4 Prediction head
只要輸入與 Encoder 的輸出一致,輸出達(dá)到預(yù)測目的,Prediction head 就可以具有任意結(jié)構(gòu),哪怕是一個 Linear Layer。
1.5 Prediction target
作者希望 Prediction head 的輸出就是重建之后的原圖,所以,為了預(yù)測輸入圖像在 full-resolution 下的所有像素值,我們將 feature map 映射回原始分辨率,并由這個 feature map 負(fù)責(zé)對相應(yīng)原始像素的預(yù)測。
比如,當(dāng)使用 Swin Transformer Encoder 時,輸出是 downsample 32倍的 feature map。此時要先通過1×1的卷積 (或者叫 Linear Layer),輸出維度是3072=3×32×32。再使用 loss:

式中, 是輸入的 RGB 值和預(yù)測值, 是 element 的數(shù)量。
1.6 Evaluation protocols
作者使用的評價指標(biāo)是 Fine-tuning,即在模型最后添加一層線性分類器 Linear Classifier (它其實就是一個 FC 層) 完成分類,同時使用全部 label 訓(xùn)練目標(biāo)網(wǎng)絡(luò) Backbone 部分的權(quán)重和分類器的權(quán)重。也報了 linear probing 的結(jié)果,即把目標(biāo)網(wǎng)絡(luò) Backbone 部分的權(quán)重凍結(jié),在模型最后添加一層線性分類器 Linear Classifier 完成分類,只訓(xùn)練 Linear Classifier 的參數(shù)。
1.7 Masking strategy 對表征學(xué)習(xí)的影響
作者采用 Swin-B 作為消融研究的默認(rèn)骨干。為了減少實驗開銷,默認(rèn)的輸入圖像大小為 192×192,并將窗口大小調(diào)整為6以適應(yīng)改變的輸入圖像大小。
預(yù)訓(xùn)練配置: AdamW,100 epochs,cosine learning rate scheduler,batch size=2048,base lr=8e-4,weight decay=0.05,warmup epochs=10。
預(yù)訓(xùn)練 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 對表征學(xué)習(xí)的影響,結(jié)果如下圖1所示。最佳的 random masking strategy 使得 Accuracy 達(dá)到了83.0%。此時超參數(shù)是 mask patch size=32,mask ratio=50%,即擋住50%的原圖。這個結(jié)果比 BEiT 高0.3%。
此外,當(dāng) mask patch size=32 時,mask ratio 在10%-70%時都能夠取得很不錯的結(jié)果。作者認(rèn)為這個實驗結(jié)果產(chǎn)生的原因是:一個 mask 中心的像素距離邊界可見像素是足夠遠(yuǎn)的,因此可以強迫網(wǎng)絡(luò)學(xué)習(xí)到一些 long-range 的關(guān)系,即使 mask 掉的像素足夠多。將 mask ratio 由0.4增加至0.8,在 patch size 大小為4,8和16的情況下,準(zhǔn)確率分別提高了0.2%,0.4%和0.4%。使用更大的 mask ratio ,這也證明了相對較小的 patch 尺寸有利于微調(diào)性能。然而,這些較小的 patch 的總體精度不如較大的 patch(32) 的高。進(jìn)一步將 patch 大小增加到64的觀測精度下降,可能是由于預(yù)測距離太大。

上述觀察和分析也可以很好地反映在一個新提出的 AvgDist 度量,該度量測量掩碼像素到最近的可見像素的平均歐氏距離。 不同掩碼策略與不同掩蔽率的 AvgDist 如圖2(a)所示。從圖中可以看出,所有的 masking strategy 的AvgDist 都隨著 masking ratio 的增大而平滑增大。對于隨機掩碼策略,當(dāng) patch size 較小 (如4或8) 時, AvgDist 相對較低,且隨著掩碼率的增加而增長緩慢。另一方面,當(dāng) patch size 較大時 (如64),很小的 mask ratio (如10%) 仍然會產(chǎn)生較大的 AvgDist。
圖2(b)繪制了微調(diào)精度和 AvgDist 度量之間的關(guān)系,它遵循山脊 (ridge) 形狀。微調(diào)精度高的條目大致分布在 AvgDist 的[10,20]范圍內(nèi),而 AvgDist 越小或越高的條目表現(xiàn)越差。這表明掩碼圖像建模中的預(yù)測距離應(yīng)該適中,既不要太大,也不要太小。

在掩碼預(yù)測中,AugDist 太小的話,網(wǎng)絡(luò)可能會學(xué)習(xí)到太多的短連接,AugDist 太大的話,網(wǎng)絡(luò)可能會很難學(xué)習(xí)。這些結(jié)果也表明,AvgDist可能是一個很好的指標(biāo)用于檢測掩碼建模的有效性。
實際使用的 mask ratio=0.6,patch size=32。
1.8 Projection head 對表征學(xué)習(xí)的影響
下圖3對比了不同結(jié)構(gòu)的 Projection head 對結(jié)果的影響。作者依次嘗試了 Linear layer,2層 MLP,inverse 的 Swin-T 和 inverse 的 Swin-B 架構(gòu)。發(fā)現(xiàn)參數(shù)量大的 Projection head 會帶來更低的 loss,但是 Top-1 的 Accuracy 反而變低了。這意味著預(yù)訓(xùn)練 impainting 的能力并不代表下游任務(wù)的能力。

另外,一個有意思的發(fā)現(xiàn)是:之前的基于 Contrastive learning 的自監(jiān)督學(xué)習(xí)工作,如 MoCo,MoCo v2,MoCo v3,SimCLR 等等它們發(fā)現(xiàn) Projection head 用2層的比單層 MLP 好一點。原因是 Projection head 太深的話會導(dǎo)致 Pre-text 的任務(wù)學(xué)習(xí)到的 latent representation 與下游任務(wù)需要的差距過大。所以 SimMIM 發(fā)現(xiàn) Projection head 就用一層 MLP 就非常好,也意味著 Contrastive learning 任務(wù)設(shè)計 Projection head 的方法可能并不適用于 MIM 任務(wù)。
1.9 Projection resolution 對表征學(xué)習(xí)的影響
下圖4對比了不同的 Projection resolution 對結(jié)果的影響。大范圍的分辨率 (12×12-192×192) 都能表現(xiàn)良好。傳輸性能只有在6×6的分辨率的低分辨率下才會下降,可能是因為6×6的分辨率丟棄了太多信息。這些結(jié)果反映了下游圖像分類任務(wù)所需的信息粒度。也告訴我們:MLM 任務(wù)的 pre-text 屬于分類任務(wù),但是這并不意味著 MIM 任務(wù)的 pre-text 的最優(yōu)選擇也是分類任務(wù),比如 MAE 和 SimMIM 的 pre-text 屬于回歸任務(wù)。

1.10 Projection target 對表征學(xué)習(xí)的影響
下圖5對比了不同的 Projection target 對結(jié)果的影響。使用 loss,smooth loss, loss 的結(jié)果都差不多。

值得注意的是:SimMIM 和 MAE 的另一個很重要的不同是:SimMIM 只重建 masked patches (Prediction),而 MAE 則重建所有的 patches (Reconstruction)。SimMIM 也做了實驗:如果目標(biāo)設(shè)置為重建所有的 patches,則性能略有下降。
1.11 ImageNet-1k 實驗結(jié)果
預(yù)訓(xùn)練實驗設(shè)置:800 epochs,cosine learning rate scheduler,20 epochs linear warm-up。
Fine-tuning 實驗設(shè)置:200 epochs,layer-wise learning rate decay。
下圖6為實驗結(jié)果,SimMIM 超過了 DINO 和 BEiT,因為和 MAE,iBOT 是2021年11月同時期的工作,所以它們之間沒有互相對比性能。

1.12 可視化結(jié)果
下圖7想研究的是 SimMIM 模型通過預(yù)訓(xùn)練 masked image modeling 任務(wù)獲得了一種什么樣的能力。我們看到每一行里面的 mask 分為 Random mask,擋住主要物體的 mask,擋住全部主要物體的 mask。結(jié)果顯示:
1. 如果使用 Random mask,物體的形狀和紋理可以得到重建。但是,unmasked 部分因為模型沒有學(xué)習(xí)這部分的重建,導(dǎo)致最終結(jié)果出現(xiàn)了很多的 artifacts。
2. 如果擋住主要物體的 mask,模型仍然能夠重建出物體的部分。
3. 如果擋住全部主要物體的 mask,則模型就使用背景去填充。

下圖9對比了只重建 masked patches (Prediction),或者重建所有的 patches (Reconstruction) 的結(jié)果。每組圖片的1是原圖,2是 Corrupted image,3是重建所有的 patches 的復(fù)原結(jié)果,4是只重建 masked patches 的復(fù)原結(jié)果。顯然,4視覺效果更好,說明只重建 masked patches 的效果更好,這個結(jié)論是 MAE 沒注意到的。

下圖10對比了不同大小的 mask patches 的重建結(jié)果。注意所有實驗 mask ratio=0.6,結(jié)果發(fā)現(xiàn)當(dāng) mask patches 較小時,可以得到更好的重建結(jié)果。

總結(jié)
SimMIM 是繼 BEiT 之后,MSRA 又提出的一個 MIM 任務(wù)上的自監(jiān)督預(yù)訓(xùn)練 CV 模型。這個模型更像是 kaiming 的 MAE,也是直接回歸預(yù)測原始像素 RGB 值,而不是像 BEiT 或者 iBOT 一樣重建 tokens。和 MAE 作法一致的地方是:(1) 隨機 mask image patches。(2) 直接回歸預(yù)測原始像素 RGB 值。(3) Decoder (Prediction head) 是輕量的模型。不一樣的地方是:MAE 重建所有的 patches,不論是 masked 還是 unmasked,MAE 本質(zhì)上屬于 Reconstruction 的任務(wù);而 SimMIM 實驗證明重建所有的 patches 的效果不如只重建 masked patches 的效果,SimMIM 本質(zhì)上屬于 Prediction 的任務(wù)。
如果覺得有用,就請分享到朋友圈吧!
往期精彩回顧 本站qq群955171419,加入微信群請掃碼:
