戴亞峰 陶青川 楊 波
(四川大學(xué)電子信息學(xué)院 四川 成都 610065)
近年來,人工智能、機器視覺、深度神經(jīng)網(wǎng)絡(luò)等軟件算法不斷進步發(fā)展,同時攝像機、計算機、存儲器、網(wǎng)絡(luò)設(shè)備等硬件價格也愈發(fā)便宜,促進了智能監(jiān)控的普及和發(fā)展。基于監(jiān)控視頻的目標(biāo)檢測及目標(biāo)跟蹤是智能監(jiān)控系統(tǒng)中的關(guān)鍵環(huán)節(jié),國內(nèi)外學(xué)者的研究主要分為基于可見光視頻和基于紅外熱成像視頻兩種。可見光視頻利用自然光成像,具有一定的局限性,容易受天氣、光照等自然條件影響。紅外熱成像視頻利用紅外光成像,不需要輔助燈光,可以全天候工作,在雨雪、霧霾等惡劣天氣下受影響較小,但是紅外圖像噪點多、對比度差、邊緣較模糊、缺少顏色特征,基于可見光視頻的目標(biāo)檢測跟蹤算法不能取得很好的檢測效果[1]。
目標(biāo)跟蹤算法可分為外觀模型生成法和模型背景判別法兩類[2]。前者根據(jù)外觀模型搜索最相似的區(qū)域,代表方法有Kalman濾波[3]、均值漂移(Mean-Shift)[4]、粒子濾波[5]等,但跟蹤精度不高且應(yīng)用較少;后者的思想是把背景和目標(biāo)區(qū)分出來,按原理不同又可分為神經(jīng)網(wǎng)絡(luò)深度學(xué)習(xí)類和相關(guān)濾波類。深度學(xué)習(xí)類的算法跟蹤精確度高,但實時性差無法在實際工程中應(yīng)用[6]。相關(guān)濾波類算法得到廣泛研究,MOSSE、TLD、核相關(guān)濾波(KCF)算法是經(jīng)典的算法[7],實時性和準(zhǔn)確度都較高,尤其以KCF算法最為出眾[8]。但紅外視頻中會有噪聲影響、相似目標(biāo)干擾、尺度變化等現(xiàn)象,算法很容易發(fā)生目標(biāo)跟蹤丟失。YOLO是當(dāng)前目標(biāo)檢測領(lǐng)域表現(xiàn)最好的算法之一,它采用卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)目標(biāo)特征,分析模型抗噪聲能力強,單幀檢測準(zhǔn)確度達到85%以上,且檢測速度高滿足實時需要[9],可以作為目標(biāo)跟蹤的前一環(huán)節(jié)選取目標(biāo),實現(xiàn)監(jiān)控智能化。
針對紅外視頻監(jiān)控中存在的諸多問題,本文提出一種結(jié)合YOLO和KCF算法的目標(biāo)檢測跟蹤算法。在紅外視頻幀圖像預(yù)處理的基礎(chǔ)上,使用最新的YOLO網(wǎng)絡(luò)模型檢測選取目標(biāo),然后使用KCF核相關(guān)濾波算法對目標(biāo)實現(xiàn)目標(biāo)跟蹤。仿真實驗驗證了本文方法能夠在實時檢測的前提下有效提高紅外視頻目標(biāo)檢測跟蹤的準(zhǔn)確率。
基于YOLOV3算法能夠完成單幀圖像的目標(biāo)檢測,基于KCF算法可基本滿足短時間的目標(biāo)跟蹤,本文提出將兩種算法相結(jié)合的目標(biāo)檢測跟蹤算法,可以用于紅外視頻智能監(jiān)控中目標(biāo)的發(fā)現(xiàn)及跟蹤。同時,采用多尺度估計和目標(biāo)丟失再檢測策略,能夠提高目標(biāo)尺度變化和目標(biāo)丟失情況下的準(zhǔn)確度。圖1展示了本文算法實現(xiàn)流程,具體步驟如下:

圖1 算法總體流程
Step1將讀入的紅外視頻幀進行預(yù)處理,通過濾波處理減少噪聲影響,銳化圖像增強目標(biāo)邊緣;
Step2首幀使用離線訓(xùn)練的YOLOV3網(wǎng)絡(luò)模型進行目標(biāo)檢測,框選目標(biāo)所在的區(qū)域,初始化核相關(guān)濾波器;
Step3調(diào)用核相關(guān)濾波算法進行運動目標(biāo)跟蹤,確定目標(biāo)的大致區(qū)域;
Step4估計運動目標(biāo)的多尺度變化,比較多個尺度的最大響應(yīng)得到最佳的匹配尺度;
Step5將峰值響應(yīng)和前n幀比較計算,判斷是否出現(xiàn)異常,如果峰值無異常則進入Step 7,否則進入Step 6;
Step6使用YOLOV3網(wǎng)絡(luò)模型對當(dāng)前幀進行目標(biāo)再檢測,結(jié)合跟蹤結(jié)果校正目標(biāo)框的位置,重新確定跟蹤器的參數(shù),返回Step 3;
Step7輸出當(dāng)前幀目標(biāo)位置結(jié)果,進入Step 3對后續(xù)視頻幀處理。
紅外成像的原理是物體紅外線輻射具有不同的分布情況,圖像亮度近似地反映了視野內(nèi)背景與目標(biāo)的溫度差與輻射差。由于紅外線傳播路徑中的雜波干擾和光學(xué)處理偏差,不可避免存在噪聲影響[10]。圖像濾波降噪的算法有很多,復(fù)雜的濾波算法無法滿足實時性的需求,因此采用計算簡單、效果較好的鄰域平均濾波。鄰域平均濾波基本原理是在圖像中選取以目標(biāo)像素點為中心的鄰域,然后統(tǒng)計鄰域范圍中像素點的平均數(shù)值,代替目標(biāo)像素點的原值作為濾波輸出。例如f(u,v)為待處理區(qū)域像素點,d(x,y)表示處理后的像素點,采用線性空間濾波計算公式:
(1)
式中:集合Z表示(x,y)鄰域中的像素點坐標(biāo);n表示Z內(nèi)的像素點個數(shù)。選取鄰域的大小決定了圖像處理后的平滑程度,鄰域覆蓋的范圍越大,圖像的降噪效果越明顯。
為了能有效地保存圖像灰度數(shù)值,增強紅外視頻幀的對比度,可以進行伽馬變換處理。通過非線性處理轉(zhuǎn)換,對數(shù)值過低及過高的像素進行修正,向灰度中值靠攏,優(yōu)化圖像的灰度分布。同時,經(jīng)過伽馬變換后,存儲的有效性和效率也得到了改善。
紅外視頻幀在濾波降噪處理后邊緣較為模糊,部分細節(jié)出現(xiàn)失真情況,直接進行邊緣的提取和檢測會受一定干擾,可以使用Sobel銳化算法使邊緣輪廓更加突出。Sobel算子包括兩個3×3的矩陣,用于橫縱垂直兩方向的卷積計算,即可差分得到兩個方向的邊緣值。假設(shè)S代表輸入圖像,GX及GY分別代表橫向和縱向的邊緣檢測灰度值,結(jié)合灰度數(shù)值最終可以計算出圖像的每一個像素:
(2)
(3)
將原始紅外圖像和檢測的邊緣圖像疊加在一起,可以有效保留圖像的灰度值,同時增強灰度值突變處目標(biāo)和背景的對比,獲得圖像的輪廓信息從而實現(xiàn)圖像銳化效果。圖2展示了預(yù)處理的效果,在經(jīng)過降噪、伽馬變換、邊緣銳化、疊加圖像等一系列處理后,圖像細節(jié)更加清晰。

(a)降噪圖像 (b)伽馬變換 (c)邊緣檢測 (d)疊加圖像圖2 紅外視頻幀預(yù)處理效果
YOLO最顯著的特點是運行速度快實時性高[11],是目前兼具實時性和準(zhǔn)確率最好的目標(biāo)檢測算法之一。YOLOV3算法采用的網(wǎng)絡(luò)與Fast-RCNN等卷積網(wǎng)絡(luò)不同,將檢測任務(wù)轉(zhuǎn)化為回歸問題,在輸入一幅圖像后使用7×7網(wǎng)格直接預(yù)測,沒有候選窗口的掃描過程,從而實現(xiàn)了對目標(biāo)的one-stage實時檢測[12]。
YOLOV3的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。通過全卷積神經(jīng)網(wǎng)絡(luò)Darkenet 53對原始紅外圖像進行特征提取,Darknet53網(wǎng)絡(luò)由53個卷積層構(gòu)成,其網(wǎng)絡(luò)結(jié)構(gòu)采用了大量的3×3和1×1卷積,3×3的卷積目的是增加通道數(shù),而1×1的卷積用于改變數(shù)據(jù)維度。為了防止池化后導(dǎo)致的低層特征丟失現(xiàn)象,Darknet53采用全卷積層不使用任何形式的池化,同時使用殘差結(jié)構(gòu)提高了速度。

圖3 YOLOV3網(wǎng)絡(luò)結(jié)構(gòu)
在特征圖進行目標(biāo)檢測時,首先把輸入紅外圖像的尺寸調(diào)整至標(biāo)準(zhǔn)大小,然后將其分成多個相同尺寸的網(wǎng)格單元,每個網(wǎng)格單元只對中心位于該網(wǎng)格單元中的目標(biāo)進行預(yù)測[12]。假設(shè)網(wǎng)格單元的坐標(biāo)為(x,y),網(wǎng)格單元橫縱方向距離為cx和cy,每個邊界候選框都有tx、ty、tw、th四個預(yù)測值,錨點框的寬度和高度分別為pw和ph,預(yù)測邊界框幾何中心的坐標(biāo)用(bx,by)表示,預(yù)測邊界框的寬度和高度分別用bw和bh表示。邊界框示意圖如圖4所示,邊界框預(yù)測公式如下:

圖4 邊界框示意圖
(4)
2.3.1核相關(guān)濾波算法
KCF算法通過對輸入圖像塊構(gòu)建循環(huán)偏移矩陣,構(gòu)造大量的訓(xùn)練樣本集。將大量的樣本生成矩陣轉(zhuǎn)化成對角矩陣,減少復(fù)雜矩陣間的計算量。然后進行模型構(gòu)建訓(xùn)練學(xué)習(xí)得到濾波器,計算目標(biāo)候選區(qū)域和初始跟蹤對象的相似度,選擇最大相似程度的區(qū)域作為目標(biāo),并不斷使用新的跟蹤結(jié)果去更新訓(xùn)練樣本集和相關(guān)濾波器。
KCF算法濾波器的訓(xùn)練過程實際上是求解嶺回歸問題[13]。假設(shè)目標(biāo)函數(shù)為f(xi)=wTxi,使用最小二乘法來計算求解權(quán)重系數(shù)w,有嶺回歸方程式如下:
(5)
對式(5)關(guān)于w求導(dǎo),可得閉式解:
w=(XTX+λI)-1XTy
(6)
其中,單位矩陣I同時也是循環(huán)矩陣,由循環(huán)矩陣可對角化性質(zhì),代入公式可得:
(7)
式中:x*表示x的復(fù)共軛;“^”代表離散傅里葉變換后的結(jié)果;“·”表示向量相乘。在通過傅里葉變換后,卷積運算轉(zhuǎn)化為向量元素的點積。
對于非線性回歸的情況,通過核函數(shù)計算將低維空間映射到高維空間[13]。假設(shè)樣本采用映射變換函數(shù)為f(z)=wTφ(z),可以得到最優(yōu)解:
(8)

分類器完成訓(xùn)練之后,計算圖像幀中的目標(biāo)特征,并輸入特征信息判斷目標(biāo)的位置。對于輸入圖像塊z,其樣本矩陣為Z,可以得到樣本響應(yīng):
(9)
對f(z)的值做離散傅里葉逆變換運算,得到候選區(qū)域是目標(biāo)位置的概率值,在對全部候選區(qū)域計算后,其中最大值的候選區(qū)域就是紅外圖像中目標(biāo)的位置。KCF算法對視頻幀進行跟蹤時,采用線性插值法更新模型參數(shù),公式為:
(10)
式中:μ表示模型更新的學(xué)習(xí)率;t表示當(dāng)前幀序號;xt、xt-1、xt+1分別是當(dāng)前幀、上一幀、下一幀的目標(biāo)外觀模型;αt、αt-1、αt+1由式(8)得到,分別表示訓(xùn)練樣本后當(dāng)前幀、上一幀、下一幀的濾波器模型參數(shù)。
2.3.2多尺度估計
KCF算法的研究重點在于對目標(biāo)位置的預(yù)測,缺少對目標(biāo)尺度變化的情況研究[15],本文通過構(gòu)建尺度金字塔來進行目標(biāo)尺度自適應(yīng)。在跟蹤過程中,首先通過濾波器對當(dāng)前幀進行相關(guān)運算,得到跟蹤目標(biāo)對象的大概位置和中心坐標(biāo),在目標(biāo)中心附近區(qū)域截取多個尺度的圖像塊[15]。然后將不同尺度的圖像塊縮放至近似原始目標(biāo)的固定尺寸,輸入到尺度濾波器計算響應(yīng)值,比較各個不同尺度的響應(yīng)值大小,其中最大響應(yīng)值的尺度就是估計的最佳目標(biāo)尺度。圖5為多尺度估計的流程。

圖5 多尺度估計流程
考慮到視頻序列中圖像幀相接貫連,相鄰幾幀的目標(biāo)尺度變化很小,本文每間隔n幀圖像進行一次尺度估計,提高計算速度。
2.4.1目標(biāo)丟失判斷
KCF算法在視頻目標(biāo)跟蹤中,如果跟蹤目標(biāo)發(fā)生形變或者被遮擋時,就會破壞分類模型導(dǎo)致跟蹤失敗。文獻[16]指出,目標(biāo)跟蹤狀況與響應(yīng)峰值的變化有關(guān),在目標(biāo)丟失時峰值會快速減小。本文在跟蹤中對分類器的響應(yīng)峰值進行異常判斷檢測,若發(fā)現(xiàn)響應(yīng)值突然減小,則判斷為已丟失或即將發(fā)生丟失。異常峰值判斷公式如下:
(11)
式中:vi表示不同視頻幀的響應(yīng)峰值;μ表示前n-1幀的峰值均值;σ表示前n-1幀的峰值平方差。如果當(dāng)前幀的峰值vc和均值μ的絕對距離大于λσ,那么認為這個值為一個異常值。
檢測到異常值出現(xiàn)時,目標(biāo)即將丟失或已經(jīng)丟失。同時,在算法持續(xù)跟蹤的過程中,設(shè)置thlost表示允許異常最大幀數(shù),本文實驗設(shè)為8,超過閾值啟動再檢測。
2.4.2目標(biāo)檢測匹配
使用YOLOV3對當(dāng)前視頻幀進行再檢測,得到最新的位置和尺寸信息,存在以下三種可能情況:(1)只有一個目標(biāo),且與原始跟蹤目標(biāo)一致;(2)得到多個目標(biāo),原始目標(biāo)與干擾目標(biāo)共存;(3)檢測不到目標(biāo)。
為了解決第二種情況,需要對檢測目標(biāo)與原始跟蹤目標(biāo)進行匹配,保證目標(biāo)不混淆。若異常前一幀的跟蹤框為Rs,此時的再檢測目標(biāo)框為Rr,中心坐標(biāo)分別為(xs,ys)和(xre,yre),計算它們的直線距離LD與重疊率OR,綜合二者的數(shù)值得到關(guān)聯(lián)度SD,再檢測目標(biāo)中原始跟蹤目標(biāo)的相似度最大。
LD=(xre-xs)2+(yre-ys)2
(12)
(13)
(14)
對于第三種再檢測情況,YOLOV3檢測算法與目標(biāo)跟蹤算法都已失效,此時無法得到跟蹤目標(biāo)的信息,判斷為目標(biāo)從視頻中消失。若多幀圖像后目標(biāo)再次出現(xiàn),重新對其進行檢測并標(biāo)注跟蹤。
實驗平臺為Windows 10系統(tǒng)PC機,CPU英特爾Core i5-6500,主頻3.6 GHz,GPU為NVIDIA GeForce GTX 1080 Ti,內(nèi)存8 GB。首先以Anaconda為開發(fā)環(huán)境訓(xùn)練網(wǎng)絡(luò)模型,并安裝cuda 8.0加速網(wǎng)絡(luò)計算,生成離線調(diào)用的檢測模塊。然后以VisualStudio2015和OpenCV 3.4.6為開發(fā)環(huán)境,讀取紅外監(jiān)控視頻,并編程實現(xiàn)目標(biāo)檢測及跟蹤結(jié)合。KCF算法的參數(shù)通過實驗確定,線性插值因子μ為0.02,HOG高斯核標(biāo)準(zhǔn)差σ為0.5,峰值異常檢測中的λ系數(shù)為4,多尺度估計每隔8幀進行一次,關(guān)聯(lián)度λ1和λ2取0.5。
本文對紅外熱成像視頻進行研究,由于國內(nèi)外公開數(shù)據(jù)集較少,故采用公開數(shù)據(jù)集和自制數(shù)據(jù)結(jié)合的方式實驗。VOT-2015TIR數(shù)據(jù)集是單目標(biāo)跟蹤研究領(lǐng)域的公開數(shù)據(jù)集,其中包含20個紅外圖像序列,目標(biāo)為人、車、馬等,分辨率各不相同。CVC-09 FIR是西班牙巴塞羅那大學(xué)計算機視覺中心用于自動駕駛研究的數(shù)據(jù)集,本文采用其中部分圖像序列作為車輛目標(biāo)數(shù)據(jù),圖像分辨率為640×480。另外使用海康DS-2CD8314型號的紅外熱成像攝像機拍攝視頻,作為行人目標(biāo)數(shù)據(jù)來源,分辨率為704×576,幀率為25。
實驗測試環(huán)境分為日間和夜間場景,分別取人和車輛作為目標(biāo),從紅外視頻和圖像序列數(shù)據(jù)集中隨機選取圖像,得到不同場景下目標(biāo)檢測的正確檢測率、誤檢率和漏檢率,結(jié)果如表1所示。

表1 采用YOLOV3方法的目標(biāo)檢測結(jié)果
由表1可以發(fā)現(xiàn),檢測效果在不同場景下有所不同。在夜間場景下,光照干擾較少,目標(biāo)檢測算法表現(xiàn)較好。目標(biāo)為車的檢測正確率達到了0.744,相比日間檢測正確率0.738有較小提升,誤檢率和漏檢率都有下降;目標(biāo)為人時,檢測正確率、誤檢率和漏檢率都有同樣的表現(xiàn)。無論日間還是夜間,車輛作為目標(biāo)的檢測結(jié)果明顯好于人作為目標(biāo),這是因為車輛邊緣信息較為明顯且狀態(tài)不會發(fā)生變化,而人由于邊緣信息模糊,且運動狀態(tài)多變影響效果。在夜間和日間場景,車輛的檢測正確率都高于人的檢測正確率。
在正確檢測出目標(biāo)的結(jié)果上,利用目標(biāo)信息初始化跟蹤器并進行目標(biāo)跟蹤,KCF、TLD、MOSSE、CSRDCF和ECO算法作為對比算法,各算法跟蹤結(jié)果用不同顏色矩形框表示。
圖6為行人紅外視頻不同算法的跟蹤結(jié)果。跟蹤過程中,MOSSE算法和KCF算法均出現(xiàn)誤差,誤差越來越大逐漸丟失目標(biāo);TLD算法能夠保持跟蹤目標(biāo)不丟失,但跟蹤框尺寸大小反復(fù)變化,且第22幀、第55幀、第86幀只包含了目標(biāo)的一部分;ECO和CSRDCF算法跟蹤效果較好;本文算法在前30幀和KCF算法跟蹤效果一致,在53幀啟動了目標(biāo)再檢測,對跟蹤的偏差進行了校正,也取得了較好的跟蹤效果。

圖6 算法效果對比1
圖7為室內(nèi)紅外視頻序列的部分跟蹤結(jié)果對比,目標(biāo)被障礙物遮擋,在200幀時目標(biāo)完全遮擋,出現(xiàn)了目標(biāo)丟失的情況。在262幀時目標(biāo)重新出現(xiàn),KCF和MOSSE算法不能正確跟蹤目標(biāo),TLD和CSRDCF算法僅能框出目標(biāo)的部分區(qū)域,有較大誤差,ECO算法無法快速重新跟蹤目標(biāo),本文算法啟動目標(biāo)再檢測策略,能夠跟蹤丟失目標(biāo)。

圖7 算法效果對比2
圖8中跟蹤目標(biāo)為騎行的自行車,目標(biāo)在不斷運動前進,尺度從大到小發(fā)生變化。跟蹤過程中,KCF、MOSSE無法適應(yīng)尺度變化,先后在29幀和88幀出現(xiàn)跟蹤錯誤;TLD算法不夠穩(wěn)定,跟蹤框偏離真實目標(biāo);CSRDCF算法跟蹤效果較好,但也無法適應(yīng)尺度變化,得到的目標(biāo)框尺寸過大,位置信息不夠精確;ECO和本文算法的跟蹤框近似,沒有出現(xiàn)目標(biāo)丟失,能夠解決尺度變化的問題,跟蹤效果較好。

圖8 算法效果對比3
采用準(zhǔn)確性、魯棒性和運行速度對算法進行性能評估。準(zhǔn)確度是目標(biāo)在跟蹤過程中跟蹤框與真實邊界框之間的平均重疊。魯棒性是度量跟蹤器丟失目標(biāo)的次數(shù)與跟蹤次數(shù)的比率。運行速度指每秒計算的圖像幀數(shù)。
跟蹤算法的性能對比如表2所示。在跟蹤準(zhǔn)確性方面,本文算法得分0.67,低于ECO的0.72,但高于其他算法;在魯棒性方面,本文算法得分0.26,在實驗算法中數(shù)值最低、表現(xiàn)最好;在跟蹤速度方面,運行速度達到25.1幀每秒,高于跟蹤準(zhǔn)確性較好的CSRDCF和ECO跟蹤算法。本文算法加入了尺度估計和目標(biāo)再檢測策略,在準(zhǔn)確性方面有了改善,魯棒性也更好,同時能夠滿足實時性要求,跟蹤性能較好。

表2 跟蹤算法性能評估
針對當(dāng)前紅外視頻中目標(biāo)檢測跟蹤中存在的問題,同時為了兼顧實時性和準(zhǔn)確性,本文提出了一種聯(lián)合YOLO和核相關(guān)濾波的紅外視頻目標(biāo)檢測跟蹤方法。首先對紅外視頻幀進行濾波降噪和銳化處理,突出了目標(biāo)信息從而提高檢測準(zhǔn)確率;然后使用YOLOV3網(wǎng)絡(luò)模型進行目標(biāo)檢測,識別目標(biāo)并初始化跟蹤器;其次采用KCF算法進行目標(biāo)跟蹤,使用多尺度估計預(yù)測尺度變化;最后,在最大響應(yīng)峰值出現(xiàn)異常后進行目標(biāo)再檢測,利用最新的目標(biāo)信息進行跟蹤,確保目標(biāo)不丟失。本文算法的準(zhǔn)確率和實時性較好,能夠克服目標(biāo)尺度變化和跟蹤丟失的情況,可以應(yīng)用于紅外成像攝像機的智能監(jiān)控,有較高的實用價值。但是,本文算法只在單目標(biāo)場景下檢測跟蹤,下一步將對復(fù)雜場景和多目標(biāo)進行研究,提高算法的適用性。