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