CARE,讓CNN和Transformer能在對比學習中“互幫互助”

作者 | 小馬

編輯 | CV君

報道 | 我愛計算機視覺(微信id:aicvml)

【寫在前面】

自監督視覺表徵學習(SSL)的研究提升了編碼器主幹網路的效能,使其能夠區分無標籤的訓練樣本。雖然透過SSL實現的CNN編碼器的識別效能與透過監督學習實現的編碼器相當,但其網路中的注意力機制還未得到探索,有待進一步改進。

受在識別場景中帶視覺注意力機制的Transformer的啟發,作者提出了一個

CNN注意力恢復(CNN Attention REvitalization,CARE)

框架來訓練SSL中由Transformer引導注意力的CNN編碼器。本文提出的CARE框架由

CNN流(C流,C-stream)

Transformer流(T流,T-stream)

組成,其中每個流包含兩個分支。

C-stream遵循現有的SSL框架,帶有兩個CNN編碼器、兩個投影模組和一個預測模組。T-stream包含兩個Transformer、兩個投影模組和一個預測器。T-stream連線到CNN編碼器,並與剩餘的C-stream並行。在訓練期間,作者在兩個流中同時執行SSL,並使用T-stream輸出來監控C-stream。CNN編碼器的特徵在T-stream中進行調整,以增強視覺注意力。然後使用這些調整的特徵來監督C-stream,以便學習attentive的CNN編碼器。

在多個標準視覺識別基準(包括影象分類、目標檢測和語義分割)上的實驗表明,本文提出的CARE框架將CNN編碼器主幹提高到SOTA的效能。

1。 論文和程式碼地址

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

論文名稱:Revitalizing CNN Attentions via Transformers in Self-Supervised Visual Representation Learning

論文地址:

https://arxiv.org/abs/2110.05340

程式碼地址:

https://github.com/chongjiange/care

2。 Motivation

有效地學習視覺特徵對識別效能有著深遠的影響。在處理大規模自然影象時,自監督視覺表徵學習中的代理特徵訓練(pretext feature training),有利於下游識別任務。現有的SSL方法通常利用兩個分支來度量來自同一輸入影象的不同視圖表示之間的相似性。透過最大化一幅影象中相關檢視之間的相似性(例如,BYOL、SimSiam和Barlow Twins),或最小化不同影象中檢視之間的相似性(例如,MoCo和SimCLR),這些方法被證明是學習自監督視覺表示的有效方法。

Transformer在自然語言處理中被提出,自ViT以來,它在處理大規模視覺資料方面也顯示了其優勢。Transformer中的編碼器-解碼器架構探索了無卷積的全域性注意力。使用Transformer編碼器的成功表明,視覺注意力有利於SSL中的編碼器主幹網路。另一方面,作者觀察到現有的SSL方法並沒有將視覺注意納入CNN編碼器中。這激發了作者對SSL中注意力機制的探索。作者希望CNN編碼器能夠具有Transformer的類似視覺注意力,以降低計算複雜度和記憶體消耗,從而提高識別效能。

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

在本文中,作者提出了一個CNN注意力恢復框架(CARE),透過Transformer引導使CNN編碼器具備註意力機制。上圖(d)顯示了CARE的圖示,並將其與其他SOTA的SSL框架進行了比較。CARE中有兩個流(即C-Stream和T-Stream),其中每個流包含兩個分支。C-stream與現有的SSL框架類似,它有兩個CNN編碼器、兩個投影模組和一個預測模組。T-stream由兩個Transformer、兩個投影模組和一個預測模組組成。T-stream將CNN編碼器特徵作為輸入,並透過Transformer提高特徵的注意力。

在訓練過程中,作者同時在兩個流中執行SSL,並使用T-Stream輸出來監督C-Stream。T-stream中的自監督學習確保了Transformer能夠產生適用於SSL場景的注意力特徵。同時,作者在C-stream上使用注意力來監督,這種監督使C-stream和T-stream都能產生類似的特性。CNN編碼器的特徵表示透過來自Transformer的視覺注意力得到了改進。

因此,預訓練好的CNN編碼器能夠產生具有注意力的特徵,這有利於下游識別場景。在影象分類、目標檢測和語義分割基準上的實驗表明,本文提出的CARE框架提高了CNN編碼器主幹網路的效能。

3。 方法

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

本文的框架由C-stream和T-stream組成,如上圖所示。

3。1 CNN-stream (C-stream)

本文的C-stream類似於現有的SSL框架,有兩個CNN編碼器、兩個投影模組和一個預測模組。兩個編碼器的結構相同,兩個投影模組的結構相同。給定一個訓練影象X,首先使用一組隨機增強來處理它,以建立兩個不同的增強檢視。然後將這兩個檢視輸入到C-stream,分別獲得相應的輸出

。然後計算用損失函式

來懲罰兩個輸出的不相似度,該損失項是歸一化特徵向量的均方誤差,如下:

其中

正則化,

為點積運算。由於C-stream的輸入來自一幅影象,因此在訓練過程中C-stream的輸出應該是相似的。

3。2 Transformer-stream (T-stream)

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

T-stream將CNN編碼器的輸出特徵對映作為其輸入,與C-stream並行設定。它由兩個Transformer、兩個投影模組和一個預測模組組成。投影模組和預測模組的結構與C-stream中的結構相同。兩個Transformer共享相同的架構,由連續的注意塊組成,其中每個注意塊包含兩個多層感知機(MLP)層和一個位於中間的多頭自注意(MHSA)層,其結構如上圖所示。MHSA由多個平行處理輸入特徵的注意頭組成。

在每一個注意頭中,如上圖右側所示,輸入特徵對映分別透過3個不同的MLP層

對映到query特徵(q)、key特徵(k)和 value特徵(k)。然後,q和k相乘形成基於內容的注意,而q和位置編碼p相乘形成基於位置的注意,如下所示:

其中

是q和k的維度。在T-stream中,兩個Transformer的輸出是2D特徵對映,然後將其平均池化並送到投影模組和預測模組。T-Stream的輸出可以表示為

,損失函式

如下所示:

除了在兩個流中引入SSL損失項外,作者還使用T-Stream輸出來監督C-Stream。這一項可以寫成:

在訓練過程中,要求C-stream輸出與T-stream輸出儘可能相似。相比於知識蒸餾(KD),這個公式主要有三點區別:

1)

結構不同

。在KD中,一個大型教師網路被訓練用來管理一個小型學生網路。相反,在本文的方法中,CNN主幹網路結構相同,不同的模組只是Transformer、投影模組和預測模組。

2)

訓練模式不同

。在KD中,教師網路通常在監督學生網路之前預訓練好的。相比之下,本文方法的兩個分支是從頭開始一起訓練的,以便相互學習。

3)

KD中的損失函式通常是交叉熵損失,而本文采用均方誤差

。在KD期間,還將在特徵對映級別之間計算監督損失,而本文的方法僅根據網路輸出計算損失。

3。3 Network training

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

網路訓練的最終目標函式可以表示為:

其中,

是控制注意力損失影響的超引數。在計算

之後,對C-stream和T-stream的上面分支執行反向傳播。如上圖中,CNN encoder1, projector1, predictor1透過C-stream中計算的梯度進行更新。同時,Transformer1、projector2和 predictor2透過T-stream中計算的梯度進行更新。然後剩下的部分,基於EMA進行更新。

3。4 Visualizations

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

本文的CARE框架,透過Transformer引導提高了CNN編碼器的注意力。在上圖中,作者展示了Attention Map的視覺化結果。輸入影象如(a)所示,而使用C-stream和CARE訓練的編碼器的Attention Map分別顯示在(b)和(C)中。

總的來說,

使用CARE訓練的編碼器的注意力比使用C-stream訓練的編碼器更集中,這表明T-stream為CNN編碼器學習關注目標區域提供了有效的監督。

T-stream幫助CNN編碼器自適應地選擇關注區域性區域或全域性區域。

例如,當分類需要全域性資訊時,CARE學習的CNN編碼器將更加關注整個物件,如(c)中最後一列所示。另一方面,當局部資訊足以進行分類時,CNN編碼器將更加關注特定區域(例如,第一列和第二列(c)中的動物頭部)。

4。實驗

4。1 Comparison to state-of-the-art approaches

影象分類的自監督學習

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

上表展示了ImageNet上自監督學習的實驗結果,(a)表展示了以ResNet-50為編碼器的實驗結果,可以看出,本文方法比其他的自監督方法效果都要更好;(b)表展示了不同Encoder的實驗結果,可以看出,本文的方法同樣有效能優勢。

影象分類的半監督學習

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

上表展示了ImageNet上半監督的實驗結果,可以看出本文方法的效能優越性。

遷移到目標檢測和語義分割

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

上表展示了本文方法轉移到目標檢測和例項分割上的實驗結果。

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

上表展示了用了FPN時,本文方法在目標檢測和例項分割上的實驗結果。

可以看出,在目標檢測和例項分割任務上,本文方法同樣比其他自監督方法效果更好。

4。2 Ablation studies

Supervision influenceλ

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

上表展示了不同λ的實驗結果,可以看出λ=100時,實驗結果是最好的。

注意塊的數量

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

上表展示了不同注意塊的實驗結果,可以看出注意塊為5時,實驗結果是最好的。

位置編碼

CARE,讓CNN和Transformer能在對比學習中“互幫互助”

從上表可以看出,加入可學習的相對位置編碼時,實驗結果是最好的。

5。 總結

Transformer透過注意力探索結構實現了高階的視覺識別。在自監督視覺表徵學習中,出現了利用Transformer主幹網路提高識別效能的研究,這表明Transformer的視覺注意有益於SSL方法。

受此啟發,

作者研究瞭如何有效地探索視覺注意力,使SSL中的CNN編碼器能夠受益

。因此,作者提出了CNN流和Transformer流並行的CARE框架。在SSL過程中,視覺注意力透過Transformer來監督CNN流。

雖然在SSL和注意力監督損失項上會消耗更多的計算成本,但學習到的CNN編碼器在Transformer引導下能夠關注到正確的區域,並且不會在下游任務中消耗更多的計算成本。在標準視覺識別基準(包括影象分類、物件檢測和語義分割)上的實驗表明,CARE讓CNN編碼器主幹網路達到了更高的SOTA效能。