王 帥,蒼 巖
(哈爾濱工程大學(xué),黑龍江 哈爾濱 150000)
視頻監(jiān)控技術(shù)是現(xiàn)代社會中一種有效的安防手段,目前的視頻監(jiān)控系統(tǒng)主要以人工監(jiān)控為主,需要很大的時間和人力成本,而且其中的一些人為因素可能導(dǎo)致丟失重要目標(biāo)。如何智能且高效率地處理監(jiān)控視頻成為一個熱門的研究問題。一個完整的智能視頻監(jiān)控系統(tǒng)中最關(guān)鍵、設(shè)計(jì)最困難的部分是目標(biāo)檢測和目標(biāo)跟蹤兩個部分。
大多數(shù)目標(biāo)跟蹤算法以檢測為基礎(chǔ),根據(jù)檢測的結(jié)果進(jìn)行數(shù)據(jù)關(guān)聯(lián),數(shù)據(jù)關(guān)聯(lián)算法分兩大類,傳統(tǒng)算法和深度學(xué)習(xí)算法,常見的傳統(tǒng)方法有光流法、均值漂移法和粒子濾波法。近年來,深度學(xué)習(xí)技術(shù)迅速發(fā)展,多數(shù)算法偏向于使用深度學(xué)習(xí)。比如經(jīng)典的POI[1]和DeepSORT[2],在2019年之前出現(xiàn)的算法都是檢測和關(guān)聯(lián)兩個部分相互分離的,多數(shù)算法使用數(shù)據(jù)集提供的公版檢測結(jié)果,只研究數(shù)據(jù)關(guān)聯(lián)部分。2019年JDE[3]算法提出,率先將檢測和數(shù)據(jù)關(guān)聯(lián)合二為一,之后便出現(xiàn)了一些類似的算法。2020年騰訊提出了一種鏈?zhǔn)礁櫵惴–Tracker[4],其設(shè)計(jì)的網(wǎng)絡(luò)每次輸出一對節(jié)點(diǎn),形成一條鏈。該算法強(qiáng)調(diào)的是簡潔性,處理遮擋問題時使用常速運(yùn)動模型,而且沒有使用外觀特征進(jìn)行關(guān)聯(lián),因此沒有復(fù)雜的計(jì)算,跟蹤速度較快。
本文設(shè)計(jì)了一種特征提取算法,并以FoveaBox[5]檢測算法為基礎(chǔ),使用mmdetection框架搭建了一個目標(biāo)檢測和數(shù)據(jù)關(guān)聯(lián)結(jié)合的多目標(biāo)跟蹤網(wǎng)絡(luò),使用端到端的訓(xùn)練方式。在數(shù)據(jù)關(guān)聯(lián)部分,除關(guān)聯(lián)分支提取出的外觀特征外,本文還使用卡爾曼濾波算法[9]融合了目標(biāo)的位置及運(yùn)動特征來匹配軌跡與目標(biāo)。對二者均未匹配上的部分,使用IoU重疊度匹配,以最大限度地保證跟蹤性能。
本文的實(shí)驗(yàn)選取了MOT16[7]數(shù)據(jù)集進(jìn)行訓(xùn)練與測試,使用FPN[6]作為主干網(wǎng)絡(luò)得到特征金字塔,后為金字塔中各特征圖限定了負(fù)責(zé)的尺度范圍,再根據(jù)目標(biāo)的尺度,為其匹配相應(yīng)的特征圖,以提高檢測精度。為應(yīng)對擁擠場景下小目標(biāo)的漏檢問題,在訓(xùn)練階段,首先使用專注于密集行人場景的數(shù)據(jù)集CrowdHuman[8]進(jìn)行預(yù)訓(xùn)練,再在其他數(shù)據(jù)集上對網(wǎng)絡(luò)進(jìn)行調(diào)整。本文還對比了關(guān)聯(lián)分支的三元組損失和交叉熵?fù)p失,以及軌跡匹配中的外觀特征匹配、卡爾曼濾波和IoU匹配3種策略。
本文的網(wǎng)絡(luò)結(jié)構(gòu)可以分為檢測和關(guān)聯(lián)(ReID)兩大部分,兩個部分聯(lián)合學(xué)習(xí),使用端到端的方式來訓(xùn)練。在目標(biāo)檢測子任務(wù)中,多數(shù)算法使用基于anchor的方式,但其有一些缺陷,anchor要根據(jù)實(shí)際情況來設(shè)計(jì),比如檢測常規(guī)物體,anchor的寬高比一般要設(shè)置三種比例,而到檢測行人的具體問題就僅需要一種比例,這就缺少了泛化能力;根據(jù)anchor和真值的IoU確定anchor的正負(fù)也會給網(wǎng)絡(luò)增加一些超參數(shù)。本文的檢測部分使用的是FoveaBox,這是一種受人體視覺系統(tǒng)啟發(fā)的anchorfree檢測方式,不需要放置anchor,本文還使用FPN進(jìn)行多尺度預(yù)測,同一目標(biāo)可以在多個特征圖上預(yù)測。
網(wǎng)絡(luò)結(jié)構(gòu)也可以分為4個部分:主干網(wǎng)絡(luò)、分類分支、邊界框回歸分支和關(guān)聯(lián)(ReID)分支。整體網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。其中灰色的部分是關(guān)聯(lián)分支,其具體結(jié)構(gòu)如2.4節(jié)圖2所示。
網(wǎng)絡(luò)的輸入為單張圖片,以及其中行人目標(biāo)對應(yīng)的邊界框、邊界框的中心點(diǎn),圖片首先要經(jīng)過的是主干網(wǎng)絡(luò),主干網(wǎng)絡(luò)的選擇對于后續(xù)的分類匹配等有極其重要的影響,一個好的網(wǎng)絡(luò)能夠提取到目標(biāo)的各種特征,本文采用FPN作為主干網(wǎng)絡(luò),不同于一般的卷積網(wǎng)絡(luò)在最后一層提取特征,該網(wǎng)絡(luò)使用具有橫向連接的自上而下的結(jié)構(gòu)來構(gòu)建特征金字塔,融合了高層豐富的語義特征和低層豐富的位置特征,從而使得后續(xù)的目標(biāo)檢測結(jié)果更加精確。
利用FPN進(jìn)行目標(biāo)檢測時,先生成特征金字塔,其中的每一層用來檢測特定尺度的目標(biāo)。將不同的層使用橫向連接結(jié)合,提取到了不同層次的特征后,將各層特征圖送入3個分支:目標(biāo)分類分支、邊界框回歸分支和關(guān)聯(lián)(ReID)分支。目標(biāo)分類分支預(yù)測每對邊界框的得分,該分支僅區(qū)別前景(行人)和背景,輸出的分?jǐn)?shù)表示前景置信度。邊界框回歸分支用于得到每個目標(biāo)的邊界框。關(guān)聯(lián)分支用來提取目標(biāo)的外觀特征,以在跟蹤時進(jìn)行匹配。
假設(shè)一張圖片中的一個目標(biāo)邊界框的真值為(x1,y1,x2,y2),則其對應(yīng)在特征金字塔的第Pl層,對應(yīng)的坐標(biāo)為:
sl表示Pl層的下采樣因子,訓(xùn)練過程上述坐標(biāo)包圍的區(qū)域被標(biāo)注為正值,其他區(qū)域都標(biāo)注為負(fù)值,分類分支輸出的特征圖中,表示有目標(biāo)的區(qū)域Rpos為:
特征圖的大小為H×W×C,C為通道數(shù),表示目標(biāo)的種類,本文只需要檢測行人這一種目標(biāo),所以輸出的特征圖為一維,圖上每個點(diǎn)的值表示該處存在目標(biāo)的可能性。
若需要對多種類別的對象進(jìn)行區(qū)分,其損失函數(shù)最好選用Focal Loss,但本文中只對行人目標(biāo)感興趣,因此分類分支使用交叉熵?fù)p失。
圖1 整體網(wǎng)絡(luò)結(jié)構(gòu)
本文檢測部分參照FoveaBox,使用anchor-free的方式,不需要放置anchor,直接根據(jù)語義特征圖計(jì)算某個點(diǎn)存在對象的可能性,再對可能存在目標(biāo)的點(diǎn)進(jìn)行邊界框回歸,提高了檢測精度,從而在跟蹤過程中能更精確地提取目標(biāo)特征。
為了解決目標(biāo)尺度的變化問題和適應(yīng)各種不同尺度的目標(biāo),邊界框回歸分支根據(jù)特征金字塔中不同的層次來預(yù)測不同尺度的目標(biāo),每個層有一個基準(zhǔn)尺度rl該層負(fù)責(zé)的尺度范圍為(rl/η,rl×η),實(shí)驗(yàn)中η設(shè)置為2,F(xiàn)PN金字塔的P3~P7層的基準(zhǔn)尺度分別為(16,32,64,128,256)。若一個目標(biāo)的邊界框映射到某一個金字塔層中時,其尺度沒有在該層的尺度范圍中,那么就會被這一層所忽略。也有可能一個目標(biāo)被映射到了多個層,這樣就可以更好地對該目標(biāo)進(jìn)行預(yù)測,因?yàn)橄噜彽奶卣鲗泳哂邢嗨频恼Z義特征,這個目標(biāo)也可以在不同的特征圖中被預(yù)測。傳統(tǒng)的FPN網(wǎng)絡(luò)只會根據(jù)目標(biāo)的尺度,將其映射到一個特征層。
Rpos區(qū)域的每一個點(diǎn){x,y}都對應(yīng)一組邊界框的偏移量,偏移量的計(jì)算方法如下:
對于其中一個特征金字塔層,邊界框回歸分支輸出的特征圖大小為w×h×4,其中w和h為特征圖寬度高度,通道數(shù)4對應(yīng)其4個坐標(biāo)偏移量,偏移量的真值計(jì)算方法是:Rpos區(qū)域?qū)?yīng)的每一個點(diǎn)的4個值按照式(4)~式(7)來計(jì)算,其他位置的值為0。邊界框回歸損失函數(shù)選擇
分類分支和邊界框回歸分支負(fù)責(zé)行人檢測,并稱為檢測分支。為了減少密度高場景中的漏檢現(xiàn)象,本文使用專注于密集行人檢測的數(shù)據(jù)集CrowdHuman對檢測分支進(jìn)行了預(yù)訓(xùn)練。
數(shù)據(jù)關(guān)聯(lián)的主要任務(wù)是識別不同幀中的同一個目標(biāo),需要提取每個目標(biāo)特征,且提取的特征要具有表現(xiàn)力。特征提取方法可以是anchor中心提取、RoI Pooling、目標(biāo)中心提取,使用在目標(biāo)的中心提取的方式。
若一幀中包含M個目標(biāo),F(xiàn)PN輸出的5個特征圖均為256維,取特征圖的第一層,送入關(guān)聯(lián)分支,為了提取更多的目標(biāo)的特征,關(guān)聯(lián)分支中共有4個卷積層,每經(jīng)過一層卷積提取一次,4個分支中輸出的特征維度分別為80、60、40、20,將這些特征拼接,則每個目標(biāo)可以提取的特征維度為200。該分支輸出的維度為M×200。將這些特征送入一個線性分類器,每個特征的輸出維度為當(dāng)前所使用的訓(xùn)練數(shù)據(jù)集中所有目標(biāo)的ID總數(shù)。將線性分類后的特征與目標(biāo)ID的真值計(jì)算損失。其原理圖如圖2所示。
圖2 關(guān)聯(lián)分支結(jié)構(gòu)
式中,[x]+表示最大值函數(shù)max(0,x)。
交叉熵?fù)p失是分類問題中常用的一類損失函數(shù),假設(shè)一個目標(biāo)x的真實(shí)概率分布和預(yù)測概率分布分別為p(x),q(x),則交叉熵?fù)p失可以表示為:
α是先前特征所占的權(quán)重,本實(shí)驗(yàn)設(shè)置為0.9。
算法的整體流程如圖3所示。
圖3 整體算法流程
本文使用MOT16數(shù)據(jù)集進(jìn)行訓(xùn)練和測試,該數(shù)據(jù)集采集自不同的場景,比如廣場、街道、商場等,場景中存在光照、背景變化等多種不確定的因素,為了增強(qiáng)魯棒性,在送入網(wǎng)絡(luò)之前,圖片首先經(jīng)過了一系列的預(yù)處理,包括光度失真、歸一化、水平翻轉(zhuǎn)和隨機(jī)通道轉(zhuǎn)換。
MOT16數(shù)據(jù)集沒有單獨(dú)提供驗(yàn)證集,本文將訓(xùn)練集劃分為兩部分,每個場景的一半為訓(xùn)練集,一半為驗(yàn)證集。
在訓(xùn)練關(guān)聯(lián)分支時,本文選用了三元組損失和交叉熵?fù)p失分別訓(xùn)練了網(wǎng)絡(luò),網(wǎng)絡(luò)整體的損失函數(shù)用3個分支的損失函數(shù)加權(quán)和表示如下:
式中,i={cls,bbox,reid}。
二者對比實(shí)驗(yàn)結(jié)果如表1所示,每項(xiàng)指標(biāo)后標(biāo)注↑的表示值越高,性能越好,標(biāo)注↓的表示值越低,性能越好。
根據(jù)對比結(jié)果,可以看出雖然二者各占3項(xiàng)優(yōu)勢,但MOTP和IDF1兩指標(biāo)基本持平。而對于MOTA和IDSW兩指標(biāo),使用交叉熵?fù)p失訓(xùn)練出的模型要優(yōu)于三元組損失。因此,在測試集上運(yùn)行時,選用交叉熵?fù)p失訓(xùn)練的模型進(jìn)行測試。
本節(jié)做了3組實(shí)驗(yàn),對比了不同的關(guān)聯(lián)方法之間的性能。第1組實(shí)驗(yàn)中僅使用外觀特征匹配,第2組實(shí)驗(yàn)使用外觀特征配合卡爾曼濾波,第3組實(shí)驗(yàn)則同時使用外觀特征、卡爾曼濾波以及IoU匹配。
第2組實(shí)驗(yàn)中,外觀特征與卡爾曼濾波結(jié)合的方法是:首先使用提取到的一幀中所有目標(biāo)的外觀特征,計(jì)算其與當(dāng)前所有軌跡特征的余弦距離,組成親和力矩陣Mdist再根據(jù)卡爾曼濾波計(jì)算所有軌跡狀態(tài)之間的馬氏距離,得到另一矩陣Mmaha,計(jì)算兩矩陣之間的加權(quán)和:
實(shí)驗(yàn)中的λ根據(jù)經(jīng)驗(yàn)取0.98。對于未匹配上的軌跡Tu與邊界框Du,第3組實(shí)驗(yàn)中,再使用IoU匹配,計(jì)算Tu的最后一個邊界框與Du的重疊度。得到一個矩陣Moverlap,根據(jù)該矩陣匹配上一步中匹配失敗的軌跡與邊界框。3組實(shí)驗(yàn)的結(jié)果如表2所示。
表1 交叉熵?fù)p失和三元組損失對比
表2 不同匹配方式實(shí)驗(yàn)結(jié)果
根據(jù)3組實(shí)驗(yàn)的結(jié)果可以得出,使用多特征融合的方式進(jìn)行跟蹤性能要優(yōu)于使用單一特征的性能,因此最后在測試集上運(yùn)行時本文同時使用了3種特征。
本節(jié)中的實(shí)驗(yàn)使用 MOT16 的測試集評估跟蹤結(jié)果的性能,其測試結(jié)果如表3所示。在測試時,一般將未匹配到的軌跡保留20幀,若還未匹配上,則認(rèn)為該條軌跡已經(jīng)消失。如果這個值設(shè)置得太大,可能會將新生的目標(biāo)誤識別成已消失目標(biāo),還會造成內(nèi)存壓力。MOT16-12場景中出現(xiàn)一個特殊情況,440幀左右時發(fā)生嚴(yán)重遮擋,一個從攝像機(jī)后方出現(xiàn)的行人幾乎完全擋住了攝像機(jī)的視線,持續(xù)了20幀后才減輕,如圖4所示,若保留的最大幀數(shù)為20,就會發(fā)生嚴(yán)重錯誤,因此這段視頻中軌跡最大保留30幀。
本文算法與其他算法的對比結(jié)果如表4所示。
表3 MOT16測試集運(yùn)行結(jié)果
表4 不同算法比較結(jié)果
圖4 MOT16-12測試結(jié)果
通過對比實(shí)驗(yàn)發(fā)現(xiàn),本文提出的算法在 MOTA與MT兩項(xiàng)指標(biāo)上超過了其他算法。MOTA是多目標(biāo)跟蹤評價(jià)指標(biāo)中最重要的一個,衡量的是算法的準(zhǔn)確度,MT指標(biāo)表示的是最大丟失,即一個目標(biāo)在整個軌跡中超過80%沒有被覆蓋。本文的MT指標(biāo)是最低的,說明算法穩(wěn)定性較好,不易丟失目標(biāo)。
本文使用深度學(xué)習(xí)方法,以FoveaBox檢測器為基礎(chǔ),使用目前流行的深度學(xué)習(xí)框架mmdetection設(shè)計(jì)了一種特征提取方法,用于提取出具有較強(qiáng)表現(xiàn)力的特征,進(jìn)而構(gòu)建了一個目標(biāo)檢測與數(shù)據(jù)關(guān)聯(lián)相結(jié)合的多目標(biāo)跟蹤網(wǎng)絡(luò),實(shí)現(xiàn)了一步跟蹤。在跟蹤過程中,除提取出的特征外,本文還結(jié)合了卡爾曼濾波器以及IoU匹配方式對軌跡與目標(biāo)進(jìn)行匹配,以最大限度地保證跟蹤性能。本文使用的是公共數(shù)據(jù)集,后續(xù)可以根據(jù)實(shí)際場景自行構(gòu)建數(shù)據(jù)集,以對算法進(jìn)行應(yīng)用。對數(shù)據(jù)集中出現(xiàn)的干擾,如行人倒影、海報(bào)人物等可以專門采集相應(yīng)的數(shù)據(jù)集進(jìn)行訓(xùn)練,增強(qiáng)魯棒性。還可以使用模型蒸餾對模型進(jìn)行壓縮,從而提高運(yùn)行速度。