曹昭睿,白 帆,劉鳳麗,郝永平
(1 沈陽(yáng)理工大學(xué)機(jī)械工程學(xué)院, 沈陽(yáng) 110159; 2 沈陽(yáng)理工大學(xué)裝備工程學(xué)院, 沈陽(yáng) 110159)
野外搜救、自動(dòng)駕駛、視頻監(jiān)控等應(yīng)用中,機(jī)器視覺能夠提供給計(jì)算機(jī)最直觀的目標(biāo)信息,需要采取不同的技術(shù)措施。其中,目標(biāo)物的識(shí)別與鎖定是機(jī)器視覺中最重要的一個(gè)環(huán)節(jié),而對(duì)于以上應(yīng)用,該環(huán)節(jié)不但需要具備速度快、精準(zhǔn)度高、抗干擾能力強(qiáng)等特點(diǎn),還要盡可能的減少對(duì)計(jì)算資源的消耗。由于實(shí)時(shí)識(shí)別跟蹤任務(wù)下,目標(biāo)經(jīng)常會(huì)發(fā)生無(wú)規(guī)則變形或快速移動(dòng),所以基于模式識(shí)別的目標(biāo)識(shí)別算法的準(zhǔn)確率會(huì)受到極大影響。目前如Faster-RCNN、SSD[1-2]等基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)算法雖然針對(duì)可變化環(huán)境與目標(biāo)的識(shí)別率較高,但由于卷積神經(jīng)網(wǎng)絡(luò)對(duì)硬件系統(tǒng)的依賴性過大,為達(dá)到實(shí)時(shí)識(shí)別跟蹤,這些算法在計(jì)算過程中會(huì)消耗大量的計(jì)算機(jī)計(jì)算能力。
文中設(shè)計(jì)了一種聯(lián)合輕量化卷積神經(jīng)網(wǎng)絡(luò)與KCF的目標(biāo)識(shí)別跟蹤算法,在第一幀快速識(shí)別目標(biāo)并鎖定該目標(biāo)的區(qū)域,將該區(qū)域信息傳遞給KCF跟蹤環(huán)節(jié),進(jìn)行目標(biāo)鎖定跟蹤,同時(shí)對(duì)比識(shí)別模板與跟蹤模板間的相關(guān)性,一旦識(shí)別模板與跟蹤模板的差別較大,則重新識(shí)別目標(biāo)并刷新鎖定區(qū)域,實(shí)現(xiàn)對(duì)移速較快且發(fā)生形變的目標(biāo)的跟蹤。
算法整體由目標(biāo)識(shí)別、目標(biāo)跟蹤與位置刷新3個(gè)環(huán)節(jié)組成,圖1為輕量化神經(jīng)網(wǎng)絡(luò)(tiny convolution neural network,TCNN)識(shí)別跟蹤算法的流程圖。首先利用輕量化卷積神經(jīng)網(wǎng)絡(luò)對(duì)探測(cè)視頻的第一幀進(jìn)行目標(biāo)識(shí)別,將需要鎖定的目標(biāo)進(jìn)行位置標(biāo)記,并獲取該位置的區(qū)域坐標(biāo)信息(圖2(a)),將該坐標(biāo)信息作為跟蹤環(huán)節(jié)內(nèi)目標(biāo)區(qū)域的來(lái)源,利用KCF算法對(duì)該區(qū)域進(jìn)行跟蹤(圖2(b));跟蹤過程中對(duì)識(shí)別模板與跟蹤模板利用感知哈希算法進(jìn)行相關(guān)性比較,若識(shí)別后新目標(biāo)所在區(qū)域與原跟蹤區(qū)域尺寸、位置差別較大(圖2(c)),則刷新跟蹤區(qū)域并繼續(xù)跟蹤目標(biāo)(圖2(d)),重復(fù)以上步驟至目標(biāo)脫離視野。
圖1 輕量化神經(jīng)網(wǎng)絡(luò)識(shí)別跟蹤算法流程圖
圖2 系統(tǒng)處理效果流程
在對(duì)目標(biāo)進(jìn)行跟蹤前,系統(tǒng)需要對(duì)視頻數(shù)據(jù)進(jìn)行目標(biāo)識(shí)別檢測(cè),以確定目標(biāo)是否存在并提取目標(biāo)的位置信息。為加快系統(tǒng)計(jì)算速度,同時(shí)減少對(duì)硬件系統(tǒng)的依賴性,文中選用輕量化神經(jīng)網(wǎng)絡(luò)作為目標(biāo)識(shí)別核心算法。TCNN是一種以YOLO卷積神經(jīng)網(wǎng)絡(luò)為基礎(chǔ),經(jīng)過縮減優(yōu)化后的網(wǎng)絡(luò)模型。該模型由7個(gè)卷積層、7個(gè)最大池化層和一個(gè)輸出層組成,其中卷積層與最大池化層依次交替出現(xiàn)[3]。卷積層中卷積核尺寸為3,步長(zhǎng)為1,滑動(dòng)步幅為1,層內(nèi)激活函數(shù)為ReLU函數(shù);最大池化層的采樣核大小為2,步長(zhǎng)為2;輸出層最終輸出多維張量。圖3為TCNN網(wǎng)絡(luò)結(jié)構(gòu)模型圖。
圖3 TCNN網(wǎng)絡(luò)結(jié)構(gòu)模型圖
TCNN網(wǎng)絡(luò)首先將目標(biāo)圖片分割成S*S個(gè)網(wǎng)格,每個(gè)網(wǎng)格將分別輸入到輸入層并向后傳遞計(jì)算[4]。若目標(biāo)的中心落在某個(gè)網(wǎng)格中,則該網(wǎng)格就將對(duì)這個(gè)區(qū)域內(nèi)的目標(biāo)進(jìn)行檢測(cè)。置信值表示當(dāng)前網(wǎng)格中是否包含目標(biāo)以及目標(biāo)位置的準(zhǔn)確性,置信值為檢測(cè)目標(biāo)的概率與IOU的乘積,如式(1)所示:
(1)
P(object)為該網(wǎng)格中是否存在有目標(biāo),若存在則值為1,不存在值為0。IOU為交并比(intersection over union),即目標(biāo)產(chǎn)生的目標(biāo)框與該目標(biāo)的范圍框的交并比例,表達(dá)式為:
(2)
式中:DR為檢測(cè)目標(biāo)框范圍[5](detection result);GT為真實(shí)目標(biāo)覆蓋范圍(ground truth)。檢測(cè)目標(biāo)范圍與真實(shí)目標(biāo)覆蓋范圍交并結(jié)果IOU如圖4所示。
圖4 IOU示意圖
每個(gè)網(wǎng)格同時(shí)還能預(yù)測(cè)C個(gè)目標(biāo)類別概率,即第i類目標(biāo)中心落在該網(wǎng)格內(nèi)的概率,記為P(Classi|Object)。C為目標(biāo)的類別數(shù),與目標(biāo)個(gè)數(shù)B無(wú)關(guān)。將目標(biāo)類別概率與置信值相乘,得到乘積作為置信值的評(píng)分,如式(3)所示:
(3)
最終,根據(jù)每個(gè)網(wǎng)格所得出的置信值評(píng)分,確定網(wǎng)格中是否存在目標(biāo),從而完成目標(biāo)的確定與識(shí)別。
選用KCF算法作為目標(biāo)跟蹤的核心算法,該算法通過嶺回歸分類器的學(xué)習(xí)來(lái)完成對(duì)移動(dòng)目標(biāo)的跟蹤。將輕量化神經(jīng)網(wǎng)絡(luò)識(shí)別出的目標(biāo)信息作為目標(biāo)區(qū)域傳入嶺回歸分類器中,再利用循環(huán)矩陣?yán)碚摚瑢?duì)目標(biāo)區(qū)域進(jìn)行稠密采樣,獲取正負(fù)樣本,提取方向梯度直方圖特征,將所有樣本對(duì)嶺回歸分類器進(jìn)行訓(xùn)練。在檢測(cè)階段,以視頻前一幀目標(biāo)位置為中心進(jìn)行稠密采樣,將得到的所有樣本輸入到嶺回歸分類器,經(jīng)過分類,得到目標(biāo)的位置。
2.2.1 稠密采樣與循環(huán)矩陣
KCF算法中所有樣本均由對(duì)目標(biāo)區(qū)域的循環(huán)位移處理所得到,該過程成為稠密采樣[8]。設(shè)目標(biāo)區(qū)域?yàn)閳D5中實(shí)線框內(nèi)容所示。
圖5 稠密采樣示意圖
則記該區(qū)域內(nèi)圖像塊所含信息為X=[x1,x2,…,xn]T,向量的循環(huán)可由排列矩陣得到,即[9]:
(4)
Px=[xn,x1,x2,…,xn-1]T
(5)
式中Px表示為圖5中虛線框所示信息。按照該方法將目標(biāo)框在水平方向與垂直方向進(jìn)行循環(huán)采樣,由此獲得完備的訓(xùn)練樣本集。
2.2.2 嶺回歸分類器
設(shè)樣本集為(xi,yi),則嶺回歸分類器需找到一個(gè)函數(shù)f(X)=wTX,并使其損失函數(shù)下降到最小,即:
(6)
式中:w是列向量,表示權(quán)重系數(shù);λ為防止過擬合的正則項(xiàng)。寫成矩陣形式為:
(7)
X=[x1,x2,…,xn]T
(8)
式中:X的每一行表示一個(gè)向量,y是列向量,每個(gè)元素對(duì)應(yīng)一個(gè)樣本的標(biāo)簽,令導(dǎo)數(shù)為0,在復(fù)數(shù)域中表示為:
w=(XHX+λ)-1XHy
(9)
式中XH表示復(fù)共軛轉(zhuǎn)置矩陣。
2.2.3 核空間下的嶺回歸
對(duì)于無(wú)法在原始空間分類的樣本,需要引入核函數(shù)才可將低維空間中存在的線性不可分的模式映射到高維空間中并且實(shí)現(xiàn)線性可分,其中核函數(shù)的表現(xiàn)形式為[10]:
k(x,z)=φ(x)φ(z)
(10)
式中:k(x,z)為核函數(shù),φ(x)和φ(z) 為低維空間到高維空間的映射函數(shù)。在這種情況下重新設(shè)定分類器:
f(xi)=wTφ(xi)
(11)
則該分類器的權(quán)重系數(shù)為:
(12)
式中:w是Φ(X)行向量張成的空間中的一個(gè)向量,當(dāng)w=∑aiΦ(xi)時(shí):
(13)
令K表示核空間的核矩陣,則存在:
a=(K+λI)-1y
(14)
目標(biāo)跟蹤過程中,嶺回歸分類器首先直接接收來(lái)自輕量化神經(jīng)網(wǎng)絡(luò)的目標(biāo)位置信息并進(jìn)行跟蹤,在下一幀后將更新的目標(biāo)位置信息繼續(xù)返回嶺回歸分類器進(jìn)行訓(xùn)練,如此反復(fù),完成對(duì)目標(biāo)的跟蹤。
當(dāng)目標(biāo)在移動(dòng)過程中發(fā)生變形或移速陡增時(shí),KCF算法可能會(huì)出現(xiàn)跟蹤鎖定框與實(shí)際目標(biāo)大小和位置不相匹配的狀況,導(dǎo)致無(wú)法準(zhǔn)確跟蹤目標(biāo)。為減小該狀況造成的跟蹤誤差,文中利用感知哈希算法對(duì)每一幀內(nèi)的跟蹤模板與原目標(biāo)識(shí)別模板進(jìn)行對(duì)比,感知哈希算法基于頻域?qū)崿F(xiàn),即將圖像通過不同頻率分量疊加的形式表示,由于感知哈希算法采用離散余弦變換 (DCT)保留了圖像中頻率較低的信息,故該算法保留了原有圖像的更多細(xì)節(jié),同時(shí)避免了伽瑪校正或顏色直方圖調(diào)整的影響。哈希算法首先將圖像縮小為8像素×8像素的尺寸,去除對(duì)比圖片中尺寸和比例的差異, 只保留圖片的結(jié)構(gòu)、明暗等基本信息。隨后將圖像轉(zhuǎn)化為灰度圖,設(shè)灰度圖圖像為Gp。利用離散余弦變換將灰度圖從像素域變換為頻域,轉(zhuǎn)換過程如下[11]:
(15)
式中:x、y是像域中元素坐標(biāo);f(x,y)是該坐標(biāo)下的值;n是像素矩陣的階;u、v是頻域中元素的坐標(biāo);F(x,y)是頻域的系數(shù)矩陣的元素,該系數(shù)矩陣記為Mn×n[16],如式(16)所示:
(16)
式中:mk×k為Mn×n左上角k×k矩陣,計(jì)算mk×k矩陣元素平均值,記為eavg,并將mk×k陣中所有元素與eavg比較,若該元素值大于eavg,則記為1,反之記為0,統(tǒng)計(jì)上述數(shù)據(jù)后得到k2個(gè)bit的二進(jìn)制串,記為Hp。最后計(jì)算兩張比較圖片HP的漢明距離,距離越大,則認(rèn)為兩張圖差異越大,反之兩張圖片越相似。一旦兩模板差別較大(文中設(shè)定兩幅圖片中漢明距離的不同數(shù)據(jù)位超過10時(shí)差別較大),則認(rèn)為目標(biāo)已脫離跟蹤框,需利用輕量化神經(jīng)網(wǎng)絡(luò)重新對(duì)當(dāng)前幀圖像內(nèi)的目標(biāo)進(jìn)行識(shí)別,并根據(jù)識(shí)別框重新定義跟蹤框位置;反之則認(rèn)為目標(biāo)仍存在于跟蹤框內(nèi),并保持當(dāng)前跟蹤框繼續(xù)對(duì)目標(biāo)進(jìn)行跟蹤。
本實(shí)驗(yàn)以室外環(huán)境下行人為目標(biāo),行人行走過程中會(huì)突然加速奔跑、蹲伏和被部分遮擋。行人目標(biāo)權(quán)重由含有行人步行、奔跑、蹲伏與部分被遮擋的一萬(wàn)張圖片集訓(xùn)練而成,訓(xùn)練網(wǎng)絡(luò)為標(biāo)準(zhǔn)YOLO V2。測(cè)試視頻時(shí)長(zhǎng)10 s,共290幀,視頻內(nèi)目標(biāo)共計(jì)一人,實(shí)驗(yàn)平臺(tái)為英偉達(dá)Jetson TX2視覺計(jì)算模塊。
經(jīng)測(cè)試,TNCC算法識(shí)別測(cè)試效果如圖6所示。其中圖6(a)中紫色識(shí)別框?yàn)槌跏紟瑫r(shí)利用輕量化神經(jīng)網(wǎng)絡(luò)對(duì)目標(biāo)進(jìn)行首次識(shí)別與定位結(jié)果;圖6(b)中紅色跟蹤框?yàn)槭褂肒CF對(duì)目標(biāo)跟蹤結(jié)果;圖6(c)中黑色對(duì)比框?yàn)槟繕?biāo)發(fā)生形變時(shí)感知哈希檢測(cè)到跟蹤框定位不準(zhǔn),同時(shí)將跟蹤框從紅色改變?yōu)楹谏?dòng)輕量化神經(jīng)網(wǎng)絡(luò)重識(shí)別的結(jié)果;圖6(d)為啟用輕量化神經(jīng)網(wǎng)絡(luò)重定位后的結(jié)果。目標(biāo)一旦發(fā)生類似的變化,系統(tǒng)將如圖6所示進(jìn)行循環(huán)操作。
圖6 TNCC識(shí)別測(cè)試效果
為驗(yàn)證本算法的優(yōu)化效果,實(shí)驗(yàn)同時(shí)針對(duì)普通YOLO V2、普通KCF跟蹤算法、Camshift跟蹤算法進(jìn)行測(cè)試,對(duì)比以上算法和本算法針對(duì)測(cè)試視頻進(jìn)行識(shí)別跟蹤時(shí)的計(jì)算機(jī)利用率與其他性能指標(biāo)。其中各算法計(jì)算機(jī)利用率如圖7所示。
圖7 各算法計(jì)算機(jī)利用率
圖7中顯示,當(dāng)目標(biāo)發(fā)生快速移動(dòng)與形態(tài)變化時(shí)(0~5幀、61~91幀、187~198幀、299~232幀、252~260幀),TNCC啟用輕量化神經(jīng)網(wǎng)絡(luò)對(duì)目標(biāo)進(jìn)行重新識(shí)別與定位,此時(shí)計(jì)算機(jī)使用率較大,當(dāng)目標(biāo)被鎖定后,TNCC關(guān)閉目標(biāo)識(shí)別系統(tǒng),開啟目標(biāo)跟蹤環(huán)節(jié),此時(shí)CPU使用率下降,GPU使用率為0。TNCC僅在目標(biāo)出現(xiàn)大幅度增速與發(fā)生形變時(shí)會(huì)消耗較多的計(jì)算空間,一旦目標(biāo)穩(wěn)定后且被TNCC鎖定,則系統(tǒng)將會(huì)進(jìn)入到計(jì)算平穩(wěn)態(tài),此時(shí)余下的空間便可以提供給如飛行控制、路徑規(guī)劃、目標(biāo)對(duì)應(yīng)行動(dòng)抉擇等其他計(jì)算環(huán)節(jié)。
各算法計(jì)算性能指標(biāo)如表1所示。
表1 各系統(tǒng)計(jì)算性能
綜合圖7與表1中的結(jié)果,TNCC在計(jì)算機(jī)利用率、目標(biāo)脫離率與識(shí)別速度上最為平衡,在提高計(jì)算機(jī)剩余計(jì)算空間的情況下同時(shí)提升了針對(duì)可變形、加速、遮擋目標(biāo)的識(shí)別跟蹤能力,解決了目標(biāo)識(shí)別跟蹤過程中普通卷積神經(jīng)網(wǎng)絡(luò)的高計(jì)算機(jī)占有率和普通跟蹤算法需要人工劃分興趣區(qū)域與易丟失目標(biāo)位置的問題。
由于TNCC減小了計(jì)算機(jī)計(jì)算負(fù)載,同時(shí)減小了模式識(shí)別受目標(biāo)大幅度變化的影響,故該算法能夠更好地與視覺航跡規(guī)劃、視覺決策計(jì)算等其他基于機(jī)器視覺識(shí)別跟蹤的后續(xù)操作進(jìn)行連接,為相應(yīng)的擴(kuò)展應(yīng)用提供了更多的計(jì)算環(huán)境支持。
文中設(shè)計(jì)了一種結(jié)合輕量化神經(jīng)網(wǎng)絡(luò)、KCF目標(biāo)跟蹤算法與感知哈希算法的目標(biāo)識(shí)別跟蹤算法,對(duì)于目標(biāo)發(fā)生突然變形、提速與被遮擋的環(huán)境下具有較好的識(shí)別與跟蹤效果,在不減小識(shí)別精確度的情況下提高了計(jì)算速度,同時(shí)為其他后續(xù)操作提供了更多的計(jì)算空間。