毛國君 吳星臻 邢樹禮
異常檢測(Anomaly detection,AD)是計算機視覺中的一個熱門研究領域[1].異常檢測算法已經在諸多場景中得到應用,如工業異常檢測[2]、醫學圖像檢查[3]、道路交通監測[4]和安全檢測[5]等.有監督的異常檢測工作通常需要標注大量的正常數據和異常數據[6].但在實際應用中,異常數據的產生概率通常較低,這導致有監督方法在實際應用中難以高效地實施.相比較,無監督異常檢測方法效率更高,近年得到更多的關注.
現有的無監督異常檢測方法主要分為基于重構和基于密度表示兩大類.基于重構的方法利用數據的重構誤差來檢測異常[7-9],通常使用自動編碼器(Autoencoder,AE)[10-12]或生成對抗網絡(Generative adversarial network,GAN)[13]等模型來編碼和重構正常數據.當異常數據輸入時,網絡會產生較大的重構誤差,進而達到對數據的異常檢測.盡管這類方法直觀、可解釋性好,但現有的模型往往只能捕捉像素級的相關性,很難融合深層的語義信息,難以大幅度提升異常檢測精度[14].
基于密度表示的方法通過建模正常數據集的特征分布,并計算測試數據與正常特征分布間的距離來區分和定位異常[15-18].流模型(Normalizing flow,NF)[19-20]屬于典型的基于密度表示的建模方法,近年在視覺異常檢測中取得了不錯的效果.流模型通過極大似然估計將訓練集可逆地映射到一個預定義的潛在空間,用于表示正常數據分布.由于其可逆的特點,該潛在空間具有更高的可能性代表正常樣本.在檢測階段,流模型通過計算輸入的似然概率來檢測出具有不同分布的異常數據.本文提出一種高效的流模型,稱為MS-Flow (Multi-scale normalizing flow).該模型在耦合層中逐層級地處理不同的特征尺度信息,使感受野由粗粒度到細粒度的變化能精確地識別異常區域與其他區域的差異.同時,層級式的多尺度架構取代以往復雜的多尺度表達,大幅度減少低質量特征的冗余利用,實現檢測精度和計算效率的平衡.
本文的主要貢獻可歸納如下.
1)針對視覺異常檢測任務提出一種高效的流模型MS-Flow,實現逐層級跨尺度信息融合,更好地利用全局和局部信息進行分布建模.
2)基于多尺度卷積架構來表達特征的多尺度信息,避免多通道數據的冗余交叉計算,有效地提升網絡的計算效率.
3)在公開數據集上的實驗結果表明,本文方法在精度和計算效率方面均優于現有的異常檢測方法.
本文的其余部分安排如下: 第1 節介紹相關工作;第2 節介紹本文模型及其主要功能部件;第3 節完成實驗及結果分析;第4 節對本文工作進行總結.
基于密度表示的視覺異常檢測主要涉及特征提取網絡、異常檢測算法兩方面工作.
特征提取是視覺學習的第一步,其目的是獲取圖像的有效特征用于后續的模型構建和異常檢測任務.目前效果最好的檢測模型大多都是采用深度神經網絡作為特征提取器.ResNets (Residual networks)[21]是一類流行的特征提取網絡,它們利用短路機制加入殘差單元形成所謂的殘差神經網絡.這類網絡已經得到很好的研究,形成了系列化網絡家族,廣泛應用到視覺圖像的特征提取中[18,22-23].
另一類成功應用到視覺異常檢測領域的特征提取網絡是ViTs (Vision transformers)[24-25].ViTs 具有捕獲長距離依賴關系的能力,可以很好地學習全局與局部關系[25].這類網絡一般需要在大規模數據集上進行預訓練,計算復雜度高,預訓練時間長,一直被端側低效問題所困擾.
EfficientNets[26]近年來成為視覺檢測任務中的特征提取網絡新方法[17,27-28].這類方法通過一組復合系數來平衡網絡深度、寬度和分辨率,從而使網絡傾向于關注更多細節區域,同時保持模型效率,實現了一個可控且高效的表征網絡.Efficient-Nets 也已經發展成一個預訓練網絡家族,特別是從EfficientNet-B7 之后,預訓練的效率和精度都獲得大幅度提升[26].
本文利用ResNets、ViTs 和EfficientNets 家族中有代表性的預訓練網絡來構建視覺圖像的特征提取器,并探究不同特征提取網絡對異常檢測算法的影響.
本文主要研究基于密度表示的視覺異常檢測算法.基于密度表示方法的核心是將預訓練網絡提取的圖像特征通過密度估計實現正常圖像分布建模[23,29-30].例如: Napoletano 等[31]使用預訓練網絡ResNet18 生成特征提取器,然后通過主成分分析和K 均值聚類完成分布建模;Cohen 等[22]使用Wide-ResNet-50[32]得到多層級特征,然后構造特征池存儲正常樣本的像素級特征;Defard 等[28]根據每個位置上的多層級特征估計一個協方差矩陣,利用多元高斯分布得到圖像特征的概率表示;Roth 等[23]引入了局部鄰域聚合操作,通過構建特征向量記憶池實現了基于特征的異常數據篩選.上述方法相比傳統方法精度更高、通用性更好,但仍然受限于簡單背景下的異常檢測.
流模型的視覺建模方法具有堅實的理論基礎,已有的研究也表明其具有不錯的檢測效果[18,33-34].一維流模型[33]首先被構建,它確立了流模型在異常檢測領域中的基本概念和建模架構.然而,一維流模型在處理視覺圖像上有天然的缺陷,需要將二維圖像特征壓縮成一維向量來估計其分布,這破壞了二維圖像固有的空間位置關系,限制了流模型的表達能力.近期的工作將流模型擴展到了二維空間上,典型的工作是通過卷積網絡實現圖像特征的二維聚合[24].然而,由于視覺異常種類繁多、形態各異,傳統的卷積架構因缺乏細粒度級別的信息融合機制,導致其無法充分地融合全局和局部信息來實現精確的異常識別.多尺度策略是提升視覺圖像建模精度的有效方法[17-18],但是現有的多尺度融合方法冗余計算多,系統開銷很大.本文提出一種基于多尺度融合的流模型,通過在流模型內部構建層級式多尺度卷積架構來實現跨尺度信息的有序融合,有效地提高計算效率.
視覺異常檢測工作包括模型訓練和異常檢測兩個相對獨立階段,前者是研究的重點.圖1 給出了本文模型訓練的基本架構.首先,將訓練圖像進行尺寸調整,然后通過特征提取器(Feature extractor,FE)獲取訓練圖像的特征數據,最后在MS-Flow 中完成圖像特征的概率密度建模.本文的特征提取器可以使用已有的典型預訓練網絡生成,如本文許多實驗是使用EfficientNet-B5 在ImageNet 數據集[35]上預訓練得到的.因此,本文主要研究工作集中在MS-Flow 模型構建及其主要部件的功能設計上.

圖1 本文所提模型架構圖Fig.1 The architecture of the proposed model
MS-Flow 由一系列的耦合層組成,每層執行仿射變換.如圖1 所示,特征提取器的輸出張量x∈RH×W×C首先隨機地進行排列,并按其通道均勻地劃分為k個子特征(集).每個子特征定義為xi,i∈{1,2,···,k}.子特征間采用層級式有序連接,除了x1不做任何計算直接輸出為z1外,其他子特征xi(i>1)都要和上一級的不同尺度輸出進行融合計算,即將xi和zi-1進行交叉尺度計算得到zi.最后將各分層的輸出 {zi|i=1,2,···,k}按通道維度進行拼接.一般地,設置更多的子特征會給網絡帶來更大的計算負荷,但也帶來更豐富的感受野.不同于以往的變體網絡,這種層級式的結構設計避免了子特征的交替計算,僅通過相鄰層級的跨尺度計算實現多尺度的信息融合.式(1)~(3)給出了相關的計算
其中,split(·)和concat(·)分別表示按通道拆分、按通道拼接操作;⊙ 表示哈達瑪積;⊕ 表示圖1 中的符號 ⊕,為求和操作;ηi為可學習的標量系數;si(·)和ti(·)由層級感知模塊(Hierarchical perception module,HPM)構建,圖2 展示了HPM 的結構圖.

圖2 層級感知模塊結構圖Fig.2 The structure of hierarchical perception module
如圖2 所示,為了保證網絡的計算效率,HPM由兩個通用的 3×3 卷積網絡實現.對于任意的特征zi通過兩個 3×3 卷積層將通道升維至原來的兩倍,然后將輸出按通道維度分割為si(zi)和ti(zi).HPM 的層級式計算使感受野在細粒度級別上有效擴張,在流模型內部實現細節和全局特性的有序融合,促進了多尺度特征的學習.相關的計算為
其中,Conv(·)和BN(·)分別代表卷積和批量歸一化;LR(·)是LeakyReLU 激活函數;split(·)表示按通道維度拆分操作.
MS-Flow 的目標是構建一個映射f:X→Z,將特征空間X的未知分布p(x)映射到具有高斯分布π(z)的潛在空間Z,使得對于p(x)分布中的任意采樣點x∈X,都能在π(z)分布中找到一個點z∈Z與之對應
其中,fΘ代表從x到z的變換式,即z=fΘ(x);Θ是模型的學習參數;JfΘ表示fΘ運算的雅克比矩陣,d et(·)為矩陣的行列式計算.
模型訓練時,fΘ通過最大化圖像特征的對數似然作為優化目標,即極大似然估計
為增加網絡的擬合能力,通常會堆疊多個耦合層,從而形成一個更完整的網絡.n個耦合層對應的目標函數為
基于MS-Flow 的視覺異常檢測流程可簡單描述如下:
1)在模型構建階段,首先通過特征提取器獲得訓練集的代表性圖像特征,然后送入MS-Flow 進行極大似然估計,找到一組最優參數使特征空間的似然值最大化,以完成視覺圖像的分布建模;
2)在異常檢測階段,異常圖像特征期望被映射到潛在分布之外,通過計算測試圖像的特征似然值來檢測出具有不同分布的異常區域.
本文在MVTec AD[2]和BTAD[36]數據集上進行了異常檢測實驗.MVTec AD 是一個廣泛用于異常檢測的數據集.該數據集模仿了工業生產的實際場景,包含5 354 幅高分辨率彩色圖像,這些圖像被劃分為不同領域中的5 種紋理以及10 種物體,其中包括用于訓練的正常圖像和測試的異常圖像.在異常圖像中共有70 種不同類型的異常,例如劃痕、凹痕、污染等.BTAD 包含了3 種工業產品共計2 830 幅真實世界圖像.MVTec AD,BTAD 訓練集只包含正常圖像,測試集是正常和異常圖像的混合.表1 列出了實驗數據集各個類別的詳細參數,圖3 直觀地展示了各類別對應的正常樣本、異常樣本以及異常樣本中的異常區域特寫.

表1 MVTec AD 和BTAD 數據集的統計概述Table 1 Statistical overview of the MVTec AD and BTAD datasets

圖3 MVTec AD 和BTAD 數據集中所有類別的樣例圖Fig.3 Example images for all categories of the MVTec AD and BTAD datasets

圖4 不同流模型的測試圖像負對數似然分布Fig.4 Negative log-likelihood distribution of test images for different normalizing flow
本文實驗的開發環境為: CentOS Linux release 7.9.2009 操作系統;Intel(R)Xeon(R)Gold 6226R CPU@ 2.90 GHz;NVIDIA A100 顯卡,顯存大小為80 GB;Python3.6 編程語言和Pytorch1.10.2深度學習框架.
本文采用AUROC (Area under the receiver operating characteristics)[37]來度量和評價模型的異常檢測性能.AUROC 為ROC (Receiver operating characteristic curve)曲線與坐標軸之間的面積.AUROC 的計算基礎是偽正率(False positive rate,FPR)和真正率(True positive rate,TPR),由于其不受類別不均衡的影響且獨立于預測閾值,廣泛用于評估模型的性能.一個性能較優的異常檢測算法具有較高的AUROC 和TPR,以及較低的FPR.TPR 與FPR 分別定義為
其中,TP表示在預測的正例中,實際為正例的個數;FN表示在預測的負例中,實際為正例的個數;FP表示在預測的正例中,實際為負例的個數;TN表示在預測的負例中,實際為負例的個數.
實驗1.不同異常檢測模型的檢測精度.為驗證所提模型的有效性,本文將其與多個具有代表性的異常檢測模型進行對比實驗.實驗所選取的公開數據集是MVTec AD[2]和BTAD[36],表2 和表3 分別給出了對比實驗結果.

表2 不同異常檢測模型在MVTec AD 數據集上的平均AUROC 對比 (%)Table 2 The average AUROC of different anomaly detection models on MVTec AD dataset (%)

表3 不同異常檢測模型在BTAD 數據集上的平均AUROC 對比 (%)Table 3 The average AUROC of different anomaly detection models on BTAD dataset (%)
實驗1 分析如下.如表2 所示,MS-Flow 在MVTec AD 數據集上的平均AUROC 達到99.7%,優于對比模型.進一步分析,MS-Flow 具有更穩定的檢測性能,其在15 類中的14 類缺陷上的AUROC均超過99%.當訓練樣本偏少時(如Toothbrush 類只有60 張訓練樣本),本文方法仍然表現出最佳的檢測性能.為進一步說明所提模型的優越性,本文在BTAD 數據集上拓展實驗.如表3 所示,所提模型達到最先進的性能,并且在復雜的異常數據(如02 類別)中展示出顯著優勢.
實驗2.不同流模型的復雜性.對比目前流行的流模型,從網絡的檢測精度(AUROC)、浮點運算次數(Floating point operations,FLOPs)和參數規模(Parameters,Params)的角度完成實驗.用于比較的流模型有CFlow-AD[34]、CS-Flow[17]、FastFlow[24].表4 給出了實驗結果.

表4 不同流模型的復雜性對比Table 4 Complexity of different normalizing flows
實驗2 分析如下.如表4 所示,相比較于流行的交叉尺度流模型CS-Flow,MS-Flow 在耦合層中采用層級遞進式的多尺度融合策略,顯著減少了網絡的計算開銷(僅為CS-Flow 的1/8).同時,MSFlow 在網絡規模上都優于對比模型,其網絡參數約為典型輕量級流模型FastFlow 的4/5.這充分說明本文所提模型的高效性.
本節將從不同特征提取器、子特征數、耦合層數等視角說明MS-Flow 的適應性和有效性.
實驗3.不同特征提取器下的MS-Flow 檢測精度.本實驗選取的特征提取網絡分別為ResNet18[21]、Wide-ResNet50[32]、Swin-B[38]、EfficientNet-B7[26]、EfficientNet-B5[26],在ImageNet 數據集[35]上預訓練獲得對應的視覺圖像特征提取器.同時,實驗設置了圖像處理參數d,網絡適應性地調整輸入圖像的分辨率至d×d,以提供一個靈活的聯結架構.本實驗d分別取值為224、448 和768,表5 給出了在不同特征提取器下的MS-Flow 檢測精度.

表5 不同特征提取器的適應性實驗Table 5 Adaptation study of different feature extractors
實驗3 分析如下.如表5 所示,MS-Flow 能適應不同的特征提取網絡.進一步分析,搭配Wide-ResNet50、Swin-B 等大容量提取網絡的檢測精度相對差些,究其原因是大型預訓練網絡的高維輸出易導致輕量結構的MS-Flow 欠擬合,更不利于異常檢測.而中小規模的特征提取網絡更能匹配像MS-Flow 這樣的輕量級聚合模型.此外,本實驗也說明,EfficientNets 對于檢測模型MS-Flow 的適應性最高.
實驗4.不同子特征數下的MS-Flow 檢測精度和網絡參數.本實驗逐步提高網絡中的子特征數量,觀察檢測精度和網絡參數的變化.當子特征通道無法均勻地分配時,本文利用零矩陣填充無法均勻分配的特征以避免因通道對齊導致信息丟失.表6 顯示了不同子特征數目所獲得的實驗結果.

表6 不同子特征數的適應性實驗Table 6 Adaptation study of different subfeature numbers
實驗4 分析如下.一般而言,子特征太少會限制感受野大小,弱化模型對全局信息的捕獲,易導致異常樣本和正常樣本的潛在表示分布具有很小的類間方差.如表6 所示,對于不同的子特征數目,MS-Flow 均有較高的適應性,更多的子特征能顯著提高數據分布估計的精確性,圖 4 給出了不同流模型的測試圖像負對數似然分布.隨著子特征數目的增大網絡開銷有所增加,但MS-Flow 的巧妙設計使其具有更小的線性增長系數.
實驗5.不同耦合層數下的MS-Flow 檢測精度和網絡參數.本實驗逐步增加耦合層數量,觀察檢測精度和網絡參數的變化.圖5 展示了不同耦合層數的實驗結果.

圖5 不同耦合層數的適應性實驗Fig.5 Adaptation study of different coupling layers
實驗5 分析如下.如圖5 所示,較少的耦合層會降低網絡的擬合能力,難以獲得較高的檢測精度.隨著耦合層的增加,模型的檢測性能逐漸提升,但是網絡參數也會增大.就本實驗數據集而言,3 個耦合層的MS-Flow 已經可以達到精度和效率的較好平衡.
圖像異常區域的可視化有助于在實驗中對輸出進行解釋.圖6(a)和圖6(b)分別展示了MVTec AD 和BTAD 數據集中各類別的異常定位可視化結果.為了直觀看出檢測出的異常及其位置,圖中均顯示了原始圖、預測圖以及原始圖與預測圖的疊加圖.從圖中可以看出,MS-Flow 能針對不同類型的數據集進行有效的異常檢測,并且能準確地定位異常區域.


圖6 異常定位Fig.6 Anomaly localization
本文提出了一種基于流模型的視覺異常檢測方法MS-Flow,通過層級式跨尺度計算實現了多尺度特征融合,同時優化網絡的計算效率,實現了輕量級聚合網絡下的高精度視覺異常檢測.實驗結果表明,相比于典型的交叉尺度流模型CS-Flow,本文模型計算量大幅度降低;相比于典型的輕量級流模型FastFlow,網絡參數減少約1/5;同時,MS-Flow更高效地運用了多尺度融合策略,可以獲得更高的視覺異常檢測精度.此外,MS-Flow 對于不同類型的特征提取器、子特征數目及耦合層數均有很好的適應性,是一個檢測精度與計算效率均衡的解決方案.