舒兆翰, 李小龍, 吳從輝
(1.核工業(yè)湖州勘測規(guī)劃設(shè)計研究院股份有限公司, 湖州 313000;2.東華理工大學(xué)自然資源部環(huán)鄱陽湖區(qū)域礦山環(huán)境監(jiān)測與治理重點(diǎn)實驗室, 南昌 330013;3.東華理工大學(xué)中核三維地理信息工程技術(shù)研究中心, 南昌 330013; 4.核工業(yè)井巷建設(shè)集團(tuán)有限公司, 湖州 313000)
運(yùn)動目標(biāo)檢測[1]是計算機(jī)視覺[2]領(lǐng)域的關(guān)鍵技術(shù)之一,其目的是從視頻圖像的背景中分割出前景目標(biāo),而準(zhǔn)確的檢測結(jié)果是后續(xù)目標(biāo)追蹤、定位以及行為識別等一系列研究和工作的基礎(chǔ)。鑒于深度學(xué)習(xí)類算法需要較高的硬件配置和大量數(shù)據(jù)集,實驗要求較為嚴(yán)格且難以隨時部署,因此盡管傳統(tǒng)檢測算法出現(xiàn)較早,但目前對其研究仍在繼續(xù)[3]。
傳統(tǒng)運(yùn)動目標(biāo)檢測算法主要包括光流法[4]、幀差法[5]和背景減除法[6],其中背景減除法以其精確度高和適用性強(qiáng)等特點(diǎn)成為當(dāng)下研究熱點(diǎn)[7]。視覺背景提取(visual background extractor, ViBe)算法[8]屬于背景減除法中的非參數(shù)化背景模型,因具有模型簡單、計算量小和實時性好等優(yōu)點(diǎn)而被廣泛應(yīng)用。但在實際檢測中,由于環(huán)境因素的影響,ViBe檢測結(jié)果容易受到噪聲的干擾[9],因此,大量學(xué)者對ViBe算法的前景檢測階段進(jìn)行了改進(jìn)。文獻(xiàn)[10]采取自適應(yīng)匹配閾值法,依據(jù)背景樣本集的復(fù)雜程度來動態(tài)調(diào)整匹配半徑;該方法雖然可以起到抑制噪聲的作用,但在背景較復(fù)雜的環(huán)境中,算法檢測結(jié)果中依舊會存在背景噪聲。文獻(xiàn)[11]引入最大類間方差法(Otsu)計算當(dāng)前圖像的最佳分割閾值,并依據(jù)圖像閾值對ViBe檢測出的前景點(diǎn)進(jìn)行二次判定;該方法雖然能夠提高前景判定的準(zhǔn)確度,但在二次判定的過程中容易將部分前景點(diǎn)錯誤判定為噪聲點(diǎn),導(dǎo)致前景漏檢問題的出現(xiàn)。
基于此,現(xiàn)針對ViBe算法抗噪聲干擾能力較弱的缺點(diǎn),引入對噪聲不敏感的兩幀差分算法,提出一種融入兩幀差分信息的改進(jìn)ViBe算法(ViBe with two-frame differencing,ViBe-TD),旨在改善算法在復(fù)雜環(huán)境中的運(yùn)動目標(biāo)檢測效果。
ViBe是一種基于像素的運(yùn)動目標(biāo)檢測算法[12],主要由背景建模、前景檢測和背景更新三部分組成,算法的具體檢測過程如下。
(1)背景建模:ViBe將視頻的第一幀圖像作為背景幀,依據(jù)相鄰像素點(diǎn)之間灰度相近的特性,將像素點(diǎn)(x,y)鄰域內(nèi)的其他像素作為樣本點(diǎn)組成該點(diǎn)的背景樣本集B(x,y),具體過程表示為
B(x,y)={v1,v2,…,vi,…,vN}
(1)
式(1)中:vi為從像素點(diǎn)(x,y)的8鄰域內(nèi)隨機(jī)選取的像素灰度值,共抽取了N個樣本點(diǎn)。在ViBe檢測中,算法將樣本個數(shù)N設(shè)為固定值20。
(2)前景檢測:建立背景模型后,ViBe通過計算當(dāng)前圖像內(nèi)像素點(diǎn)與其對應(yīng)背景樣本集內(nèi)各樣本點(diǎn)像素灰度值的歐氏距離來完成前景像素的判定,具體過程表示為
(2)
(3)
式中:dt(x,y)為像素點(diǎn)在第t幀檢測圖像中的灰度值;Bi(x,y)為該點(diǎn)對應(yīng)背景樣本集中第i個樣本點(diǎn)的灰度值,函數(shù)Ed(x,y)為輸出兩點(diǎn)之間的歐氏距離ei;R0為算法設(shè)定的歐氏距離閾值,取固定值20;count為匹配數(shù);Rmin為算法設(shè)定的個數(shù)閾值,取固定值2;C(x,y)為該像素點(diǎn)的檢測結(jié)果,其中BG代表背景點(diǎn),FG代表前景點(diǎn)。樣本點(diǎn)全部計算完畢后,若匹配數(shù)大于設(shè)定的個數(shù)閾值,就將該像素點(diǎn)判定為背景點(diǎn),反之,則判定為前景點(diǎn)。
(3)背景更新:前景檢測完成后,ViBe算法采用保守更新策略加鄰域擴(kuò)散機(jī)制的方法對背景模型進(jìn)行更新[13]。具體作法是,當(dāng)某像素點(diǎn)被判定為背景點(diǎn)時,有1/δ的概率使用當(dāng)前背景像素隨機(jī)替換該點(diǎn)對應(yīng)背景樣本集內(nèi)某個樣本點(diǎn),同時有1/δ的概率更新其8鄰域內(nèi)某個背景點(diǎn)的樣本集。此外,當(dāng)視頻圖像中某像素點(diǎn)在連續(xù)N0幀中都被檢測為前景時,算法將該像素點(diǎn)更新為背景點(diǎn)。在ViBe算法中,δ和N0為固定取值,分別為16和20。
兩幀差分法是一種效率和靈敏性較高[14]的運(yùn)動目標(biāo)檢測算法。其檢測過程是,使用視頻序列中相鄰的兩幀圖像進(jìn)行灰度差分運(yùn)算,通過設(shè)置灰度差分閾值,將圖像內(nèi)像素點(diǎn)分類為前景和背景,獲取當(dāng)前圖像內(nèi)的前景區(qū)域。算法認(rèn)為,當(dāng)視頻圖像中出現(xiàn)運(yùn)動目標(biāo)時,目標(biāo)所處像素點(diǎn)上的灰度值在兩幀圖像之間會有較大變化,即該點(diǎn)上灰度差的絕對值應(yīng)較大,當(dāng)該絕對值大于算法設(shè)定的閾值時,就認(rèn)定存在運(yùn)動物體,將該像素點(diǎn)判定為前景點(diǎn);反之,則判定為背景點(diǎn)。兩幀差分法的具體運(yùn)算過程表達(dá)式為
(4)
式(4)中:dt(x,y)和dt-1(x,y)分別為像素點(diǎn)在當(dāng)前圖像(第t幀)和前一幀圖像中的灰度值;f1(x,y)為該像素點(diǎn)上的兩幀差分;R1為算法設(shè)定的閾值,通常引入Otsu算法[15]自適應(yīng)獲取每次兩幀差分的最佳閾值,FG和BG為檢測結(jié)果。
如圖1所示為ViBe和兩幀差分算法的運(yùn)動目標(biāo)檢測結(jié)果。從檢測結(jié)果可以看出:
圖1 ViBe和兩幀差分法運(yùn)動目標(biāo)檢測結(jié)果Fig.1 ViBe and two-frame differential method moving target detection results
(1)ViBe雖然檢測出了較完整的運(yùn)動目標(biāo),但檢測結(jié)果中存在大量噪聲點(diǎn),其主要原因是,在實際檢測中,單一的匹配閾值設(shè)定降低了像素點(diǎn)分類的準(zhǔn)確性,使得算法的檢測結(jié)果中出現(xiàn)背景噪聲。
(2)兩幀差分法的檢測結(jié)果雖然未受到噪聲干擾,但其檢測出前景目標(biāo)的內(nèi)部存在大面積空洞,主要原因是,參與差分運(yùn)算的兩圖像內(nèi)部前景區(qū)域存在重合,由于重合部分的像素點(diǎn)上灰度差絕對值較小,使得算法將其錯誤判定為背景,在檢測結(jié)果中就表現(xiàn)為空洞。
(3)從像素點(diǎn)角度來看,ViBe檢測中的噪聲問題,是將部分背景點(diǎn)錯誤判定為了前景點(diǎn),而兩幀差分法檢測中的空洞問題,則是將部分前景點(diǎn)錯誤判定為了背景點(diǎn),兩算法檢測結(jié)果之間存在互補(bǔ)之處。
為了能夠提高運(yùn)動目標(biāo)檢測的完整度和準(zhǔn)確性,以ViBe和兩幀差分算法為基礎(chǔ),提出一種融合算法(ViBe-TD)。
由前文易知,在前景檢測過程中,兩幀差分法僅通過灰度差分閾值R1來完成前景判定,而ViBe算法則涉及到R0和Rmin兩個閾值。為了方便兩類檢測信息的融合,設(shè)計一種單閾值形ViBe檢測(single-threshold form of ViBe, S-ViBe),目的是將ViBe檢測轉(zhuǎn)換為與兩幀差分檢測相同的形式,即能夠通過單個閾值R2來衡量S-ViBe的檢測信息f2(x,y),以完成像素點(diǎn)分類。S-ViBe的具體檢測過程如下。
(1)S-ViBe檢測信息f2(x,y)計算:公式為
(5)
式(5)中:ui(x,y)為當(dāng)前像素點(diǎn)與其對應(yīng)樣本集內(nèi)第i個樣本點(diǎn)灰度差的絕對值;U(x,y)為由ui(x,y)組成的集合,集合內(nèi)元素個數(shù)為N,由前文可知N取值為20,Rmin為ViBe的個數(shù)閾值,易知S0為固定值3,函數(shù)M(U(x,y),S0)表示選取集合U(x,y)內(nèi)數(shù)值最小的S0個值進(jìn)行求和,輸出求和結(jié)果即得到該像素點(diǎn)上的f2(x,y)值。
(2)像素點(diǎn)的前景判定過程:表達(dá)式為
(6)
式(6)中:R0為ViBe設(shè)置的閾值,R2為S-ViBe的閾值,易得R2為固定取值60。
由上可以看出,S-ViBe的前景判定形式與兩幀差分算法相同。
如圖2所示,為S-ViBe運(yùn)動目標(biāo)檢測的視覺效果,對比圖1中的ViBe檢測結(jié)果,可以看出,S-ViBe成功將ViBe轉(zhuǎn)換為了單閾值形式,而沒有影響ViBe算法原本的檢測效果。
圖2 S-ViBe檢測結(jié)果Fig.2 S-ViBe detection results
logistic模型[16]是一種分類算法,該算法首先建立回歸模型,然后采用極大似然估計法求解模型參數(shù),得出回歸值,最后通過數(shù)學(xué)方法對不同的概率做出決策,完成分類。logistic回歸模型因具有計算速度快、實現(xiàn)簡單、訓(xùn)練高效和準(zhǔn)確率好等優(yōu)點(diǎn)而被廣泛應(yīng)用,并常被應(yīng)用于二分類問題[17]。
ViBe-TD的主要思想是結(jié)合監(jiān)督學(xué)習(xí)與無監(jiān)督學(xué)習(xí),來實現(xiàn)像素點(diǎn)上兩類檢測信息的融合。算法依據(jù)f1(x,y)和f2(x,y)及其閾值R1和R2,初步判定部分像素點(diǎn)類別并依據(jù)判定結(jié)果建立訓(xùn)練集;再將像素點(diǎn)上的兩類檢測信息f1(x,y)和f2(x,y)視為兩組特征變量,建立并訓(xùn)練logistic回歸模型完成余下像素點(diǎn)的分類。ViBe-TD具體檢測過程如下。
首先,在進(jìn)行l(wèi)ogistic回歸分類前,初步判定部分像素點(diǎn)的類別。依據(jù)檢測值f1(x,y)和f2(x,y)與其對應(yīng)閾值R1和R2的大小關(guān)系,將檢測圖像內(nèi)像素點(diǎn)劃分為4類,依次記為Ⅰ~Ⅳ,如表1所示,同時,將Ⅰ和Ⅲ像素點(diǎn)全部判定為背景點(diǎn),將Ⅱ像素點(diǎn)全部判定為前景點(diǎn)。
表1 像素點(diǎn)分類Table 1 Pixel point classification
其次,依據(jù)表1的劃分結(jié)果,建立logistic模型的訓(xùn)練樣本集。將Ⅱ類別點(diǎn)全部作為正樣本,并統(tǒng)計其數(shù)量,記為α1;通過直線“f1(x,y)=0.5R1”和“f2(x,y)=0.5R2”將Ⅲ類別點(diǎn)繼續(xù)分為四塊,在每一塊中隨機(jī)選取α1個點(diǎn),組成負(fù)樣本集,即訓(xùn)練集內(nèi)正負(fù)樣本數(shù)量之比為1∶4。
再次,對特征變量進(jìn)行歸一化。在回歸模型中,符合正態(tài)分布的自變量和因變量往往有著較好的回歸效果[18]。對此,本文中采用均值方差標(biāo)準(zhǔn)化方法分別將特征變量f1(x,y)和f2(x,y)轉(zhuǎn)換為正態(tài)分布。假設(shè)fi(x,y)代表某像素點(diǎn)上相應(yīng)的特征值,ji代表當(dāng)前圖像內(nèi)各像素點(diǎn)上fi(x,y)的集合,使用Vi表示ji的均值,σ′i表示ji的標(biāo)準(zhǔn)差,歸一化過程表示為
(7)
然后,構(gòu)建logistic模型假設(shè)函數(shù)。對特征向量進(jìn)行加權(quán)求和,即
z=θ0+θ1x1+θ2x2
(8)
式(8)中:x1和x2為輸入的特征值,在前景檢測中即為檢測信息f1(x,y)和f2(x,y),θ0、θ1和θ2依次為各元素的權(quán)重。完成求和后將z代入sigmoid函數(shù)中,得到假設(shè)函數(shù),即
(9)
式(9)中:sigmoid(z)的取值范圍為(0,1),模型定義:若z>0,sigmoid(z)>0.5,輸出結(jié)果為正類;若z≤0時,sigmoid(z)≤0.5,輸出為負(fù)類,以此達(dá)到二分類效果。
最后,構(gòu)造損失函數(shù),訓(xùn)練回歸分類模型。模型訓(xùn)練的實質(zhì)為求解一組最優(yōu)權(quán)重θ。logistic采用梯度下降法來更新模型中的權(quán)重,優(yōu)化損失函數(shù)J(θ),并在J(θ)上增加權(quán)重向量的L2范數(shù)[19],作為懲罰項來權(quán)衡訓(xùn)練誤差,增加懲罰項后的損失函數(shù),即
(10)
式(10)中:Ns為樣本數(shù)量;yi∈{0,1},表示預(yù)測類別。模型訓(xùn)練的最大迭代次數(shù)設(shè)置為50,系數(shù)α2取值為1。
訓(xùn)練結(jié)束后依據(jù)最佳權(quán)重可求得分割斜線,分類像素點(diǎn),完成前景判定?;趌ogistic回歸的ViBe-TD前景檢測過程如圖3所示。
圖3 ViBe-TD前景檢測流程Fig.3 Process of ViBe-TD foreground detection
ViBe-TD算法前景檢測的視覺效果如圖4所示,計算得兩檢測信息閾值為“R1=39、R2=60”,logistic模型的權(quán)重為“θ0=-2. 771 2、θ1=3. 480 3、θ2=4. 693 6”。對比前文圖1(e)和圖1(f),可以看出,ViBe-TD算法較好融合了兩幀差分法抗噪聲能力強(qiáng)和ViBe算法檢測目標(biāo)較完整的優(yōu)點(diǎn)。
圖4 ViBe-TD前景檢測結(jié)果Fig.4 ViBe-TD foreground detection results
為了驗證所提融合算法的有效性,選取ViBe算法、同類改進(jìn)算法(文獻(xiàn)[10-11]算法)以及ViBe-TD算法進(jìn)行對比實驗,各對比算法均使用原文獻(xiàn)設(shè)置參數(shù)。實驗平臺為CPU: Inter(R) Core(TM) i7-6700HQ CPU @ 2.60GHz 2.59GHz + 16.0G內(nèi)存;Windows10 64位操作系統(tǒng);程序代碼使用Python3.6編寫。實驗隨機(jī)選取CDnet2014數(shù)據(jù)集中Highway視頻序列第119幀(320×240)、Pedestrians第635幀(360×240)、Wet snow第2 465幀(720×540)以及Pets2006第30幀(720×576)作為檢測圖像。因為僅為對比各算法的抗噪聲干擾能力,所以采用不包含運(yùn)動目標(biāo)的真實背景圖像,如圖5所示。實驗結(jié)果分析由定性分析和定量分析兩部分組成。
Highway為存在樹枝晃動的高速公路場景,Pedestrians為存在光照變化的公園場景,Wet snow為雨天下的交通道路場景,Pets2006為光線較暗的地鐵站監(jiān)控場景圖5 背景灰度圖像Fig.5 Background grayscale image
如圖6所示,為4種對比算法在不同場景中運(yùn)動目標(biāo)檢測的視覺效果。其中,各檢測結(jié)果均未經(jīng)過任何形態(tài)學(xué)后處理,驗證算法性能的真值圖像通過labelme軟件人工標(biāo)注獲得。
圖6 4種算法在不同場景中的運(yùn)動目標(biāo)檢測結(jié)果Fig.6 Moving target detection results of four algorithms in different scenes
由圖6可知,ViBe算法雖然在多種不同場景下都檢測出了較完整的運(yùn)動目標(biāo),但由于環(huán)境因素的影響,其檢測結(jié)果中出現(xiàn)了大量背景噪聲,說明ViBe算法的抗噪聲干擾能力不佳。此外,從圖中可以看到,在Pets2006場景中,行人陰影所在的區(qū)域被算法錯誤判定為了前景,說明ViBe對場景中的陰影區(qū)域不敏感,檢測性能有待增強(qiáng)。
文獻(xiàn)[10-11]算法相比ViBe檢測,雖然能夠?qū)Ρ尘霸肼暺鸬揭种菩Ч?但從圖6可以看出,兩改進(jìn)算法的檢測結(jié)果中仍有部分噪聲點(diǎn)殘留。此外,在文獻(xiàn)[10]算法的檢測結(jié)果中,Pets2006場景內(nèi)的陰影問題依舊存在,說明該算法同樣對陰影區(qū)域不敏感,改進(jìn)效果仍有待提高。而文獻(xiàn)[11]算法雖然較好解決了Pets2006場景中的陰影問題,但在Highway和Wet snow場景中,算法在消除噪聲的同時,明顯將車輛的車窗部分錯誤判定為了背景,說明當(dāng)前景目標(biāo)內(nèi)部存在較大灰度差時,該算法容易將部分前景錯誤判定為背景消除,算法的檢測性能具有一定局限性。
相比之下,ViBe-TD算法雖然在Wet snow場景中存在部分前景漏檢的情況,但總體上在4種場景中都較完整的檢測出了運(yùn)動目標(biāo),并且檢測結(jié)果幾乎都沒有受到噪聲的干擾,說明本文所提改進(jìn)算法在較好完成運(yùn)動目標(biāo)檢測任務(wù)的同時,能夠有效消除檢測場景內(nèi)的背景噪聲。
為了量化各算法檢測結(jié)果,選擇前景點(diǎn)精確率P、召回率R和F測度(F1)作為算法性能的評價指標(biāo)[20],三項指標(biāo)的計算式為
(11)
(12)
(13)
式中:TP為算法正確檢測前景點(diǎn)的個數(shù);FP為算法將背景點(diǎn)誤檢為前景點(diǎn)的個數(shù);FN為算法將前景點(diǎn)漏檢為背景點(diǎn)的個數(shù)[21]。三項指標(biāo)的取值范圍為[0,1],指標(biāo)值越大代表算法的前景檢測效果越好[22],其中精確率可以反映算法前景點(diǎn)誤檢的情況,召回率可以反映算法前景點(diǎn)漏檢的情況,F1值能反映算法的綜合檢測效果。
如圖7、圖8和表2所示,可以看出,在前景檢測的精確率上,ViBe-TD、文獻(xiàn)[10-11]算法在4種場景中均高于ViBe算法,說明3種改進(jìn)算法在不同環(huán)境中都能起到消除背景噪聲的作用,對于抑制噪聲都具有良好的適用性和有效性。此外,相比文獻(xiàn)[10-11]改進(jìn)算法,ViBe-TD算法精確率的提升最為明顯,說明在噪聲消除上,ViBe-TD的改進(jìn)效果更優(yōu)。
表2 4種算法性能比較Table 2 Performance comparison of four algorithms
圖7 各算法在不同場景中評價指標(biāo)對比折線圖Fig.7 Comparison of evaluation metrics of each algorithm in different scenarios line graphs
圖8 各算法在4種場景中的平均指標(biāo)值Fig.8 Average metrics values for each algorithm in four scenes
在前景檢測的召回率上,ViBe算法為4種算法中的最高值,其主要原因是,各改進(jìn)算法為了消除場景內(nèi)的噪聲,其前景檢測方式與原算法相比,相當(dāng)于是提高了某個像素點(diǎn)被判定為前景的條件,從而導(dǎo)致部分前景像素點(diǎn)漏檢,后續(xù)可通過形態(tài)學(xué)填充等圖像后處理操作來改善前景漏檢問題,本文為了更直觀的比較各算法的檢測性能,故未對各檢測結(jié)果作圖像后處理操作。此外,從圖表中可以看出,在4種算法中,ViBe-TD和文獻(xiàn)[11]算法在不同檢測場景中的召回率存在較大波動。
在前景檢測的綜合評價指標(biāo)F1上,文獻(xiàn)[10]算法在4種場景下的F1相比于ViBe算法均有所提升,說明該算法整體改進(jìn)效果良好;文獻(xiàn)[11]算法在Highway場景中F1低于ViBe算法,但在其他3種場景中F1相比原算法有所提高,說明該改進(jìn)算法的檢測性能不穩(wěn)定;而ViBe-TD算法在4種場景中的平均F1相比于ViBe算法、文獻(xiàn)[10-11]算法,分別增長了0.188、0.141和0.194,說明ViBe-TD算法的檢測性能相比ViBe算法有明顯提升,改進(jìn)效果也優(yōu)于文獻(xiàn)[10-11]算法。
如表3所示,為4種算法完成單幀圖像檢測分別所需要的時間??梢钥闯?ViBe算法的檢測時間最短,ViBe-TD、文獻(xiàn)[10-11]算法在4種場景中單幀的平均檢測時間相比ViBe算法分別增長了58.79、3.78、1.69 s,三者檢測時長約為原算法的2.39、1.08、1.04倍。說明3種改進(jìn)算法前景檢測的復(fù)雜度相比原算法均有所增加,其中ViBe-TD算法前景檢測的復(fù)雜度最大。
表3 算法單幀檢測時間Table 3 Algorithm single frame detection time
為了解決ViBe算法在運(yùn)動目標(biāo)檢測任務(wù)中存在的噪聲干擾問題,本文對ViBe和兩幀差分算法檢測結(jié)果中的不足之處進(jìn)行了理論分析,并提出了一種融合算法(ViBe-TD)。ViBe-TD通過設(shè)計S-ViBe檢測并引入logistic模型,來融合像素點(diǎn)上的兩幀差分和ViBe檢測信息,以此完成像素點(diǎn)類別的判定,達(dá)到增強(qiáng)原算法抗噪聲干擾能力的效果。在4種不同場景視頻上對ViBe-TD算法進(jìn)行驗證,證明了ViBe-TD算法在保證檢測目標(biāo)總體完整的同時,能夠有效消除場景內(nèi)的背景噪聲。此外,對比實驗結(jié)果顯示,雖然ViBe-TD的復(fù)雜度有所增大,需要更長的檢測時間,但其檢測性能相比原算法有大幅提升,改進(jìn)效果也優(yōu)于同類改進(jìn)算法。