舒兆翰, 李小龍, 吳從輝
(1.核工業湖州勘測規劃設計研究院股份有限公司, 湖州 313000;2.東華理工大學自然資源部環鄱陽湖區域礦山環境監測與治理重點實驗室, 南昌 330013;3.東華理工大學中核三維地理信息工程技術研究中心, 南昌 330013; 4.核工業井巷建設集團有限公司, 湖州 313000)
運動目標檢測[1]是計算機視覺[2]領域的關鍵技術之一,其目的是從視頻圖像的背景中分割出前景目標,而準確的檢測結果是后續目標追蹤、定位以及行為識別等一系列研究和工作的基礎。鑒于深度學習類算法需要較高的硬件配置和大量數據集,實驗要求較為嚴格且難以隨時部署,因此盡管傳統檢測算法出現較早,但目前對其研究仍在繼續[3]。
傳統運動目標檢測算法主要包括光流法[4]、幀差法[5]和背景減除法[6],其中背景減除法以其精確度高和適用性強等特點成為當下研究熱點[7]。視覺背景提取(visual background extractor, ViBe)算法[8]屬于背景減除法中的非參數化背景模型,因具有模型簡單、計算量小和實時性好等優點而被廣泛應用。但在實際檢測中,由于環境因素的影響,ViBe檢測結果容易受到噪聲的干擾[9],因此,大量學者對ViBe算法的前景檢測階段進行了改進。文獻[10]采取自適應匹配閾值法,依據背景樣本集的復雜程度來動態調整匹配半徑;該方法雖然可以起到抑制噪聲的作用,但在背景較復雜的環境中,算法檢測結果中依舊會存在背景噪聲。文獻[11]引入最大類間方差法(Otsu)計算當前圖像的最佳分割閾值,并依據圖像閾值對ViBe檢測出的前景點進行二次判定;該方法雖然能夠提高前景判定的準確度,但在二次判定的過程中容易將部分前景點錯誤判定為噪聲點,導致前景漏檢問題的出現。
基于此,現針對ViBe算法抗噪聲干擾能力較弱的缺點,引入對噪聲不敏感的兩幀差分算法,提出一種融入兩幀差分信息的改進ViBe算法(ViBe with two-frame differencing,ViBe-TD),旨在改善算法在復雜環境中的運動目標檢測效果。
ViBe是一種基于像素的運動目標檢測算法[12],主要由背景建模、前景檢測和背景更新三部分組成,算法的具體檢測過程如下。
(1)背景建模:ViBe將視頻的第一幀圖像作為背景幀,依據相鄰像素點之間灰度相近的特性,將像素點(x,y)鄰域內的其他像素作為樣本點組成該點的背景樣本集B(x,y),具體過程表示為
B(x,y)={v1,v2,…,vi,…,vN}
(1)
式(1)中:vi為從像素點(x,y)的8鄰域內隨機選取的像素灰度值,共抽取了N個樣本點。在ViBe檢測中,算法將樣本個數N設為固定值20。
(2)前景檢測:建立背景模型后,ViBe通過計算當前圖像內像素點與其對應背景樣本集內各樣本點像素灰度值的歐氏距離來完成前景像素的判定,具體過程表示為
(2)

(3)
式中:dt(x,y)為像素點在第t幀檢測圖像中的灰度值;Bi(x,y)為該點對應背景樣本集中第i個樣本點的灰度值,函數Ed(x,y)為輸出兩點之間的歐氏距離ei;R0為算法設定的歐氏距離閾值,取固定值20;count為匹配數;Rmin為算法設定的個數閾值,取固定值2;C(x,y)為該像素點的檢測結果,其中BG代表背景點,FG代表前景點。樣本點全部計算完畢后,若匹配數大于設定的個數閾值,就將該像素點判定為背景點,反之,則判定為前景點。
(3)背景更新:前景檢測完成后,ViBe算法采用保守更新策略加鄰域擴散機制的方法對背景模型進行更新[13]。具體作法是,當某像素點被判定為背景點時,有1/δ的概率使用當前背景像素隨機替換該點對應背景樣本集內某個樣本點,同時有1/δ的概率更新其8鄰域內某個背景點的樣本集。此外,當視頻圖像中某像素點在連續N0幀中都被檢測為前景時,算法將該像素點更新為背景點。在ViBe算法中,δ和N0為固定取值,分別為16和20。
兩幀差分法是一種效率和靈敏性較高[14]的運動目標檢測算法。其檢測過程是,使用視頻序列中相鄰的兩幀圖像進行灰度差分運算,通過設置灰度差分閾值,將圖像內像素點分類為前景和背景,獲取當前圖像內的前景區域。算法認為,當視頻圖像中出現運動目標時,目標所處像素點上的灰度值在兩幀圖像之間會有較大變化,即該點上灰度差的絕對值應較大,當該絕對值大于算法設定的閾值時,就認定存在運動物體,將該像素點判定為前景點;反之,則判定為背景點。兩幀差分法的具體運算過程表達式為
(4)
式(4)中:dt(x,y)和dt-1(x,y)分別為像素點在當前圖像(第t幀)和前一幀圖像中的灰度值;f1(x,y)為該像素點上的兩幀差分;R1為算法設定的閾值,通常引入Otsu算法[15]自適應獲取每次兩幀差分的最佳閾值,FG和BG為檢測結果。
如圖1所示為ViBe和兩幀差分算法的運動目標檢測結果。從檢測結果可以看出:

圖1 ViBe和兩幀差分法運動目標檢測結果Fig.1 ViBe and two-frame differential method moving target detection results
(1)ViBe雖然檢測出了較完整的運動目標,但檢測結果中存在大量噪聲點,其主要原因是,在實際檢測中,單一的匹配閾值設定降低了像素點分類的準確性,使得算法的檢測結果中出現背景噪聲。
(2)兩幀差分法的檢測結果雖然未受到噪聲干擾,但其檢測出前景目標的內部存在大面積空洞,主要原因是,參與差分運算的兩圖像內部前景區域存在重合,由于重合部分的像素點上灰度差絕對值較小,使得算法將其錯誤判定為背景,在檢測結果中就表現為空洞。
(3)從像素點角度來看,ViBe檢測中的噪聲問題,是將部分背景點錯誤判定為了前景點,而兩幀差分法檢測中的空洞問題,則是將部分前景點錯誤判定為了背景點,兩算法檢測結果之間存在互補之處。
為了能夠提高運動目標檢測的完整度和準確性,以ViBe和兩幀差分算法為基礎,提出一種融合算法(ViBe-TD)。
由前文易知,在前景檢測過程中,兩幀差分法僅通過灰度差分閾值R1來完成前景判定,而ViBe算法則涉及到R0和Rmin兩個閾值。為了方便兩類檢測信息的融合,設計一種單閾值形ViBe檢測(single-threshold form of ViBe, S-ViBe),目的是將ViBe檢測轉換為與兩幀差分檢測相同的形式,即能夠通過單個閾值R2來衡量S-ViBe的檢測信息f2(x,y),以完成像素點分類。S-ViBe的具體檢測過程如下。
(1)S-ViBe檢測信息f2(x,y)計算:公式為
(5)
式(5)中:ui(x,y)為當前像素點與其對應樣本集內第i個樣本點灰度差的絕對值;U(x,y)為由ui(x,y)組成的集合,集合內元素個數為N,由前文可知N取值為20,Rmin為ViBe的個數閾值,易知S0為固定值3,函數M(U(x,y),S0)表示選取集合U(x,y)內數值最小的S0個值進行求和,輸出求和結果即得到該像素點上的f2(x,y)值。
(2)像素點的前景判定過程:表達式為

(6)
式(6)中:R0為ViBe設置的閾值,R2為S-ViBe的閾值,易得R2為固定取值60。
由上可以看出,S-ViBe的前景判定形式與兩幀差分算法相同。
如圖2所示,為S-ViBe運動目標檢測的視覺效果,對比圖1中的ViBe檢測結果,可以看出,S-ViBe成功將ViBe轉換為了單閾值形式,而沒有影響ViBe算法原本的檢測效果。

圖2 S-ViBe檢測結果Fig.2 S-ViBe detection results
logistic模型[16]是一種分類算法,該算法首先建立回歸模型,然后采用極大似然估計法求解模型參數,得出回歸值,最后通過數學方法對不同的概率做出決策,完成分類。logistic回歸模型因具有計算速度快、實現簡單、訓練高效和準確率好等優點而被廣泛應用,并常被應用于二分類問題[17]。
ViBe-TD的主要思想是結合監督學習與無監督學習,來實現像素點上兩類檢測信息的融合。算法依據f1(x,y)和f2(x,y)及其閾值R1和R2,初步判定部分像素點類別并依據判定結果建立訓練集;再將像素點上的兩類檢測信息f1(x,y)和f2(x,y)視為兩組特征變量,建立并訓練logistic回歸模型完成余下像素點的分類。ViBe-TD具體檢測過程如下。
首先,在進行logistic回歸分類前,初步判定部分像素點的類別。依據檢測值f1(x,y)和f2(x,y)與其對應閾值R1和R2的大小關系,將檢測圖像內像素點劃分為4類,依次記為Ⅰ~Ⅳ,如表1所示,同時,將Ⅰ和Ⅲ像素點全部判定為背景點,將Ⅱ像素點全部判定為前景點。

表1 像素點分類Table 1 Pixel point classification
其次,依據表1的劃分結果,建立logistic模型的訓練樣本集。將Ⅱ類別點全部作為正樣本,并統計其數量,記為α1;通過直線“f1(x,y)=0.5R1”和“f2(x,y)=0.5R2”將Ⅲ類別點繼續分為四塊,在每一塊中隨機選取α1個點,組成負樣本集,即訓練集內正負樣本數量之比為1∶4。
再次,對特征變量進行歸一化。在回歸模型中,符合正態分布的自變量和因變量往往有著較好的回歸效果[18]。對此,本文中采用均值方差標準化方法分別將特征變量f1(x,y)和f2(x,y)轉換為正態分布。假設fi(x,y)代表某像素點上相應的特征值,ji代表當前圖像內各像素點上fi(x,y)的集合,使用Vi表示ji的均值,σ′i表示ji的標準差,歸一化過程表示為
(7)
然后,構建logistic模型假設函數。對特征向量進行加權求和,即
z=θ0+θ1x1+θ2x2
(8)
式(8)中:x1和x2為輸入的特征值,在前景檢測中即為檢測信息f1(x,y)和f2(x,y),θ0、θ1和θ2依次為各元素的權重。完成求和后將z代入sigmoid函數中,得到假設函數,即

(9)
式(9)中:sigmoid(z)的取值范圍為(0,1),模型定義:若z>0,sigmoid(z)>0.5,輸出結果為正類;若z≤0時,sigmoid(z)≤0.5,輸出為負類,以此達到二分類效果。
最后,構造損失函數,訓練回歸分類模型。模型訓練的實質為求解一組最優權重θ。logistic采用梯度下降法來更新模型中的權重,優化損失函數J(θ),并在J(θ)上增加權重向量的L2范數[19],作為懲罰項來權衡訓練誤差,增加懲罰項后的損失函數,即


(10)
式(10)中:Ns為樣本數量;yi∈{0,1},表示預測類別。模型訓練的最大迭代次數設置為50,系數α2取值為1。
訓練結束后依據最佳權重可求得分割斜線,分類像素點,完成前景判定。基于logistic回歸的ViBe-TD前景檢測過程如圖3所示。

圖3 ViBe-TD前景檢測流程Fig.3 Process of ViBe-TD foreground detection
ViBe-TD算法前景檢測的視覺效果如圖4所示,計算得兩檢測信息閾值為“R1=39、R2=60”,logistic模型的權重為“θ0=-2. 771 2、θ1=3. 480 3、θ2=4. 693 6”。對比前文圖1(e)和圖1(f),可以看出,ViBe-TD算法較好融合了兩幀差分法抗噪聲能力強和ViBe算法檢測目標較完整的優點。

圖4 ViBe-TD前景檢測結果Fig.4 ViBe-TD foreground detection results
為了驗證所提融合算法的有效性,選取ViBe算法、同類改進算法(文獻[10-11]算法)以及ViBe-TD算法進行對比實驗,各對比算法均使用原文獻設置參數。實驗平臺為CPU: Inter(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 2.59GHz + 16.0G內存;Windows10 64位操作系統;程序代碼使用Python3.6編寫。實驗隨機選取CDnet2014數據集中Highway視頻序列第119幀(320×240)、Pedestrians第635幀(360×240)、Wet snow第2 465幀(720×540)以及Pets2006第30幀(720×576)作為檢測圖像。因為僅為對比各算法的抗噪聲干擾能力,所以采用不包含運動目標的真實背景圖像,如圖5所示。實驗結果分析由定性分析和定量分析兩部分組成。

Highway為存在樹枝晃動的高速公路場景,Pedestrians為存在光照變化的公園場景,Wet snow為雨天下的交通道路場景,Pets2006為光線較暗的地鐵站監控場景圖5 背景灰度圖像Fig.5 Background grayscale image
如圖6所示,為4種對比算法在不同場景中運動目標檢測的視覺效果。其中,各檢測結果均未經過任何形態學后處理,驗證算法性能的真值圖像通過labelme軟件人工標注獲得。

圖6 4種算法在不同場景中的運動目標檢測結果Fig.6 Moving target detection results of four algorithms in different scenes
由圖6可知,ViBe算法雖然在多種不同場景下都檢測出了較完整的運動目標,但由于環境因素的影響,其檢測結果中出現了大量背景噪聲,說明ViBe算法的抗噪聲干擾能力不佳。此外,從圖中可以看到,在Pets2006場景中,行人陰影所在的區域被算法錯誤判定為了前景,說明ViBe對場景中的陰影區域不敏感,檢測性能有待增強。
文獻[10-11]算法相比ViBe檢測,雖然能夠對背景噪聲起到抑制效果,但從圖6可以看出,兩改進算法的檢測結果中仍有部分噪聲點殘留。此外,在文獻[10]算法的檢測結果中,Pets2006場景內的陰影問題依舊存在,說明該算法同樣對陰影區域不敏感,改進效果仍有待提高。而文獻[11]算法雖然較好解決了Pets2006場景中的陰影問題,但在Highway和Wet snow場景中,算法在消除噪聲的同時,明顯將車輛的車窗部分錯誤判定為了背景,說明當前景目標內部存在較大灰度差時,該算法容易將部分前景錯誤判定為背景消除,算法的檢測性能具有一定局限性。
相比之下,ViBe-TD算法雖然在Wet snow場景中存在部分前景漏檢的情況,但總體上在4種場景中都較完整的檢測出了運動目標,并且檢測結果幾乎都沒有受到噪聲的干擾,說明本文所提改進算法在較好完成運動目標檢測任務的同時,能夠有效消除檢測場景內的背景噪聲。
為了量化各算法檢測結果,選擇前景點精確率P、召回率R和F測度(F1)作為算法性能的評價指標[20],三項指標的計算式為

(11)

(12)

(13)
式中:TP為算法正確檢測前景點的個數;FP為算法將背景點誤檢為前景點的個數;FN為算法將前景點漏檢為背景點的個數[21]。三項指標的取值范圍為[0,1],指標值越大代表算法的前景檢測效果越好[22],其中精確率可以反映算法前景點誤檢的情況,召回率可以反映算法前景點漏檢的情況,F1值能反映算法的綜合檢測效果。
如圖7、圖8和表2所示,可以看出,在前景檢測的精確率上,ViBe-TD、文獻[10-11]算法在4種場景中均高于ViBe算法,說明3種改進算法在不同環境中都能起到消除背景噪聲的作用,對于抑制噪聲都具有良好的適用性和有效性。此外,相比文獻[10-11]改進算法,ViBe-TD算法精確率的提升最為明顯,說明在噪聲消除上,ViBe-TD的改進效果更優。

表2 4種算法性能比較Table 2 Performance comparison of four algorithms

圖7 各算法在不同場景中評價指標對比折線圖Fig.7 Comparison of evaluation metrics of each algorithm in different scenarios line graphs

圖8 各算法在4種場景中的平均指標值Fig.8 Average metrics values for each algorithm in four scenes
在前景檢測的召回率上,ViBe算法為4種算法中的最高值,其主要原因是,各改進算法為了消除場景內的噪聲,其前景檢測方式與原算法相比,相當于是提高了某個像素點被判定為前景的條件,從而導致部分前景像素點漏檢,后續可通過形態學填充等圖像后處理操作來改善前景漏檢問題,本文為了更直觀的比較各算法的檢測性能,故未對各檢測結果作圖像后處理操作。此外,從圖表中可以看出,在4種算法中,ViBe-TD和文獻[11]算法在不同檢測場景中的召回率存在較大波動。
在前景檢測的綜合評價指標F1上,文獻[10]算法在4種場景下的F1相比于ViBe算法均有所提升,說明該算法整體改進效果良好;文獻[11]算法在Highway場景中F1低于ViBe算法,但在其他3種場景中F1相比原算法有所提高,說明該改進算法的檢測性能不穩定;而ViBe-TD算法在4種場景中的平均F1相比于ViBe算法、文獻[10-11]算法,分別增長了0.188、0.141和0.194,說明ViBe-TD算法的檢測性能相比ViBe算法有明顯提升,改進效果也優于文獻[10-11]算法。
如表3所示,為4種算法完成單幀圖像檢測分別所需要的時間。可以看出,ViBe算法的檢測時間最短,ViBe-TD、文獻[10-11]算法在4種場景中單幀的平均檢測時間相比ViBe算法分別增長了58.79、3.78、1.69 s,三者檢測時長約為原算法的2.39、1.08、1.04倍。說明3種改進算法前景檢測的復雜度相比原算法均有所增加,其中ViBe-TD算法前景檢測的復雜度最大。

表3 算法單幀檢測時間Table 3 Algorithm single frame detection time
為了解決ViBe算法在運動目標檢測任務中存在的噪聲干擾問題,本文對ViBe和兩幀差分算法檢測結果中的不足之處進行了理論分析,并提出了一種融合算法(ViBe-TD)。ViBe-TD通過設計S-ViBe檢測并引入logistic模型,來融合像素點上的兩幀差分和ViBe檢測信息,以此完成像素點類別的判定,達到增強原算法抗噪聲干擾能力的效果。在4種不同場景視頻上對ViBe-TD算法進行驗證,證明了ViBe-TD算法在保證檢測目標總體完整的同時,能夠有效消除場景內的背景噪聲。此外,對比實驗結果顯示,雖然ViBe-TD的復雜度有所增大,需要更長的檢測時間,但其檢測性能相比原算法有大幅提升,改進效果也優于同類改進算法。