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