葛 雯,姜添元
(沈陽航空航天大學(xué)電子與信息工程學(xué)院,遼寧 沈陽 110136)
視頻監(jiān)控一直是計(jì)算機(jī)視覺鄰域的熱門應(yīng)用,監(jiān)控場景中的目標(biāo)識別與跟蹤更是研究熱點(diǎn),其不僅用于日常生活中的交通監(jiān)控、防盜監(jiān)控等,甚至在安防以及軍事鄰域都發(fā)揮著至關(guān)重要的作用。
現(xiàn)階段監(jiān)控場景中常用的目標(biāo)檢測方法為幀間差分法,由于其實(shí)現(xiàn)簡單得到了最為廣泛地應(yīng)用,但是如果視頻中的目標(biāo)移動過快或過慢,就會造成運(yùn)動物體內(nèi)部灰度值相近,物體邊緣輪廓過粗,也就是俗稱的“空洞”和“雙影”現(xiàn)象,對檢測造成不良影響。Minoh M 和 Kameda Y提出了基于幀差分法改進(jìn)的三幀差分法提取目標(biāo),輪廓清晰但效果仍不盡人意。JosephRedmon和Ross Girshick提出的YOLO算法,是將目標(biāo)檢測轉(zhuǎn)換成一個(gè)回歸問題,使檢測速度得到了極大的提升,但精度不高。目標(biāo)跟蹤進(jìn)展要落后于目標(biāo)檢測,其中基于目標(biāo)檢測跟蹤的方法[1],這類方法場景適應(yīng)性強(qiáng),魯棒性高,所以發(fā)展迅速并逐漸普及,其中就以Sort算法[2-5]為代表的,但其對物體遮擋幾乎沒有處理,在有遮擋的情況下準(zhǔn)確度非常低。而Deepsort算法[6]利用YOLO算法選取窗口,卡爾曼濾波進(jìn)行預(yù)測,結(jié)合匈牙利算法匹配出跟蹤目標(biāo)的方法精度高且魯棒性強(qiáng),但在對運(yùn)動目標(biāo)進(jìn)行預(yù)測以及匹配時(shí)工作量很大,有很多無關(guān)要素拖慢運(yùn)行速度。
針對上述這些傳統(tǒng)算法存在的問題,本文從圖像預(yù)處理和圖像分割技術(shù)方面進(jìn)行改善,通過對圖像預(yù)處理和圖像分割中的選擇性搜索來消除干擾,提高檢測跟蹤的準(zhǔn)確率。然而,因?yàn)槭褂脦g差分法對視頻幀進(jìn)行預(yù)處理,增加了流程復(fù)雜度,會相應(yīng)地增加運(yùn)行時(shí)間。而利用K鄰域搜索進(jìn)行篩選目標(biāo)框,消除了很多無關(guān)干擾項(xiàng),減少了預(yù)測和匹配工作量,進(jìn)而縮短時(shí)間。
在對目標(biāo)進(jìn)行檢測時(shí),傳統(tǒng)CNN算法使用滑動窗口思想對候選框內(nèi)的目標(biāo)進(jìn)行識別,在準(zhǔn)確率和定位精度上較有優(yōu)勢,但是實(shí)時(shí)性的視頻流中,檢測的速度才是重中之重,其中YOLO算法將目標(biāo)的檢測問題處理為回歸問題,利用單個(gè)神經(jīng)網(wǎng)絡(luò)直接預(yù)測目標(biāo)邊界和類別概率,實(shí)現(xiàn)端到端的物品檢測,節(jié)省了大量提取邊框的時(shí)間,使得模型的運(yùn)行速度快,可以直接學(xué)習(xí)圖像的全局信息,能更好地應(yīng)用于視頻實(shí)時(shí)檢測[7]。但其準(zhǔn)確性無法和最先進(jìn)的檢測系統(tǒng)相比,難以精確檢測某些對象,包括監(jiān)控視頻中的運(yùn)動目標(biāo)。其對特征提取卷積網(wǎng)絡(luò)圖如圖1,得到bounding boxes坐標(biāo),包括檢測出的目標(biāo)類別以及置信度,然后通過NMS算法[11]篩選出最優(yōu)boxes。
圖1 卷積網(wǎng)絡(luò)圖
本文研究的是視頻圖像,針對視頻幀中的運(yùn)動目標(biāo)檢測,因?yàn)橄噜弮蓭羞\(yùn)動目標(biāo)的位置差別不大,對應(yīng)在圖像上來說就是兩幀只有運(yùn)動的目標(biāo)的像素點(diǎn)會發(fā)生變化。利用幀間差分法[8]將視頻兩幀圖像做差分,將不同像素點(diǎn)相減,通過減去圖像中灰度信息不變或者變動幅度小于某個(gè)閾值的部分,求出灰度信息變化較大的部分,從而就能檢測出視頻中的運(yùn)動目標(biāo)。
圖2 二幀差分法流程圖
這里用到的是二幀差分法,其流程圖如圖2。將視頻中的第n幀和第n-1幀圖像記為fn和fn-1,兩幀對應(yīng)像素點(diǎn)的灰度值記為fn(x,y)和fn-1(x,y),將兩幀圖像對應(yīng)像素點(diǎn)的灰度值進(jìn)行相減,并取其絕對值,得到差分圖像Dn
Dn(x,y)=|fn(x,y)-fn-1(x,y)|
(1)
設(shè)定閾值T,逐個(gè)對像素點(diǎn)進(jìn)行二值化處理,得到二值化圖像Rn。其中,灰度值為255的點(diǎn)即為前景點(diǎn),灰度值為0的點(diǎn)即為背景點(diǎn);對圖像Rn進(jìn)行連通性分析,最終可得到含有完整運(yùn)動目標(biāo)的圖像Rn
(2)
但二幀差分僅選取一段視頻中的相鄰兩幀進(jìn)行處理,在運(yùn)行實(shí)驗(yàn)中發(fā)現(xiàn)對運(yùn)動目標(biāo)的檢測效果很差,魯棒性不足,所以為了得到更好的結(jié)果圖,為了避免光線等因素引起的噪聲擾亂圖像的可觀測信息,對圖像造成亮、暗點(diǎn)干擾,從而降低了圖像質(zhì)量,影響圖像特征提取、圖像識別等后繼工作的進(jìn)行。所以這里先對圖像進(jìn)行預(yù)處理,第一步是將圖像灰度化,然后為對灰度化處理后的圖像進(jìn)行高斯模糊,對相鄰兩視頻幀進(jìn)行差分時(shí),忽略掉與上一幀較小的差別,最后得到差分處理圖。
由于監(jiān)控場景中的目標(biāo)檢測只需檢測出運(yùn)動目標(biāo),若使用YOLO算法則需將視頻幀圖像分成S×S個(gè)網(wǎng)格,每個(gè)單元格還需預(yù)測B個(gè)邊界框,進(jìn)而檢測出目標(biāo),這樣難免做了很多無用功,而若先對視頻幀進(jìn)行預(yù)處理,即二幀差分,得到運(yùn)動目標(biāo)的候選框,利用YOLO算法中的卷積神經(jīng)網(wǎng)絡(luò)[9-11]進(jìn)行預(yù)測篩選,保證每個(gè)邊界框都含有目標(biāo),也就是說Pr(object)=1,Pr(object)是這個(gè)邊界框含有目標(biāo)的可能性大小,而邊界框的準(zhǔn)確度可以用預(yù)測框與實(shí)際框的IOU來表示,記為IOU,則置信度可以定義為Pr(object)。對于每個(gè)單元給出C個(gè)類別概率值(各個(gè)邊界框置信度下的條件概率),記為Pr(classi丨object),這樣排除了該幀靜止目標(biāo)的干擾,只檢測運(yùn)動目標(biāo),從而大大地提高了運(yùn)行速度和精度,效果如圖3。
圖3 改進(jìn)YOLO算法效果圖
基于檢測的跟蹤主要涉及的問題就是檢測之后的預(yù)測、匹配、更新問題,簡單說就是要準(zhǔn)確地將上一幀中的目標(biāo)匹配定位到下一幀中,若使用一個(gè)8維空間展示某時(shí)刻的軌跡狀態(tài),分別記錄目標(biāo)的中心點(diǎn)坐標(biāo)、縱橫比、圖片高度以及這四個(gè)信息對應(yīng)的運(yùn)動速度。通過卡爾曼濾波對目標(biāo)預(yù)測,將得到的預(yù)測目標(biāo)框與當(dāng)前的目標(biāo)框計(jì)算馬氏距離,當(dāng)其值小于規(guī)定的閾值時(shí),則說明預(yù)測到的目標(biāo)框是合理準(zhǔn)確的,從而完成對目標(biāo)的跟蹤。其具體的標(biāo)準(zhǔn)公式如下
(3)
其中d(1)(i,j)表示第j個(gè)檢測目標(biāo)和第i條軌跡之間的運(yùn)動匹配度,其中Si是軌跡使用卡爾曼濾波器后預(yù)測出當(dāng)前時(shí)刻觀測空間的協(xié)方差矩陣,yi表示軌跡在當(dāng)前時(shí)刻的預(yù)測觀測量,di則為第j個(gè)檢測目標(biāo)的位置信息。
僅使用馬氏距離來作為預(yù)測標(biāo)準(zhǔn)會導(dǎo)致關(guān)聯(lián)不準(zhǔn)確即ID不停變化,所以使用預(yù)測目標(biāo)和軌跡中含有的預(yù)測目標(biāo)的特征向量之間的最小余弦值作為表觀匹配程度衡量預(yù)測準(zhǔn)確度。其表達(dá)式如下
(4)
c(i,j)=λd(1)(i,j)+(1-λ)d(2)(i,j)
(5)
最后引入匈牙利算法檢測當(dāng)前幀的某個(gè)目標(biāo),是否與前一幀的某個(gè)目標(biāo)相同。為了避免一條軌跡被遮擋了一段時(shí)間或長時(shí)間丟幀后,卡爾曼濾波器預(yù)測會導(dǎo)致概率彌散的問題,采用級聯(lián)匹配保證預(yù)測的目標(biāo)就是被遮擋前或長時(shí)間丟幀前的目標(biāo)。Deepsort算法采用的就是上述的思想,在得到檢測目標(biāo)后準(zhǔn)確地定位到下一幀中該目標(biāo)的位置信息。
因跟蹤目標(biāo)在相鄰的兩視頻幀中的位移不會過大,而多目標(biāo)視頻跟蹤過程中使用文中檢測方法會有很多的運(yùn)動目標(biāo),不同的運(yùn)動目標(biāo)在使用Deepsort算法進(jìn)行跟蹤時(shí)產(chǎn)生的不同的目標(biāo)框以及預(yù)測的目標(biāo)框在匹配時(shí)難免會互相干擾,增加了很多處理時(shí)間。所以在使用YOLO算法選取運(yùn)動目標(biāo)的目標(biāo)框時(shí)引入K鄰域搜索,在上一幀檢測出的目標(biāo)框?yàn)榛A(chǔ)框,后一幀搜索區(qū)域在上一幀基礎(chǔ)框周圍,并滿足搜索區(qū)域中心點(diǎn)與基礎(chǔ)框中心點(diǎn)位置一致,同時(shí)保證寬高比(記為K)一致。示意圖如圖4,紅色笑臉為目標(biāo)物體,綠色框?yàn)榍耙粠媚繕?biāo)框,紅色框?yàn)楫?dāng)前幀K鄰域搜索矩陣框,其中K=2。
圖4 K鄰域搜索示意圖
利用此方法在卡爾曼濾波預(yù)測出預(yù)測目標(biāo)框時(shí),僅將出現(xiàn)在K鄰域內(nèi)的預(yù)測目標(biāo)框與上一幀的目標(biāo)框進(jìn)行匹配,通過匈牙利算法驗(yàn)證是否正確,若不正確,則增加K的值,擴(kuò)大K鄰域搜索范圍,直到匹配成功。這有效減少了工作量,篩選去除在K鄰域之外的無用目標(biāo)框,并增加運(yùn)動目標(biāo)的檢出率,提高跟蹤效果。
同時(shí),為了保證跟蹤目標(biāo)的準(zhǔn)確性,在算法中引入“軌跡展示”,即將每個(gè)跟蹤目標(biāo)在幀與幀之間的運(yùn)動軌跡展示出來,這樣就可以保證跟蹤目標(biāo)不會發(fā)生跳脫與丟失,保證跟蹤準(zhǔn)確性。
在實(shí)際監(jiān)控場景中進(jìn)行運(yùn)動目標(biāo)的檢測與跟蹤時(shí),輸入監(jiān)控視頻,通過融合幀間差分法的YOLO算法檢測出每一幀中的運(yùn)動目標(biāo),并提取出目標(biāo)框后,引入K鄰域搜索,對運(yùn)動目標(biāo)框加以限制,結(jié)合卡爾曼濾波進(jìn)行預(yù)測下一幀某一運(yùn)動目標(biāo)的目標(biāo)框,然后利用匈牙利算法將兩者完成匹配,從而達(dá)到跟蹤目標(biāo)的目的。
為了驗(yàn)證真實(shí)監(jiān)控場景下算法的可行性,這里使用的視頻圖像來源于某街道,以多目標(biāo)檢測與跟蹤驗(yàn)證這里算法的可行性。將二幀差分法、YOLO算法和融合幀間差分法的YOLO算法的數(shù)據(jù)集對目標(biāo)的檢測進(jìn)行對比,同樣都選取視頻1第23幀進(jìn)行處理,勘驗(yàn)效果如圖5。從對比處理圖可以看出:二幀差分雖說可以檢測出運(yùn)動目標(biāo),但對同一目標(biāo)精度不高,YOLO算法會檢測出當(dāng)前幀的所有物體,誤檢過多,無法很好完成檢測目的,而改進(jìn)算法很好地提取出了當(dāng)前幀的運(yùn)動目標(biāo)以及其識別準(zhǔn)確率。
圖5 不同方法對比圖
通過表1(對視頻進(jìn)行目標(biāo)檢測的速度及mAP對比表)并結(jié)合圖5對比可以看得出,處理相同視頻幀時(shí),二幀差分可以檢測出運(yùn)動目標(biāo),但是由于其自身的缺點(diǎn)——空洞和雙影現(xiàn)象導(dǎo)致檢測效果不盡人意,普通YOLO算法雖速度夠快,但準(zhǔn)確率較低,而且不能檢測出運(yùn)動的目標(biāo),而這里使用的融合幀間差分法的YOLO算法雖然速度有些許降低,但其不僅能檢測出當(dāng)前幀的運(yùn)動目標(biāo),且準(zhǔn)確率較高,mAP增長了1.24倍。
表1 實(shí)驗(yàn)結(jié)果
通過表1(對視頻進(jìn)行目標(biāo)檢測的速度及mAP對比表)并結(jié)合圖5對比可以看得出,處理相同視頻幀時(shí),二幀差分可以檢測出運(yùn)動目標(biāo),但是由于其自身的缺點(diǎn)——空洞和雙影現(xiàn)象導(dǎo)致檢測效果不盡人意,普通YOLO算法雖速度夠快,但準(zhǔn)確率較低,而且不能檢測出運(yùn)動的目標(biāo),而這里使用的融合幀間差分法的YOLO算法雖然速度有些許降低,但其不僅能檢測出當(dāng)前幀的運(yùn)動目標(biāo),且準(zhǔn)確率較高,mAP增長了1.24倍。
同樣為了驗(yàn)證跟蹤算法的可行性,這里使用街道或公路視頻對幾種跟蹤算法進(jìn)行對比。這里分別使用經(jīng)典Sort算法、Deepsort算法和這里改進(jìn)的Deepsort算法對視頻處理,進(jìn)行比對以勘驗(yàn)效果。同取視頻2的33幀與35幀、取視頻3的12幀與15幀進(jìn)行處理,效果如圖6。
圖6 不同跟蹤方法對比圖
很明顯的可以看到,Sort算法因其自身的缺點(diǎn)跟蹤效果并不好,Deepsort算法和改進(jìn)的Deepsort算法有較好的檢出率,改進(jìn)的Deepsort算法有更好地準(zhǔn)確率,并將視頻中的跟蹤目標(biāo)軌跡標(biāo)注了出來。然后使用中心點(diǎn)距離誤差、平均速度以及準(zhǔn)確率來衡量三者差別。其中中心點(diǎn)距離誤差是指預(yù)測目標(biāo)中心點(diǎn)和實(shí)際目標(biāo)中心點(diǎn)的歐氏距離,其算式為
(6)
式中,xp1,yp1,xp2,yp2分別表示預(yù)測目標(biāo)中心點(diǎn)坐標(biāo)和實(shí)際目標(biāo)中心點(diǎn)坐標(biāo)。取視頻1中的黑色汽車為驗(yàn)證目標(biāo),計(jì)算其從第0幀到第40幀的歐氏距離,得到部分可視化結(jié)果如圖7所示。
圖7 不同算法的歐氏距離
從圖中數(shù)據(jù)和曲線可以得出,Deepsort算法和改進(jìn)的Deepsort算法表現(xiàn)總體比經(jīng)典Sort算法優(yōu)良很多,Sort算法當(dāng)出現(xiàn)目標(biāo)被遮擋時(shí)歐氏距離會突增。而改進(jìn)的Deepsort算法中心點(diǎn)距離誤差平均值為21.6,相比Deepsort算法的28提升了1.3倍。
表2 實(shí)驗(yàn)結(jié)果
如表2所示,這里所使用的改進(jìn)Deepsort算法跟蹤速度比Sort算法減少了6%、比Deepsort減少了5%;而準(zhǔn)確率比Deepsort提高了2%。
為了驗(yàn)證復(fù)雜條件下目標(biāo)被遮擋的情況改進(jìn)的Deepsort算法的表現(xiàn),采用一段公路視頻分別用Sort算法和改進(jìn)Deepsort算法進(jìn)行對比,查看效果。同取視頻4中的出現(xiàn)目標(biāo)遮擋情況的17幀、20幀與23幀進(jìn)行檢驗(yàn),效果如圖8。
圖8 不同算法應(yīng)對遮擋情況效果圖
從圖8可以看出,在使用Sort算法進(jìn)行視頻跟蹤時(shí),17幀中的“人”被遮擋,23幀中的同一“人”ID發(fā)生改變,即被跟蹤為另一目標(biāo)。而改進(jìn)的跟蹤算法對同一目標(biāo)進(jìn)行跟蹤時(shí),即使目標(biāo)被遮擋,也會在后續(xù)幀匹配到同一目標(biāo),對發(fā)生遮擋情況下有很好的魯棒性。
文中所提出的改進(jìn)方法,在解決了傳統(tǒng)算法自身存在的不足的同時(shí),對運(yùn)行時(shí)間、準(zhǔn)確率和誤檢率都加以改善,下面對檢測、跟蹤的研究進(jìn)行總結(jié):①在檢測方面,融合幀間差分法的YOLO算法mAP比傳統(tǒng)YOLO算法增長了1.24倍;②在跟蹤方面,改進(jìn)的Deepsort算法比傳統(tǒng)Deepsort算法運(yùn)行時(shí)間減少了5%;③目標(biāo)跟蹤準(zhǔn)確率提高了2個(gè)百分點(diǎn);④在應(yīng)對遮擋場景時(shí)也能很好地跟蹤目標(biāo)。
但仍然存在不足之處,比如在檢測時(shí)因?yàn)閷D像進(jìn)行預(yù)處理導(dǎo)致運(yùn)行時(shí)間有所增加,這就需要更好地升級YOLO算法提高檢測效率,在保證準(zhǔn)確率的同時(shí)縮短運(yùn)行時(shí)間。