文章來源:我愛計算機視覺(ID:aicvml)
大家好,今天想和大家聊一篇非常有趣的新工作,來自上海交通大學和南京農業大學的研究者們,他們提出了一個名為 ADPretrain 的新框架。簡單來說,這是一個專門為工業異常檢測(Industrial Anomaly Detection)任務設計的“預訓練”方法,旨在解決現有方法過度依賴ImageNet預訓練特征而導致的“水土不服”問題。
![]()
論文標題 : ADPretrain: Advancing Industrial Anomaly Detection via Anomaly Representation Pretraining
作者 : Xincheng Yao, Yan Luo, Zefeng Qian, Chongyang Zhang
機構 : 上海交通大學,南京農業大學
論文地址 : https://arxiv.org/abs/2511.05245
項目地址 : https://github.com/xcyao00/ADPretrain
會議 : Accepted by NeurIPS 2025
在工業生產線上,利用機器視覺來檢測產品瑕疵(即“異常”)是一項關鍵技術。目前,主流的異常檢測(AD)方法大多依賴于在ImageNet上預訓練好的深度學習模型來提取特征。
但這里存在兩個核心問題:
目標不匹配 :ImageNet預訓練的目標是“分類”,讓模型學會識別貓、狗、汽車等自然物體,而不是區分“正常”與“異常”的工業品。
數據分布差異 :工業圖像(比如電路板、藥瓶、金屬螺絲)和ImageNet中的自然圖像在紋理、光照、背景等方面差異巨大。
這兩個問題導致ImageNet預訓練出的特征對于工業異常檢測任務來說,并非最優解,甚至可能限制了模型的性能上限。
![]()
從上圖可以直觀地看到,無論是在MVTecAD還是VisA數據集上,使用了ADPretrain的預訓練特征后(虛線),多種異常檢測方法的性能都普遍優于使用原始特征(實線),證明了其普適性和有效性。
ADPretrain:為異常檢測而生的預訓練框架
為了解決上述痛點,作者們提出了一個全新的異常表示預訓練框架——ADPretrain。其核心思想是:在一個大規模的工業異常檢測數據集(RealIAD)上,專門學習一種能夠更好地區分正常與異常樣本的特征表示。
![]()
整個框架如上圖所示,它主要包含幾個關鍵設計:
基于殘差特征的表示學習
為了讓預訓練的特征具有更好的泛化能力,能夠適應不同的下游數據集,ADPretrain沒有直接使用骨干網絡輸出的特征。而是借鑒了ResAD的思想,采用了一種名為“殘差特征”(Residual Features)的表示。
具體來說,對于一個輸入特征,模型會從一個“正常樣本特征庫”中找到與之最相似的正常特征,然后將兩者相減,得到殘差特征。這種操作可以有效地剝離掉與類別相關的通用模式,讓模型更專注于那些“不正常”的微小差異,從而獲得更好的跨類別泛化能力。
創新的對比損失函數
為了讓模型學到的特征更具判別力,作者設計了兩種互補的對比損失函數(Contrastive Losses),分別從“角度”和“范數(模長)”兩個維度來拉大正常特征與異常特征之間的距離。
角度導向對比損失 (Angle-Oriented Contrastive Loss)
這個損失函數的目標是最大化正常特征與異常特征在特征空間中的夾角。不同于傳統的對比學習以原點為中心計算余弦相似度,作者認為這會導致特征均勻分布在超球面,不利于區分類內差異。因此,他們提出以所有正常特征的“質心” 為中心來計算角度。對于一個特征 ,先計算中心化后的特征 ,再進行對比學習。其公式如下:
其中, 和 是來自同一圖像的增廣對(正樣本), 是溫度超參。 這個指示函數是關鍵,它確保了只有標簽不同(即一個是正常,一個是異常)的樣本 才會被當作負樣本。這樣,損失函數會明確地將正常特征與異常特征在角度上推開。
范數導向對比損失 (Norm-Oriented Contrastive Loss)
這個損失函數則希望在范數(模長)上區分正常與異常特征。其靈感源于單分類(One-Class Classification)思想,目標是讓所有正常特征的范數都收縮到一個半徑為 的預設超球體內,而異常特征的范數則被推到半徑為 ( , 是一個安全邊界) 的超球體之外。其統一形式的損失函數如下:
這里, 表示 是正常特征,對其施加收縮損失 ,將其拉入半徑為 的球內。 表示 是異常特征,對其施加擴張損失 ,將其推出半徑為 的球外。
通過這兩個損失函數的共同優化(總損失 ),模型被引導著去學習一種“理想”的特征分布:正常特征在角度和范數上都緊湊地聚集在一起,而異常特征則被推到遠處,界限分明。
可學習鍵/值注意力的特征投影器
在獲得殘差特征后,作者設計了一個基于Transformer的特征投影器(Feature Projector)來進一步優化和提煉特征。有趣的是,他們沒有使用標準的自注意力機制,而是提出了一種名為“可學習鍵/值注意力”(Learnable Key/Value Attention)的模塊。
該模塊引入了一組可學習的“參考表示”作為Key和Value,而輸入特征作為Query。通過Query與這些可學習的正常模式參考進行交叉注意力計算,再從輸入中減去注意力輸出,可以自適應地消除特征中可能殘留的正常模式,從而進一步凸顯異常。
實驗效果:顯著且普適的性能提升
為了驗證ADPretrain的威力,作者進行了一系列詳盡的實驗。他們將ADPretrain學到的特征直接替換掉五種主流的基于嵌入的異常檢測方法(如PaDiM、PatchCore等)中的原始特征,并在五個公開數據集(MVTecAD, VisA, BTAD等)和五種不同的骨干網絡(如DINOv2, CLIP等)上進行了測試。
![]()
實驗結果非常亮眼。如上表所示,幾乎在所有組合下,使用ADPretrain的特征(標記為?)都帶來了顯著的性能提升。例如,在DINOv2-Base骨干網絡和MVTecAD數據集上,PatchCore的圖像級AUROC從95.5%提升到了99.0%;UniAD更是從71.1%飆升至97.1%,提升了驚人的26個百分點。這充分證明了ADPretrain學習到的特征表示具有極強的泛化性和優越性。
直觀的可視化對比
通過t-SNE對特征進行降維可視化,我們可以更直觀地感受到ADPretrain帶來的改變。
![]()
上圖展示了VisA數據集中“capsules”類別的特征分布。左邊是原始特征,正常(綠色)和異常(紅色)樣本混雜在一起,難以區分。而右邊使用了ADPretrain的特征后,綠色點簇變得異常緊湊,紅色點則被清晰地分離出來,界限分明。
同樣,在定性結果上,使用ADPretrain特征的模型能夠更準確地定位異常區域,同時有效抑制在正常區域的誤報。
![]()
總結
總的來說,這篇論文點出了當前工業異常檢測領域一個長期被忽視但至關重要的問題:預訓練任務與下游應用之間的鴻溝。作者提出的ADPretrain框架,通過在大規模行業數據集上進行專門的表示學習,并設計了巧妙的對比損失來強化正常與異常的區分,為該領域提供了一種即插即用、效果顯著的“能力升級”方案。這項工作不僅為工業異常檢測帶來了新的SOTA性能,也為未來研究指明了一個有價值的方向——為特定任務定制預訓練。
大家對這個方法怎么看?你覺得為特定領域定制預訓練會成為未來的大趨勢嗎?歡迎在評論區留下你的看法!
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.