模態(tài)編碼器 | DINO-自監(jiān)督學(xué)習(xí)在視覺Transformer中的新特性探索

今天看一篇經(jīng)典方法DINO,Meta AI在2021年的一篇工作。研究動機(jī)如下:
Transformer模型在自然語言處理領(lǐng)域取得了顯著成就,但在視覺任務(wù)中與卷積神經(jīng)網(wǎng)絡(luò)(CNNs)相比,并未展現(xiàn)出明顯的優(yōu)越性。自監(jiān)督學(xué)習(xí)是NLP中Transformer成功的關(guān)鍵因素之一,如BERT和GPT等;然而,在視覺識別任務(wù)中,圖像級別的監(jiān)督往往將豐富的視覺信息簡化為單一概念,這可能限制了模型學(xué)習(xí)更復(fù)雜特征的能力。當(dāng)前的自監(jiān)督學(xué)習(xí)方法雖然對圖像顯示出了潛力,但它們通常依賴于特定組件以避免特征空間坍塌或提升性能,并且這些方法在Vision Transformer上的應(yīng)用尚未成熟。
DINO(Distillation with No Labels)旨在通過自監(jiān)督學(xué)習(xí)挖掘Transformer在視覺識別中的潛力,無需人工標(biāo)注標(biāo)簽,僅通過輸入圖像及其變換(如旋轉(zhuǎn)、隨機(jī)裁剪等),使網(wǎng)絡(luò)能夠?qū)W習(xí)到圖像的語義信息及不同角度和尺度下的特征。這種方法利用大規(guī)模無標(biāo)簽數(shù)據(jù)進(jìn)行訓(xùn)練,提供了一種有效的特征表示學(xué)習(xí)方式,解決了監(jiān)督學(xué)習(xí)中對大量標(biāo)注數(shù)據(jù)的依賴問題。
01、方法介紹
在DINO中,作者提出了一種新的對比學(xué)習(xí)策略,通過比較原始圖像及其隨機(jī)裁剪版本的特征,促使模型學(xué)習(xí)更優(yōu)質(zhì)的視覺通用表征,從而在無需標(biāo)簽的情況下實現(xiàn)了出色的視覺識別效果。它可以被解釋為一種無標(biāo)簽的知識蒸餾形式。DINO通過直接預(yù)測一個使用動量編碼器構(gòu)建的教師網(wǎng)絡(luò)的輸出來簡化自監(jiān)督訓(xùn)練,損失函數(shù)使用標(biāo)準(zhǔn)的交叉熵?fù)p失。

先看下知識蒸餾:
知識蒸餾是一種學(xué)生網(wǎng)絡(luò)
匹配給定教師網(wǎng)絡(luò)
的學(xué)習(xí)范式,其參數(shù)分別是
和
。給定輸入圖片 x,兩個網(wǎng)絡(luò)都輸出 K 維上的概率分布,用
和
表示。概率 P 是通過使用 Softmax 函數(shù)對網(wǎng)絡(luò) g 的輸出進(jìn)行歸一化來獲得的:

給定一個固定的教師網(wǎng)絡(luò)
,通過最小化學(xué)生網(wǎng)絡(luò)
和教師網(wǎng)絡(luò)
的參數(shù)的交叉熵?fù)p失來學(xué)習(xí)匹配這些分布:

式中,
。
為了讓模型能夠?qū)W習(xí)到更具泛化能力的特征,作者首先使用了多種數(shù)據(jù)增強(qiáng)策略得到不同的視圖,從給定的圖像中生成一組不同視圖 V 。V這個集合包含兩個全局視圖
和
以及幾個分辨率較小的局部視圖。所有局部視圖輸入給學(xué)生模型,全局視圖輸入給教師模型,鼓勵“局部到全局”的對應(yīng)關(guān)系。然后使用下面的損失函數(shù)優(yōu)化:

這種損失是通用的,可以用于任意數(shù)量的視圖 (公式中是 2)。分辨率為 224×224 的2個全局視圖覆蓋原始圖像的大 (比如大于 50%) 部分區(qū)域,分辨率為 96×96 的局部視圖僅僅可以覆蓋原始圖像的小區(qū)域 (比如小于 50%)。教師網(wǎng)絡(luò)和學(xué)生網(wǎng)絡(luò)共享相同的架構(gòu) g,通過隨機(jī)梯度下降最小化方程來學(xué)習(xí)參數(shù)。
如圖所示是 DINO 的算法流程,一張圖片x 的兩個View
分別輸入給學(xué)生模型
和教師模型
。兩個網(wǎng)絡(luò)具有相同的架構(gòu)但參數(shù)不同,教師網(wǎng)絡(luò)的輸出通過一個 Batch 的平均值進(jìn)行 centering 操作,每個網(wǎng)絡(luò)輸出一個 K 維的特征,并使用 Softmax 進(jìn)行歸一化。然后使用交叉熵?fù)p失作為目標(biāo)函數(shù)計算學(xué)生模型和教師模型之間的相似度。在教師模型上使用停止梯度 (stop-gradient, sg) 算子來阻斷梯度的傳播,只把梯度傳給學(xué)生模型使其更新參數(shù)。教師模型使用學(xué)生模型的 EMA 進(jìn)行更新。
數(shù)據(jù)增強(qiáng)
DINO 中最核心的數(shù)據(jù)采樣策略便是圖像裁剪,這也是自監(jiān)督學(xué)習(xí)領(lǐng)域應(yīng)用非常廣泛的主策略之一。一般來說,可以將裁剪后的圖像分為兩種:
Local views: 即局部視角,也稱為 small crops,指的是摳圖面積小于原始圖像的 50%;Global views: 即全局視角,也稱為 large crops,指的是摳圖面積大于原始圖像的 50%;
在 DINO 中,學(xué)生模型接收所有預(yù)處理過的 crops 圖,而教師模型僅接收來自 global views 的裁剪圖。這是為了鼓勵從局部到全局的響應(yīng),從而訓(xùn)練學(xué)生模型從一個小的裁剪畫面中推斷出更廣泛的上下文信息。
簡單來說,就是把局部特征和全局特征分別交給不同的模型來學(xué)習(xí),以便在處理整個圖像時,能夠更好地對局部細(xì)節(jié)和上下文進(jìn)行綜合判斷。
Centering(中心化)和Sharpening(銳化)
Centering(中心化)和Sharpening(銳化)是兩個關(guān)鍵操作,它們共同作用以避免模型輸出崩潰(collapse),即防止模型輸出變得毫無區(qū)分度或被某個維度主導(dǎo)。以下是這兩個操作的詳細(xì)介紹:
中心化:中心化的目的是調(diào)整教師網(wǎng)絡(luò)的輸出,使其分布更加穩(wěn)定,避免任何一個維度的輸出值過大,從而導(dǎo)致模型輸出崩潰。
中心化操作通過計算教師網(wǎng)絡(luò)輸出的均值(通常是在批次維度上),然后從每個輸出向量中減去這個均值來實現(xiàn)。數(shù)學(xué)上,如果T是教師網(wǎng)絡(luò)的輸出,則中心化操作可以表示為:

其中,E[T]是T在批次上的均值。這種操作有助于防止模型輸出在一個維度上過大,從而避免模型輸出崩潰到一個點或者被某個維度主導(dǎo)。
銳化:銳化的目的是使教師網(wǎng)絡(luò)的輸出分布更加集中,即增強(qiáng)模型對其預(yù)測的“信心”,這有助于提高特征的區(qū)分度。
銳化操作通過在softmax函數(shù)中使用一個溫度參數(shù)(temperature)來實現(xiàn)。較低的溫度參數(shù)會使softmax輸出的分布更加尖銳,即更傾向于將概率集中在少數(shù)幾個類別上。數(shù)學(xué)上,如果T是教師網(wǎng)絡(luò)的輸出,溫度參數(shù)為τ,則銳化操作可以表示為:

其中,P是經(jīng)過softmax歸一化后的概率分布。銳化操作有助于避免模型輸出變得過于均勻,即在所有類別上都有相似的概率,這會導(dǎo)致模型失去區(qū)分不同輸入的能力。
網(wǎng)絡(luò)架構(gòu)
DINO 的模型g 是由一個主干網(wǎng)絡(luò)
f (ResNet 或者 ViT) 和一個投影頭
h組成。投影頭h是一個3層的 MLP。DINO 不使用 BYOL 中的 predictor,使得教師和學(xué)生的架構(gòu)完全一致。而且,作者注意到與標(biāo)準(zhǔn) ConvNet 不同,ViT 架構(gòu)默認(rèn)不使用批量歸一化 (BN)。因此,當(dāng)將 DINO 應(yīng)用于 ViT 時,在投影頭中不使用任何 BN,使系統(tǒng)完全達(dá)到 BN-free 的架構(gòu)。
教師網(wǎng)絡(luò):與知識蒸餾不同,DINO中沒有預(yù)先給定的教師網(wǎng)絡(luò)。相反,教師網(wǎng)絡(luò)是從學(xué)生網(wǎng)絡(luò)的過去迭代中構(gòu)建的。論文研究了不同的教師網(wǎng)絡(luò)更新規(guī)則,并發(fā)現(xiàn)使用學(xué)生權(quán)重的指數(shù)移動平均(EMA)作為教師網(wǎng)絡(luò)特別適用于DINO框架。為了避免模型崩潰(即模型輸出變得均勻或由一個維度主導(dǎo)),DINO使用了中心化(centering)和銳化(sharpening)技術(shù)。中心化操作通過移動教師網(wǎng)絡(luò)的輸出分布來防止一個維度主導(dǎo),而銳化則通過在教師網(wǎng)絡(luò)的softmax歸一化中使用較低的溫度參數(shù)來實現(xiàn)。center 可以穩(wěn)定 momentum 帶來的影響,但是會使得教師模型的輸出趨近于均勻分布,而 sharpen 正好可以解決這個問題。center 的超參數(shù)c 可以通過下式來計算:

其中,m是比例參數(shù)。sharpen 是通過把知識蒸餾中的溫度系數(shù)τ設(shè)置比較低來實現(xiàn)。
02、實驗結(jié)果
ImageNet 實驗結(jié)果
DINO框架在ImageNet數(shù)據(jù)集上的性能,并與其他自監(jiān)督學(xué)習(xí)(SSL)框架進(jìn)行了比較。這一部分的主要目的是展示DINO在標(biāo)準(zhǔn)自監(jiān)督學(xué)習(xí)基準(zhǔn)測試中的有效性,并與其他方法進(jìn)行對比分析。
如下圖所示是跨方法層面和跨架構(gòu)層面的 ImageNet 實驗結(jié)果對比。
首先,可以觀察到 DINO 在 ResNet-50 上的表現(xiàn)與最先進(jìn)的幾個方法相當(dāng),驗證了 DINO 作為標(biāo)準(zhǔn)自監(jiān)督學(xué)習(xí)方法的性能。當(dāng)切換到 ViT 架構(gòu)時,DINO 在線性分類方面優(yōu)于 BYOL、MoCov2 和 SwAV +3.5%,在 k-NN 評估中優(yōu)于 +7.9%。使用簡單的 k-NN 分類器的性能幾乎與 Linear Classifier 相當(dāng) (74.5% 和 77.0%),這個屬性僅在使用帶有 ViT 架構(gòu)的 DINO 時出現(xiàn),并且不會出現(xiàn)在其他現(xiàn)有的自監(jiān)督方法和 ResNet-50 中。

最近鄰檢索
與使用監(jiān)督學(xué)習(xí)訓(xùn)練的特征相比,使用DINO預(yù)訓(xùn)練的ViT模型在最近鄰檢索任務(wù)上取得了顯著的性能提升。表明DINO學(xué)習(xí)到的特征在捕捉圖像的語義和視覺相似性方面更為有效。ViT的優(yōu)勢:從結(jié)果還可以觀察到,與卷積網(wǎng)絡(luò)相比,ViT模型在最近鄰檢索任務(wù)中表現(xiàn)更好。這可能是因為ViT模型的全局感受野使其能夠更好地捕捉圖像的全局結(jié)構(gòu)和上下文信息。

Copy detection
Copy detection 是一個計算機(jī)視覺任務(wù),旨在識別和檢索在不同條件下捕獲的相同或非常相似的圖像。這些條件可能包括不同的光照、角度、尺度、模糊、裁剪等。
DINO預(yù)訓(xùn)練的ViT模型在Copy detection任務(wù)上表現(xiàn)出色,與專門針對特定對象檢索訓(xùn)練的模型(如Multigrain模型)相比具有競爭力。

下游任務(wù)遷移學(xué)習(xí)
DINO自監(jiān)督預(yù)訓(xùn)練的ViT模型在多個下游任務(wù)上表現(xiàn)出了很好的遷移學(xué)習(xí)能力。

場景的語義布局
DINO自監(jiān)督預(yù)訓(xùn)練的ViT模型不僅能夠?qū)W習(xí)一般的圖像特征,還能夠捕獲可以用于圖像分割和對象發(fā)現(xiàn)任務(wù)的語義布局信息。
DINO訓(xùn)練模型的自注意力圖與有監(jiān)督模型的自注意力圖進(jìn)行比較。比較顯示,DINO模型在關(guān)注對象和場景結(jié)構(gòu)方面表現(xiàn)得更好,即使在存在復(fù)雜背景的情況下,也能在定性和定量上都表現(xiàn)得更優(yōu)。
在DAVIS 2017視頻對象分割基準(zhǔn)測試中評估了凍結(jié)特征的質(zhì)量,結(jié)果顯示即使沒有明確針對密集預(yù)測任務(wù)進(jìn)行訓(xùn)練,使用DINO訓(xùn)練的ViT模型在基準(zhǔn)測試中的表現(xiàn)也具有競爭力。
Figure 3 展示了使用DINO自監(jiān)督預(yù)訓(xùn)練的ViT模型中,不同注意力頭能夠關(guān)注到圖像中的不同語義區(qū)域。即使在目標(biāo)重疊或遮擋嚴(yán)重的情況下,不同的注意力頭也能區(qū)分開來。這個圖非常生動形象地展示了DINO模型在無監(jiān)督的條件下學(xué)習(xí)到的內(nèi)部特征表示。具體來說,這個圖顯示了多個注意力頭的激活情況,每個頭關(guān)注圖像的不同部分,這些部分可能代表不同的對象或?qū)ο蟮哪承┎糠?。這種能力表明DINO模型能夠捕捉到圖像中豐富的語義信息,這對于后續(xù)的圖像分割和對象識別等任務(wù)非常有用。

Figure 4 展示了有監(jiān)督訓(xùn)練的ViT模型與使用DINO自監(jiān)督訓(xùn)練的ViT模型在生成分割掩碼方面的差異。通過閾值化自注意力圖來生成分割掩碼,并與真實掩碼進(jìn)行比較,可以看到DINO訓(xùn)練的模型在自監(jiān)督學(xué)習(xí)下能夠生成與真實掩碼具有較高Jaccard相似度的分割掩碼。這進(jìn)一步證明了自監(jiān)督ViT模型在理解場景布局方面的能力。

消融實驗結(jié)果
不同組件的作用
- 動量編碼器(Mom.):使用動量編碼器(momentum encoder)來更新教師網(wǎng)絡(luò)的參數(shù),這是一種指數(shù)移動平均(EMA)策略。
- Sinkhorn-Knopp(SK):使用Sinkhorn-Knopp算法來避免模型輸出的崩潰問題。
- 多作物訓(xùn)練(MC):使用多作物訓(xùn)練策略,即對同一圖像的不同區(qū)域進(jìn)行裁剪并輸入到模型中。
- 交叉熵?fù)p失(CE):使用交叉熵?fù)p失函數(shù)來訓(xùn)練模型。
- MSE損失(MSE):使用均方誤差損失函數(shù)來訓(xùn)練模型。
- InfoNCE損失(INCE):一種特定的對比損失函數(shù)。
- 預(yù)測器(Pred.):在學(xué)生網(wǎng)絡(luò)中使用預(yù)測器。
- k-NN:使用k-最近鄰分類器來評估模型特征的質(zhì)量。
- 線性評估:使用線性分類器來評估模型特征的質(zhì)量。
下圖報告了當(dāng)添加或刪除組件時的不同模型的性能。首先可以觀察到,在沒有 Momentum 的情況下,DINO 框架不起作用。SK 操作也可以避免坍塌的現(xiàn)象。此外,有了 Momentum 的情況下,使用 SK 幾乎沒有影響。
比較第 3 行和 9 行:突出了 Momentum 對性能提升的重要性。
比較第 4 行和 5 行:DINO 中的 Multi-crop 訓(xùn)練和 CE Loss 是獲得良好特征的重要組成部分。
比較第 6 行:向?qū)W生網(wǎng)絡(luò)添加 Predictor 幾乎沒有影響。

Patch Size 的作用
下圖中比較了不同 Patch size (16×16, 8×8 和 5×5) 的 ViT 模型的 k-NN 分類性能。所有模型都訓(xùn)練了 300 個 Epoch??梢杂^察到,當(dāng)減小 Patch size 的大小時,性能會大大提高。有趣的是,在不增加額外參數(shù)的情況下可以大大提高性能。然而,使用較小 Patch size 的性能增益是以犧牲吞吐量為代價的。比如,當(dāng)使用 5×5 的 Patch size 時,吞吐量下降到 44 im/s,而 8×8 Patch size 的吞吐量下降到 180 im/s。

教師模型訓(xùn)練策略的作用
下圖比較了不同的教師模型訓(xùn)練策略,Previous epoch:使用來自前一個 Epoch 的學(xué)生模型作為教師模型。Previous iter:使用來自前一個 Iteration 的學(xué)生模型作為教師模型。Student copy:使用學(xué)生模型作為教師模型。
可以觀察到使用來自前一個 Epoch 的教師模型得到的性能并不會崩潰,使用動量編碼器(即EMA)的教師網(wǎng)絡(luò)在性能上優(yōu)于其他策略。動量編碼器通過指數(shù)移動平均平滑學(xué)生網(wǎng)絡(luò)的參數(shù)變化,提供了一個更加穩(wěn)定的學(xué)習(xí)目標(biāo)。與 MoCo-v2 或 BYOL 等現(xiàn)有框架提供有競爭力的 k-NN 評估性能。

03、總結(jié)
DINO 提出了一個全新的自監(jiān)督學(xué)習(xí)框架,該框架通過“無標(biāo)簽自蒸餾”(self-distillation with no labels)的方式訓(xùn)練模型,使得模型能夠在沒有標(biāo)簽的情況下從大規(guī)模數(shù)據(jù)中學(xué)習(xí)到高質(zhì)量的視覺特征。這一方法不僅減少了對昂貴標(biāo)簽數(shù)據(jù)的依賴,還為利用互聯(lián)網(wǎng)上大量的未標(biāo)注圖像數(shù)據(jù)提供了可能。在實踐中,這意味著可以更快、更經(jīng)濟(jì)地開發(fā)出性能強(qiáng)大的視覺模型,為高效開發(fā)性能強(qiáng)大的視覺模型提供了新的路徑。



































