劉 春, 栗 健
(湖北工業(yè)大學 計算機學院, 武漢 430068)
這幾年, 目標跟蹤越來越成為計算機視覺研究領(lǐng)域中的一個焦點問題.傳統(tǒng)的目標跟蹤方法有均值漂移(mean shift)算法[1]與光流(Lucas-Kanade)算法[2]等.基于均值漂移的思想是沿與模板相似度最大的矢量方向不斷迭代候選目標框, 并收斂于目標的真實位置.但是這種方法無法很好地適應(yīng)目標的尺度變化和快速移動.光流法主要通過分析視頻中像素灰度值隨時間的變化規(guī)律來獲取光流信息, 進而計算相鄰序列之間的相關(guān)性來捕獲目標的運動狀態(tài).基于光流的方法假設(shè)目標在運動時亮度不變以及目標在相鄰幀的位移較小, 因此這種方法只適用于背景和光照沒有明顯變化的場景, 然而實際應(yīng)用中, 背景和光照往往處于不斷變化中, 這種方法存在較大的局限性.
為了解決上述問題, 第一個基于相關(guān)濾波的方法被提出, 即平方誤差最小濾波器(Minimum Output Sum of Squared Error, MOSSE)[3].它根據(jù)第1幀的樣本, 通過計算輸出結(jié)果的最小均方誤差, 生成一個具有判別性的濾波器, 從而有效區(qū)分背景和目標.在跟蹤過程中,通過搜索區(qū)域經(jīng)過濾波器作用后的響應(yīng)圖像來尋找目標的位置, 響應(yīng)圖像的值越大, 說明該位置的圖像與目標的相關(guān)性越大.隨后, 又有若干算法對此進行了大量改進, 比如基于目標的尺寸和位置, 選擇相關(guān)搜索區(qū)域,不過這些算法與搜索區(qū)域設(shè)置相關(guān), 若過小或者過大,可能會引起目標丟失或跟蹤漂移[4].
隨著出現(xiàn)了一些與深度學習相關(guān)的跟蹤算法, 這使目標跟蹤算法的研究取得了極大的進步和發(fā)展.首次將深度學習應(yīng)用于跟蹤任務(wù)的方法是創(chuàng)造性地使用了離線訓練+在線微調(diào)的深度目標跟蹤框架[5].在這之后, Leal-Taixé等人[6]在深度學習框架下使用trackingby-detection方式, 通過two-stage學習匹配, 研究出了一種在對行人跟蹤時的數(shù)據(jù)關(guān)聯(lián)新方法.2018年, 中國科學院的何安豐等人[7]提出的SA-Siam目標跟蹤算法在SiamFC基礎(chǔ)上改進網(wǎng)絡(luò)結(jié)構(gòu), 采用了雙孿生網(wǎng)絡(luò)的結(jié)構(gòu)來提升模型在目標跟蹤任務(wù)中的判別能力.2019年, Voigtlaender等人[8]在Faster R-CNN的基礎(chǔ)上, 引入了一種具有Tracklet動態(tài)規(guī)劃算法的孿生兩階段全圖像重檢測架構(gòu), 提出的Tracklets的動態(tài)規(guī)劃算法能夠在遮擋和目標消失等挑戰(zhàn)下具有一定效果.
但是由于航道中存在天氣、水面光線變換強烈、船只種類、船只互相遮擋等一系列問題, 造成一般目標跟蹤算法的檢測精確度低, 船只重復計數(shù)頻發(fā).為了解決這些問題, 本文提出了一種基于YOLOv3的可變時間窗自校正船只目標跟蹤與計數(shù)方法, 首先通過Darknet-53訓練網(wǎng)絡(luò)結(jié)構(gòu), 得到一個在航道以及水運場景下的船只檢測模型, 然后對目標進行全局性的HSV直方圖與局部性的LBP直方圖特征提取、篩選與匹配, 進行初步的目標跟蹤, 再融合判斷方向的多幀回歸與統(tǒng)計計數(shù)組成的可變時間窗模型對跟蹤計數(shù)進行自校正, 平滑計數(shù)時產(chǎn)生的抖晃, 整個算法不僅可以實現(xiàn)航道設(shè)施的實時監(jiān)測與智能預警, 還能幫助工作人員進行輔助決策且對航道內(nèi)快速檢修具有非常良好的效果.
YOLOv3目標檢測算法是一種從端到端的目標檢測算法, 具有速度快、精度高的優(yōu)點, 并且滿足實時檢測要求, 它是以Darknet-53網(wǎng)絡(luò)為基礎(chǔ), 采用全卷積神經(jīng)網(wǎng)絡(luò)來提取圖像特征, 該網(wǎng)絡(luò)由一系列3×3和1×1的卷積層構(gòu)成, 共有53層[9].為了解決特征提取的層數(shù)過深可能會帶來的梯度消失問題, 它利用殘差很大程度上減少了每次卷積的通道, 最后將輸入圖像的3個不同尺度的特征圖分別進行多尺度預測并融合輸出.YOLOv3檢測算法如圖1所示.
圖1 YOLOv3檢測算法流程
本文針對YOLOv3的LeakyReLU激活函數(shù)進行了更適合本項目的優(yōu)化, 數(shù)學表達式為f(x)=max(ax,x),a為訓練過程中自學習的參數(shù), 使神經(jīng)網(wǎng)絡(luò)節(jié)點在每一次訓練的反向傳播過程中都能快速準確地保持更新狀態(tài), 速度更快, 精度更佳, 在項目中使用更穩(wěn)定.而更高版本的YOLO使用了Mish激活函數(shù), 無法適用此優(yōu)化, 因此選擇YOLOv3目標檢測算法.后續(xù)跟蹤時所有候選目標均來自于此YOLOv3目標檢測算法檢測到的目標.
目標跟蹤是指給定視頻序列初始幀中的目標位置,在后續(xù)幀中預測每一幀中目標的位置, 得到目標完整的運動方向和軌跡的過程[10].通常情況下, 典型的目標跟蹤算法流程是由運動模型、外觀模型、觀測模型以及在線更新機制構(gòu)成.雖然在目標跟蹤領(lǐng)域已經(jīng)有很多的研究成果, 但是仍有許多關(guān)鍵技術(shù)有待突破.其中一個比較重要的問題是跟蹤時如果物體被阻擋, 那么物體重新出現(xiàn)時既可能會對它進行恢復識別與恢復計數(shù), 又有可能因目標檢測識別率原因把目標識別為新物體, 從而重復識別與重復計數(shù).為此本文在跟蹤過程中融合了判別與校正.在一個可變時間窗內(nèi)進行計數(shù)抑制和恢復.此跟蹤算法如算法1.
算法1.跟蹤算法1) 在第一幀圖像中確定跟蹤目標, 將該目標設(shè)為模板, 并獲得其HSV與LBP特征向量;2) 繼續(xù)進行目標檢測, 得到若干檢測待選目標;3) 獲得每個待選目標的HSV和LBP特征, 依次計算它們與跟蹤目標的相似度得分, 確定出一個相似度得分最高的待選目標;4) 使用可變時間窗自校正模型以避免出現(xiàn)計數(shù)重復以及方向誤判和抖動.
可變時間窗自校正模型分為兩個部分, 分別是基于可變時間窗的目標計數(shù)和基于多幀回歸的運動方向判別.前者可以在船只發(fā)生遮擋并重復計數(shù)以后實現(xiàn)計數(shù)自校正, 而后者會根據(jù)船只的運動趨勢來實現(xiàn)船只運動方向的自校正判斷.
在目標跟蹤時, 可能會出現(xiàn)多個待跟蹤目標, 為了能夠在視頻畫面中匹配一個與最初確定的模板最相近的目標來跟蹤, 因此需要對它們進行選擇[11].故通過HSV顏色直方圖的特點結(jié)合LBP直方圖的特點一起對待跟蹤的物體來選擇.
HSV空間特征是全局性的, 它可以較好地描述物體形狀的整體信息, 尤其適合描述一些形變較大的目標[12].LBP特征恰恰相反, 它比較適合描述一些局部性的特征, 比如目標的局部紋理, 以及目標的空間邊緣信息.非常重要的是, 計算LBP特征比較輕松, 檢測速度將會大大縮短[13].式(1)為LBP特征的提取過程:
其中, (xc,yc)表示中心像素;ic是灰度值;ip是相鄰像素的灰度值;s( ·)是一個符號函數(shù), 即:
HSV直方圖特征相似度計算公式為:
LBP直方圖特征相似度計算公式為:
其中,H1表示候選目標的HSV特征直方圖向量,H2表示模板目標的HSV特征直方圖向量;N表示直方圖bin數(shù)目;表示Hk中序號為J的bin的HSV顏色向量統(tǒng)計值;L1,L2分別表示候選目標和模板目標的LBP特征直方圖向量;M表示直方圖bin數(shù)目;表示Lk中序號為J的bin的LBP顏色向量統(tǒng)計值.
通過上面的計算, 我們可以非常輕松地得到待跟蹤目標的HSV和LBP的直方特征, 以及候選船只與模板的特征相似度, 設(shè)置HSV特征的權(quán)重為1, LBP特征的權(quán)重為2, 就計算出了所有待跟蹤船只的相似度得分.最后通過相似度得分的多少來選擇船只.
2.2.1 可變時間窗計數(shù)
在計算HSV直方特征相似度和LBP直方特征相似度后, 每一艘被跟蹤的船只在畫面中出現(xiàn)后從始至終都應(yīng)被認定為同一船只.因此, 當每艘船只被檢測出時, 通過計算HSV直方特征和LBP直方特征, 對每個不同的特征都會被賦予一個獨一無二的flag值, 并且使計數(shù)加一.這個flag值也會隨檢測線框一同標出.當后續(xù)跟蹤時, 因為跟蹤的船只具有和初始時非常近似的特征相似度, 所以為它們賦予了和初始時同一個flag值, 表明是同一船只, 不會使計數(shù)加一.如圖2所示.
圖2 船只計數(shù)原理
但是, 在實際的跟蹤過程中, 可能會出現(xiàn)2種情況對計數(shù)結(jié)果進行誤判: (1) 在兩船有遮擋現(xiàn)象時, 可能會出現(xiàn)“融為一體”的情況, 兩船整體可能會展現(xiàn)出與之前船只較大的相似度差別; (2) 當船只被遮擋并重新出現(xiàn)時, 可能由于角度, 光線等問題, 被遮擋的船只在遮擋前后也顯示出了較大的相似度差別.這兩種情況都可能會被認為出現(xiàn)了一艘新的船只, 使計數(shù)錯誤加一.
為此針對第1種情況設(shè)計了一種可變時間窗的計數(shù)方法.思想是如果被跟蹤的某些船只突然“消失”, 那么說明船只可能被遮擋.此時間窗長度會與遮擋船與被遮擋船的大小差成正比, 速度差成反比.因為在視頻圖像中, 越小以及越慢的船只通過同一遮擋物所需的時間往往越長.
在實際的航行過程中, 因為每艘船只的速度變化較小, 所以可以將被跟蹤船只出現(xiàn)到消失這段時間的平均速度作為船只的速度.而兩船的大小差可以根據(jù)跟蹤船只的線框長度相減得到.
因此, 時間窗的長度根據(jù)船只大小與速度進行變化, 即:
其中,L表示時間窗大小,a為待定參數(shù),x1,v1分別為被遮擋船的長度與速度,x2,v2分別為遮擋船的長度與速度.
但是上述第2種情況屬于自然條件不可控, 因此可以對通過式(5)計算得到的時間窗長度進行適當延長, 提高容錯率.
最后判斷在上述計算出的時間窗口內(nèi), 這艘“新”的船只是否消失且原船只再次出現(xiàn).如果是, 那么就對計數(shù)進行校正, 減去這些出現(xiàn)的“新”船只的數(shù)量.
2.2.2 多幀回歸方向判斷
理論上, 跟蹤目標時, 根據(jù)在相鄰兩幀同一目標的區(qū)域坐標大小, 即可計算出目標的運動方向.如第一幀目標的坐標為(12, 22), 第二幀坐標為(14, 22), 則目標在向畫面的右側(cè)移動.但是在實際的應(yīng)用過程中, 可能會隨著畫面與目標的同步移動使目標物體的坐標出現(xiàn)抖動, 如果按上面的方法判斷, 向同一個方向運動的物體極有可能出現(xiàn)(12, 22), (11, 22), (13, 22)這樣的坐標形式而判斷為先向左后向右的移動順序.采用多幀回歸判斷算法可抑制此問題: 通過對當前幀前后的若干幀中目標物體的坐標作回歸分析, 得出物體的運動趨勢, 再結(jié)合相鄰兩幀的坐標對比做出綜合判斷, 以此來確定目標物體的運動方向.
在判斷船只運動方向時, 可以建立下面的線性關(guān)系:
其中,A和B為待定參數(shù), ε為隨機誤差項,X表示時間,Y表示船只的橫坐標.
當我們判斷某一時刻船只的運動方向時, 將這一時刻的幀與它之前若干相鄰幀的船只坐標提取出來,通過回歸方程計算可以得出B的正負值, 當B為正值時, 可初步判斷船只運動方向趨勢為向畫面的右側(cè)移動, 反之則向左側(cè)移動.當船只向左側(cè)移動時, 在跟蹤線框之上標注L, 反之標注R.
隨機選取一幀, 記錄與之相鄰的之前若干幀坐標數(shù)據(jù)(此時時刻為0), 如表1.若以傳統(tǒng)方式判斷前后兩幀坐標, 則會發(fā)現(xiàn)橫坐標變小, 會發(fā)生船只向畫面左側(cè)移動的誤判.而通過計算回歸方程可以得出Y=2.4978+0.0383X, 因B=0.0383為正值, 可判斷此時船只為向畫面右側(cè)移動.
常識和實驗驗證發(fā)現(xiàn), 判斷船只方向應(yīng)該是以船只運動趨勢來作為基本判斷依據(jù), 而不是前后兩幀的變化, 因此本方法可以有效地減少抖動, 提高判斷正確率.
可變時間窗自校正跟蹤計數(shù)模型可以與YOLOv3神經(jīng)網(wǎng)絡(luò)進行融合, 設(shè)計一個校正網(wǎng)絡(luò)來實現(xiàn)本文自校正模型的功能.
該校正網(wǎng)絡(luò)為一個鏈式結(jié)構(gòu), 包含2個模塊.第1個模塊包含3個卷積單元, 第2個模塊包含3個全連接層.然后, 修改YOLOv3模型的網(wǎng)絡(luò)結(jié)構(gòu), 使校正網(wǎng)絡(luò)融入到基于YOLOv3的跟蹤網(wǎng)絡(luò)結(jié)構(gòu)中.它可以處理跟蹤網(wǎng)絡(luò)的輸出結(jié)果, 對其進行校正, 隨后根據(jù)這個結(jié)果對跟蹤網(wǎng)絡(luò)及其自身進行網(wǎng)絡(luò)更新.如圖3所示.
圖3 融合網(wǎng)絡(luò)結(jié)構(gòu)圖
利用校正網(wǎng)絡(luò)的結(jié)果同時更新跟蹤網(wǎng)絡(luò)與校正網(wǎng)絡(luò), 并將其作為下一幀學習的網(wǎng)絡(luò).本研究采用校正網(wǎng)絡(luò)確定的最佳樣本的尺度作為追蹤目標的尺度[14], 計算速度大大加快, 也節(jié)省了計算開銷.
本實驗采用了NVIDIA 2060的GPU與PyCharm編輯器的開發(fā)環(huán)境.通過長江實地拍攝以及上網(wǎng)搜索得到1565張船只圖片, 制作VOC數(shù)據(jù)集時將圖片按6:2:2的比例分為訓練集, 驗證集與測試集, 使訓練集為939張圖片, 測試集為313張圖片, 驗證集為313張圖片.使用Darknet-53訓練網(wǎng)絡(luò)結(jié)構(gòu), 根據(jù)實際情況對樣本分類與算法修改, 將自校正模型添加到網(wǎng)絡(luò)結(jié)構(gòu)中去.開始訓練之前, 根據(jù)GPU性能表現(xiàn), 修改batch=64,subdivisions=8, learning_rate=0.001, momentum動量系數(shù)設(shè)置為0.9, policy學習率調(diào)整的策略為steps.然后對數(shù)據(jù)集進行訓練, 同時系統(tǒng)可以自動保存所有的記錄和訓練好的模型.其中有一個自動覆蓋的最優(yōu)訓練模型以供使用.
不僅如此, 系統(tǒng)還生成了訓練時的當前平均損失以供研究者實時觀察.因為它是評價目標檢測效果的重要指標[15], 所以我們可以非常直觀地看到訓練完成后的效果.當我們進行了大約400次的訓練以后, 此時平均損失變化極小.這時說明訓練已經(jīng)基本完成, 可以達到一個比較良好的效果.
當前平均損失收斂圖如圖4所示.
圖4 當前平均損失收斂圖
隨機挑選一張船只圖片進行檢測, 可以看出檢測時間為35.723 ms, 船只檢測ship匹配度為90%, 如圖5所示.
圖5 船只目標檢測效果
對水運以及航道場景下的視頻測試主要應(yīng)對船只種類的多樣性、太陽或燈光等不同光線的照射、拍攝視角不同等問題.本文采用了多種類別監(jiān)控與視頻素材, 測試的場景豐富, 涵蓋了各種天氣條件下的多種場景, 以保證該目標跟蹤與計數(shù)方法在視頻或監(jiān)控等多種場景下都可以穩(wěn)定運行.使用如上的船只檢測模型,通過上傳不同場景下船只的視頻, 即可實現(xiàn)目標檢測并跟蹤計數(shù), 并展示出較高的跟蹤成功率以及計數(shù)正確率.跟蹤效果如圖6所示.
圖6 船只目標跟蹤效果
為了驗證本文提出的自校正計數(shù)模型是否可以通過使用可變時間窗對通航的船只進行計數(shù)的自校正,進行了對照實驗, 實驗組為融合了自校正模型的改進網(wǎng)絡(luò), 對照組為未融合的普通YOLOv3網(wǎng)絡(luò).通過對比是否應(yīng)用可變時間窗自校正跟蹤計數(shù)模型, 對計數(shù)結(jié)果進行了統(tǒng)計.實驗中使用了9個不同的視頻, 分別統(tǒng)計了應(yīng)用算法前后的跟蹤計數(shù)效果, 實驗結(jié)果如表2所示.
表2 應(yīng)用自校正算法前后計數(shù)效果對比
由表2可以看出, 在沒有使用本文提出的自校正計數(shù)模型時, 因為畫面抖動, 遮擋導致計數(shù)非常不準確,尤其是2號視頻序列船只計數(shù)為70, 船只被重復計數(shù)了18次.而在使用了自校正計數(shù)模型后, 2號視頻序列的船只計數(shù)為54次.參考其他視頻序列實驗數(shù)據(jù), 表明已基本滿足目標實時跟蹤與計數(shù)的性能要求.
本文介紹了基于YOLOv3目標檢測算法的航道水運場景下船只目標跟蹤與自校正計數(shù)方法, 包括系統(tǒng)的架構(gòu)、數(shù)據(jù)集制作、模型訓練、特征提取、目標跟蹤、方向判別與計數(shù)、檢測結(jié)果和結(jié)果分析.通過對大量視頻素材的測試結(jié)果分析, 本文所講述的船只目標跟蹤與計數(shù)系統(tǒng)在多種場景、多種天氣條件下均能抵抗抖晃穩(wěn)定計數(shù).但是在出現(xiàn)兩條相似船只且有交錯重合的條件下, 仍然會造成計數(shù)出錯, 在后續(xù)進一步的研究中將針對這種情況做進一步的優(yōu)化.