馮志剛,賈寧寧,朱琳琳
(沈陽航空航天大學(xué) 自動化學(xué)院,沈陽 110136)
隨著機(jī)器學(xué)習(xí)與人工智能技術(shù)的發(fā)展,視頻目標(biāo)檢測與跟蹤技術(shù)成為當(dāng)下計(jì)算機(jī)視覺處理領(lǐng)域的核心內(nèi)容,同時也是無人汽車駕駛、現(xiàn)實(shí)增強(qiáng)、人機(jī)智能交互中的目標(biāo)檢測、行為識別以及目標(biāo)跟蹤的基礎(chǔ)[1]。目前國內(nèi)外主流的視頻跟蹤系統(tǒng)在滿足跟蹤精度和魯棒性前提下,因其高復(fù)雜計(jì)算量,硬件性能限制,多應(yīng)用實(shí)現(xiàn)于PC設(shè)備[2],針對成本、功耗、體積要求較為嚴(yán)格等原因,使移動設(shè)備無法滿足工程應(yīng)用。為解決上述問題,本文設(shè)計(jì)一種基于Hi3516a的視頻跟蹤系統(tǒng),構(gòu)建該系統(tǒng)硬件平臺電路,利用核相關(guān)濾波器跟蹤算法(Kernelized Correlation Filter,即KCF)實(shí)現(xiàn)對視頻目標(biāo)運(yùn)動物體的跟蹤,并將其運(yùn)用到無人機(jī)視覺系統(tǒng)中,實(shí)現(xiàn)對視頻序列中的目標(biāo)實(shí)時跟蹤。
本視頻跟蹤硬件系統(tǒng)主要是由Hi3516a核心系統(tǒng)電路、SDI解碼電路、復(fù)位電路、電源電路和無線網(wǎng)絡(luò)通訊電路構(gòu)成。系統(tǒng)通過工業(yè)CCD相機(jī)采集視頻圖像,經(jīng)SDI數(shù)字解碼電路完成由SDI接口到BT1120數(shù)據(jù)接口視頻圖像的傳輸,Hi3516a將圖像信息經(jīng)過圖像跟蹤算法處理后完成目標(biāo)圖像跟蹤,并將檢測跟蹤的視頻圖像通過無線網(wǎng)絡(luò)通信電路上傳至上位機(jī)進(jìn)行跟蹤結(jié)果顯示。其系統(tǒng)硬件框架圖如圖1所示?,F(xiàn)對系統(tǒng)各個電路功能模塊進(jìn)行說明,在這里無線網(wǎng)絡(luò)通信電路采用USB接口的3200M雙頻無線網(wǎng)卡作為圖傳模塊, Hi3516a處理器內(nèi)部集成USB控制器,僅需兩路信號線和一路電源線即可完成圖傳模塊的硬件連接。
圖1 系統(tǒng)硬件框架圖
本視頻系統(tǒng)核心由Hi3516a處理器、Nor Flash電路和DDR3L電路構(gòu)成。Hi3516a處理器是針對高清IPCamera應(yīng)用產(chǎn)品開發(fā)的一款專業(yè)高端Soc芯片,最高主頻達(dá)800 MHz,片內(nèi)集成豐富的音視頻解碼單元,提供一路BT1120/BT656視頻輸出接口,用于外擴(kuò)HDMI或SDI接口,最大支持1080P輸出,同時由于高性價比被廣泛應(yīng)用于視頻監(jiān)控和車載導(dǎo)航等諸多圖像處理領(lǐng)域。Nor Flash電路由芯片MX25l25635及外圍電路構(gòu)成, 在本系統(tǒng)中Hi3516a處理器通過配置4bytes address boot mode 從NOR Flash中啟動uboot,然后加載Linux內(nèi)核與根文件系統(tǒng)到內(nèi)存單元。DDR3L電路由兩片16bitH5TC2G63FFR芯片及外圍電路構(gòu)成32位的SDRAM。
本系統(tǒng)采用I/O電源和內(nèi)核電源(3.3 V和1.1 V)的雙電源供電模式,減少芯片運(yùn)行時的功耗。利用MP1471A降壓轉(zhuǎn)換輸出3.3 VI/O電壓,該芯片輸出電流最高可達(dá)2.5 A,轉(zhuǎn)換效率高達(dá)95%,同時內(nèi)部集成短路和過溫保護(hù)電路,圖2所示為I/O電源電路原理圖。經(jīng)過I/O電源輸出的3.3 V電壓由MP2122電源管理芯片轉(zhuǎn)換輸出1.1 V內(nèi)核電壓,為Hi3516a處理器以及DDR3L電路提供工作內(nèi)核電壓,其最大內(nèi)核電流達(dá)2A,內(nèi)核電源電路原理圖如圖3所示。
由于輸入電源中存在脈沖電流和外部電壓干擾,因此須在內(nèi)核電源電路以及I/O電源電路的輸入端和電源地之間并聯(lián)加入22 μF和0.1 μF電容以減少外部擾動。為了保證電源電壓高效輸出,減少輸出紋波,輸出端串聯(lián)4.7 μH電感,并聯(lián)100 nF電容,如圖2中標(biāo)號1、標(biāo)號2所示。同時在芯片反饋端引入偏置電壓調(diào)節(jié)目標(biāo)電壓的輸出。另外在輸出端添加47 μF電容以保證電壓穩(wěn)定輸出。
利用SDI解碼芯片GV7601完成SDI視頻輸入信號解碼,其數(shù)據(jù)傳輸速率最高可達(dá)2.97Gb/s,通過SPI接口完成8-bit、10bit和12-bit分量數(shù)字視頻信號寄存器配置。其電路圖如圖4所示,圖中SDI視頻信號通過6.2nH電感與1 μF電容對輸入SDI信號進(jìn)行濾波,抑制高頻噪聲。
本視頻跟蹤系統(tǒng)的復(fù)位設(shè)計(jì)采用單獨(dú)精密電源電壓監(jiān)控電路設(shè)計(jì),在上電啟動、異常關(guān)斷和掉電情況下,在輸入復(fù)位引腳MR上發(fā)生低電平跳變,并產(chǎn)生復(fù)位輸出,完成對NOR Flash電路、DDR3L電路、Hi3516a以及SDI解碼電路復(fù)位工作。當(dāng)供電電源VCC低至1V時,復(fù)位輸出仍能保持工作。其中PFI引腳為監(jiān)測電源輸入端,是芯片內(nèi)部比較器的同相輸入端,通過配置電阻R222與R221進(jìn)行監(jiān)控電壓設(shè)置,如圖5所示。
圖2 I/O電源電路原理圖
圖3 內(nèi)核電源電路原理圖
圖4 SDI編解碼電路原理圖
圖5 復(fù)位電路原理圖
根據(jù)上述電路原理圖的設(shè)計(jì),完成6層PCB電路制版,并對電路功能進(jìn)行焊接調(diào)試,完成硬件電路平臺搭建。最終硬件平臺如圖6所示。
通過以上跟蹤系統(tǒng)硬件電路設(shè)計(jì)完成了基于Hi3516a視頻跟蹤系統(tǒng)的嵌入式硬件平臺搭建?,F(xiàn)在通過Hi3516a軟件系統(tǒng)設(shè)計(jì)完成應(yīng)用程序開發(fā),最終實(shí)現(xiàn)視頻跟蹤功能。
圖6 Hi3516a視頻跟蹤系統(tǒng)硬件平臺
針對目標(biāo)機(jī)Hi3516a平臺,將跟蹤應(yīng)用程序在宿主機(jī)上經(jīng)過“編譯-鏈接-定位”得到可執(zhí)行文件[5]。最終將可執(zhí)行文件燒寫到Hi3516a硬件平臺中。整個Hi3516a軟件平臺搭建主要分為uboot移植、linux內(nèi)核移植和根文件系統(tǒng)制作。其搭建步驟如下:
(1)安裝交叉編譯工具鏈arm-hisiv300-linux。
(2)編譯與移植uboot。在命令行下輸入“make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux-hi3516a_config”進(jìn)行編譯環(huán)境配置,通過配置表格完成DDR SDRAM寄存器配置,合并reg-infor-Hi3516a.bin文件與uboot.bin文件生成uboot鏡像文件zImage。
(3)編譯與移植linux內(nèi)核。執(zhí)行指令“make menuconfig”進(jìn)行內(nèi)核配置,選擇需要安裝功能模塊完成編譯內(nèi)核,生成鏡像。
(4)根文件系統(tǒng)制作。對busybox源碼進(jìn)行配置、編譯和安裝,最終生成yaffs2格式的根文件系統(tǒng),并將生成的根文件系統(tǒng)燒寫進(jìn)NOR Flash指定地址。
至此,一個基于Hi3516a的視頻跟蹤系統(tǒng)的嵌入式軟件開發(fā)平臺已經(jīng)搭建好,現(xiàn)在可以使用Qt-linux IDE平臺進(jìn)行應(yīng)用程序的設(shè)計(jì)。
在開發(fā)視頻跟蹤應(yīng)用程序同時,還需要用到OpenCV函數(shù)庫,OpenCV是由Intel公司于1999年推出的一款基于BSD許可的跨平臺計(jì)算機(jī)視覺庫[7],它實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法,因此被廣泛應(yīng)用。本系統(tǒng)在linux平臺下對OpenCV進(jìn)行交叉編譯和安裝,將最終生成的庫文件和頭文件移植到根文件系統(tǒng)上。
此外,在進(jìn)行應(yīng)用程序編程時,還需要對相機(jī)采集到的視頻信號流進(jìn)行多媒體處理,例如,跟蹤框的疊加、視頻輸出流編碼等。海思提供的媒體處理軟件平臺(Media Process Platform,簡稱 MPP)對應(yīng)用軟件屏蔽了芯片相關(guān)的復(fù)雜底層處理,并且對應(yīng)用軟件直接提供MPI(MPP Programe Interface)接口完成相應(yīng)功能,可以很好地支持應(yīng)用軟件快速開發(fā)。
目標(biāo)板將視頻圖像通過實(shí)時流傳輸協(xié)議(Real Time Streaming Protocol,即RTSP)搭建流媒體服務(wù)器并將視頻流上傳地面上位機(jī),選取待跟蹤目標(biāo)并將跟蹤目標(biāo)圖像幀發(fā)送至Hi3516a目標(biāo)板,當(dāng)目標(biāo)板得到跟蹤目標(biāo)圖像便開啟跟蹤線程對當(dāng)前幀進(jìn)行檢測跟蹤,并將檢測跟蹤結(jié)果以疊加圖層形式將跟蹤窗反饋至視頻圖像上。系統(tǒng)程序主流程圖如圖7所示。
圖7 系統(tǒng)程序主流程圖
得益于機(jī)器學(xué)習(xí)技術(shù)的長足發(fā)展,許多優(yōu)秀的判別式目標(biāo)跟蹤算法相繼提出,KCF高速目標(biāo)跟蹤算法是一種基于相關(guān)濾波框架之上的目標(biāo)跟蹤算法[4]。該算法主要由樣本訓(xùn)練和目標(biāo)檢測兩部分構(gòu)成[5],其核心思想是將目標(biāo)區(qū)域通過循環(huán)位移構(gòu)建出大量訓(xùn)練樣本,并將所有樣本對嶺回歸分類器進(jìn)行訓(xùn)練,在目標(biāo)檢測部分,通過嶺回歸分類器選取出匹配度最佳的目標(biāo)候選區(qū)域作為新的跟蹤目標(biāo)[6]。下面對該算法原理進(jìn)行簡要描述,圖8為該算法流程圖。
圖8 KCF跟蹤算法流程圖
由循環(huán)位移構(gòu)建出來的循環(huán)矩陣作為訓(xùn)練樣本對嶺回歸分類器進(jìn)行訓(xùn)練,其訓(xùn)練目的是為了找出目標(biāo)函數(shù)f(z)=wTz,使得訓(xùn)練樣本xi和其回歸目標(biāo)值yi的損失函數(shù)最小[1],即
(1)
其中λ是用來防止函數(shù)過擬合的正則化參數(shù)。在傅立葉域中,可求得式(1)的一個閉環(huán)解為
w=(XHX+λI)-1XHy
(2)
式中XH表示訓(xùn)練樣本矩陣X的共軛轉(zhuǎn)置,y是由回歸目標(biāo)值yi構(gòu)成的列向量。
(3)
為了改善分類器性能,通過引入核函數(shù)把輸入樣本映射到高維特征空間φ(x)中,最終得到的非線性相關(guān)濾波與線性相關(guān)濾波幾乎是一樣的效率。同時核函數(shù)的引入使得分類器的解可以表示為所有輸入樣本的線性組合,即
(4)
此時,求解w轉(zhuǎn)化為求解α。其基于核函數(shù)的嶺回歸分類器的解為
α=(K+λI)-1y
(5)
上式中的K為n×n的核矩陣,其元素為Kij=κ(xi,xj),α為以系數(shù)αi為元素的向量,代表著對偶空間的解。
引入傅立葉域可得
(6)
至此,訓(xùn)練出的嶺回歸分類器將應(yīng)用到下一幀圖像的目標(biāo)檢測當(dāng)中[9-11]。
在新的一幀目標(biāo)候選圖像塊z中,其分類器的回歸函數(shù)為[8]
(7)
設(shè)分類器的訓(xùn)練樣本和候選圖像的核矩陣為Kz,Kz的每一個元素都可由κ(Pi-1z,Pj-1x)表示,且Kz同樣是一個循環(huán)矩陣[9],可寫為
Kz=C(kxz)
(8)
式中kxz是x與z的核相關(guān)。則各個候選樣本的響應(yīng)為
f(z)=(Kz)Tα
(9)
對(9)式進(jìn)行傅立葉變換可得
(10)
則輸出響應(yīng)最大的值即為目標(biāo)檢測范圍[12-13]。
在對目標(biāo)源進(jìn)行跟蹤的過程中,無人機(jī)在飛行過程中攝像頭與跟蹤目標(biāo)之間的距離以及形變發(fā)生的變化導(dǎo)致采集訓(xùn)練樣本不準(zhǔn)確,相對于第一幀樣本變化尺度較小時,背景圖像信息過多進(jìn)入訓(xùn)練樣本,尺度變大時,則會導(dǎo)致一部分目標(biāo)信息進(jìn)入負(fù)樣本[13]。為解決尺度變化帶來的跟蹤誤差提出一種多尺度的KCF目標(biāo)跟蹤算法。該算法在原有的KCF跟蹤算法基礎(chǔ)上加入雙線性插值算法[16],可以對多尺度下的目標(biāo)進(jìn)行跟蹤。
首先定義一個尺度集合N
N={n1,n2,…,nk}
(11)
該集合中的元素n表示目標(biāo)大小的縮放尺度,假設(shè)前一幀目標(biāo)所在位置為Pospre,對應(yīng)的目標(biāo)尺度大小為nt,對當(dāng)前幀采集k個不同尺度下的檢測樣本,且nk∈N。則采樣結(jié)果記為{nist|ni∈N}。
當(dāng)對目標(biāo)進(jìn)行檢測時,需要采用固定的外觀模型進(jìn)行核相關(guān)性計(jì)算。將目標(biāo)尺度大小nt作為固定尺度大小,根據(jù)雙線性差值算法對當(dāng)前幀下的不同尺度采樣結(jié)果進(jìn)行縮放,使得采樣結(jié)果大小與nt大小一致[16]。
則目標(biāo)在固定尺度下的采樣結(jié)果的響應(yīng)回歸值為:
(12)
由于當(dāng)前幀的偏移量通常由采樣結(jié)果的響應(yīng)回歸值表示,而實(shí)際的偏移量大小需要根據(jù)縮放尺度ni進(jìn)行相應(yīng)的調(diào)整,根據(jù)式(12)可以得到目標(biāo)的縮放尺度ni而獲得當(dāng)前幀中實(shí)際目標(biāo)大小nist,同時根據(jù)實(shí)際的偏移量大小得到當(dāng)前幀中目標(biāo)位置。
通過對Hi3516a硬件平臺和軟件平臺的搭建,在Qt-IDE環(huán)境下進(jìn)行視頻跟蹤應(yīng)用程序設(shè)計(jì),實(shí)現(xiàn)Hi3516a的視頻跟蹤系統(tǒng)。將本系統(tǒng)搭載到小型無人機(jī)平臺進(jìn)行跟蹤實(shí)驗(yàn),跟蹤結(jié)果如圖9所示,跟蹤精度如圖10所示。圖中視頻源分辨率為1920*1080,跟蹤目標(biāo)初始大小120*320,在視頻幀率達(dá)到30幀/秒時,圖像未出現(xiàn)花屏卡頓現(xiàn)象。同時當(dāng)目標(biāo)人物在逐漸接近無人機(jī)攝像機(jī)的過程中尺度姿態(tài)發(fā)生變化,跟蹤系統(tǒng)仍能夠?qū)\(yùn)動目標(biāo)進(jìn)行實(shí)時正確的跟蹤。根據(jù)測試結(jié)果可以看出改進(jìn)后的KCF算法滿足實(shí)時性要求,對跟蹤目標(biāo)尺度變化有較好的跟蹤效果。圖11為地面上位機(jī)顯示的跟蹤結(jié)果界面。
圖9 Hi3516a平臺跟蹤結(jié)果
圖10 跟蹤精度曲線圖
圖11 地面接收跟蹤結(jié)果上位機(jī)
本文以Hi3516a處理器為核心,針對無人機(jī)平臺對目標(biāo)跟蹤的需求完成了基于Hi3516a的硬件電路設(shè)計(jì)以及嵌入式軟件環(huán)境搭建和跟蹤應(yīng)用程序的編寫。同時應(yīng)用雙線性插值算法對KCF跟蹤算法進(jìn)行改進(jìn),提升KCF跟蹤算法在多尺度變化下的跟蹤精度。最終將本跟蹤系統(tǒng)應(yīng)用在無人機(jī)平臺進(jìn)行跟蹤測試,測試結(jié)果能夠很好地滿足跟蹤實(shí)時性要求,對跟蹤目標(biāo)的尺度變化有較好的跟蹤效果。