我們已經介紹過兩篇關于 TTA 的工作,可以在 GiantPandaCV 公眾號中找到,分別是:
CVPR 2023 中的領域適應: 通過自蒸餾正則化實現內存高效的 CoTTA
推薦對領域適應不了解的同學先閱讀前置文章。目前的 TTA 方法針對反向傳播的方式可以大致劃分為:
請添加圖片描述
之前介紹過的 CoTTA 可以屬于 Fully Backward,EcoTTA 劃分為 Partial Backward 中的 Meta Network 類別,這次要介紹的方法屬于 Backward-Free 中的 BN-Based 和 Prototype-Based 的混合。下圖是一些 TTA 語義分割方式的比較,在(a)中是最樸素的重新做反向傳播優化目標域模型梯度的方法,效率低,存在誤差積累,且會導致長期遺忘。(b)是直接用每個實例的統計數據替代源統計數據(通過修改 Instance Normalization),但由于丟棄了基本的源知識,因此對目標變化非常敏感,導致不穩定。(c)研究了通過實例統計數據以固定動量或動態波動動量更新歷史統計數據的影響(相當于(b)的集群),然而,這種方法也容易受到誤差積累的影響。(d)表示這篇工作提出的方法,主要思想是以非參數化的方式利用每個實例來動態地進行自適應,這種方法既高效又能在很大程度上避免誤差積累問題。具體來說,計算 BN 層中源統計數據和當前統計數據的加權和,以適應目標分布,從而使模型獲得更健壯的表示,還通過將歷史原型與實例級原型混合構建動態非參數分類頭。
下面看下具體實現。
DIGA 概述
TTA 在語義分割中的應用,效率和性能都至關重要。現有方法要么效率低(例如,需要反向傳播的優化),要么忽略語義適應(例如,分布對齊)。此外,還會受到不穩定優化和異常分布引起的誤差積累的困擾。為了解決這些問題,這篇工作提出了不需反向傳播優化的 TTA 語義分割方法,被叫做稱為動態實例引導自適應(DynamicallyInstance-Guided Adaptation, DIGA)。DIGA 的原則是以非參數化的方式利用每個實例動態引導其自身的適應,從而避免了誤差累積問題和昂貴的優化成本(內存)。具體而言,DIGA 由分布適應模塊(DAM)和語義適應模塊(SAM)組成。DAM 將實例和源 BN 層統計信息混合在一起,以鼓勵模型捕獲不變的表示。SAM 將歷史原型與實例級原型結合起來調整語義預測,這可以與參數化分類頭相關聯。具體細節在后文介紹。
DAM 和 SAM 兩者都由實例感知信息引導。如下圖所示,給定一個測試樣本,首先將其輸入到源預訓練模型中,并通過 DAM 在每個 BN 層進行分布對齊。分布對齊是通過加權求和源統計和實例統計來實現的。之后,通過 SAM 在最后的特征層級上進行語義適應,通過加權混合歷史原型和實例感知原型來構建一個動態非參數化分類頭。這使我們能夠調整語義預測。最后,我們利用原始參數化分類頭和動態非參數化分類頭之間的相互優勢獲得最終的預測結果。
請添加圖片描述
Distribution Adaptation Module (DAM)
調整分布可以提高跨域測試性能,由于訓練數據有限和反向傳播成本高,最常見的方法是對抗訓練和分布差距最小化,但是不適合 TTA 任務。通常 BN 層中各域之間的靜態不匹配是跨域測試性能下降的主要原因。BN 層是使用可訓練參數 gamma 和 beta 進行縮放和移動。對于每個 BN 層,給定輸入特征表示 F,相應的輸出由以下公式給出:
E[F] 和 Var[F] 分別代表輸入特征 F 的期望值和方差。在實踐中,由于批次訓練過程,它們的值通過 running mean 在訓練期間計算:
所以,有一種方法源域的 running mean 的最后一個值被凍結,用作測試階段測試數據的預期值和方差的估計。但是,源統計信息仍會嚴重影響性能。還有一種方法提出了一種動態學習模塊,將 BN 層的統計信息 γ、β 調整為目標域(更新 γ、β)。盡管該方法具有高效性,但其性能仍然不理想。可能的原因之一是模型更新速率通常較小,并且在每個實例評估過程中沒有充分考慮實例級別的信息。
所以 DAM 考慮到了利用實例級別的信息。DAM 不是直接更新 γ、β,而是通過動態地合并(加權求和)源統計信息和實例級別的 BN 統計信息來計算 E[F] 和 Var[F] 的估計值。
其中, 和 是在測試期間使用第 t 個實例計算的均值和方差。
Semantic Adaptation Module (SAM)
DAM 是與類別無關的,如上所述,因為它僅在全局上對特征圖的分布進行調整。然而,對于分割自適應任務來說,類別特定性也很重要,因為即使在同一張圖像中,每個類別的分布也會有很大變化。為了解決這一點,之前的工作提出了兩種直觀的方法,熵最大化和偽標簽。然而,它們都需要基于梯度的反向傳播,因此限制了測試效率,和我們的思路背道而馳。受少樣本學習和域自適應中基于原型的方法(Prototype-Based)的啟發,引入了用于類別特定自適應的 SAM。具體做法,總結有如下幾步,我們用通俗的話解釋下,至于論文中的公式,也會貼上。
計算 Instance-aware prototypes:
根據輸入圖像中每個類別的像素,計算其在特征空間中的中心點(prototypes),稱為實例感知原型。這些原型表示了每個類別的特征分布。
通過對不同實例的原型進行平均計算,得到歷史原型。歷史原型是在大量目標實例上計算得到的,具有較高的穩定性。
Ensemble historical prototypes:
將歷史原型與實例感知原型進行集成,以進一步提高分類的準確性和穩定性。
Cal prototype-based classification result:
使用計算得到的實例感知原型和歷史原型,通過比較輸入像素與原型之間的相似度,進行分類預測。這種基于原型的分類方法可以更好地適應不同類別的變化。
Classifier Association
SAM 本質上是 prototype-based classification。在最后的部分,可以得到兩種類型的預測:一種來自原始的參數化分類器(p?),另一種來自引入的非參數原型分類器(p ?)。為了利用它們之間的互補性,DIGA 還是通過加權求和來獲得最終的預測結果,表示為:
實驗
在實驗的部分,我們更關心的是這些組合的有效性。下表是對 DAM 和 SAM 的消融實驗,最后一行表示分類器關聯。對于 BN 分支和語義分支,都分別比較出最佳和次佳。和直接使用源域模型、其他的 SOTA TTA 方法的可視化比較如下,可以發現在 cityscapes 上的優化效果是最明顯的。
在這里插入圖片描述
總結
這篇工作提出了一種名為動態實例引導適應(DIGA)的方法來解決 TTA 語義分割問題,該方法兼備高效性和有效性。DIGA 包括兩個適應性模塊,即分布適應模塊(DAM)和語義適應模塊(SAM),兩者均以非參數方式受實例感知信息引導。此外,這是第三篇關于 TTA 的論文解讀了,后面出現有趣的工作還會繼續這個系列的。
-
內存
+關注
關注
8文章
3052瀏覽量
74215 -
像素
+關注
關注
1文章
205瀏覽量
18613 -
訓練模型
+關注
關注
1文章
36瀏覽量
3880
發布評論請先 登錄
相關推薦
評論