卞一杰 陳躍躍 扈嘯
摘? 要:近年來紅外傳感器在軍事、安防領域得到廣泛應用,基于嵌入式平臺的紅外目標識別算法是該領域的重點研究方向。該文提出了一種基于梯度方向特征的景象匹配算法,其可利用可見光模板對紅外圖像進行異源圖像間的目標識別。該文闡述了在算法移植過程中,如何基于TI公司的TMS320C6678 DSP芯片底層硬件、指令級流水線設計,對算法及算法框架進行優(yōu)化設計和編程,該方法可廣泛適用于其他圖像處理算法在DSP上的移植優(yōu)化。
關鍵詞:DSP;目標識別;并行優(yōu)化
中圖分類號:TP391? ? ? ? ? ? ? ? 文獻標志碼:A
0 引言
隨著電子科技的快速發(fā)展,紅外傳感器成本更低,圖幅和分辨率等性能更佳,該類傳感器憑借著優(yōu)越的天時/天候適應能力在汽車、航天、軍事等領域得到廣泛使用。由于異源圖像間灰度分布上存在極大的非均態(tài)性差異,導致異源圖像識別算法更具復雜性,異源圖像目標識別一直是計算機視覺領域中重要的研究方向。近年來,基于特征點、區(qū)域以及學習模型的異源圖像目標識別算法不斷推陳出新,各有優(yōu)劣,大多數(shù)算法都是基于PC研發(fā)的,計算復雜度比較大,計算時間存在波動性,在嵌入式軟件平臺上運行,很難達到實時性、穩(wěn)定性要求。因此,基于嵌入式平臺的紅外目標識別算法研究,在軍事、安防領域仍具有重大意義。
DSP(Digital Signal Processing)即數(shù)字信號處理,是以數(shù)字形式對信號進行采集、變換、濾波等處理,以此來得到符合人們需要的信號形式。DSP芯片是特別適合用來進行數(shù)字信號處理運算的微處理器,其能夠快速實現(xiàn)各種數(shù)字信號處理算法,其中C6000系列高性能DSP在圖像處理領域的應用最廣泛。基于FPGA+DSP架構的嵌入式系統(tǒng)設計充分利用了FPGA出色的半定制化電路擴展管理外設接口,讓DSP從繁雜的圖像采集以及外部數(shù)據(jù)通信任務中脫離出來,全力運行圖像處理算法。該架構的嵌入式處理平臺是圖像實時處理領域的主流系統(tǒng)架構,具有極高的工程意義。
該文介紹了一種基于高速移動的多核DSP平臺的紅外目標識別算法移植與優(yōu)化技術,首先簡單介紹了一種基于邊緣梯度方向特征的景象匹配算法 然后深入分析了DSP的硬件底層加速模塊設計對算法加速的支持,結合當前算法對移植優(yōu)化過程的設計思路進行重點介紹,最后展示了算法優(yōu)化前后性能上的實驗結果。
1 景象匹配算法
景象匹配算法是基于區(qū)域特征的匹配算法,是利用事先制備的可見光模板,在紅外實時圖上搜索目標的位置,該算法對每幅圖的計算量一致,是在嵌入式平臺上應用最多的匹配算法。因為異源圖像間非均態(tài)的灰度特征分布存在差異,如圖1所示,所以直接使用基于區(qū)域灰度特征的絕對誤差和算法(SAD)、誤差平方和算法(SSD)、平均絕對差算法(MAD)、平均誤差平方和算法(MSD)和歸一化積算法(NCC)等,通常無法定位出目標的位置。分別在MATLAB中實現(xiàn)比較了以上5種算法的匹配結果(其中SAD與MAD、SSD與MSD結果一致),如圖2所示。
從圖2中列出的相關系數(shù)矩陣曲面圖中可以發(fā)現(xiàn),灰度特征的相關系數(shù)響應峰值并不明顯,灰度特征匹配算法不能有效地將相似區(qū)域的特征區(qū)分出來。
通過人類視覺系統(tǒng)對外界信息處理機理進行分析可知,人眼對亮度調節(jié)具有自適應能力,對亮度級數(shù)的判斷能力很差,只能區(qū)分存在亮度差異的物體,視覺系統(tǒng)具有側抑制效應,其類似于一個帶通濾波器,大腦對人眼采集到的信號進行加權求和運算,形成一種邊緣增強的感覺,使人眼對邊緣位置的變化更加敏感[1]。因此該文將邊緣梯度方向信息作為異源圖像匹配的特征空間,根據(jù)橫向和縱向梯度的強度差異,得到梯度方向[-π/2,π/2]的角度,然后歸一化到[0,255]灰度級,得到邊緣梯,圖3為可見光和紅外圖像計算得到的梯度方向圖。
根據(jù)方向的幾何意義,方向越相近,其相似性越高,在提取特征空間后的特征圖中灰度級越相近相似性越高,因此可以使用SAD算法作為其相似性測度。匹配結果如圖4所示。
從圖4中的相關系數(shù)矩陣可以看出,對圖像進行梯度方向的特征提取后,使用SAD算法,圖像相似性的相關峰值更明顯,根據(jù)匹配算法置信度測量標準,次主相關峰和主相關峰值之間的比越小,則匹配結果更可靠。
2 TMS320C6678 DSP芯片
TMS320C6678采用TI公司最新研發(fā)的KeyStone多核架構,是當前該公司性能最高、功耗最低的多核定點數(shù)字信號處理器,繼承了C64x+指令集架構(ISA),且全面兼容IEEE 754二進制浮點數(shù)算數(shù)標準。其內核及外設示意圖如圖5所示。
TMS320C6678包含8個C64x DSP CorePac,架構如圖5所示,每個CorePac主頻高達1.25 GHz,每個核可以提供20GMAC定點計算或者20GFLOP浮點計算能力[2],增加的多核導航器、網(wǎng)絡協(xié)處理器等功能模塊,可以使DSP與其他協(xié)處理器以及外設間的數(shù)據(jù)傳輸性能得到極大提高。
C66x CorePac兼容了C64x+內核相同的A、B 2個對稱的功能區(qū),每個功能區(qū)都包含32個32位的通用寄存器文件組和4個功能單元(.D、.L、.M、.S),各功能單元各司其職,構成了2條數(shù)據(jù)通路。每個CorePac中的32KB程序和數(shù)據(jù)L1 RAM以及512KB的L2 RAM賦予了單核極高的SIMD指令處理能力。擴展內存管理器(XMC)負責L2存儲器控制器與多核共享內存控制器(MSMC)間的管理以及數(shù)據(jù)交互,并且還能通過預取功能來提高數(shù)據(jù)的吞吐率,為數(shù)字信號處理提供了硬件加速支持。
3 DSP平臺的移植與優(yōu)化
3.1 DSP程序開發(fā)移植
DSP程序開發(fā)可分為3個階段。1)編寫程序階段。該階段根據(jù)需求配置底層驅動,使用C/C++完成算法模塊的程序編寫。2) 精簡代碼階段。通過日志或其他專用剖析工具監(jiān)測算法的性能是否滿足實時性要求,如果不滿足則通過開啟編譯器優(yōu)化等級,或算法結構的并行設計來提升性能。3)線性匯編優(yōu)化階段。如果上輪優(yōu)化仍不滿足要求,需要利用線性匯編對待優(yōu)化的代碼進行編寫,使用匯編優(yōu)化器進行代碼優(yōu)化[3]。
一般第3階段增加更多對底層寄存器的操作,耗時比第2階段要多,因此需要盡量在第2階段提升代碼的性能。下面對該算法的工作模式及優(yōu)化移植工作進行介紹。
算法在滿足啟用條件時,喚醒處于休眠狀態(tài)的DSP,初始化DSP平臺,搬運目標模板進入共享內存中,初始化算法全局變量。處理板FPGA實時接收相機采集的圖像數(shù)據(jù)和相機平臺發(fā)送的位姿信息,然后通過SRIO轉發(fā)到DSP0核,觸發(fā)設定的中斷響應,從緩沖區(qū)將圖像搬運到共享內存,更新串口接收的當前彈體姿態(tài)信息,對實時圖像進行幾何校正和預處理,然后調用目標識別算法識別圖像中的目標位置,最后將目標的位置通過串口發(fā)送給上位機系統(tǒng)。DSP軟件流程圖如圖6所示。
3.2 數(shù)據(jù)傳輸優(yōu)化
在算法處理過程中,圖像數(shù)據(jù)搬運所耗費的時間是不能忽略的,F(xiàn)PGA通過SRIO傳輸圖像到L3 MSM,圖像處理算法對圖像進行計算時,從L3緩存到L2,從L2緩存到L1D,從L1D緩存到內核都需要耗費一定的時間,DSP軟件的底層驅動通過配置數(shù)據(jù)Cache、DMA以及采用乒乓傳輸[4]相結合的方式,使傳輸時間與算法處理時間可以并行操作,以此來忽略數(shù)據(jù)傳輸?shù)牡却龝r間。
3.3 算法編程優(yōu)化
代碼編寫過程中,良好的編程方式同樣能提升代碼性能。循環(huán)運算是圖像處理中常用計算單元,能夠通過軟件流水的方式實現(xiàn)指令級并行,但是在很多for循環(huán)中,有些不必要或不可預測的運算破壞了流水線,因此需要對其循環(huán)體進行拆分優(yōu)化。比如均值濾波時除以mask大小,這部分計算是冗余的,首先應在循環(huán)體外用常量表示其計算結果,并且可以通過提前求導的方式,將循環(huán)體中的除法變成乘法運算,節(jié)省了運算量。for循環(huán)優(yōu)化編程如圖7所示。
C/C++編譯器支持很多的關鍵字和預編譯宏指令,在某些場合下使用能起到很好的效果。_nassert指令可判斷指針x所指的地址是否以單/雙字(32/64bit)對齊,語法_nassert(n)中n為1則通過,為0則拋出異常,在DSP程序編程中通過圖8所示方法使用。該指令搭配#pragma DATA_ALIGN(symbol,constant)宏指令,在循環(huán)前調用該指令,將變量的首地址的字節(jié)對齊,便于編譯器對循環(huán)處理中的數(shù)據(jù)進行優(yōu)化,充分利用Cache的行拷貝和塊拷貝。
TMS320C6678多核架構支持OpenMP并行計算模型,配置完omp支持后,使用#paragram omp parallel for XXX宏指令的方式調用OpenMP加速,根據(jù)DSP核號,編譯器自動分配每個核處理的部分,如圖9所示。
C6000編譯器提供了很多內聯(lián)函數(shù),并在其配套的MCSDK中提供了大量的算法庫,如dsplib、mathlib、imglib等,這些內聯(lián)函數(shù)是TI公司編寫優(yōu)化后的匯編代碼,可快速優(yōu)化C代碼。SAD匹配算法可將圖像分成8×8或16×16大小的子塊,每個子塊調用imglib中的IMG_sad_8×8/ IMG_sad_16×16函數(shù)來實現(xiàn)。
3.4 算法并行化設計
目標識別算法中的預處理及匹配過程都需要對全圖進行計算,每次計算只針對一個子窗口區(qū)域,這樣就為算法的并行化設計提供了方便,可以視算法的復雜程度將圖像處理區(qū)域劃分為7份或8份,分配給8個核進行處理,圖像區(qū)域的劃分同樣需要考慮到內存地址尋址的便捷、處理結果的融合以及數(shù)據(jù)處理過程中DMA搬運數(shù)據(jù)沖突最小等因素。
圖像通常是對灰度圖進行處理,只有8位有效數(shù)據(jù),可通過線性匯編的編程方式對核心處理算法進行進一步優(yōu)化,每個核的功能單元可同時處理2~4個像素的圖像數(shù)據(jù)。 DSP優(yōu)化加速前后結果見表1。
表1? DSP優(yōu)化加速前后結果
功能模塊 優(yōu)化方法 優(yōu)化前時間/ms 優(yōu)化后時間/ms
幾何校正 循環(huán)展開、浮點轉定點 4.16 1.16
SAD imglib中內聯(lián)函數(shù)(單核) 97.90 88.30
SAD 匯編優(yōu)化并行 97.90 22.30
4 結論
該文提出的紅外目標識別算法適應能力強,計算過程簡單快速,符合系統(tǒng)穩(wěn)定性、實時性的要求。在算法DSP移植及優(yōu)化過程中,更是結合了TMS320C6678芯片設計時,對快速數(shù)據(jù)傳輸通道、指令執(zhí)行軟件流水以及多核并行等模塊的支持,對算法進行并行化設計,充分利用DSP多核、多流水的信號處理優(yōu)勢。TI官方提供的優(yōu)化代碼有一定的優(yōu)化效果,但是結合算法與芯片架構進行深度優(yōu)化效果更佳。算法優(yōu)化無止境,優(yōu)化前需要對算法各模塊的性能進行監(jiān)測評估,優(yōu)先優(yōu)化耗時長的模塊,使優(yōu)化效果達到最優(yōu)。
參考文獻
[1]吳立德.計算機視覺[M].上海:復旦大學出版社,1993.
[2]牛金海. TMS320C66x KeyStone架構多核DSP入門實例精解[M].上海:上海交通大學出版社,2017.
[3]夏際金,趙洪立,李川. TIC66x多核DSP 高級軟件開發(fā)技術[M].北京:清華大學出版社,2017.
[4]陳國良.并行計算——結構算法編程[M].北京:高等教育出版社,2011.