孫洪迪 賈民政 楊民峰
(北京工業(yè)職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,北京 100042)
近年來(lái),視頻監(jiān)控已經(jīng)逐漸從銀行、工業(yè)生產(chǎn)控制、安防等特定市場(chǎng)向大眾市場(chǎng)進(jìn)行拓展,如智能家居、無(wú)人駕駛、智能交通等新興領(lǐng)域逐漸興起,視頻監(jiān)控行業(yè)的飛速發(fā)展對(duì)視頻目標(biāo)檢測(cè)算法與系統(tǒng)的性能與準(zhǔn)確性提出了更高的要求。然而在當(dāng)前互聯(lián)網(wǎng)的大環(huán)境下,視頻數(shù)量呈爆炸性增長(zhǎng),視頻質(zhì)量、大小參差不齊,并且每幀視頻中的物體大小、尺寸以及數(shù)量都不確定。在拍攝過(guò)程中,如果視角移動(dòng)還會(huì)出現(xiàn)畫面模糊、待檢測(cè)目標(biāo)發(fā)生扭曲等問(wèn)題,同時(shí)還伴隨有光線強(qiáng)度、遮擋等外界的環(huán)境影響,這就要求視頻目標(biāo)檢測(cè)算法必須具有良好的魯棒性。另外系統(tǒng)面向的用戶大多是不熟悉代碼的普通用戶,因此必須設(shè)計(jì)出簡(jiǎn)單界面來(lái)簡(jiǎn)化操作,使其適應(yīng)所有用戶,同時(shí)檢測(cè)結(jié)果需要使用邊界框?qū)﹃P(guān)鍵物體進(jìn)行位置標(biāo)注,并明確指出該物體所屬的類別。
目標(biāo)檢測(cè)就是以確定視頻圖像中的目標(biāo)大小和位置為主要任務(wù),是機(jī)器視覺領(lǐng)域中的一個(gè)核心問(wèn)題。不過(guò)由于受光照的變化、物體遮擋和復(fù)雜的背景條件等眾多因素的影響,目標(biāo)檢測(cè)一直是機(jī)器視覺領(lǐng)域最具有挑戰(zhàn)性的問(wèn)題。
目前相對(duì)主流的目標(biāo)檢測(cè)算法有R-CNN[1],F(xiàn)aster R-CNN[2-3],YOLO[4-6]。R-CNN分為目標(biāo)proposal和目標(biāo)分類2大步,F(xiàn)aster R-CNN把R-CNN中的2步作為同一網(wǎng)絡(luò)的不同分支來(lái)分別進(jìn)行輸出,可以將計(jì)算時(shí)間大大縮短。YOLO系列則直接省略了2個(gè)分支,通過(guò)1個(gè)網(wǎng)絡(luò)來(lái)同時(shí)將目標(biāo)的位置、分類進(jìn)行輸出。
近年來(lái),目標(biāo)檢測(cè)算法已成為當(dāng)前機(jī)器視覺領(lǐng)域的熱點(diǎn)問(wèn)題,其中孿生網(wǎng)絡(luò)相關(guān)的高效算法不斷涌現(xiàn)[7-8],在目標(biāo)檢測(cè)與追蹤中得到了廣泛的應(yīng)用。
孿生網(wǎng)絡(luò)是一種使用2個(gè)或多個(gè)相同子神經(jīng)網(wǎng)絡(luò)進(jìn)行度量學(xué)習(xí)的一種方法,其結(jié)構(gòu)圖如圖1所示。孿生網(wǎng)絡(luò)的主要思想是使用2個(gè)或多個(gè)相同的網(wǎng)絡(luò)來(lái)處理輸入,即訓(xùn)練樣本與測(cè)試樣本被分別輸入到2個(gè)相同的CNN中,得到2個(gè)特征向量,再經(jīng)過(guò)計(jì)算彼此間的距離(L1)來(lái)判斷相似度高低,最后通過(guò)相似度來(lái)判定兩者是否為一類。
圖1 孿生網(wǎng)絡(luò)結(jié)構(gòu)圖
Luca Bertinetto等[9]提出的SiamFC把深度卷積網(wǎng)絡(luò)當(dāng)成一個(gè)普遍適應(yīng)的相似性的學(xué)習(xí)問(wèn)題,利用全卷積網(wǎng)絡(luò)對(duì)網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改造,雖然實(shí)時(shí)性已經(jīng)得到了滿足,但是并不具備邊界框回歸,因而只能對(duì)多尺度進(jìn)行測(cè)試,致使它的美觀程度、精確度以及魯棒性并不如意。LI B等[10]提出的SiamRPN在其基礎(chǔ)上引入RPN模塊,使用tracker可以對(duì)目標(biāo)物體的形狀、位置進(jìn)行回歸操作,從而無(wú)需進(jìn)行多尺度的測(cè)試,提高了性能和速度,但是分類與回歸分支參數(shù)量不平衡是它最主要的缺陷。ZHU Z等[11]提出的DaSiamRPN針對(duì)SiamRPN中正負(fù)樣本塊分配不均衡問(wèn)題以及樣本塊的豐富性問(wèn)題做出了改進(jìn),在訓(xùn)練孿生網(wǎng)絡(luò)時(shí),對(duì)網(wǎng)絡(luò)通過(guò)構(gòu)造語(yǔ)意樣本的策略來(lái)加強(qiáng)其判別能力,使其更加關(guān)注輸入的數(shù)據(jù),在搜索區(qū)域中尋找與模板差別最小的物體。
通過(guò)對(duì)孿生網(wǎng)絡(luò)及其算法分析,發(fā)現(xiàn)原先的孿生跟蹤網(wǎng)絡(luò)主要通過(guò)滑動(dòng)的方法來(lái)對(duì)目標(biāo)與搜索區(qū)域的相似程度進(jìn)行計(jì)算,這種設(shè)計(jì)有2個(gè)缺陷:(1)在目標(biāo)的檢測(cè)過(guò)程中,當(dāng)檢測(cè)幀的目標(biāo)進(jìn)行移動(dòng)時(shí),相應(yīng)地響應(yīng)位置也會(huì)做等量移動(dòng);(2)將搜索區(qū)域圖像輸入到網(wǎng)絡(luò)后,得到的結(jié)果與模板區(qū)域得到的結(jié)果是一致的。這2個(gè)缺陷會(huì)導(dǎo)致網(wǎng)絡(luò)出現(xiàn)2種限制,即網(wǎng)絡(luò)具有平移不變性和目標(biāo)相似度的限制。
當(dāng)前的深度網(wǎng)絡(luò)都具備大量的padding,而這些padding會(huì)對(duì)孿生網(wǎng)絡(luò)的平移不變性造成破壞,使得深度網(wǎng)絡(luò)都不具備平移不變性。因此當(dāng)利用深度網(wǎng)絡(luò)對(duì)特征進(jìn)行提取時(shí),如果繼續(xù)采用將正樣本放在中心的策略,就會(huì)使網(wǎng)絡(luò)產(chǎn)生位置偏見。而采取正樣本均勻分布的策略,在特征提取時(shí),可使因?yàn)槠茐牧似揭撇蛔冃远斐蓪W(xué)習(xí)到位置偏見的問(wèn)題得到有效的緩解,同時(shí)為在目標(biāo)檢測(cè)中更好地利用深度網(wǎng)絡(luò)做了準(zhǔn)備。
對(duì)于目標(biāo)相似度的限制,由于使用回歸代替相似度的計(jì)算時(shí),采用的是非對(duì)稱結(jié)構(gòu),從而產(chǎn)生了另一個(gè)阻礙利用深度網(wǎng)絡(luò)的因素,即對(duì)目標(biāo)進(jìn)行分類與回歸時(shí)所需要特征是不對(duì)稱的。為了解決這個(gè)問(wèn)題,采用深度交叉相關(guān)的信息關(guān)聯(lián)策略。
在孿生網(wǎng)絡(luò)中,相似度衡量是一個(gè)非常重要的步驟。如SiamFC采取獲取待測(cè)物體位置信息的單通道的響應(yīng)圖的方式。而SiamRPN則在做相關(guān)性計(jì)算之前添加了2個(gè)卷積層來(lái)對(duì)通道進(jìn)行擴(kuò)展,但是因?yàn)橐肓薬nchor,所以嚴(yán)重影響了參數(shù)分布的平衡,使得特征提取層中參數(shù)的數(shù)量要遠(yuǎn)遠(yuǎn)少于RPN層中的參數(shù)數(shù)量,這直接導(dǎo)致了算法在后期難以實(shí)現(xiàn)高效的訓(xùn)練與優(yōu)化。因此,利用互相關(guān)層來(lái)對(duì)信息實(shí)現(xiàn)關(guān)聯(lián),以解決參數(shù)多且不平衡的問(wèn)題。因?yàn)樵谶M(jìn)入RPN層的時(shí)候,需要通過(guò)1個(gè)卷積層來(lái)對(duì)通道數(shù)進(jìn)行提升,這就產(chǎn)生了大量的參數(shù)。為此,使用DW卷積來(lái)對(duì)以上方案做出改進(jìn),每一個(gè)通道只對(duì)這一個(gè)通道的卷積操作負(fù)責(zé)。改進(jìn)后,該層所擁有的參數(shù)大大減少,并且在計(jì)算量大大減少的同時(shí),2個(gè)分支所擁有的參數(shù)也達(dá)到了平衡狀態(tài)。DW卷積結(jié)構(gòu)如圖2所示。
圖2 DW卷積結(jié)構(gòu)
通過(guò)上述的改良,克服了孿生網(wǎng)絡(luò)的限制,使得孿生網(wǎng)絡(luò)具備了學(xué)習(xí)并訓(xùn)練深度網(wǎng)絡(luò)(如ResNet-50)的條件。
孿生網(wǎng)絡(luò)對(duì)深度網(wǎng)絡(luò)的處理不盡人意,本算法通過(guò)改進(jìn)使得siamese網(wǎng)絡(luò)可以學(xué)習(xí)并處理深度網(wǎng)絡(luò),同時(shí)采用多個(gè)層次特征進(jìn)行融合的方式更好地獲取網(wǎng)絡(luò)的語(yǔ)義特征。為了使算法達(dá)到速度的要求,采用逐個(gè)通道進(jìn)行計(jì)算的策略,實(shí)現(xiàn)分類和回歸的目的,大大減少計(jì)算量。
系統(tǒng)最終構(gòu)建的主干網(wǎng)絡(luò)如圖3所示。
圖3 系統(tǒng)主干網(wǎng)絡(luò)
從圖3可以看出,本系統(tǒng)主干網(wǎng)絡(luò)在RestNet-50網(wǎng)絡(luò)的基礎(chǔ)上對(duì)conv4,conv5塊進(jìn)行修改,使其具備步幅的同時(shí),將最后2個(gè)塊的stride改為8 pix,這樣做有益于孿生網(wǎng)絡(luò)的訓(xùn)練與預(yù)測(cè);同時(shí)通過(guò)人為加大卷積核內(nèi)部元素之間的距離,擴(kuò)大卷積來(lái)達(dá)到增加其感受野的目的,即在每個(gè)block的輸出之后,增加1個(gè)用來(lái)減少通道數(shù)的1×1卷積層。當(dāng)輸入目標(biāo)模板與檢測(cè)幀2個(gè)特征圖進(jìn)行網(wǎng)絡(luò)的學(xué)習(xí)和訓(xùn)練時(shí),網(wǎng)絡(luò)會(huì)將stage3,stage4和stage5中獲得的結(jié)果通過(guò)RPN網(wǎng)絡(luò)進(jìn)行多層特征融合,即抽取stage3,stage4和stage5中的最后3個(gè)模塊的特征分別進(jìn)行分類和回歸操作,最后將結(jié)果進(jìn)行級(jí)聯(lián)操作。
個(gè)人理財(cái)?shù)膶I(yè)人才主要從事理財(cái)中介機(jī)構(gòu)(理財(cái)公司、理財(cái)媒體等)和金融機(jī)構(gòu)(包括銀行、證券、保險(xiǎn)、信托、基金等),同時(shí)也能從事企事業(yè)單位財(cái)務(wù)工作。因此,具備專業(yè)性、實(shí)操性、復(fù)合型的人才,才能勝任日益變化的金融工作。[5]
系統(tǒng)的RPN網(wǎng)絡(luò)由2個(gè)分支組成,一個(gè)是用于對(duì)目標(biāo)和所在背景進(jìn)行區(qū)分的分類分支,而另一個(gè)則是通過(guò)對(duì)候選區(qū)域調(diào)整,實(shí)現(xiàn)邊界回歸的回歸分支。首先該模塊將從stage3,stage4和stage5中提取到的模板特征和待檢測(cè)的視頻幀的特征,分別各自通過(guò)1個(gè)卷積層進(jìn)行卷積,注意這2個(gè)卷積層的參數(shù)與權(quán)重并不是完全一致的,即這2個(gè)卷積層的參數(shù)并不進(jìn)行共享操作;然后利用DW卷積分別對(duì)其再次卷積操作;最后得到的分支再分別進(jìn)行不同的卷積操作,以達(dá)到理想的分類與回歸效果。
YOLOv3主要是針對(duì)比較多的分類(如1 000類)而設(shè)計(jì)的,對(duì)于類別較少的分類操作其效果并不理想。相比較而言,本算法采用的網(wǎng)絡(luò)更加簡(jiǎn)潔、訓(xùn)練收斂的速度更快,更加適用于分類較少的場(chǎng)景。
目標(biāo)檢測(cè)追蹤必須具備表現(xiàn)形式豐富的特點(diǎn),這些表現(xiàn)形式包括可擴(kuò)展性大小、分辨率高低。即使網(wǎng)絡(luò)的深度足夠深,其每一層具有的特征也是有限的,在引進(jìn)了ResNet-50這種深度網(wǎng)絡(luò)之后,對(duì)不同的層次進(jìn)行融合和級(jí)聯(lián)可以有效提高目標(biāo)識(shí)別的效率。
以前的孿生網(wǎng)絡(luò)學(xué)習(xí)的都是比較淺層的網(wǎng)絡(luò),其提取的特征缺少語(yǔ)義特征。而深層網(wǎng)絡(luò)中不同層次獲得的特征會(huì)有所差異,而且具有豐富的語(yǔ)義特征。同時(shí)在視覺跟蹤中需要豐富多樣的表現(xiàn)形式,因此,將多層次的特征進(jìn)行融合可以有效提高識(shí)別和定位的準(zhǔn)確率。
YOLOv3中通過(guò)采用類似FPN的融合策略來(lái)增強(qiáng)算法的精確度,即從不同尺度的特征圖中提取特征并進(jìn)行特征融合,最后融合了3個(gè)特征層并在其特征圖上進(jìn)行檢測(cè)。
與YOLOv3不同,本算法采用多層特征融合的方法,系統(tǒng)網(wǎng)絡(luò)將后3個(gè)塊的輸出結(jié)果輸入到RPN模塊中,進(jìn)行分類與邊界的計(jì)算,同時(shí)3個(gè)RPN模塊的分辨率一致,因此進(jìn)行融合也非常簡(jiǎn)單,直接對(duì)其進(jìn)行線性加權(quán)求和即可。
筆者最終實(shí)現(xiàn)的系統(tǒng)使用Python語(yǔ)言編寫,通過(guò)GPU對(duì)算法中的大部分深度網(wǎng)絡(luò)進(jìn)行運(yùn)算,從而使深度網(wǎng)絡(luò)的訓(xùn)練與預(yù)測(cè)速度進(jìn)一步地提高。網(wǎng)絡(luò)構(gòu)造部分采用Jupyter Notebook完成,并通過(guò)與CUDA相結(jié)合進(jìn)行模型訓(xùn)練。另外,通過(guò)Pycharm與Qt Designer相結(jié)合的方式編寫圖形用戶界面(GUI),用戶可以在UI界面中通過(guò)選擇訓(xùn)練完成的模型以及待檢測(cè)視頻,完成對(duì)視頻中目標(biāo)的準(zhǔn)確快速識(shí)別。
為了驗(yàn)證系統(tǒng)識(shí)別現(xiàn)實(shí)生活目標(biāo)的有效性和普遍適應(yīng)性,將系統(tǒng)跟蹤器運(yùn)行在OTB數(shù)據(jù)集上完成驗(yàn)證。同時(shí)為了更好地驗(yàn)證系統(tǒng)跟蹤器性能,配置1個(gè)YOLOv3跟蹤器,分別對(duì)其與系統(tǒng)跟蹤器進(jìn)行試驗(yàn),并對(duì)結(jié)果進(jìn)行比較分析。
系統(tǒng)跟蹤器與YOLOv3跟蹤器在OTB數(shù)據(jù)集上運(yùn)行得到的平均效果如表1所示。
表1 平均效果對(duì)比
系統(tǒng)跟蹤器與YOLOv3跟蹤器在OTB數(shù)據(jù)集上運(yùn)行得到的單獨(dú)類效果對(duì)比如表2所示。
表2 單獨(dú)類效果對(duì)比
從表1可以看到,系統(tǒng)跟蹤器在成功率與精度上都超過(guò)了YOLOv3,在成功率上比YOLOv3高出了5.7%,精度也超過(guò)了4.5%左右。而從表2可以看到,對(duì)單獨(dú)類的識(shí)別效果系統(tǒng)跟蹤器也有明顯的提升。
為研究目標(biāo)檢測(cè)領(lǐng)域重點(diǎn)關(guān)注的問(wèn)題,依次從目標(biāo)形變、尺度變化、目標(biāo)遮擋等方面對(duì)兩者進(jìn)行結(jié)果比較。為了更直觀地呈現(xiàn)結(jié)果,采用以下2種圖示方式:
(1)成功圖(Success Plot)。視頻中重合率(OS)大于閾值的視頻幀數(shù)與所有幀數(shù)的百分比,重合率的范圍為0~1。計(jì)算方法為:OS=|m∩n|/|m∪n|,其中,| |表示某個(gè)區(qū)域內(nèi)所擁有的像素的數(shù)量,m為算法得到的目標(biāo)位置,n為人工標(biāo)注的目標(biāo)所在位置。
(2)精度圖(precision plot)。算法檢測(cè)的目標(biāo)位置中心點(diǎn)與人工進(jìn)行標(biāo)注的目標(biāo)中心點(diǎn)之間的距離小于閾值的視頻幀數(shù)與總幀數(shù)的百分比,當(dāng)閾值不一樣的時(shí)候,百分比也就不相同。
當(dāng)目標(biāo)發(fā)生變形時(shí),2種跟蹤器的性能比較如圖4所示。圖4(a)表示在目標(biāo)發(fā)生變形后,目標(biāo)檢測(cè)成功率隨閾值增大而形成的曲線,圖4(b)表示精度的變化。從圖4可以看出,盡管目標(biāo)發(fā)生變形,2種跟蹤器還是會(huì)對(duì)目標(biāo)進(jìn)行比較準(zhǔn)確的預(yù)測(cè)。其中,不論是成功率還是精度,系統(tǒng)跟蹤器都要優(yōu)于YOLOv3。在成功率上,系統(tǒng)的跟蹤器要平均高出大約9.5%,而在精度上高出了10.2%。
(a)目標(biāo)形變成功率對(duì)比 (b)目標(biāo)形變精度對(duì)比圖4 2種跟蹤器在目標(biāo)形變時(shí)的性能比較
當(dāng)目標(biāo)在平面內(nèi)旋轉(zhuǎn)時(shí),2種跟蹤器的性能比較如圖5所示。當(dāng)目標(biāo)因?yàn)槠矫鎯?nèi)旋轉(zhuǎn)造成尺度變化時(shí),系統(tǒng)跟蹤器的成功率與精度均比YOLOv3提高了7%左右。而當(dāng)目標(biāo)由平面內(nèi)旋轉(zhuǎn)變?yōu)槠矫嫱庑D(zhuǎn)之后,YOLOv3的跟蹤器的成功率變?yōu)?2.8%,準(zhǔn)確率為87.2%。而系統(tǒng)跟蹤器的平均成功率變?yōu)?8.3%,精確度變?yōu)?1%。由此可以得出,系統(tǒng)跟蹤器對(duì)平面內(nèi)旋轉(zhuǎn)情況的處理要優(yōu)于平面外旋轉(zhuǎn)的情況處理。
(a)平面內(nèi)旋轉(zhuǎn)成功率對(duì)比 (b)平面內(nèi)旋轉(zhuǎn)精度對(duì)比圖5 2種跟蹤器在目標(biāo)平面內(nèi)旋轉(zhuǎn)時(shí)的性能比較
在目標(biāo)遮擋的情況下,能否對(duì)目標(biāo)進(jìn)行有效的檢測(cè)是目標(biāo)檢測(cè)算法是否具備實(shí)用性的一項(xiàng)重要指標(biāo),實(shí)驗(yàn)所得到的結(jié)果如圖6所示。2種跟蹤器在有遮擋的條件下對(duì)目標(biāo)的檢測(cè)的性能不分上下,系統(tǒng)跟蹤器在成功率上比YOLOv3跟蹤器提高了4%左右。
(a)目標(biāo)遮擋成功率對(duì)比 (b)目標(biāo)遮擋精度對(duì)比圖6 2種跟蹤器在目標(biāo)遮擋時(shí)的性能比較
綜上所述,系統(tǒng)跟蹤器在不同環(huán)境中的成功率與準(zhǔn)確度上的表現(xiàn)都要優(yōu)于YOLOv3,在目標(biāo)檢測(cè)中對(duì)各類情況的處理良好,可普遍勝任各種情況下的目標(biāo)識(shí)別檢測(cè)工作。
本文對(duì)近年來(lái)孿生網(wǎng)絡(luò)的一系列算法進(jìn)行分析,并在其基礎(chǔ)上進(jìn)行改進(jìn),重點(diǎn)解決了孿生網(wǎng)絡(luò)所具有的平移不變性限制,打破了孿生網(wǎng)絡(luò)不能利用深度網(wǎng)絡(luò)進(jìn)行學(xué)習(xí)和訓(xùn)練的限制;將孿生網(wǎng)絡(luò)與RestNet相結(jié)合,并借鑒了SiamRPN中的RPN塊以實(shí)現(xiàn)對(duì)目標(biāo)的分類和回歸操作。為了提高目標(biāo)的精度,采用多層特征結(jié)合的方式提高了網(wǎng)絡(luò)對(duì)特征的提取能力,而且所用網(wǎng)絡(luò)利用深度相關(guān)層的聚合,有效降低了冗余的參數(shù)和成本。
最后,將系統(tǒng)算法與目前比較優(yōu)秀的YOLOv3算法在特征提取、網(wǎng)絡(luò)結(jié)構(gòu)等方面進(jìn)行分析比較,并且將2種算法訓(xùn)練的跟蹤器運(yùn)行在OTB數(shù)據(jù)集上共同進(jìn)行評(píng)估測(cè)試,通過(guò)對(duì)測(cè)試結(jié)果的比較分析,可以驗(yàn)證系統(tǒng)的算法要比YOLOv3的適應(yīng)性更強(qiáng),同時(shí)精確度也有所提高。