李衍志,范 勇,高 琳
(西南科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,四川綿陽 621010)
(?通信作者電子郵箱17828100385@163.com)
石油是生產(chǎn)汽油、煤油、柴油等化學(xué)物質(zhì)的重要原料,同時(shí)其副產(chǎn)物也是有著廣泛的用途[1]。發(fā)掘石油原料的同時(shí)也伴隨著大量的具有污染性的氣體來到地面。為了保護(hù)環(huán)境、保障安全生產(chǎn),必須對超過排放標(biāo)準(zhǔn)的氣體進(jìn)行無害化處理。這些污染性氣體中威脅性最大的就是硫化氫(H2S),其含量高、無色無味且含有劇毒、不溶于水,不能溶解在鉆進(jìn)排水管道的水流中[2]。由于這些污染氣體大多不溶于水或者只有部分能溶于水,且井內(nèi)氣體含量越高內(nèi)部氣壓就越高,井內(nèi)氣壓變化,排水管道口的水流形態(tài)就會(huì)變化。污染氣體含量越高水流形態(tài)變化越明顯。異常樣本從當(dāng)前幀和上一幀的對比可以看到,圖像中水流的量明顯變大,水流的形態(tài)變化也很明顯;正常的樣本從前后兩幀的對比可以看出,雖然形態(tài)和水流量上都有一定的變化,但是變化不大。從異常樣本和正常樣本的對比來看,正常樣本和異常樣本形態(tài)上都有變化,但是異常樣本的形態(tài)變化更為劇烈?,F(xiàn)在生產(chǎn)過程中都是人工在后臺(tái)監(jiān)測水流的變化情況,但是人工監(jiān)測存在視覺疲勞和一個(gè)人難以同時(shí)監(jiān)測多個(gè)點(diǎn)的問題,因此很難避免造成監(jiān)測不到位和人力資源浪費(fèi)的問題?;谌斯ぶ悄芗夹g(shù),使用計(jì)算機(jī)代替人工監(jiān)測是其解決方法。目前在機(jī)器視覺領(lǐng)域關(guān)于監(jiān)測石油鉆井水流形態(tài)變化是否異常的研究較少,該項(xiàng)研究主要存在以下兩大難點(diǎn):1)水流數(shù)據(jù)表示方面,水流的形態(tài)是不固定的,普通的特征提取方式難以同時(shí)表述水流形態(tài)在空間和時(shí)間上的變化過程;2)水流異常的表現(xiàn)形式也不固定,無法一一列舉所有的情況,這也就給異常檢測和判別帶來了困難。
針對水流數(shù)據(jù)表示方面的問題,在以往的其他視頻異常數(shù)據(jù)檢測任務(wù)中常用的是軌跡特征和光流特征。其中,軌跡特征計(jì)算復(fù)雜且耗費(fèi)計(jì)算資源,因此光流是眾多研究者常用的方法,文獻(xiàn)[3-4]等都對光流進(jìn)行了研究。一方面,雖然現(xiàn)有計(jì)算資源已經(jīng)比較強(qiáng)大,但是在實(shí)際應(yīng)用中,有些計(jì)算需要在前端完成,前端配置一般不高,所以從算法上進(jìn)行優(yōu)化是其解決方法。另一方面,光流特征雖然在一定情況下具有優(yōu)越性,但是其要求所描述的物體運(yùn)動(dòng)緩慢、一定時(shí)間內(nèi)形態(tài)基本不變,所以光流不適用于水流異常數(shù)據(jù)檢測。其他的諸如紋理特征、顏色特征、尺度不變特征變換(Scale Invariant Feature Transform,SIFT)特征等都只能對單幅圖像提取特征,不能描述水流在時(shí)間軸上的變化。所以需要一種針對水流的新特征提取方法,該方法需要同時(shí)從二維空間和時(shí)間兩個(gè)維度描述水流的變化過程。
在水流的異常數(shù)據(jù)檢測判別方面,以往關(guān)于視頻的異常事件檢測的方法可以分為全監(jiān)督的方法和非全監(jiān)督的方法兩個(gè)大類。非全監(jiān)督的方法可以分為基于重建的方法、基于預(yù)測的方法和基于生成對抗網(wǎng)絡(luò)的方法。全監(jiān)督的方法在使用時(shí)需要預(yù)先列舉所有的異常情況[5-7],然而水流的異常是偶然發(fā)生的,具有不確定性,不能完全列舉所有的異常情況,所以全監(jiān)督的方法不具有實(shí)際應(yīng)用價(jià)值。非全監(jiān)督的方法中:基于重建的方法,重建過程計(jì)算復(fù)雜,時(shí)間復(fù)雜度高[8-9],不能滿足水流數(shù)據(jù)實(shí)時(shí)檢測的需求;基于預(yù)測的方法根據(jù)預(yù)測值與真實(shí)值之間的差異來判別異常[10],但是水流形態(tài)幾乎每一幀都在變化,因此要想學(xué)習(xí)到一個(gè)預(yù)測模型很困難;基于生成對抗網(wǎng)絡(luò)的方法[11-13],首先通過對抗訓(xùn)練學(xué)習(xí)到正常水流數(shù)據(jù)的某種表示模式,測試時(shí)再根據(jù)當(dāng)前水流數(shù)據(jù)幀是否符合這種表示模式來判是否異常。目前為止在異常視頻數(shù)據(jù)檢測公共數(shù)據(jù)集中性能表現(xiàn)最好的是文獻(xiàn)[11]的方法,但是該方法生成器采用的是全卷積網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)結(jié)構(gòu),沒有充分利用到融合層的數(shù)據(jù)信息。
綜上所述,針對目前將人工智能技術(shù)應(yīng)用到石油鉆井水流異常檢測上的研究較少,以及視頻異常事件檢測相關(guān)研究存在缺陷不能直接應(yīng)用在石油管道水流異常監(jiān)測上的問題,本文提出了一種基于形態(tài)流的石油鉆井水流異常檢測算法。在水流數(shù)據(jù)表示和特征提取方面,該算法為了克服光流存在的缺陷結(jié)合實(shí)際水流形態(tài)的變化提出了形態(tài)流;在異常檢測算法層面,為了提高異常檢測精度對現(xiàn)有的GANomaly 算法[1]進(jìn)行了改進(jìn)。實(shí)驗(yàn)結(jié)果表明,本文算法在水流異常檢測任務(wù)中,檢測精度達(dá)到95%,在時(shí)間效率上也能滿足實(shí)際的需求。改進(jìn)后的異常檢測網(wǎng)絡(luò)在公共數(shù)據(jù)集上也取得了優(yōu)于同類算法的精度,當(dāng)異常類別為1 時(shí)檢測精度相較最好的GANomaly算法提升了19個(gè)百分點(diǎn)。
水流異常檢測流程如圖1 所示,需要注意的是在該應(yīng)用中,水流分割僅僅是作為異常檢測方法中特征提取的預(yù)處理步驟,是整體方法的一部分;同時(shí),對圖像進(jìn)行分割然后再進(jìn)一步提取形態(tài)流特征是訓(xùn)練階段和測試階段共有的部分。如圖1 所示,在訓(xùn)練階段需要通過學(xué)習(xí)得到兩個(gè)映射:一個(gè)是形態(tài)流特征重建映射x→f1()x;另一個(gè)是重建結(jié)果和對應(yīng)的形態(tài)流特征在進(jìn)行L2 距離最小化學(xué)習(xí)時(shí)得到的最小化映射f3(x)。兩個(gè)模型預(yù)訓(xùn)練好之后,將正常數(shù)據(jù)依次輸入兩個(gè)模型,然后根據(jù)最后輸出的L2距離建立高斯模型。高斯模型用于表示正常數(shù)據(jù)的L2距離的最小化結(jié)果分布,高斯模型的閾值則結(jié)合異常樣本和正常樣本共同確定。在測試階段,提取完形態(tài)流特征之后,首先將形態(tài)流特征輸入重建模型得到重建結(jié)果;然后,將重建結(jié)果和對應(yīng)的形態(tài)流特征同時(shí)輸入最小化模型得到輸出的L2 距離值;最后將該距離值輸入高斯模型,當(dāng)高斯模型輸出的概率值小于高斯模型的閾值時(shí)判定該數(shù)據(jù)幀異常。
圖1 水流異常檢測流程Fig.1 Flow chart of abnormal water flow detection
特征提取是水流異常檢測任務(wù)中的重要一環(huán),一種好的特征表示方法能決定最終檢測結(jié)果的好壞。形態(tài)流特征提取的第1 步就是對圖像中感興趣的區(qū)域進(jìn)行提取,即分割出圖像中的水流。作分割的目的是為了克服如圖2 所示水流數(shù)據(jù)樣本中背景和噪聲的干擾,只保留對水流異常檢測有用的信息。
圖2 水流數(shù)據(jù)樣本Fig.2 Water flow data samples
水流的分割不同于普通物體例如熊、桌子、板凳這類有固定形態(tài)物體的分割,因?yàn)樗魇菦]有固定形態(tài)的;同時(shí)它也不同于火焰的分割,火焰的顏色基本都是暗紅色或者黃中透紅,而水流受到水中介質(zhì)的影響顏色是不固定的。因此,水流的分割不能簡單地通過HSV(Hue,Saturation,Value)、RGB(Red,Green,Blue)等顏色空間來實(shí)現(xiàn),也不能根據(jù)物體形態(tài)的特有屬性來實(shí)現(xiàn)。深度學(xué)習(xí)的出現(xiàn)解決了場景和模式兼容的問題。需要同時(shí)考慮到模型不能太過簡單影響分割效果,也不能太過復(fù)雜有了效果沒有時(shí)間效率,例如deeplab[14]、AdaptSegNet(Adaption of Semantic Segmentation)[15]、區(qū)分特征網(wǎng)絡(luò)(Discriminative Feature Network,DFN)[16]等算法時(shí)間效率就不高。綜合各種因素最后選擇了U-Net 神經(jīng)網(wǎng)絡(luò)[17]來作水流分割。
U-Net 原有研究使用交叉熵作為損失函數(shù)不能真實(shí)地表述生成數(shù)據(jù)與標(biāo)簽圖像之間的對應(yīng)重合關(guān)系。因此,本文中使用了圖像分割領(lǐng)域更為常用的Dice 作為損失函數(shù),Dice coefficient 可以評估兩個(gè)樣本的相似性,用于衡量兩個(gè)樣本的重疊程度,比交叉熵作為圖像分割的損失函數(shù)更合適。訓(xùn)練過程中Dice損失函數(shù)定義如下:
式中:Ip表示訓(xùn)練過程中神經(jīng)網(wǎng)絡(luò)的輸出圖像;It表示對應(yīng)的標(biāo)簽;Loss表示損失;i,j表示像素點(diǎn)的坐標(biāo)位置。式(3)中,i=0,n表示參與計(jì)算的圖像數(shù)量,β表示一個(gè)非0 常數(shù)。因?yàn)樵趯?shí)際情況中偶然會(huì)發(fā)生突然噴射后短暫的一兩個(gè)數(shù)據(jù)幀中無水流,即可能存在Ip和It同時(shí)為零的情況,所以為了保證訓(xùn)練的繼續(xù)進(jìn)行,必須加上一個(gè)非零常量β,保證分母部分不為零。通過多次實(shí)驗(yàn)可知,β取值為1×10-5時(shí)可以取得良好的分割效果。從式(3)也可以看出,當(dāng)標(biāo)簽和實(shí)際的預(yù)測值越接近時(shí)損失越小。樣本的水流分割結(jié)果如圖3所示。
圖3 不同樣本的水流分割結(jié)果Fig.3 Water flow segmentation results of different samples
目前,常用于視頻異常檢測的人工設(shè)計(jì)特征有紋理特征、顏色特征、光流特征、軌跡特征等。因?yàn)楣饬骺梢詮臅r(shí)間域和空間域兩個(gè)層面來準(zhǔn)確刻畫視頻圖像隨時(shí)間的變化,相較于顏色特征和紋理特征等包含了更豐富的信息,所以現(xiàn)在的研究中普遍都采用了光流作為輸入。本文也首先考慮了使用光流作為輸入的特征,相鄰兩個(gè)數(shù)據(jù)幀原圖和光流特征圖像分別如圖4、圖5所示。
圖4 兩個(gè)相鄰數(shù)據(jù)幀F(xiàn)ig.4 Two adjacent data frames
圖5 光流計(jì)算結(jié)果Fig.5 Optical flow calculation result
如圖5 所示,光流特征的計(jì)算結(jié)果很混亂,并不能看出水流在時(shí)間軸上的變化,也不能看出水流的空間形態(tài)。這是由光流特征本身的計(jì)算條件所限制的,即光流計(jì)算時(shí)假設(shè)了計(jì)算目標(biāo)運(yùn)動(dòng)時(shí)緩慢的時(shí)間是短暫的,物體形變不大[3-4,18],但是水流形態(tài)時(shí)時(shí)刻刻都在發(fā)生變化,且變化程度相對較大。因此需要新的特征表示方法(形態(tài)流)來描述水流形態(tài)的變化。因?yàn)楸疚氖峭ㄟ^水流形態(tài)在時(shí)間軸上的變化來表示視頻中水流的變化,所以取名為形態(tài)流。
形態(tài)流特征的提取,也借鑒了光流描述視頻數(shù)據(jù)變化的思路。形態(tài)流特征和光流一樣都是從時(shí)間域和空間域兩個(gè)層面來描述視頻數(shù)據(jù)變化。不同之處在于,形態(tài)流特征考慮了人工進(jìn)行異常數(shù)據(jù)判斷過程,從水流形態(tài)的變化上來刻畫數(shù)據(jù)。形態(tài)流特征提取的依據(jù)在于工業(yè)生產(chǎn)中專業(yè)人員根據(jù)監(jiān)控視頻中水流形態(tài)的變化過程來判別水流是否異常,而水流的形態(tài)體現(xiàn)在圖像中就是目標(biāo)區(qū)域(水流區(qū)域)像素點(diǎn)的位置分布。一個(gè)視頻序列的形態(tài)流特征提取流程如下:設(shè)原有的視頻序列為I0,I1,…,In,則經(jīng)過分割后的視頻圖像序列為-I0,其中I0表示第一幀,In表示最后一幀。雖然水流的形態(tài)是不固定的,在短時(shí)間內(nèi)也會(huì)發(fā)生形態(tài)上的變化,但是在短時(shí)間內(nèi)的同一場景下正常的水流數(shù)據(jù)形態(tài)變化并不劇烈。也就是說,在正常數(shù)據(jù)中相鄰的兩個(gè)數(shù)據(jù)幀,形態(tài)變化較大,但是在分割后的數(shù)據(jù)上相鄰兩幀之間對應(yīng)位置上還是有很大一部分像素點(diǎn)是重合的。所以如果是正常的水流數(shù)據(jù),經(jīng)過分割后相鄰兩個(gè)數(shù)據(jù)幀相異部分較少,而在包含異常數(shù)據(jù)幀的數(shù)據(jù)中相鄰兩幀之間的相異部分則很大,這也為從時(shí)間軸上描述水流形態(tài)的變化提供了基礎(chǔ)。
數(shù)據(jù)除了在時(shí)間維度上有形態(tài)變化的信息之外,其自身也包含了豐富的形態(tài)信息。為了充分利用時(shí)域和空間域信息,首先對水流數(shù)據(jù)進(jìn)行分割去除背景得到感興趣的水流形態(tài)區(qū)域;然后,從第一幀開始獲取兩相鄰數(shù)據(jù)幀,對兩幀圖像按位求異或就可以得到兩個(gè)圖像形態(tài)在時(shí)域上的變化信息。在空間維度上,本文直接使用分割后得到的水流數(shù)據(jù)來描述水流形態(tài),因此在求取異或之后將當(dāng)前的數(shù)據(jù)幀拼接在右側(cè)。直接拼接在右側(cè)不采用梯形、三角形等方式拼接是為了保證圖像中水流形態(tài)不產(chǎn)生變化。按照上述方法,逐幀計(jì)算,直到視頻數(shù)據(jù)的最后一幀。形態(tài)流特征如圖6所示。
圖6 形態(tài)流樣本Fig.6 Samples of shape flow
如圖6 所示,單個(gè)樣本中,從左往右看,形態(tài)流特征圖左半部分代表數(shù)據(jù)在時(shí)間軸上的變化,右半部分代表當(dāng)前水流形態(tài)。由上述描述可知,左半部分由相鄰兩個(gè)數(shù)據(jù)幀之間求取異或得到,同時(shí)正常數(shù)據(jù)相鄰兩幀之間存在許多重合的像素點(diǎn),因此正常數(shù)據(jù)左半部分只有少量相異的像素點(diǎn)(圖中白色部分),異常數(shù)據(jù)左半部分相異的像素點(diǎn)相對較多。
本文中水流異常檢測的神經(jīng)網(wǎng)包括三個(gè)部分的神經(jīng)網(wǎng)絡(luò):生成器、判別器和分辨網(wǎng)絡(luò)。在訓(xùn)練階段需要同時(shí)用到上述的三個(gè)網(wǎng)絡(luò),而在實(shí)際使用和預(yù)測階段則只需要用到生成器和分辨網(wǎng)絡(luò)兩個(gè)部分。在實(shí)驗(yàn)中,通過生成對抗網(wǎng)絡(luò)(Generative Adversarial Network,GAN)的方法進(jìn)行訓(xùn)練,生成器部分為重建網(wǎng)絡(luò),負(fù)責(zé)學(xué)習(xí)正常數(shù)據(jù)形態(tài)流的重建表示f1(x);判別器負(fù)責(zé)判別生成數(shù)據(jù)的真?zhèn)?;分辨網(wǎng)絡(luò)則是學(xué)習(xí)生成器生成數(shù)據(jù)和原始輸入數(shù)據(jù)之間的L2 距離最小化表示f3(x)。其潛在的原理是f1(x)和f3(x)都是通過對正常數(shù)據(jù)的學(xué)習(xí)得到的,因此它只適用于正常數(shù)據(jù)。在測試時(shí)如果遇到異常數(shù)據(jù),生成器部分的重建網(wǎng)絡(luò)得到重建數(shù)據(jù)就會(huì)跟原來的數(shù)據(jù)產(chǎn)生較大的誤差,分辨網(wǎng)絡(luò)就會(huì)輸出一個(gè)較大的值。測試時(shí)如果遇到的是正常數(shù)據(jù),那么數(shù)據(jù)的重建質(zhì)量就會(huì)很高,分辨網(wǎng)絡(luò)也會(huì)相應(yīng)輸出一個(gè)很小的值。因此判別數(shù)據(jù)是否異常就可以直接根據(jù)分辨網(wǎng)絡(luò)輸出的數(shù)據(jù)大小來判定。判別器學(xué)習(xí)到的映射f2(x),則是為了保證生成器的重建質(zhì)量,因?yàn)樯善髦亟ǖ男Ч胶?,異常的判別就會(huì)越準(zhǔn)確。整體的水流異常檢測神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖7 所示,歸一化層(Batch Normalization,BN)是殘差結(jié)構(gòu)的一部分。
圖7 水流異常檢測神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.7 Structure of neural network for water flow anomaly detection
生成器用于重建輸入的形態(tài)流特征,它的重建數(shù)據(jù)與前文所述的基于重建的方法[8]有本質(zhì)上的區(qū)別?;谥亟ǖ姆椒?,是對整個(gè)視頻數(shù)據(jù)進(jìn)行學(xué)習(xí),從而構(gòu)建重建字典,字典中的內(nèi)容是學(xué)習(xí)到的特征。本文的重建網(wǎng)絡(luò)則是通過對形態(tài)流的特征進(jìn)行學(xué)習(xí)得到重建映射f1(x)。
GANomaly 神經(jīng)網(wǎng)絡(luò)的生成器采用的是全卷積神經(jīng)網(wǎng)絡(luò)[19]的結(jié)構(gòu)。FCN的神經(jīng)網(wǎng)絡(luò)只有使用下采樣的編碼模塊和使用上采樣的解碼模塊兩種模塊,而沒有如圖8 所示的融合層(merge),因此不能學(xué)習(xí)到圖像更深層次的潛在特征。使用普通的卷積網(wǎng)絡(luò),存在梯度消失和彌散的問題,因此網(wǎng)絡(luò)結(jié)構(gòu)層數(shù)不能太深,這一點(diǎn)也限制了FCN 對數(shù)據(jù)特征的提取能力。本文將神經(jīng)網(wǎng)絡(luò)改為殘差網(wǎng)絡(luò)的模式,可以加深網(wǎng)絡(luò)的層數(shù),進(jìn)一步加強(qiáng)生成器對數(shù)據(jù)潛在特征的提取能力[20]。從文獻(xiàn)[10]中可知,充分利用融合模塊可以提取到圖像的深層次信息,學(xué)習(xí)到更強(qiáng)的重建映射。如圖8 所示,本文在增加融合層(merge)的基礎(chǔ)上,將原始的卷積層改為了殘差塊。每一個(gè)殘差塊由一個(gè)卷積層、一個(gè)BN[21]層以及激活層構(gòu)成。
對于重建網(wǎng)絡(luò)的損失函數(shù),目前大多是將特征匹配損失應(yīng)用在異常檢測中[22]。由文獻(xiàn)[23]可知,特征匹配減少,GAN訓(xùn)練就會(huì)不穩(wěn)定。因此本文根據(jù)特征匹配的原則來定義損失函數(shù)。實(shí)際計(jì)算中首先令f為一個(gè)函數(shù),該函數(shù)是判別器的中間層輸出,然后計(jì)算輸入x和生成器的輸出G(x)之間的L2距離,具體如式(4)所示。
式中:Px為數(shù)據(jù)分布;Ladv代表生成器的損失。
分辨網(wǎng)絡(luò)在訓(xùn)練過程中,最小化生成器生成的數(shù)據(jù)G(x)和原始輸入數(shù)據(jù)x(形態(tài)流)之間的L2 距離。本文算法與GANomaly的不同之處在于,原分辨網(wǎng)絡(luò)與生成器的編碼部分擁有相同的結(jié)構(gòu),而本文中不要求兩者相同。改進(jìn)的原因在于要保證GAN 訓(xùn)練過程比較穩(wěn)定,生成器網(wǎng)絡(luò)層數(shù)就不能設(shè)計(jì)得太深,否則會(huì)出現(xiàn)梯度不穩(wěn)定的問題[21]。因此GANomaly原有的分辨網(wǎng)絡(luò)層數(shù)不深,也就導(dǎo)致了網(wǎng)絡(luò)的分辨能力不強(qiáng)。本文的分辨網(wǎng)絡(luò)與生成器編碼部分不同,為了提高分辨網(wǎng)絡(luò)的分辨能力加深了網(wǎng)絡(luò)的層數(shù)。同時(shí),殘差網(wǎng)絡(luò)將梯度變化由原來的乘法運(yùn)算優(yōu)化為加法運(yùn)算,能夠解決神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中梯度不穩(wěn)定的問題,因此本文中使用了殘差網(wǎng)絡(luò)的結(jié)構(gòu)來加深網(wǎng)絡(luò)的深度。設(shè)形態(tài)流的數(shù)據(jù)分布為Px,則改進(jìn)后的神經(jīng)網(wǎng)絡(luò)損失函數(shù)如式(5)所示。
式中:F(x)為形態(tài)數(shù)據(jù)輸入分辨網(wǎng)絡(luò)得到的特征;F(G(x))為生成器的輸出G(x)輸入分辨網(wǎng)絡(luò)得到的特征。
判別器是生成對抗網(wǎng)絡(luò)的重要組成部分,負(fù)責(zé)判別生成器生成數(shù)據(jù)的真?zhèn)?。?生成器負(fù)責(zé)生成重建數(shù)據(jù),判別器則負(fù)責(zé)判別生成的數(shù)據(jù)與原來的數(shù)據(jù)是否一致,并將判別的結(jié)果返回給生成器,以便監(jiān)督生成器生成和原圖更加一致的數(shù)據(jù)。在損失函數(shù)方面,直接使用了文獻(xiàn)[24-25]的損失函數(shù),如式(6)所示。
其中x、G(x)代表不同輸入數(shù)據(jù)。
訓(xùn)練時(shí),首先將形態(tài)流特征輸入生成器中進(jìn)行數(shù)據(jù)重建,然后由判別器判別真?zhèn)危蝗缓?,同時(shí)將形態(tài)流和判別器輸出送到分辨網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。訓(xùn)練過程中使用的損失函數(shù)為上述三個(gè)部分神經(jīng)網(wǎng)絡(luò)損失函數(shù)的結(jié)合,其具體表達(dá)式如式(7)所示。
訓(xùn)練階段只用到了正常數(shù)據(jù)的原因有兩個(gè):其一是異常偶有發(fā)生且不是固定的,因此難以完全列舉:其二是本文中訓(xùn)練網(wǎng)絡(luò)是為了得到f1(x)和f3(x)兩個(gè)映射,最終是根據(jù)是否偏離正常數(shù)據(jù)的高斯模型來判定是否異常。
在進(jìn)行異常檢測時(shí),需要提前訓(xùn)練好分割網(wǎng)絡(luò)、生成器以及分辨網(wǎng)絡(luò)。首先,需要將原始的視頻數(shù)據(jù)送入分割網(wǎng)絡(luò)分割出水流;然后,再按照前文所述的步驟提取形態(tài)流特征x;接著,將數(shù)據(jù)輸入生成器中得到重建結(jié)果G(x);最后,將x輸入分辨網(wǎng)絡(luò)獲取輸出的距離值,并將距離值輸入建立好的高斯模型得到輸出異常的概率值,當(dāng)輸出的概率p<ε(高斯模型的閾值)時(shí)判定該數(shù)據(jù)異常,當(dāng)輸出的概率值p≥ε時(shí)判定數(shù)據(jù)為正常數(shù)據(jù)。相較于GANomaly 中直接通過輸出的距離閾值來判別是否異常,本文算法更具有統(tǒng)計(jì)意義,高斯模型的計(jì)算式如式(8)所示。
式中:x1代表輸入的距離值;σ代表統(tǒng)計(jì)的方差;u代表統(tǒng)計(jì)的均值。
高斯模型的閾值ε通過多次計(jì)算F1得分得到,其計(jì)算式如式(9)所示。
式中:真正例(True Positive,TP)代表異常樣本被檢測為異常;假正例(False Positive,F(xiàn)P)代表正常的樣本被檢測為異常;假負(fù)例(False Negative,F(xiàn)N)代表異常樣本被檢測為正常樣本。從上述計(jì)算式可以看出,F(xiàn)P和FN兩者越接近于0,F(xiàn)1得分越高,即誤檢和漏檢越少,F(xiàn)1值越接近于1。在選擇閾值ε時(shí),通過多次隨機(jī)設(shè)定ε的值然后計(jì)算其F1得分,最終選取得分最高的值。
根據(jù)實(shí)驗(yàn)數(shù)據(jù)的不同可以將實(shí)驗(yàn)分為兩個(gè)大類:一類是本文實(shí)地采集和制作的相關(guān)數(shù)據(jù)集上的實(shí)驗(yàn);另一類是在公共數(shù)據(jù)集上的實(shí)驗(yàn)。在實(shí)體采集和制作的數(shù)據(jù)集上的實(shí)驗(yàn)包括:1)水流分割實(shí)驗(yàn)、形態(tài)流的驗(yàn)證實(shí)驗(yàn);2)針對水流異常數(shù)據(jù)點(diǎn)檢測的實(shí)驗(yàn)。由于目前沒有水流異常檢測的相關(guān)研究,所以也沒有相關(guān)水流公共數(shù)據(jù)集。所以本文為了驗(yàn)證改進(jìn)后的GANomaly 算法,在異常數(shù)據(jù)檢測的公共數(shù)據(jù)集上對改進(jìn)后的算法和其他相關(guān)算法進(jìn)行了對比實(shí)驗(yàn)。實(shí)驗(yàn)使用的平臺(tái)為Linux 服務(wù)器(Linux 8.0),內(nèi)存為1 TB,訓(xùn)練和測試都使用了兩塊顯存為12 GB 的Titan v 圖形處理器(Graphics Processing Unit,GPU)。
評價(jià)指標(biāo)中常用的方法是通過概率值來評價(jià)一個(gè)模型的好壞,其中最常用的是精度(Precision,P),計(jì)算方法如式(10)所示。
2018年9月28日,是孔子誕辰2569周年的日子。在這個(gè)特殊的日子里,為弘揚(yáng)傳統(tǒng)文化,踐行“用中和思想,做德能教育”的辦學(xué)理念,培養(yǎng)德能兼修、知行合一的中和英才,山西省孝義市中和路小學(xué)全體師生相聚操場舉行“祭先師孔圣、承尊師傳統(tǒng)、育得能英才”為主題的紀(jì)念孔子誕辰2569周年暨新生開筆典禮活動(dòng)(以下簡稱祭孔活動(dòng))。孝義市教育局政教科科長楊淑琴,山西九五新國學(xué)學(xué)院常務(wù)院長、山西家長學(xué)校講師團(tuán)高級講師呂菊花,山西日報(bào)《青少年日記》雜志社編輯楊曉雪參加祭孔典禮。
4.2.1 數(shù)據(jù)集介紹
實(shí)體采集和制作的數(shù)據(jù)集是通過在石油工廠實(shí)地采集獲得,異常的樣本也是有長期工作經(jīng)驗(yàn)的專家挑選出來的,專家們判別一個(gè)片段是否異常的依據(jù)是水流在時(shí)間軸上變化的劇烈程度。如圖2 所示,數(shù)據(jù)的左上角還有采集時(shí)間。用于實(shí)驗(yàn)驗(yàn)證的數(shù)據(jù)集共包含7 個(gè)場景,其中50 000 張訓(xùn)練數(shù)據(jù)、2 000張測試數(shù)據(jù)。訓(xùn)練數(shù)據(jù)全部是正常樣本,測試數(shù)據(jù)中包含1 000張正常數(shù)據(jù)和1 000張異常數(shù)據(jù)。正常的數(shù)據(jù)樣本片段如圖8 所示,異常圖像相較于正常圖像的前后兩幀數(shù)據(jù)之間的變化較大,具體如圖9所示。
圖8 正常樣本Fig.8 Normal samples
圖9 異常樣本Fig.9 Abnormal samples
4.2.2 水流分割實(shí)驗(yàn)
特征提取是異常檢測的重要內(nèi)容,水流分割是特征提取的重要一環(huán)。本文中通過U-Net 來進(jìn)行水流分割,常用評判分割結(jié)果好壞的指標(biāo)是交并比(Intersection Over Union,IOU)。為了確定式(3)中β的取值,本文在U-Net 上進(jìn)行了多次實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表1所示。
表1 U-Net中不同β值下的IOU對比結(jié)果Tab.1 Comparison results of IOU at different β values in U-Net
如表1 所示,β取值為1×10-5時(shí)可以獲得更好的分割效果。β取值為1×10-5時(shí),樣本圖像和分割結(jié)果如圖3所示。
4.2.3 形態(tài)流特征驗(yàn)證實(shí)驗(yàn)
該實(shí)驗(yàn)用于驗(yàn)證形態(tài)流特征是否有效,參與對比的特征為原圖、分割圖像、光流、形態(tài)流。將上述4 種特征分別作為輸入在相同的模型中進(jìn)行訓(xùn)練和測試,然后取多次實(shí)驗(yàn)的平均值作為最后結(jié)果,以此來驗(yàn)證形態(tài)流特征在水流異常檢測任務(wù)中的優(yōu)越性。GANomaly 和本文算法都使用上述四種特征作為輸入進(jìn)行了實(shí)驗(yàn)驗(yàn)證,本文算法的實(shí)驗(yàn)結(jié)果如表2 所示,GANomaly上的實(shí)驗(yàn)結(jié)果如表3所示。
表2 本文算法采用不同特征作為輸入的檢測精度對比 單位:%Tab.2 Detection precision comparison of proposed algorithm with different features as input unit:%
表3 GANomaly采用不同特征作為輸入的檢測精度對比 單位:%Tab.3 Detection precision comparison of GANomaly with different features as input unit:%
如表2~3 所示,無論是在GANomaly 上還是本文算法上,新提出的形態(tài)流相較于其他三種特征都取得了更好的效果。光流特征由于其自身?xiàng)l件的限制,不適用于水流數(shù)據(jù)的特征提取,因此取得了最差的結(jié)果。原始數(shù)據(jù)和分割后的數(shù)據(jù)相比,原始數(shù)據(jù)存在更多背景噪聲的影響,所以它的精度相較分割后的數(shù)據(jù)較低;同時(shí)由于原始數(shù)據(jù)和分割后的數(shù)據(jù)不能體現(xiàn)水流數(shù)據(jù)形態(tài)在時(shí)間軸上的變化,而形態(tài)流同時(shí)具備時(shí)間域的變化信息和本身的空間信息,所以在水流數(shù)據(jù)的異常檢測上取得了更好的效果。
從表2~3 的對比可以看出,本文算法在四種特征上相較于原始的GANomaly 檢測精度皆有提升。由此可見,本文所提出的形態(tài)流特征,能夠適用于水流異常檢測,相較于其他特征有更好的性能表現(xiàn)。
4.2.4 水流異常檢測實(shí)驗(yàn)
為了驗(yàn)證本文算法在水流異常檢測任務(wù)中的優(yōu)越性能,在水流數(shù)據(jù)集中將本文算法與其他的相關(guān)異常檢測算法進(jìn)行了對比驗(yàn)證。為了得到最好的訓(xùn)練結(jié)果,實(shí)驗(yàn)中對學(xué)習(xí)率等參數(shù)進(jìn)行了多次的調(diào)整和訓(xùn)練,由于這不是本文的研究重點(diǎn)所以沒有過多地介紹。每次訓(xùn)練迭代200 次后精度不再提升即停止訓(xùn)練。由于GAN 訓(xùn)練的不穩(wěn)定性,所以在之前多次訓(xùn)練的情況下取最優(yōu)結(jié)果的參數(shù),又進(jìn)行了五次的訓(xùn)練,并取平均值作為最終結(jié)果。本文算法最終選取的學(xué)習(xí)率為0.000 01,batchsize 設(shè)置為64,輸入的圖像大小為最低高清圖像標(biāo)準(zhǔn)720×1280。參與對比的算法包括本文改進(jìn)的算法、GANomaly[11]、EGBAD(Efficient GAN-Based Anomaly Detection)[12]、AnoGAN(Anomaly Detection with Generative Adversarial Network)[13]和孤立森林[26],這五種算法的檢測精度如表4所示。
表4 不同算法的水流異常檢測精度對比 單位:%Tab.4 Comparison of water flow anomaly detection precision of different algorithms unit:%
從表4 中可以看出,本文所提算法的檢測精度明顯高于EGBAD[12]、AnoGAN[13]、孤立森林這幾種算法,其檢測精度達(dá)到了95.0%,相較于GANomaly 算法提升了5 個(gè)百分點(diǎn)。時(shí)間效率方面,同時(shí)使用兩塊Titan v 的GPU 時(shí),可以達(dá)到每秒18 幀的檢測速度。本文算法能適用于如圖10 所示的不同場景,也能克服如圖10(d)所示的霧氣干擾,孤立森林和EGBAD[12]、AnoGAN[13]等算法 在實(shí)驗(yàn) 中均不 能檢測到如圖10(d)所示的帶有霧氣的異常數(shù)據(jù)幀。
圖10 檢測到的異常片段Fig.10 Anomalies detected
4.3.1 常用公共數(shù)據(jù)集介紹
異常事件檢測常用公共數(shù)據(jù)集是mnist 和cifar10。這兩個(gè)數(shù)據(jù)集原本是用來作為圖像分類的數(shù)據(jù),但是由于異常檢測也可以看作二分類問題,即將數(shù)據(jù)視為正常和異常兩個(gè)類別,所以不少研究者也用它們來做異常數(shù)據(jù)檢測的研究[11-13]。在使用這兩個(gè)數(shù)據(jù)集時(shí),由于進(jìn)行的是無監(jiān)督訓(xùn)練,異常數(shù)據(jù)是不參與訓(xùn)練過程的,所以在訓(xùn)練之前需要將異常的類別選擇好。例如,本文將0 定義為異常類型,那么0 就不參與訓(xùn)練只參與測試,1~9參與訓(xùn)練。
4.3.2 公共數(shù)據(jù)集上不同算法對比
該部分的實(shí)驗(yàn)設(shè)計(jì)是為了驗(yàn)證本文算法的通用性,即本文改進(jìn)后的神經(jīng)網(wǎng)絡(luò)是否可以適用于不同的數(shù)據(jù)集,同時(shí)也可以從側(cè)面說明為何本文算法在水流異常檢測中性能表現(xiàn)突出。在mnist數(shù)據(jù)集和cifar10數(shù)據(jù)集上進(jìn)行驗(yàn)證,參與對比的算法有GANomaly[11]、EGBAD[12]、AnoGAN[13],結(jié)果如圖11所示。
圖11 公共數(shù)據(jù)集上不同算法的對比結(jié)果Fig.11 Comparison results of different algorithms on public datasets
相較于用于對比的三個(gè)算法中表現(xiàn)最佳的GANomaly 算法,本文所提算法生成器和分辨網(wǎng)絡(luò)都改為殘差網(wǎng)絡(luò)結(jié)構(gòu),網(wǎng)絡(luò)深度增加了2 倍,同時(shí)加入了特征融合層使得網(wǎng)絡(luò)的特征提取和分辨能力大幅提高。實(shí)驗(yàn)過程中神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)率設(shè)置為0.000 1,batchsize 設(shè)置為64,輸入圖像的大小設(shè)置為640×640。
如圖11 所示,兩個(gè)數(shù)據(jù)集共20 個(gè)類別中有8 個(gè)類別本文改進(jìn)后的算法與GANomaly 算法持平,10 個(gè)類別的精度高于原來的算法,只有在mnist 數(shù)據(jù)集中3 和8 這兩個(gè)類別精度低于GANomaly算法。類別3和8上,本文算法相對于GANomaly算法低了5 個(gè)百分點(diǎn)左右,其可能的原因在于3 和8 的右側(cè)很像,本文的神經(jīng)網(wǎng)絡(luò)可能對于具有左右兩部分相似的數(shù)據(jù)不友好。這一點(diǎn)可以從1 和7 側(cè)面印證,從上往下看1 和7 具有一定相似性,所以原來的GANomaly 區(qū)分不出來,而本文改進(jìn)后的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)到了數(shù)字左側(cè)和右側(cè)的內(nèi)容,而1和7從左往右看差別比較大,所以在類別1和7上改進(jìn)后的算法檢測精度提升了10 個(gè)百分點(diǎn)以上。EGBAD[25]、AnoGAN[1]這兩個(gè)算法的精度相較于GANomaly 和本文改進(jìn)的算法在所有類別上的精度都較低。
本文從實(shí)際出發(fā),通過對水流的異常檢測解決了石油生成過程中的污染氣體監(jiān)測問題。由于異常偶有發(fā)生且表現(xiàn)形式不固定,無法列舉所有異常情況,所以異常數(shù)據(jù)的獲取困難。為解決這個(gè)問題,本文采用了無監(jiān)督學(xué)習(xí)的方法,在網(wǎng)絡(luò)模型訓(xùn)練過程中模型通過正常數(shù)據(jù)隱式地獲取和學(xué)習(xí)異常。水流異常檢測任務(wù)中本文算法精度可以達(dá)到95.0%,利用兩塊Titan v的GPU同時(shí)計(jì)算可以達(dá)到18 frame/s的處理速度,滿足實(shí)際需求。在算法層面提出了形態(tài)流特征,能準(zhǔn)確刻畫水流形態(tài)的快速變化。在mnist 數(shù)據(jù)集中異常類別設(shè)置為1 時(shí),本文算法檢測精度達(dá)到了90.1%,相較于GANomaly 提高了19 個(gè)百分點(diǎn)。本文改進(jìn)的神經(jīng)網(wǎng)絡(luò)算法在公共數(shù)據(jù)集中有50%的類別優(yōu)于原始算法,40%和原始算法持平,但是依然存在10%的類別低于原始算法。由實(shí)驗(yàn)分析可知,本文的神經(jīng)網(wǎng)絡(luò)可能對左右對稱的數(shù)據(jù)不友好,但是由于缺乏類似的樣本和數(shù)據(jù)因此無法進(jìn)行進(jìn)一步的實(shí)驗(yàn)和改進(jìn)。同時(shí)本文只根據(jù)前后兩幀的形態(tài)變化來提取特征,下一步可以考慮結(jié)合連續(xù)多幀的形態(tài)變化來提升精度。