孫建國,賀子天,李思照
(哈爾濱工程大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,黑龍江 哈爾濱 150001)
動態(tài)可重構(gòu)視覺計算系統(tǒng)是面向環(huán)境動態(tài)視覺感知、大規(guī)模圖形繪制等視覺信息處理和應(yīng)用的動態(tài)可重構(gòu)的高效能智能計算機系統(tǒng),是由計算特性不同的多類計算資源通過高速互聯(lián)總線構(gòu)成的異構(gòu)計算機系統(tǒng),其在體系結(jié)構(gòu)上強調(diào)計算、通信和存儲之間的均衡,在能力方面強調(diào)性能和功耗之間的均衡,在實際運用中強調(diào)根據(jù)應(yīng)用選擇合適的計算特性以達到時效和能效的聯(lián)合優(yōu)化。動態(tài)可重構(gòu)視覺計算系統(tǒng)應(yīng)具有計算架構(gòu)可重構(gòu)、規(guī)模可伸縮、資源高度協(xié)同等能力,能在特定體積、功耗和重量等因素的約束下,以高性能且高效能的方式完成海量數(shù)據(jù)處理、傳輸、顯示以及導(dǎo)航平臺實時控制等任務(wù)。
異構(gòu)計算被視為繼單核、多核之后處理器的第三個時代,它將有效解決能耗、可擴展性等問題,成為高性能和分布式計算領(lǐng)域的一種重要新興模式。當前異構(gòu)計算系統(tǒng)主要有以下2種架構(gòu):CPU+GPU及CPU+FPGA。
GPU異構(gòu)系統(tǒng)主要采用CPU+GPU架構(gòu),將CPU和GPU各自優(yōu)點結(jié)合起來,GPU處理數(shù)據(jù)密集型的并行任務(wù),CPU進行復(fù)雜的邏輯事務(wù)處理,從而充分發(fā)揮CPU和GPU各自優(yōu)勢,最大限度地利用異構(gòu)系統(tǒng)的處理能力,降低計算成本和能耗。基于CPU+FPGA的異構(gòu)計算系統(tǒng)可以加速多種計算密集型任務(wù),在此計算模式下,采用傳統(tǒng)并行計算方式實現(xiàn)粗粒度的任務(wù)并行,直接通過FPGA上的硬件邏輯實現(xiàn)細粒度的任務(wù)并行,硬件可編程性通過改變硬件邏輯來適應(yīng)底層的計算問題,從而使CPU+FPGA的異構(gòu)計算系統(tǒng)在性能、功耗、體積和成本等方面和傳統(tǒng)計算機相比獲得顯著提升,具有靈活性高、功能適用性強等優(yōu)勢。
國內(nèi)研究人員已針對GPU、FPGA等器件開展領(lǐng)域優(yōu)化、異構(gòu)編程、高速互聯(lián)等研究,但面向高效能的異構(gòu)計算技術(shù)研究還有待深入開展。國防科技大學(xué)的嚴明等人[1]開展了面向領(lǐng)域應(yīng)用的異構(gòu)多核SoC系統(tǒng)結(jié)構(gòu)設(shè)計與優(yōu)化技術(shù)研究,結(jié)合粗粒度可重構(gòu)體系結(jié)構(gòu)與應(yīng)用定制指令集處理器,對可重構(gòu)異構(gòu)計算系統(tǒng)的定制設(shè)計方法開展研究,設(shè)計了一款異構(gòu)多核SoC芯片。武漢大學(xué)的肖漢等人[2]基于CPU+GPU異構(gòu)計算技術(shù)開展了面向影像匹配方面的若干問題研究,提出了異構(gòu)群核架構(gòu)的影像處理協(xié)同解決方案。哈爾濱工程大學(xué)的鄧臻等人[3]基于DSP和FPGA的多處理器信號處理平臺,研究了聲納多波束相干測深算法的高效實現(xiàn)方法。大連海事大學(xué)的孟凡志等人[4]基于DSP和FPGA器件開展了雷達目標檢測與信息處理系統(tǒng)研究工作,通過軟件優(yōu)化手段提高了雷達目標自動檢測和錄取處理的速度和精度。哈爾濱工業(yè)大學(xué)的王鶴澎等人[5]對新型硬件處理器基于數(shù)據(jù)密集型計算的研究進行了綜述,概述了新型硬件處理器的特點,對新型處理器的FPGA和GPU等硬件進行了性能分析。
因此,根據(jù)上述研究中所遇到的問題,本文針對嵌入式視覺計算平臺異構(gòu)計算資源的多樣性,提出一種異構(gòu)融合的嵌入式可重配置視覺計算架構(gòu),實現(xiàn)對嵌入式計算平臺多樣化視覺應(yīng)用的全覆蓋支撐;同時,為滿足復(fù)雜地形地貌的地形信息,提出一種面向大規(guī)模場景的全景視圖拼接方法。通過加入全局上下文信息解決圖像配準中存在的特征點誤匹配問題,進而根據(jù)融合線兩側(cè)像素點灰度插值計算動態(tài)融合區(qū)域并進行漸入漸出的加權(quán)融合,從而有效提高全景視圖拼接的性能。
為滿足信息處理高性能、高可靠和低功耗等需求,將動態(tài)可重構(gòu)視覺計算架構(gòu)分為3部分:可重構(gòu)數(shù)據(jù)通道及控制模塊、高性能并行視覺計算模塊和動態(tài)可重構(gòu)加速模塊。以此構(gòu)建的多級異構(gòu)融合高效能分布式計算系統(tǒng),由基于CPU、GPU、NPU和多種型號的FPGA定制加速節(jié)點連接組成,其架構(gòu)如圖 1所示。
圖1 動態(tài)可重構(gòu)視覺計算架構(gòu)Fig.1 Dynamic reconfigurable visual computing architecture
不同的視覺計算應(yīng)用軟件進入控制單元之后,根據(jù)軟件的要求將劃分后的任務(wù)逐塊送到數(shù)據(jù)通道中執(zhí)行,數(shù)據(jù)通道再根據(jù)所輸入的數(shù)據(jù)依照控制單元的要求來進行配置計算單元陣列。由于不同應(yīng)用軟件的任務(wù)劃分不同,數(shù)據(jù)通道會將任務(wù)根據(jù)相應(yīng)重配置信息傳入到異構(gòu)視覺計算單元當中,同時為解決GPU及NPU計算能力不足,利用大規(guī)模FPGA進行加速控制,以彌補性能缺陷,構(gòu)建系統(tǒng)級與單元級的動態(tài)可重構(gòu)加速堆棧結(jié)構(gòu)[6]。
可重構(gòu)加速堆棧是要使超大規(guī)模數(shù)據(jù)能夠借助CPU、GPU、NPU以及FPGA等非常簡單地來評估、開發(fā)、部署和應(yīng)用加速。此平臺支持open stack,可以方便地進行計算資源的配置和管理,可有效地利用此平臺來處理嵌入視覺、機器學(xué)習等工作負載。此結(jié)構(gòu)可以方便地根據(jù)輸入的應(yīng)用軟件來進行各個計算單元之間的配置,例如在目標識別方面常用的人工智能計算框架是Caffe,可利用Caffe來開發(fā)庫,包括用于神經(jīng)網(wǎng)絡(luò)、矩陣乘法等,這樣系統(tǒng)將和Caffe進行集成,會很快根據(jù)相應(yīng)的庫文件來確定使用系統(tǒng)中的哪些計算節(jié)點,從而實現(xiàn)系統(tǒng)級上的可重構(gòu)[7]。
此外,各計算單元通過高速傳輸總線連接到外部可伸縮的以太互聯(lián)網(wǎng)絡(luò)以及高帶寬低延遲非壓縮視頻協(xié)議轉(zhuǎn)換傳輸接口,使異構(gòu)分布式計算系統(tǒng)具備規(guī)??缮炜s特性和視頻無損遠距離傳輸能力,實現(xiàn)整機之間的異構(gòu)分布式融合。在以太網(wǎng)互聯(lián)之外,多個異構(gòu)計算節(jié)點還通過高速串行總線交換設(shè)施進行局部互聯(lián),在輕量級通信協(xié)議棧的支持下實現(xiàn)各個計算節(jié)點之間高帶寬、低延時的數(shù)據(jù)傳輸,從而達到模塊級的異構(gòu)分布式融合。最后,通過使用集成了計算節(jié)點的FPGA器件,進一步縮短CPU、GPU、NPU與加速計算資源之間的距離,降低通信開銷,實現(xiàn)單元級的異構(gòu)融合[7]。
GPU、NPU等視覺圖像處理節(jié)點和FPGA定制加速節(jié)點作為異構(gòu)分布式系統(tǒng)的加速計算資源,分別承擔高速圖像處理(如目標識別、圖像融合等)和智能化加速計算任務(wù),通過CPU來調(diào)度GPU、NPU和FPGA的運行。這種堆棧式架構(gòu)可以使FPGA加速模塊和GPU及NPU計算模塊通過總線進行緊耦合,從而提高數(shù)據(jù)帶寬和執(zhí)行效率[8]。
視覺計算所具備的動態(tài)可重構(gòu)性的流程如圖2所示,假設(shè)初始狀態(tài)所有部件均未入棧。
(1)當視覺計算應(yīng)用是路徑規(guī)劃和避障檢測等時,算法使用一些相對簡單的圖像處理技術(shù)即可,但需要用到大量的并行計算,因此設(shè)計在此平臺的加速堆棧中,需要GPU進棧來處理圖像大數(shù)據(jù)[9],為了滿足實時的需求,還需要FPGA的高度并行計算能力來對圖像處理進行加速,此時FPGA進入加速堆棧,圖2(a)表示在圖像處理時所需要進行可重構(gòu)的計算平臺。
(2)當運行計算量需求較大的應(yīng)用時(如近地目標識別),會涉及到大量的卷積神經(jīng)網(wǎng)絡(luò)運算,此時,GPU以其強大的計算能力和較低的功耗擁有較優(yōu)的卷積神經(jīng)網(wǎng)絡(luò)計算效能,因此在平臺中對卷積神經(jīng)網(wǎng)絡(luò)的計算僅需要配置NPU運算即可。由于上一個應(yīng)用中GPU和FPGA已經(jīng)在加速堆棧中,所以控制單元需要發(fā)出信號,由CPU控制GPU和FPGA出棧,并使NPU進棧,這樣就完成動態(tài)重配置的過程,以完成近地目標識別等應(yīng)用的顯示成像,動態(tài)配置過程如圖 2(b)所示。
(3)當使用三維地圖成像及導(dǎo)航應(yīng)用時,不僅需要大量的卷積神經(jīng)網(wǎng)絡(luò)計算,同時為達到成像的實時性,還需要對計算進行加速,因此在配置過程當中需要使用GPU來完成卷積神經(jīng)網(wǎng)絡(luò)計算,同時還需要FPGA來進行加速。由于上一個應(yīng)用中,NPU已經(jīng)在棧內(nèi),因此只需要將FPGA入棧的控制信號傳入到加速堆棧即可,配置過程如圖 2(c)所示,從而完成整個系統(tǒng)的動態(tài)可重構(gòu)過程。
(a) 路徑規(guī)劃、避障檢測等應(yīng)用的重構(gòu)計算架構(gòu)
在此計算架構(gòu)下,所使用的加速堆棧技術(shù)可有效地對整機進行系統(tǒng)級和單元級動態(tài)可重構(gòu),由于使用的就是堆棧結(jié)構(gòu),每次重新配置時需要經(jīng)歷出棧-進棧的過程,因此這種結(jié)構(gòu)的可擴展性非常強,添加或刪減部件都不會影響整體架構(gòu)設(shè)計方案。同時,由于智能計算節(jié)點和FPGA節(jié)點均使用相同的高速串行總線接口進行互聯(lián),因此在接口兼容的情況下,二者可以實現(xiàn)無縫替換。此外,若單系統(tǒng)性能不能滿足應(yīng)用需求,還可通過以太網(wǎng)互聯(lián)進行系統(tǒng)規(guī)模的擴容,在資源管理和任務(wù)調(diào)度中間件的配合之下,實現(xiàn)更高性能的異構(gòu)分布式處理[10]。
角點包含了物體的重要特征信息,表現(xiàn)為灰度值突變的像素點或物體輪廓邊緣線的相交點,是圖像的一個重要局部特征。角點的優(yōu)點包括算法適應(yīng)性強、過程簡單和結(jié)果穩(wěn)定等,檢測到的角點精度和穩(wěn)定性直接影響了后續(xù)的特征匹配等任務(wù)[11]。
Harris角點檢測原理是利用一個固定大小的窗口在圖像中移動,計算灰度變化,若該變化大于給定的閾值,則可判定為角點[12]。
對于圖像I(x,y)以及一個固定大小的窗口w(x,y),當w(x,y)在點(x,y)處平移(Δx,Δy)時產(chǎn)生的灰度變化G(x,y)為[13]:
(1)
利用泰勒公式展開可得:
[I(x+Δx,y+Δy)-I(x,y)]≈I(x,y)+ΔxIx+ΔyIy,
(2)
式中,Ix,Iy分別是圖像I(x,y)在(x,y)方向上的梯度,所以有[14]:
(3)
令矩陣:
(4)
定義角點響應(yīng)函數(shù)R為:
R(T)=det(T)-c·tr(T),
(5)
式中,det(T)為矩陣的行列式;tr(T)為矩陣的跡;c為可調(diào)參數(shù),取值范圍0.04~0.15[15]。
(6)
由數(shù)學(xué)知識可知,cosθ的值越接近于1,說明2個向量越相似。將這一原理推廣到二維圖像中可得出:
(7)
式中,
(8)
(9)
NCC設(shè)置以特征點(x1i,y1i)和(x2j,y2j)為中心,長為2m+1,寬為2n+1的2個可移動窗口,分別計算亮度均值和方差,NCC(p1i,p2j) 的取值范圍為[-1,1]。
圖像融合算法是指對多個圖像源的像素值進行加權(quán)差值以期得到唯一的目標像素值,從而合成一幅新的圖像[18-19]。
雙三次差值[20]又稱立方卷積差值。它利用擬合公式對待插值點周圍的若干個點的圖像數(shù)據(jù)進行處理,進而求出插值點數(shù)據(jù)。雙三次插值公式如下:
式中,F(xiàn)(i,j)表示源圖像(i,j)處的像素灰度值。
最常用的擬合基函數(shù)為:
(11)
本文提出了一種面向異構(gòu)計算模塊的可配置視覺計算與通信設(shè)計方法,針對異構(gòu)處理器及視覺計算模塊因其數(shù)據(jù)處理效能偏低、整體協(xié)同工作能力不足、通信帶寬利用率不足等問題,提出一種基于CPU+GPU+NPU的視覺計算作為基礎(chǔ)處理模塊、高性能FPGA作為可配置視頻傳輸加速模塊的系統(tǒng)數(shù)據(jù)協(xié)同通信技術(shù),實現(xiàn)異構(gòu)視覺處理計算模塊的高效計算能力,以及多模塊之間通信效率的提升,為視覺計算平臺整體架構(gòu)設(shè)計及系統(tǒng)通信效能提供有效的優(yōu)化手段。