李衍志,范 勇,高 琳
(西南科技大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,四川 綿陽 621010)
石油在工業(yè)生產(chǎn)中有重要的用途,是極其重要的化學(xué)原料[1]。石油開采和生產(chǎn)過程中,會產(chǎn)生具有污染性的氣體,威脅生態(tài)安全,為了保護綠水青山就必須要及時進行處理[2]。但是這些污染氣體不是時時都有,因此直接通過化學(xué)試劑實時檢測必然會造成大量的浪費,同時化學(xué)試劑本身也會加重污染。但是這些污染氣體有一個共同點,就是在水中的溶解度很低,因此只要污染氣體會在管道內(nèi)積聚,積聚的越多對管道的氣壓就越大管道口的水流變化也就越大。根據(jù)這一特性,現(xiàn)在的生產(chǎn)過程中都是有長期工作經(jīng)驗的專家在后臺通過攝像頭進行實時的監(jiān)測,但是長時間的觀看視頻數(shù)據(jù)總會有視覺疲勞和處理不到的地方,導(dǎo)致不能及時發(fā)現(xiàn)和處理異常。從理論上講,目前還沒有與水流異常檢測相關(guān)的研究。該課題主要難點主要在兩個層面:1)水流與其他有固定形態(tài)的實物不同,水流的形態(tài)一直在變化,因此傳統(tǒng)的用于表示視頻行為變化的特征提取方法對水流不起作用;2)異常樣本嚴重不足,水流本身形態(tài)不固定,再加上異常本身就是偶然的不確定的,因此異常樣本的獲取及其困難。
針對特征提取方面的問題,在視頻異常事件檢測領(lǐng)域常用的有光流特征、軌跡特征、骨架特征。首先水是沒有骨架的,所以骨架特征是沒有用的。軌跡特征計算量很大,不能滿足實時性的需求。光流[3-4]特征在計算時假設(shè)了物體形態(tài)基本無變動,運動緩慢,而水流形態(tài)的變化強度超出了光流計算所需的假設(shè)前提,所以在水流異常檢測的過程當中,光流特征起不了作用。其他的視頻圖像數(shù)據(jù)特征提取表示方法如紋理特征[5-6]、顏色[7-8]、MoSIF[9]特征等都只能表示單幅圖像的空間結(jié)構(gòu)信息,不能表示水流在時間序列上的變化。所以需要提供一種新的表示方式,用以刻畫水流在時間軸上的變化過程。
針對視頻中水流異常數(shù)據(jù)幀檢測方面的問題,按照訓(xùn)練過程當中所使用的正常數(shù)據(jù)和異常數(shù)據(jù)比例不同可以分為基于全監(jiān)督的算法和非全監(jiān)督的算法。全監(jiān)督的算法對異常樣本的依賴性很大,異常樣本數(shù)據(jù)量越大訓(xùn)練之后得到的模型檢測精度越高,其基本要求就是要列舉所有的異常和正常數(shù)據(jù)樣本[10-12]。但是水流隨時都在改變,再加上發(fā)生異常是由多種因素引起的,所以水流的異常沒有固定的表現(xiàn)模式,在加上異常不是隨時發(fā)生的所以要從幾萬幀正常數(shù)據(jù)中挑選出幾個異常數(shù)據(jù)幀很困難,所以全監(jiān)督的算法實用價值很低。為了克服傳統(tǒng)的全監(jiān)督算法在視頻異常事件檢測任務(wù)中的缺點,研究者們對非全監(jiān)督的算法進行了研究,這些算法按照其檢測異常的方式和學(xué)習(xí)方式的不同,可以被劃分成基于重建的方法,基于事件預(yù)測的方法還有基于表示建模的算法。基于重建的方法,其核心是重建,需要在測試之前學(xué)習(xí)到一個龐大的重建字典,在測試階段直接根據(jù)字典里的數(shù)據(jù)進行重建,最后根據(jù)重建誤差來來判別異常,該類算法檢測精度高,但是實時性低[13-14],所以實際應(yīng)用很少用到。基于事件預(yù)測的方法[15],判斷差異的方式是峰值信噪比,對于閾值的依賴很大,同一個閾值不能適用于多個場景,因此不能滿足水流異常檢測中場景兼容性的需求。基于表示建模的方法[16-18],其本質(zhì)就是對視頻正常數(shù)據(jù)的一種表示方式進行建模,由于建模過程中使用的所有樣本都是正常樣本,所以該模型是符合正常樣本的表示分布的,而異常樣本就會偏離這個模型。但是該類方法訓(xùn)練過程耗時,且時間復(fù)雜度較高。
總而言之,目前在視頻異常檢測領(lǐng)域的相關(guān)算法研究都集中在對人的異常行為上的研究,而沒有與水流異常檢測相關(guān)的算法研究,由于人的行為變化和水流形態(tài)變化的不同現(xiàn)有的異常檢測算法無法直接用到石油鉆井的排污檢測上。因此本文提出了一種基于水流分割的石油鉆井污染氣體自動檢測方法。在視頻中水流數(shù)據(jù)的特征提取上,本文提出了一種新的特征提取方式用于提取水流的時空域特征;在異常檢測算法層面,殘差結(jié)構(gòu)優(yōu)化了U-net模型,同時在損失函數(shù)中加入了常數(shù)項,解決分割目標為空的問題。實驗結(jié)果表明,本文的方法相對于現(xiàn)有的相關(guān)算法檢測精度更高達到了93.6%,同時能達到每秒28幀的檢測速度。
該部分將從建模和測試兩個階段來介紹水流異常檢測的流程。水流異常檢測流程圖如圖1所示,在建模階段首先根據(jù)水流分割的樣本和標簽訓(xùn)練U-net得到水流分割的模型,然后再提取形態(tài)流特征,最后結(jié)合形態(tài)流特征和當前數(shù)據(jù)幀的信息進行多元高斯建模;在測試階段直接使用訓(xùn)練好的模型分割水流并提取形態(tài)流特征,最后根據(jù)多元高斯模型輸出的概率值判斷當前數(shù)據(jù)幀異常與否。

圖1 水流異常檢測流程圖
如圖2所示水流數(shù)據(jù)中除了水流之外還包含大量的背景信息,比如工廠的生產(chǎn)工具、鉆井附近的花草樹木、以及排水的水池等。直接使用原圖進行異常檢測這些背景噪聲就會造成干擾,同時也會耗費大量的計算資源。因此在異常檢測之前需要對數(shù)據(jù)進行特征提取消除背景干擾,將視頻數(shù)據(jù)表示為特征序列。

圖2 水流數(shù)據(jù)樣本
水流與普通的物體相比有著不同的特性:1)水無常形,水流沒有固定的結(jié)構(gòu)特征;2)水流會因為水中的介質(zhì)不同而顯示不同的顏色。換句話說就是不能通過自身的結(jié)構(gòu)特征和顏色特征將水流與周圍的背景物體分割。所以單從HSV[19-20]、RGB[21-22]等不同的顏色空間上無法找到一個合適的閾值來分割水流,也不能根據(jù)外部輪廓走向來勾勒出水流。所幸深度學(xué)習(xí)的出現(xiàn)解決了場景和模式兼容的問題。眾所周知神經(jīng)網(wǎng)絡(luò)模型的深度越深特征提取能力也就越強,但是在實際應(yīng)用中也不得不注意的是網(wǎng)絡(luò)深度越深測試過程花費的時間就越多,因此在選擇模型時要綜合考慮這兩個因素。常用的分割模型如Deeplab[23]、AdaptSegNet[24]、DFN[25]、Mask-Rcnn[26]等算法網(wǎng)絡(luò)深度較深,因此分割起來很耗時,而FCN[27]算法又太淺特征提取能力不強,綜合各種因素選擇了U-net[28]神經(jīng)網(wǎng)絡(luò)來做水流分割。文獻[29]表明殘差網(wǎng)絡(luò)能夠在加深網(wǎng)絡(luò)深度的同時緩解神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中梯度不穩(wěn)定的問題,所以本文中使用殘差網(wǎng)絡(luò)對U-net進行了優(yōu)化,殘差網(wǎng)絡(luò)中的BN層能夠在特征圖像梯度信息不明顯時對數(shù)據(jù)起到歸一化作用[30],使學(xué)習(xí)過程中的特征圖像素點之間的梯度信息更加明顯,也能有效提升網(wǎng)絡(luò)的學(xué)習(xí)能力。
U-net原文使用交叉熵作為損失函數(shù)不能真實的表述生成數(shù)據(jù)于標簽圖像之間的對應(yīng)重合關(guān)系。因此本文中使用了圖像分割領(lǐng)域更為常用的Dice作為損失函數(shù),Dice coefficient可以評估兩個樣本的相似性,用于衡量兩個樣本的重疊程度,比起交叉熵作為圖像分割的損失函數(shù)更合適。訓(xùn)練過程中Dice損失函數(shù)定義如下:
Ip=∑i,jpr(i,j)
(1)
It=∑i,jpt(i,j)
(2)
(3)
式中,Ip表示U-net對水流數(shù)據(jù)進行分割的結(jié)果,It代表神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)過程中用到的標簽,Loss表示學(xué)習(xí)過程中的損失,i和j兩個值是指一幅圖像中像素點所在位置的坐標。公式(3)中i= 0,n表示參與計算的圖像數(shù)量,β為非零常數(shù)。β的存在是為了防止Ip和It同時為零的情況下訓(xùn)練不能正常進行,兩者同時為零也就是對應(yīng)實際情況中拍攝到的圖像沒有水流的情況。圖像中沒有水流可能出現(xiàn)的原因有以下兩個,第一工廠停工,第二水流劇烈噴射后也會有一兩幀數(shù)據(jù)中并沒有水流出現(xiàn)。通過多次實驗β取值為1*10-5時可以取得良好的分割效果,本文分割結(jié)果的展示如圖3所示,圖3中包含來自不同場景的樣本和最終的圖像分割結(jié)果。

圖3 水流分割結(jié)果圖(左側(cè)為原圖,右側(cè)為分割結(jié)果)
水流時空域特征的提取是多元高斯建模的基礎(chǔ),評價一個特征提取方式好壞的標準就是在不破壞有用信息的前提下,對視頻中行為或者運動過程變化的描述的準確度以及包含信息的豐富程度。在視頻圖像領(lǐng)域使用光流[15-16]作為模型的輸入是一種常見手段,其原因在于光流包含了時間和空間兩個維度的豐富信息。因此在實踐中本文也首先對光流進行了研究和實驗,兩個相鄰數(shù)據(jù)幀原圖和光流提取結(jié)果分別如圖4和圖5所示。

圖4 兩個相鄰數(shù)據(jù)幀

圖5 光流計算結(jié)果
如圖5所示,光流特征的計算結(jié)果很混亂,并不能看出水流在時間軸上的變化,也不能看出水流的空間形態(tài)。這是由光流特征本身的計算條件所限制的,即光流計算時首先假設(shè)了計算目標運動時緩慢的時間是短暫的物體形變不大[3-4],但是水流形態(tài)時時刻刻都在發(fā)生變化,且變化程度相對較大。因此需要新的特征表示方式(形態(tài)流)來描述水流形態(tài)的變化。因為本文是通過水流形態(tài)在時間軸上的變化來表示視頻中水流的變化所以取名為形態(tài)流。


圖6 形態(tài)流體征提取流程圖


圖7 相鄰兩幀數(shù)據(jù)及其水流時空域特征
如圖7中(a)所示,正常數(shù)分后的圖像前后兩幀形態(tài)差異不大,異常樣本當前幀和上一幀差別較大。因此正常數(shù)據(jù)計算得到的水流時空域特征中有效像素點(白色區(qū)域)相對較少,異常數(shù)據(jù)由于突變所以相同位置的像素點少,在水流時空域特征中的體現(xiàn)就是有效像素點所占的區(qū)域面積更大。
異常事件發(fā)生的概率很低,且水流的形態(tài)本身就在隨時發(fā)生變化,所以想要列舉所有的異常的情況是極其困難的,因此不能通過全監(jiān)督的方式來檢測水流的異常情況。另一方面正常的水流數(shù)據(jù)是很容易獲取的,所以通過無監(jiān)督的方式對正常水流數(shù)據(jù)進行建模,然后再根據(jù)數(shù)據(jù)是否偏離該模型來判斷異常與否是一個可行的方式。同時考慮到時間復(fù)雜度和算法自身的復(fù)雜度問題,多元高斯建模檢測異常點[31-33]是一個優(yōu)選方式。
如上文所述正常數(shù)據(jù)的形態(tài)流特征,白色的像素點少,而異常數(shù)據(jù)的形態(tài)流特征,白色像素點相對較多。這就是高斯模型能區(qū)別正常數(shù)據(jù)與異常數(shù)據(jù)的基礎(chǔ)。同時在實際的工程中場景是多樣的,每個場景的水流量大小也是不一樣的,所以不能直接根據(jù)像素點的多少來判別異常點,而是根據(jù)其變化的劇烈程度來判別異常與否。實際生產(chǎn)中工作人員根據(jù)水流形態(tài)的變化來判別數(shù)據(jù)異常與否。本文仿照人工操作的流程也通過水流形態(tài)在時間軸上的變化來建模。另一方面,最能代表體現(xiàn)一個二維物體形狀的量就是物體的周長和面積,所以我們可以依據(jù)這兩個量的變化情況來建立多元高斯模型。我們首先通過計算形態(tài)流特征的周長和面積,就能得到上一幀和當前幀的周長和面積的變化量;然后再計算當前數(shù)據(jù)真的周長和面積的值;最后兩者相比就能得到前后兩幀數(shù)據(jù)之間的變化值。如果是正常數(shù)據(jù)得到的值會比較小,因為差異部分很小;如果是異常數(shù)據(jù)就會得到一個比較大的值,因為兩者的差異部分比較大。這也是本文多元高斯模型建立的基礎(chǔ),多元高斯模型的表達式如公式(4)所示。
(4)
多元高斯的概率密度公式如公式(4)所示,x:代表輸入的變量,是一個矩陣,u:代表均值是與x相對應(yīng)的均值矩陣,n:代表多元高斯的維度,即變量的個數(shù),∑:代表協(xié)方差矩陣。
由于在實際應(yīng)用中所使用的多元高斯變量是周長和面積在時序上的變化量與當前幀的比值兩個量,所以公式(4)中n的值為2,所以公式(4)可以化為如下公式(5)所示。
(5)
同時這兩個量是相互獨立的,所以公式(5)中的協(xié)方差矩陣形式如下公式(6)所示。
(6)
用x,y代替公式(5)中的輸入變量x,用u1,u2代表兩個變量的均值,然后再將公式(6)帶入公式(5)可以得到本文高斯模型的最終表達式如下公式(7)所示。
(7)
得到了多元高斯模型之后就要考慮異常臨界值ε的問題,即確定一個閾值ε當高斯模型輸出的概率值小于該值將其判定為異常數(shù)據(jù)幀,多元高斯模型閾值的選取依據(jù)如下公式(8)所示。
(8)
閾值的確定就是為了更好的區(qū)分正常樣本和異常樣本,對于檢測任務(wù)來說就是要在誤檢和漏檢中找到一個平衡。誤檢也就是公式(8)中的FP表示正常樣本被錯誤的判別為了異常樣本;漏檢就是FN:表示異常片段沒有檢測出來;TP則表示檢測無誤的異常數(shù)據(jù)片段。為了防止異常樣本過少而導(dǎo)致的單純使用檢測精度來衡量一個模型的好壞可能出現(xiàn)的偏差,引入了F1,從公式(8)中可以看出F1的值越大,錯誤判別的水流視頻數(shù)據(jù)片段就越少。
本文的實驗采用的是開源的Linux系統(tǒng),為了加快運算的速度,在訓(xùn)練和測試過程中都使用了2塊顯存為12 G的Titan V 的GPU。第一部分的實驗是與水流分割相關(guān)的實驗,用于找到上文中所述的最適用于分割的β值;第二部分實驗是針對水流異常數(shù)據(jù)點檢測和水流時空域特征驗證的實驗。
視頻的異常檢測任務(wù)中,要評價一個新算法的好壞最直接的方式就是檢測的精度(precision),precision計算方法如公式(9)所示。
(9)
公式(9)中,TP:判別正確的異常的片段,也就是將異常的水流片段判別為異常,F(xiàn)P:判別錯誤的正常判斷,也就是將正常片段判別為了異常片段。
4.2.1 數(shù)據(jù)集介紹
為了保證實驗數(shù)據(jù)的準確性和豐富性,實驗過程中用到不同場景的實驗數(shù)據(jù)都是在實地采集得到的。異常的樣本是也是長期積累采集到的,異常樣本是由工廠工作經(jīng)驗豐富的專家挑選的,專家根據(jù)水流變化的劇烈程度判斷一個視頻片段中的水流數(shù)據(jù)是否異常。在訓(xùn)練和測試的過程一共用到了50 000個訓(xùn)練數(shù)據(jù)和2 000個測試數(shù)據(jù),這些數(shù)據(jù)來源于7個不同的場景。測試數(shù)據(jù)中包含1 000張正常數(shù)據(jù)和1 000張異常數(shù)據(jù)。
4.2.2 水流分割實驗
本文中通過U-net算法來分割視頻中的水流,圖像分割領(lǐng)域常常通過IoU(交并比,分割結(jié)果與標簽的交集與并集)來評價分割的結(jié)果。公式(3)中β是一個經(jīng)驗值,確定一個經(jīng)驗值的最佳取值的方法就是進行多次的對比和實驗,為了得到β的最佳取值,本文對不同β取值情況下的分割結(jié)果進行了對比和實驗,其結(jié)果如表1所示。

表1 U-net中不同β值下的IoU對比結(jié)果
如表1所示,β取值較大時對損失的計算結(jié)果影響也較大,所以分割效果不好,通過實驗結(jié)果可以發(fā)現(xiàn)隨著β減小,分割結(jié)果先變好后變壞,其最佳取值為1*10-5。
4.2.3 水流異常檢測和形態(tài)流驗證實驗
本文的主要目的是水流的異常檢測,為了驗證本文算法的有效性和先進性除了進行自我驗證外還與其他算法進行了對比。參與對比的模型包括本文的算法、Ganomaly[16],、EGBAD[17]、AnoGAN[18]4種;另外為了驗證形態(tài)流的有效性,本文也在Ganomaly算法上進行了不同特征檢測的對比驗證。本文的提出的算法相對于其他3種深度學(xué)習(xí)的模型算法在場景的兼容性上有所不足,但是其在檢測過程中只需要預(yù)先得到高斯參數(shù),不需要加載200 M的模型,所以運算速度很快。為了解決場景的兼容性問題,本文首先在不同的場景下分別建立高斯模型,然后在檢測時再依次判斷輸入數(shù)據(jù)屬于哪一個模型,如果輸入數(shù)據(jù)不屬于任何一個模型,則為異常。詳細的場景兼容性驗證和分析結(jié)果如表2所示,各個算法的檢測結(jié)果如表3所示。

表2 包含不同場景數(shù)據(jù)的檢測結(jié)果

表3 各個算法的水流異常檢測精度對比
表3中Feature代表輸入的特征,precision代表精度,F(xiàn)PS代表每秒的處理速度(單位是:幀/每秒),由于EGBAD[17]、AnoGAN[18]兩種算法檢測精度較低不滿足實際的需求所以沒有設(shè)計檢測速度的驗證實驗。從表3可以看出,本文所提算法明顯高于EGBAD[17]、AnoGAN[18]兩種算法精度達到了93.6%,相對于Ganomaly算法精度也提升了10.1%。時間效率方面,同時使用Titan V的GPU加速時,可以達到28幀每秒的檢測速度,比Ganomaly每秒能多檢測10幀數(shù)據(jù)。
由于在前期的驗證中EGBAD[17]、AnoGAN[18]兩種算法檢測精度低不滿足需求,所以沒有形態(tài)流特征驗證時沒有在這兩種算法上做更多的對比,同時本文算法也不適用于原圖分割圖像和光流等,所只在Ganomaly算法上進行了形態(tài)流特征的驗證實驗,實驗結(jié)果如表4所示。
如表4所示形態(tài)流特征在水流異常檢測任務(wù)中,相對于其他3種特征都有更好的表現(xiàn),也說了形態(tài)流特征在水流異常檢測任務(wù)中的優(yōu)越性。其原因在于,光流特征不能適應(yīng)水流形態(tài)的快速變化所以表現(xiàn)最低,同時原圖和分割圖像兩者均不能表示水流形態(tài)在時間軸上的變化,所以表現(xiàn)不如形態(tài)流特征。

表4 形態(tài)流特征驗證結(jié)果
算法能夠在多個場景中使用是實際項目需要考慮的問題,因此本文對表二中表現(xiàn)比較好的兩種方法做了進一步實驗。在加入不同場景數(shù)據(jù)的情況下,對數(shù)據(jù)進行訓(xùn)練和測試,實驗中輸入特征都是形態(tài)流,其結(jié)果如表2所示。
從表2中可以看出來,Ganomaly算法對場景的兼容性更強,增加不同場景的數(shù)據(jù),其檢測的精度下降不明顯。而本文的算法雖然在單個場景的檢測中表現(xiàn)突出,但是隨著場景數(shù)的增多,算法的檢測精度下降比較明顯。但是在實際的項目處理過程中,我們可以通過其他的方法來解決場景問題,這樣既可以保證檢測精度也可以保證檢測速度。比如我們可以預(yù)先建立多個多元高斯模型,再逐一檢查輸入的數(shù)據(jù)是符合哪個模型的分布。這樣做的基礎(chǔ)在石油工廠鉆井的數(shù)目有限,也就是說場景的個數(shù)是有限的。表3中本文算法的檢測精度就是這樣計算得來的。表2中是用的一個模型去擬合不同場景的數(shù)據(jù),而表3中則是用多個高斯模型去擬合數(shù)據(jù),所以當場景數(shù)為7時表2檢測精度達到93.6%,而表3只有82.1%。
本文結(jié)合實際的應(yīng)用,提出了一種視頻中水流異常數(shù)據(jù)片段檢測的算法,解決了石油生產(chǎn)中污染氣體的排放的自動檢測問題。為了解決異常的水流數(shù)據(jù)片段難以獲取的問題,本文采用了無監(jiān)督學(xué)習(xí)的策略,通過建立正常數(shù)據(jù)的多元高斯模型來判別異常數(shù)據(jù)。通過實驗的對比和驗證本文所提算法水流異常片段檢測的精度達到了93.6%優(yōu)于其他算法,在實時性上在24 G的Titan V GPU上使用加速策略可以達到28幀每秒的處理速度。另一方面視頻中水流的異常變化是一個過程,而本文只考慮了連續(xù)兩個數(shù)據(jù)幀的變化,接下來可以考慮更多連續(xù)幀的水流形態(tài)變化情況。