葉 穎,周 越
(上海交通大學 自動化系,上海 200240)
異常檢測是一些計算機視覺信息處理系統(tǒng)中潛在的重要任務,比如行為監(jiān)控[1-2]、自動化制造過程檢查[3-5]以及醫(yī)學診斷和疾病監(jiān)控[6]。異常檢測任務的困難在于異常模式的稀少與未知,異常樣本難以捕獲。在這種情況下,很難獲取足夠的異常樣本作為訓練數(shù)據(jù)。相應的,一種無監(jiān)督學習范式更適用于異常檢測任務,即只使用正常樣本訓練模型和建立決策邊界。
圖像級異常檢測包括:①基于重建的方法,比如使用自編碼器[7]、變分自編碼器[8]、生成對抗網(wǎng)絡[9]、添加記憶力模塊[10]等方法,通過對比重構圖像和原始圖像的差異判別異常圖像數(shù)據(jù);②基于分布的方法,構建正常數(shù)據(jù)的概率分布,判別低概率密度值的數(shù)據(jù)為異常,比如使用高斯混合模型的方法DAGMM[11]和ADGAN[12];③基于分類的方法,構建數(shù)據(jù)特征訓練一分類器進行判別,比如一分類支撐向量機(OC-SVM)[13],利用深度網(wǎng)絡特征的支撐向量數(shù)據(jù)描述(Deep-SVDD)[14],結合全監(jiān)督分類任務訓練一分類器[15]等。Patch SVDD[16]方法將SVDD擴展到基于圖像塊的異常定位任務。
對于像素級的異常檢測,基于生成的方法利用生成模型,生成與輸入圖像最接近的圖像,與輸入圖像進行像素級對比。比如Baur等[17]利用自編碼器,對比重構圖像和輸入圖像;Schlegl等[18]利用生成對抗網(wǎng)絡,從隱空間尋找最接近輸入圖像的重構圖像等。近期的一些工作結合類激活圖進行圖像異常分割,比如Venkataramanan等[19]提出結合變分自編碼器和注意力方法(CAVGA);Salehi等[20]結合知識蒸餾模型和各種類激活圖。許多方法利用高表達性的預訓練網(wǎng)絡構建正常數(shù)據(jù)模式分布。Bergmann等[21]將預訓練網(wǎng)絡知識遷移到圖像塊描述器,利用特征表征差異判別異常圖像塊;Defard等[22]將預訓練網(wǎng)絡的多中間層特征拼接作為數(shù)據(jù)特征描述,用高斯分布描述正常數(shù)據(jù)特征分布并用馬氏距離度量異常程度;Cohen等[23]構建特征金字塔,并用k近鄰聚類判別異常數(shù)據(jù)。
一些工作利用在大型自然圖像數(shù)據(jù)集訓練的特征網(wǎng)絡。Bergmann等[21]提出一種基于教師-學生結構的異常檢測框架。他們通過知識蒸餾過程將來自強大預訓練網(wǎng)絡的高表達性特征遷移到教師網(wǎng)絡并將教師網(wǎng)絡的特征作為學生網(wǎng)絡的回歸目標,然后將學生網(wǎng)絡的表征誤差和學生間的預測不確定性作為異常判別依據(jù)。為了得到像素級的判別,這個方法使用了局部重疊圖像塊特征嵌入,從而導致較低的推理效率。與該方法的圖像塊建模方式不同,本文采用特征圖對比方法[24]。特征圖由神經(jīng)網(wǎng)絡自然生成,因此,可以直接使用來自于整張輸入圖像的特征圖進行判別。由于這個特性,本文方法不必訓練圖像塊描述器,并且能通過一次前向推理獲得像素級的異常判別分數(shù)圖,極大地提高了推理效率。
本文提出一種中間特征回歸和對比方法,將學生網(wǎng)絡拆分成子塊,每個子塊的輸出模仿教師網(wǎng)絡相應位置的特征,子塊的輸入來自于前一層教師網(wǎng)絡特征,這種結構有著更穩(wěn)定的訓練表現(xiàn)。另外,本文提出一種多尺度處理策略,除了保持使用多特征層學習外,同時結合了圖像金字塔操作,即使用多種輸入尺寸圖像進行訓練和測試。然而,經(jīng)觀察發(fā)現(xiàn),對一個模型進行輸入圖像縮放訓練會嚴重破壞模型性能。因此,本文將每個輸入尺寸對應到不同的學生塊群,縱向組成多層次學生網(wǎng)絡結構。這種情況下,更多輸入尺寸意味著計算開銷的增加。因此,本文設計了一個輔助任務,對每個學生網(wǎng)絡塊設置一個權重,基于一個異常數(shù)據(jù)驗證集利用梯度下降方式優(yōu)化這些權重。這個過程和模型訓練的主任務是相互獨立的,因此,網(wǎng)絡參數(shù)不會受到異常數(shù)據(jù)的影響。以這種方式能夠?qū)崿F(xiàn)更高效的多尺度處理。
本文實現(xiàn)異常定位的基本方法為知識蒸餾式的特征回歸和對比。正常樣本輸入教師和學生網(wǎng)絡,學生網(wǎng)絡的中間特征模仿教師網(wǎng)絡的對應特征,那么就可以認為未在訓練過程中出現(xiàn)的異常模式在學生網(wǎng)絡的中間特征和在教師網(wǎng)絡的中間特征差異比較大。我們用一種距離度量表示這個差異。因此,可以用學生網(wǎng)絡特征和教師網(wǎng)絡特征的距離來作為判別依據(jù)。本文提出的學生子塊群結構避免了不同層的監(jiān)督信息互相影響,使訓練過程更穩(wěn)定并且特征模仿的效果更好。另外,這種結構對本文使用的多尺度策略很靈活,能夠減少計算負擔,避免重新訓練網(wǎng)絡。本節(jié)將詳細介紹網(wǎng)絡結構、多尺度處理策略和模塊權重搜索輔助任務。
與其他工作所使用的教師-學生結構不同,本文設計了一種分離式的學生網(wǎng)絡塊群。整體的結構如圖1所示。教師網(wǎng)絡是一個完整的網(wǎng)絡結構,其中間特征作為學生網(wǎng)絡的學習目標。學生網(wǎng)絡為互相分離的網(wǎng)絡模塊,每個模塊與對應位置相連的教師網(wǎng)絡的模塊結構相同。教師網(wǎng)絡的前一層特征通過這一模塊,生成當前層學生特征。之后,基于當前層學生及教師特征之間的差距構建損失函數(shù)。按照知識蒸餾工作[25]的思路,本文使用多層中間特征進行指導和學習。一方面,神經(jīng)網(wǎng)絡中的不同隱藏層編碼不同抽象層次的特征;另一方面,不同特征層具有不同層次的感受野,這一點對于推斷具有不同面積占比的異常區(qū)域是非常重要的。
圖1 教師-學生特征模仿網(wǎng)絡結構
1.1.1 訓練過程
(1)
(2)
其中,p代表特征圖的一個位置。標準化所有特征能使訓練收斂更加穩(wěn)定。對于多層次特征學習,整體損失為:
(3)
1.1.2 推理過程
對于異常定位,希望輸入圖像的每個像素點能預測一個分數(shù),并且判別高分為異常。推理標準基本和訓練標準一致。對于所有特征層,逐像素計算教師特征和學生特征的距離,以此得到該特征層的分數(shù)圖。這里將所有分數(shù)圖上采樣到輸入圖像大小,并將所有分數(shù)圖的平均作為最終的判別分數(shù)圖。
(4)
(5)
(6)
所有特征位置的分數(shù)為標準化向量間距離的平方,取值范圍為[0,4] 。將分數(shù)圖乘上0.25的比例系數(shù),使其取值限制在[0,1] 。
所有學生模塊相互獨立,因此可以任意拆解和組合不同的學生模塊。這種結構能讓我們在不需要重新訓練模型的條件下搜索最優(yōu)的學生模塊組合,大大節(jié)省了模塊搜索時間。同時,拆解了低效的學生模塊,又能增加模型的推理效率,節(jié)省內(nèi)存開銷。因此,本文在該結構的基礎上提出了一種靈活的多尺度處理策略和模塊重要性搜索策略。
在1.1節(jié),提出一個教師-學生框架和多中間層學習方法。神經(jīng)網(wǎng)絡的不同中間層編碼不同層次的特征,比如淺層編碼細節(jié)或結構特征而深層編碼語義級特征。特征層的多級感受野實現(xiàn)不同尺寸圖像區(qū)域的信息歸攏。特征金字塔的使用一定程度上能夠滿足多尺度檢測的需求。盡管如此,這種固定的尺度設置對于眾多檢測物體類別和瑕疵類型并不能一一滿足。因此,本文將圖像金字塔結合進現(xiàn)有的框架中。
一種直觀的處理方式是將輸入圖像設置成不同尺寸,輸入同一網(wǎng)絡進行訓練和測試。這是一種在判別模型中廣泛使用的數(shù)據(jù)增強方法。然而,這種方式并不適用于異常檢測任務,因為輸入數(shù)據(jù)的增強變換會加強模型的泛化能力,從而將定為正常樣本的模式泛化到異常類別,而又無法明確定義異常類在模型中的表現(xiàn),因此會破壞正常類與異常類的界線。本文通過對不同輸入尺寸構建不同的模型來解決這個問題。每增加一個額外的輸入尺度層,就增加一組學生模塊群Si={Sl|l=2,3,…,L}到網(wǎng)絡中。所有學生模塊都是相互分離的,因此它們的中間表征不會互相干擾。教師網(wǎng)絡是一個固定的預訓練網(wǎng)絡,可以被所有學生網(wǎng)絡共享。整體的結構如圖2所示。學生模塊網(wǎng)絡可以獨立訓練。所有圖像尺度對應的學生模塊群層級及層級內(nèi)部的多層特征圖計算得到的分數(shù)圖均通過插值到一個基準尺寸,并通過取平均的方式得到最終的判別分數(shù)圖。
圖2 多尺度教師-學生網(wǎng)絡結構和尺度權重搜索
盡管所采用的多尺度處理方法能帶來更好的性能表現(xiàn),但添加的模型單元無疑會增加額外的計算開銷。為了克服這個局限,本文給每個學生塊分配一個權重,并設置了一個由異常圖像及其標簽組成的驗證集,用該驗證集的表現(xiàn)確定這些權重。確定每個學生模塊的權重以后,我們視權重大小為學生模塊的重要程度,對于低權重的模塊,可以直接拋棄。
具體來說,本文使用梯度下降進行權重確定。每個學生塊的分數(shù)圖以加權形式組合??紤]到異常與位置無關,因此圖像中所有像素點共享相同權重,也就有最終的分數(shù)圖Φ為:
(7)
(8)
(9)
(10)
驗證階段優(yōu)化模塊權重,這一階段與優(yōu)化網(wǎng)參數(shù)的訓練階段是相互獨立的。網(wǎng)絡訓練到一定程度后,固定所有學生網(wǎng)絡模塊的參數(shù)并將模塊權重設為可學習模塊并進行優(yōu)化。模塊權重確定以后,我們視高權重的模塊更為重要,因此保留權重最高的k個模塊,直接拋棄剩余的模塊。因為學生模塊是互相分離的,所以可以直接拆除模塊而不需要重新訓練。用這種方式,高效的模塊得以保留,并以高權重的形式起到更大的作用。
2.1.1 實驗細節(jié)
本文使用在ImageNet數(shù)據(jù)集以分類任務訓練的預訓練網(wǎng)絡作為教師網(wǎng)絡,學生網(wǎng)絡隨機初始化。使用4層特征層構建多層特征組合,比如ResNet[26]的conv2_x到conv5_x模塊的輸出,并且設置輸入圖像尺寸為[128, 256, 384] 來構建圖像金字塔。模型使用SGD優(yōu)化器,設置動量為0.9,學習率為0.5。批次大小設置為16,并進行600個周期的訓練。
2.1.2 數(shù)據(jù)集和評價指標
本文使用MVTec[27]數(shù)據(jù)集進行實驗。MVTec是一個工業(yè)檢測數(shù)據(jù)集,包含超過5000張圖像15種類別的工業(yè)產(chǎn)品。每一種類別都包含正常樣本用于訓練,異常樣本用于測試。這種設置直接符合無監(jiān)督異常檢測的形式并且每個類別單獨進行訓練和測試。
實驗使用閾值無關的評價指標,受試者工作特征指標(receiver operator characteristic, ROC),并計算其曲線下面積(AUROC)作為數(shù)值指標。另外,本文使用另一評價指標,區(qū)域重疊率(per-region overlap, PRO),該指標均等考慮所有連通區(qū)域的預測正確率。同樣,計算其相對假陽率(false positive rate, FPR)曲線下面積(AUPRO)作為數(shù)值指標。這里計算假陽率從0%到達30%的曲線面積,并作歸一化。
特征模仿網(wǎng)絡與同時期的幾個方法進行了對比。這里選取教師網(wǎng)絡結構為WideResNet-50,使用圖像金字塔多尺度策略的實驗結果。為了公平起見,不將進行模塊權重搜索的實驗結果在這里對比,因為模塊權重搜索任務用到了一部分數(shù)據(jù)作為驗證集,其測試集與其他方法不完全一致。對比方法數(shù)據(jù)均來源于原始文獻。實驗結果如表1所示,本文方法在性能上優(yōu)于其他方法。
表1 不同方法性能對比
判別特征圖的可視化效果如圖3所示,可以看出對于多種類別的物體和不同類型與大小的異常區(qū)域,本文方法都能有較好的檢測效果。
圖3 多尺度特征模仿異常定位效果(a)原圖;(b)標簽;(c)預測概率圖
2.3.1 骨干網(wǎng)絡結構及特征層級組合
本節(jié)在不同骨干網(wǎng)絡結構和特征層組合上進行實驗,輸入圖像尺寸固定為256。ResNet-18, ResNet-50和WideResNet-50及每個結構對應使用前三層特征層和全部四層特征層的實驗結果如表2所示。實驗結果表明,更大的模型如WideResNet-50效果優(yōu)于較小的模型。大模型生成更具有判別性的特征,對于區(qū)分學習過的數(shù)據(jù)和未學習過的數(shù)據(jù)效果更好。對于不同特征層組合的實驗結果,本文發(fā)現(xiàn)在所有基礎結構上,前三層特征組合效果都優(yōu)于全部四層特征組合。結合最深的一層特征效果下降,一方面因為分辨率過小,直接進行上采樣導致結果不準確;另一方面因為過于抽象的語義級特征更偏向預訓練網(wǎng)絡的分類任務。
表2 不同網(wǎng)絡結構和特征層級組合實驗對比(AUROC)
2.3.2 多尺度處理
為了驗證所使用多尺度策略的有效性,這里報告了單輸入分辨率和多輸入分辨率下的每個物體類別的實驗結果,使用ResNet-50作為基礎模型。輸入尺寸設置為128、256和384,實驗結果如表3所示。從這些數(shù)據(jù)可知,每種物體類別生成最適宜判別特征的所需感受野是不一樣的。對于存在全局尺度異常區(qū)域的物體類別,比如晶體管,小輸入尺寸更為適宜。相反,對于存在微小異常區(qū)域的物體類別,更大的輸入尺寸效果更好。為了適應一般類別的多樣性異常檢測,使用多種輸入尺寸組合是更為有效的。
表3 不同輸入尺寸模型性能對比(AUROC)
2.3.3 模塊權重搜索策略
為了進一步驗證基于驗證集的模塊權重搜索策略的有效性,在此以MVTec數(shù)據(jù)集提供的異常數(shù)據(jù)類別作為先驗,進行驗證集選取方法與權重搜索策略效果關系的實驗。這里驗證集的選取按照覆蓋異常數(shù)據(jù)類別的百分比(類別覆蓋率)進行劃分,近似表示驗證集和測試集的分布相似性。從每個被選取的測試集異常類別中抽取10%的數(shù)據(jù)構建驗證集,并計算不同異常類別覆蓋率下的測試精度。實驗結果如表4所示,0%代表不進行權重搜索。從表4中可知,驗證集上的模型精度隨著異常類別覆蓋率的增加而減少。這是因為異常種類的增加提升了模型的學習難度。相反,測試集上的模型精度隨著異常類別覆蓋率的增加而提高。當測試集與驗證集的分布一致時(100%),模型達到最高精度。該現(xiàn)象說明了異常類別覆蓋率的提升能夠有效克服模型的過擬合問題,提升模型在測試集上的精度。
表4 不同驗證集異常類別覆蓋率的模型性能對比(AUROC)
表5所示對學生模塊分配權重的效果表現(xiàn)以及保留最大k對應模塊的模型精度。從表5中可知,進行權重分配能有效提高模型效果。測試k取值為4、5、6的實驗結果,其中k取值為6時精度最高。而從整體來看,保留權重最高的k個模塊效果優(yōu)于基礎模型,說明經(jīng)過權重分配,并拆除低重要性模塊,不僅能使網(wǎng)絡更為精簡,也能一定程度提高網(wǎng)絡的精度表現(xiàn)。
表5 權重搜索及模塊保留模型性能(AUROC)
本文提出了一種基于教師-學生網(wǎng)絡的多尺度特征模仿異常定位方法。學生網(wǎng)絡被設計成分離式的學生模塊群,每個模塊各自訓練和推理,并以此結合特征金字塔和圖像金字塔,進行多尺度、多抽象層次的異常判別推理。另外,提出了一種基于梯度下降方式優(yōu)化的模塊重要性權重分配策略,不僅實現(xiàn)優(yōu)化網(wǎng)絡結構,又能進一步提高網(wǎng)絡的表現(xiàn)性能。實驗結果表明,本文方法對比同類型方法有更好的性能表現(xiàn),并能有效地實現(xiàn)各種類別物體、不同大小異常類型的定位檢測。