程子一,劉志林
哈爾濱工程大學 自動化學院,黑龍江 哈爾濱 150001
目標跟蹤一直是計算機視覺中的經(jīng)典問題,它廣泛應用于自動駕駛、人機交互和交通監(jiān)控等領域[1-3]。目標跟蹤[4]要求對輸入的圖像序列準確地標識出目標位置和大小等信息。Bolme等[5]首次將相關濾波思想引入到目標跟蹤,提出了基于誤差最小二乘[6]的MOSSE濾波器跟蹤。Zhang等[7]提出了時空上下文跟蹤(spatio-temporal context,STC)算法,利用深度時空上下文信息,把背景融入到卷積濾波器去訓練,具有一定的抗遮擋性。Danelljan等[8]提出了自適應的顏色屬性(color name,CN),他將顏色的屬性集成到(circulant structure of tracking-by-detection with kernels,CSK)跟蹤器上,對形變有較好的自適應性。Henriques等[9]改進CSK算法,提出KCF算法[10-13],采用梯度直方圖(histogram of oriented gradient,HOG)[14]特征,相比于灰度特征具有更好的跟蹤性能。
本文在KCF算法的基礎上,加入尺度框與目標跟蹤質(zhì)量檢測,并應用到自航模的動態(tài)目標跟蹤上。在實驗中將改進的KCF算法與原始KCF算法進行對比,驗證了改進算法的優(yōu)缺點。
1)構造樣本
設x=[x1,x2,…,xn]為基礎樣本,通過循環(huán)采樣得到樣本矩陣:
由文獻[6]可知循環(huán)矩陣可以由離散傅里葉變換進行對角化:
(1)
式中:^為離散傅里葉變換,F(xiàn)為離散傅里葉矩陣。
2)訓練樣本
KCF算法引入核函數(shù)來解決線性不可分的問題,提高了目標識別度,并用嶺回歸訓練分類器:
(2)
式中:f(xi)為樣本xi的分類值,αi為待定的分類系數(shù),φ(x)為核函數(shù)對應的映射函數(shù),λ為正則化系數(shù),y為樣本的標簽矩陣,式(2)為嶺回歸目標函數(shù)。解得
α=(K+λI)-1y
其中K=C(kxx),同式(1)的性質(zhì)可對α進行快速地計算:
3)檢測目標
當下一幀圖像到來時,以目標框位置的圖像作循環(huán)采樣,獲得檢測樣本集z,則目標的位置響應公式如式(3)。
(3)
式中k(z,xi)為核函數(shù)。設Kz為檢測樣本和訓練樣本的核矩陣,由文獻[11]可知Kz為循環(huán)矩陣,令KZ=C(kxz),根據(jù)循環(huán)矩陣性質(zhì)并對其傅里葉對角化得
式中Θ表示元素相乘。通過計算
maxf(z)=f(zt)
則樣本zt(zt∈z)的移位坐標為目標框的移動坐標,即目標新位置。
4)更新分類器
αn=(1-β)αn-1+βnewαn
式中:β為更新系數(shù),αn和αn-1表示當前幀與上一幀的分類系數(shù),xn和xn-1表示當前幀與上一幀獲得的x。
當攝像頭與目標距離的改變時,目標在圖像中呈現(xiàn)的大小也將改變,為了使目標跟蹤具有尺度變換穩(wěn)定性,我們在檢測到目標的新位置后,會更換不同尺度的2個目標框去重新檢測目標位置,比較3次檢測的目標響應最大值f(zt),取最大的一個作為目標新的位置和目標框大小。
具體目標框的變換大小比例為原始框的1.1倍和0.9倍,其效果如圖1~3所示。
圖1 目標在遠距離
圖2 目標在初始距離
圖3 目標在近距離
由1.1節(jié)可知,KCF算法是在檢測樣本中選取f(z)最大的點作為目標新的坐標,那么在運動目標不是特別快的時候,通過實驗發(fā)現(xiàn),在目標被遮擋的過程中,f(zt)出現(xiàn)了如下變化:
首先,截取此過程視頻部分圖片,如圖4~6。
圖4 目標遮擋24幀畫面
圖5 目標遮擋40幀畫面
圖6 目標遮擋64幀畫面
從40幀開始目標被水桶遮住,在這之前,KCF算法還是能夠準確地找到目標的位置。然而,目標的f(zt)卻差別很大。圖4~6對應的f(zt)=0.84、0.24和0.66。通過記錄此過程的f(zt),繪制出了如圖7所示曲線。
圖7 遮擋過程的響應曲線
從圖7可以發(fā)現(xiàn),在目標沒有被遮擋、也沒有干擾的時候,目標的跟蹤狀態(tài)較好,f(zt)始終在0.7以上;在目標被遮擋的第40幀的時候,目標的f(zt)出現(xiàn)了大幅下降,通過不斷更新的模板和參數(shù),它開始學習了錯誤的目標,如圖3第110幀畫面,f(zt)又回到了0.65以上,對遮擋物進行跟蹤,從而丟失原先目標。因此,在f(zt)出現(xiàn)急劇下降時,可以認為目標被障礙物遮擋或者目標離開視野,此時應該中斷目標的繼續(xù)跟蹤,保護之前的參數(shù)不再繼續(xù)修改。
本設計采用的目標遮擋的判定準則為:
(4)
式中:u為丟失目標以前n幀畫面的最大響應值f(zt)平均值;σ表示標準差;本設計的n為30時效果良好;Vp表示當前幀的響應值,當它比平均值還小λσ時,則認為目標丟失。
通過式(4)可知,如果λ設置得過大,那么對于目標丟失的檢測則更加苛刻,在部分遮擋的情況下可能發(fā)生漏檢;同理,如果設置得過小,容易造成誤測,在船舶抖動或者目標形變的情況下,很有可能發(fā)生誤檢。
為了進一步地確定λ的值,進行了如下試驗:對不同值的λ,去檢驗目標遮擋檢測效果,在滿足式(4)時停止跟蹤,也不再畫框,并在水池對目標船進行了試驗,圖8為框取目標圖,圖9為目標框消失圖。
圖8 框取目標
圖9 目標框消失
首先,如圖8所示,先在水面上框取了目標船(此時λ=2),然后讓目標航行到障礙物后。目標船被遮擋時,目標框消失,λ=2可以檢測到目標的被遮擋,此過程的f(zt)曲線如圖10所示。
圖10 目標被遮擋實驗響應曲線
然而,當目標船轉向發(fā)生形變時,程序也判定為目標丟失,目標框消失,即發(fā)生了誤檢。其f(zt)曲線如圖11所示。
圖11 目標船轉向?qū)嶒烅憫€
從圖11可以看出,曲線雖然發(fā)生了下降,但是沒有在目標遮擋情況下降的幅度大,所以無法滿足式(4),λ=2顯然過小,無法滿足設計要求。
取λ=5,再次進行上述試驗,具體如圖12所示。
圖12 目標被遮擋實驗
在目標船被遮擋的時候,目標框沒有消失,此時為漏檢,它將會錯誤學習到障礙物信息。繪制f(zt)
曲線如圖13所示。
圖13 圖(12)對應響應曲線(λ=5)
從圖13就可以發(fā)現(xiàn),目標船被遮擋時,f(zt)發(fā)生了明顯的下降,由于λ=5條件過于苛刻,算法無法判定為遮擋,所以無法滿足設計要求。
通過多次試驗,并選取了巖石、木樁、灌木叢、塑料瓶等20個障礙物對不同λ值進行試驗。繪制檢測率與誤檢率曲線,如圖14所示。
圖14 檢測率與誤檢率曲線
圖14中實線曲線表示誤檢率,即沒有發(fā)生遮擋而被判定為遮擋;虛線曲線表示檢測率,即發(fā)生了遮擋而被成功檢測到了。顯然,對于目標跟蹤,誤檢與檢測失敗兩者的代價是不同的:誤檢時,參數(shù)不再更新,仍然可以利用此參數(shù)檢測出目標;而檢測失敗時,參數(shù)依照遮擋物更新,則不會再檢測出目標。
所以,本設計必須保證檢測率100%,由圖14可知,在λ=2.4時檢測率仍然是100%,但是為了保留一定余量,本設計取λ=2.2。
在檢測到目標遮擋后,停止更新分類器參數(shù),然后根據(jù)上一幀目標框的高度,在圖中構建一個掃描通道,如圖15。在這個通道中,以原目標框尺寸,利用滑窗法,滑動步長為目標框整數(shù)倍寬度像素,如式(3)繼續(xù)計算目標框中的響應值f(z),當不滿足式(4)時即認為找回目標,并繼續(xù)進行跟蹤。
圖15 目標掃描通道
綜上所述,改進后算法流程如圖16~17所示。
圖16 KCF算法流程
圖17 改進KCF算法流程
本設計假定為恒速運動,所以只要進行舵角的控制即可達到航向的控制。在航速一定條件下,舵角δ與航向變化速度和航向變化加速度的關系為
(5)
式中r為航向角速度。對式(5)進行簡化,得出一階KT方程[15],即
針對本設計的自航模,通過船舶回轉試驗和“Z”型試驗,計算出了自航模的KT參數(shù)分別為:K=0.584 6,T=0.134 8,航速u=0.25 m/s。自航模的控制模型傳遞函數(shù)為
設計PID航向控制器Kp=10.35,Ki=0.89,Kd=0.25對自航模進行航向控制。攝像頭傳回的圖像為寬度W=640 pix的畫面。那么
式中:p為在圖像上目標中心位置像素橫坐標,k=9.143為比例系數(shù),a為航向偏差角,當a為正時表示目標在目標在自航模的右前方。
當滿足式(4)目標丟失時:
1)若目標丟失位置在圖像邊緣,則為目標脫離視野,自航模保持轉向舵角,直至找回目標;
2)若目標丟失位置不在圖像邊緣,則認為目標被遮擋,此時保持航向不變,直至找回目標。
為驗證本文改進算法的穩(wěn)定性,本文選取了VIVID Tracking Evaluation Web Site上的目標跟蹤圖片序列作為驗證,λ=2.2,n=30,與本設計保持一致,結果如表1。
表1 改進算法對一般視頻實驗
目標遮擋檢測率為88.8%,目標遮擋后找回率為44.4%;對于目標的遮擋,KCF算法全部跟蹤失敗。
由于場地等條件限制,本實驗在一個4 m×4 m的水池進行,自航模初始為靜止狀態(tài),位于水池的一角,以另一艘自航模為目標,開始跟蹤時立即加速到最大速度(u=0.25 m/s)并勻速航行。通過在水池正上方安裝的攝像頭,觀察自航模跟蹤目標情況,并繪制了如下的航跡。試驗開始時,先使目標船處于自航模視野邊緣,手動操作目標船向另一個方向航行。
實驗一目標移動且脫離視野范圍,無障礙物進行跟蹤,比較KCF算法與本文算法,如圖18、19所示。
圖18 目標脫離視野實驗(KCF)
圖19 目標脫離視野實驗(改進KCF)
在目標移動自航模開始前進并向目標方向轉舵,目標過快脫離視野后,KCF算法的自航模以背景為目標跟蹤,幾乎不再進行轉向,如圖18;本文算法的自航模則向目標船消失方向最大限度轉舵,在目標重新出現(xiàn)在視野時,搜索到了目標并重新跟蹤,如圖19。
實驗二目標移動,有障礙物遮擋進行跟蹤,比較KCF算法與本文算法,如圖20、21所示。
圖20 目標經(jīng)過障礙物實驗(KCF)
圖21 目標經(jīng)過障礙物實驗(改進KCF)
開始時自航模朝目標前進,目標經(jīng)過障礙物時,KCF算法自航模則以障礙物為新目標進行跟蹤,如圖20;本文算法自航模則識別出目標丟失,繼續(xù)轉向,并重新找回目標繼續(xù)跟蹤,如圖21。
1)本文改進的算法,在一般視頻的目標遮擋檢測效果良好,但是為了節(jié)約計算資源,目標找回只是在水平方向上進行搜尋,所以無法在一般視頻中的目標找回取得較好結果。讀者可根據(jù)實際情況增加全圖的目標搜索;也可根據(jù)實際跟蹤目標與機器計算速度,調(diào)整式(4)的參數(shù)。
2)本設計在KCF算法上進行改進,針對目標跟蹤效果不佳時進行及時停止跟蹤,實驗表明:在目標被遮擋或者脫離視野后,仍然能找回目標繼續(xù)跟蹤。而原始KCF算法由于學習了錯誤背景,無法繼續(xù)跟蹤。
3)讀者可根據(jù)實際情況增加全圖掃描窗口進行目標搜索;也可根據(jù)實際跟蹤目標與機器計算速度,調(diào)整式(4)的參數(shù),以取得更好的跟蹤效果與穩(wěn)定性。