張好聰,李 濤,邢立冬,潘風(fēng)蕊
1.西安郵電大學(xué) 電子工程學(xué)院,西安710121
2.西安郵電大學(xué) 計(jì)算機(jī)學(xué)院,西安710121
Khronos Groups 2019 年發(fā)布的“The OpenVXSpecification 1.3”,是計(jì)算機(jī)視覺(jué)算法和機(jī)器智能加速跨平臺(tái)規(guī)范的最新版本,支持各種現(xiàn)代硬件體系結(jié)構(gòu),如移動(dòng)系統(tǒng)、嵌入式SOC 系統(tǒng)和桌面系統(tǒng)。視覺(jué)系統(tǒng)內(nèi)層次結(jié)構(gòu)通常是復(fù)雜并且不一致的,OpenVX 旨在最大程度地跨不同的硬件平臺(tái)實(shí)現(xiàn)功能和性能的可移植性,從而提供一種標(biāo)準(zhǔn)化的、對(duì)應(yīng)用程序影響最小的計(jì)算機(jī)視覺(jué)框架,便于硬件廠商選擇不同的方式實(shí)現(xiàn)硬件加速。這使得高性能處理器和顯卡制造商AMD、GPU的發(fā)明者和人工智能計(jì)算的引領(lǐng)者NVIDIA、全球最大的CPU制造商Intel等越來(lái)越多的公司采用OpenVX開(kāi)源規(guī)范。
在信息時(shí)代,計(jì)算機(jī)視覺(jué)扮演著非常重要的角色,將越來(lái)越廣泛地進(jìn)入各個(gè)領(lǐng)域,均需要對(duì)圖像進(jìn)行高速處理,并行計(jì)算相比串行計(jì)算有更快的求解問(wèn)題的速度,可以縮短計(jì)算時(shí)間。并行性主要通過(guò)三種方式應(yīng)用于計(jì)算機(jī)視覺(jué)處理:(1)數(shù)據(jù)并行;(2)任務(wù)并行;(3)流水線并行。
結(jié)合以上兩方面,本文提出了一種具有并行處理能力的專用指令集處理器(application specific instruction set processor,ASIP),對(duì)OpenVX 規(guī)范1.3中58 個(gè)核函數(shù)分別構(gòu)建圖執(zhí)行模型,并映射到該架構(gòu)上,通過(guò)微程序優(yōu)化其計(jì)算流程,實(shí)現(xiàn)最終的硬件加速。結(jié)果表明,該架構(gòu)可以隨著處理元件的數(shù)量實(shí)現(xiàn)線性加速。
PE(processing element)間的互聯(lián)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)是并行處理系統(tǒng)的重要組成部分,由文獻(xiàn)[6]得出,如圖1 所示的分層交叉連接網(wǎng)絡(luò)(hierarchically crossconnected mesh,HCCM)在各方面性能均優(yōu)于經(jīng)典的2DMesh拓?fù)浣Y(jié)構(gòu)和以2DMesh為基礎(chǔ)擴(kuò)展的Xmesh。
圖1 HCCM拓?fù)浣Y(jié)構(gòu)Fig. 1 HCCM topology
因此本文基于HCCM 結(jié)構(gòu),提出了HCCM-和HCCM+結(jié)構(gòu),如圖2 所示。對(duì)比表1 中這三種結(jié)構(gòu)的參數(shù),其中直徑(diameter)指任意兩結(jié)點(diǎn)之間最短路徑中路徑長(zhǎng)度的最大值,直徑越短,通信時(shí)間越短,速度越快,對(duì)分寬度(bisection bandwidth)指將拓?fù)浣Y(jié)構(gòu)中所有結(jié)點(diǎn)分成數(shù)量相等的兩部分需要的最小鏈路數(shù)量,為拓?fù)浣Y(jié)構(gòu)的級(jí)數(shù)。HCCM-雖比HCCM 的直徑短,但其等分寬度僅為4,這限制了整個(gè)系統(tǒng)的通信容量,同時(shí)HCCM-的邊也比HCCM少,意味著其承載數(shù)據(jù)流量的能力更小。而HCCM+結(jié)構(gòu)結(jié)合了HCCM 與HCCM-的優(yōu)點(diǎn),其直徑小于HCCM,對(duì)分寬度和邊數(shù)也大于HCCM 和HCCM-,在通信速度、容量和承載數(shù)據(jù)能力等方面都有更多的優(yōu)勢(shì),因此選擇HCCM+結(jié)構(gòu)作為處理器的框架。
圖2 HCCM-和HCCM+拓?fù)渚W(wǎng)絡(luò)Fig. 2 HCCM-and HCCM+topology
表1 HCCM、HCCM-與HCCM+的參數(shù)Table 1 Parameters of HCCM,HCCM-and HCCM+
圖3為自主設(shè)計(jì)的16個(gè)PE互聯(lián)構(gòu)成的OpenVX可編程并行處理器,主要由微程序控制器(micro controller)、PE、路由交叉開(kāi)關(guān)(route)、共享存儲(chǔ)及訪存控制電路(memory access control)構(gòu)成。
圖3 OpenVX可編程并行處理器Fig. 3 OpenVX programmable parallel processor
微程序控制器是各種操作的底層支撐部件,通過(guò)PE對(duì)應(yīng)的寄存器向每個(gè)PE發(fā)送操作控制、取址控制、條件控制、轉(zhuǎn)移類型、下地址等指令,控制PE內(nèi)部寄存器堆(register file)的取數(shù)地址、數(shù)據(jù)類型選擇模塊(data type selection)的取數(shù)方式、交叉電路(cross circuit)的走向以及PE內(nèi)部運(yùn)算單元的運(yùn)算模式。也通過(guò)Route 控制PE 間數(shù)據(jù)的多通道傳輸。Route 是在XY 路由只有兩個(gè)方向通訊的基礎(chǔ)上,增加了PE之間對(duì)角線上的數(shù)據(jù)通路,支持一對(duì)一和一對(duì)多的傳輸方式,可以滿足OpenVX核函數(shù)多種類型的數(shù)據(jù)傳輸。
PE 間的緩沖由位寬32 bit、深度64 的存儲(chǔ)實(shí)現(xiàn),具體通信方式由路由交叉開(kāi)關(guān)根據(jù)OpenVX 核函數(shù)的需要控制。PE 結(jié)構(gòu)如圖4,包括寄存器堆、譯碼電路(decode)、數(shù)據(jù)類型選擇電路、若干個(gè)ALU(arithmetic and logic unit)、除法器(DIV)、乘法器(MUL)、內(nèi)部交叉電路、輸出選擇電路等。ALU 可以實(shí)現(xiàn)ADD(加)、SUB(減)、AND(與)、OR(或)、XOR(異或)、SLL(邏輯左移)、SRL(邏輯右移)和SRA(算術(shù)右移),內(nèi)部包括多路選擇器和操作控制碼。乘法器和除法器均支持定浮點(diǎn)數(shù)據(jù)的運(yùn)算。
圖4 PE結(jié)構(gòu)Fig. 4 Structure of PE
PE內(nèi)部交叉電路主要由多個(gè)57選1的選擇器構(gòu)成,根據(jù)微程序控制器發(fā)送的指令控制多個(gè)數(shù)據(jù)的走向。其輸入包括數(shù)據(jù)類型選擇模塊和各個(gè)運(yùn)算單元的輸出,即每個(gè)處理器既可以對(duì)圖像原始數(shù)據(jù)進(jìn)行計(jì)算,其計(jì)算結(jié)果也可以返回處理器繼續(xù)執(zhí)行后續(xù)操作。
寄存器堆通過(guò)識(shí)別微程序控制器發(fā)送的取址指令,取出運(yùn)算單元需要的原始數(shù)據(jù)。數(shù)據(jù)類型選擇模塊接收到數(shù)據(jù)和取數(shù)類型指令后執(zhí)行相應(yīng)截位操作,向交叉電路對(duì)應(yīng)的端口寫(xiě)入數(shù)據(jù),每次執(zhí)行操作前,交叉電路會(huì)根據(jù)條件控制信號(hào)選擇兩個(gè)操作數(shù)送入運(yùn)算單元。除了操作數(shù),每個(gè)ALU 還有一個(gè)指令輸入端口,用來(lái)接收經(jīng)過(guò)微程序控制器優(yōu)化后的一系列操作控制指令,快速完成OpenVX 核函數(shù)的并行計(jì)算。根據(jù)核函數(shù)的不同,每個(gè)運(yùn)算單元的輸出有寫(xiě)入寄存器堆或送入交叉電路兩種選擇。整個(gè)PE 計(jì)算任務(wù)完成后由選擇輸出電路選擇當(dāng)前PE 的輸出。
訪存控制電路采用突發(fā)讀寫(xiě)的方式,通過(guò)AXI總線訪問(wèn)DDR,根據(jù)圖像的處理方式,輸出對(duì)應(yīng)的數(shù)據(jù)格式。圖像處理通常在以下級(jí)別完成:
(1)低級(jí)圖像處理:像素級(jí)操作。
(2)中級(jí)圖像處理:對(duì)圖像像素導(dǎo)出的抽象進(jìn)行操作。
(3)高級(jí)圖像處理:從中級(jí)圖像處理操作中提取抽象內(nèi)容,目的是生成更高層次的抽象。
OpenVX核函數(shù)均屬于低級(jí)圖像處理,可分為點(diǎn)處理、局部鄰域處理、遞歸鄰域處理和全局處理。訪存控制電路通過(guò)指令判斷圖像處理類別,選擇最優(yōu)取數(shù)方式送入寄存器堆。
該并行處理器是為OpenVX 核函數(shù)設(shè)計(jì)的通用處理器,適用于所有OpenVX 核函數(shù),支持單指令多數(shù)據(jù)(single instruction multiple data,SIMD)和多指令多數(shù)據(jù)(multiple instructions stream multiple data stream,MIMD)兩種編程模式,可以實(shí)現(xiàn)數(shù)據(jù)并行、任務(wù)并行、流水線的計(jì)算模式。SIMD模式下,16個(gè)PE執(zhí)行微程序控制器發(fā)出的同一條操作指令,節(jié)省了代碼存儲(chǔ);MIMD模式下,微程序控制器發(fā)送指令序列,多個(gè)PE可以同時(shí)完成不同核函數(shù)的操作。
OpenVX 主要由一個(gè)預(yù)先定義的包含58 個(gè)視覺(jué)函數(shù)的計(jì)算機(jī)視覺(jué)核函數(shù)庫(kù)、基于圖的執(zhí)行模型和一組物理內(nèi)存的抽象內(nèi)存對(duì)象組成。其中的視覺(jué)函數(shù)既可以對(duì)兩幅圖像做算數(shù)和邏輯運(yùn)算,如將兩幅圖像對(duì)應(yīng)位置的像素加、減、與、或等,也可以對(duì)一幅圖像進(jìn)行卷積、顏色轉(zhuǎn)換、仿射變換、濾波、縮放、通道提取/合并、形態(tài)學(xué)操作、直方圖均衡化和特征抽取等,滿足多樣化的計(jì)算機(jī)視覺(jué)需求。根據(jù)不同的計(jì)算機(jī)視覺(jué)應(yīng)用,選擇一個(gè)核函數(shù)或?qū)⒍鄠€(gè)核函數(shù)組合,抽象為不同的有向無(wú)環(huán)圖(directed acyclic graph),也稱圖執(zhí)行模型(graph execution model),進(jìn)而將輸入圖像轉(zhuǎn)換為具有預(yù)期特性的另一幅圖像。圖5為一個(gè)對(duì)圖像進(jìn)行縮放(scale image)的圖執(zhí)行模型示例,這些有向無(wú)環(huán)圖的結(jié)點(diǎn)(node)即為OpenVX核函數(shù),相鄰結(jié)點(diǎn)間存在數(shù)據(jù)依賴關(guān)系。圖5 中,輸入的彩色圖像數(shù)據(jù)經(jīng)過(guò)Node1(顏色轉(zhuǎn)換)轉(zhuǎn)換為灰度圖像,此結(jié)果經(jīng)Node2(雙邊濾波)對(duì)圖像進(jìn)行平滑處理,得到的平滑圖像最終通過(guò)Node3(圖像縮放)得到結(jié)果圖像輸出。OpenVX 通過(guò)對(duì)其預(yù)定義的核函數(shù)加速,實(shí)現(xiàn)整個(gè)硬件算法的加速。
圖5 圖執(zhí)行模型示例Fig. 5 Example of graph execution model
通過(guò)對(duì)OpenVX 規(guī)范1.3 的研究,對(duì)規(guī)范中提到的58 個(gè)核函數(shù)構(gòu)建各自的圖執(zhí)行模型,并映射在OpenVX 并行處理器上完成硬件結(jié)構(gòu)上的并行加速。選取其中Harris Corners 和Canny Edge Detector兩個(gè)底層特征抽取函數(shù)詳細(xì)介紹其并行實(shí)現(xiàn)過(guò)程,因算法比較復(fù)雜,通過(guò)將其優(yōu)化為幾個(gè)簡(jiǎn)單結(jié)點(diǎn)進(jìn)行加速。以下為構(gòu)成其圖執(zhí)行模型的核函數(shù)。
(1)Color Convert。將圖像從一種顏色空間轉(zhuǎn)換為另一種顏色空間,如彩色轉(zhuǎn)灰度的公式為:
(2)Control Flow??梢酝瓿蓤D像多種數(shù)據(jù)格式的邏輯運(yùn)算(與、或、異或、與非)、比較大?。ǖ扔?、小于、小于等于、大于、大于等于)和算術(shù)運(yùn)算(加、減、乘、除、取余、最大/最小值)。
此函數(shù)幾乎包含所有基本操作,這使其成為圖執(zhí)行模型中利用率最高的結(jié)點(diǎn)。如Canny 邊緣檢測(cè)中通過(guò)比較、兩個(gè)方向的梯度值與給定值的大小判斷梯度方向,計(jì)算Sobel 算子結(jié)果的乘積等,均可用Control Flow實(shí)現(xiàn)。
(3)Gaussian Filter。對(duì)整幅圖像進(jìn)行加權(quán)平均的過(guò)程。用一個(gè)掩膜掃描圖像中的每一個(gè)像素,用掩膜確定的鄰域內(nèi)像素的加權(quán)平均灰度值去替代模板中心像素點(diǎn)的值。用到的掩膜為:
(4)Median Filter。一種線性濾波算法,目標(biāo)像素本身與其周圍的8個(gè)像素構(gòu)成一個(gè)3×3的濾波模板,求取模板內(nèi)9個(gè)像素的均值代替目標(biāo)像素。
(5)Non-Maxima Suppression。一種邊緣稀疏技術(shù),在局部區(qū)域內(nèi)保留最大值的像素,抑制非最大值的像素。如3×3區(qū)域的抑制條件為:
(6)Sobel 3×3。用不同的卷積核與原灰度圖像進(jìn)行卷積,求取像素、方向的梯度幅值。、方向卷積核分別為:
(7)Thresholding:將輸入圖像與閾值相比,產(chǎn)生一幅二值圖像。
上述函數(shù)中的Gaussian Filter、Median Filter、Non-Maxima Suppression、Sobel 3×3都是對(duì)圖像像素級(jí)的局部處理,即輸出像素值由輸入像素及其鄰域像素值決定。以3×3模板為例,處理過(guò)程中需要同時(shí)得到圖像窗口內(nèi)的9 個(gè)像素,文獻(xiàn)[13]中調(diào)用了2 個(gè)FIFO 行緩存(與Xilinx 的Shift IP 核,即行緩存IP 核同義)完成2 個(gè)行緩存,加上當(dāng)前行得到3 行圖像數(shù)據(jù),將這3 行數(shù)據(jù)分別打2 拍得到一個(gè)窗口9 個(gè)像素?cái)?shù)據(jù),其原理如圖6所示。這也是大多數(shù)FPGA進(jìn)行圖像處理使用的典型方法。若待處理圖像大小為×,得到第一個(gè)×的矩陣需要(+1)×(-1)個(gè)時(shí)鐘,則此方法在640×480 的圖像中得到第一個(gè)3×3矩陣需要1 280個(gè)時(shí)鐘。
圖6 Xilinx Shift IP核原理Fig. 6 Principle of Shift IP core of Xilinx
本結(jié)構(gòu)的訪存控制電路在讀取3×3 模板的數(shù)據(jù)時(shí),采用突發(fā)讀寫(xiě)的方式,通過(guò)三條通路分別訪問(wèn)存儲(chǔ)的地址端,每條通路對(duì)應(yīng)一行數(shù)據(jù)在存儲(chǔ)中的地址,取出的3 行數(shù)據(jù)分別發(fā)送至PE 內(nèi)部3 個(gè)寄存器堆,微程序控制器根據(jù)核函數(shù)操作的速度控制訪存控制電路何時(shí)向寄存器堆送數(shù)。此方法可以在3 個(gè)時(shí)鐘內(nèi)讀出9個(gè)像素?cái)?shù)據(jù),很大程度上為圖像的流水線處理節(jié)省了時(shí)間。
Median Filter需要得到3×3濾波窗口內(nèi)像素的中值,傳統(tǒng)做法是依次比較9 個(gè)像素大小,效率較低。本文提出一種優(yōu)化后的算法:如圖7,分別比較窗口內(nèi)三行數(shù)并由大到小排序,則第一列為每行最大值,第二、三列分別為每行的中值和最小值。取第一列的最小值、第二列的中間值、第三列的最大值進(jìn)行比較,中間值則為當(dāng)前窗口中值。這種任務(wù)并行的算法減少了比較次數(shù),提高了處理速度。
圖7 優(yōu)化后的Median FilterFig. 7 Optimized Median Filter
以函數(shù)Gaussian Filter 為例,如圖8,將待處理圖像當(dāng)前矩陣內(nèi)的像素標(biāo)號(hào)。其在PE內(nèi)部的映射方式如圖9 所示,其中A11、A13、A31、A33 對(duì)應(yīng)的掩膜系數(shù)為1,因此直接兩兩相加。A12、A21、A23、A32 和A22對(duì)應(yīng)的系數(shù)為2和2,由于對(duì)FPGA來(lái)說(shuō),移位操作是0 開(kāi)銷(不消耗時(shí)鐘周期),且本設(shè)計(jì)的ALU 將加法和移位合并,因此在微程序控制器配置此操作指令時(shí),只需考慮將寄存器堆中的圖像數(shù)據(jù)和譯碼單元的立即數(shù)送入第一級(jí)ALU,單獨(dú)的移位操作不再消耗時(shí)鐘。前一級(jí)的結(jié)果作為下一級(jí)ALU的輸入繼續(xù)完成濾波操作。
圖8 當(dāng)前矩陣像素標(biāo)號(hào)Fig. 8 Label of current matrix pixel
圖9 Gaussian Filter在PE內(nèi)的映射Fig. 9 Mapping of Gaussian Filter in PE
在圖形硬件系統(tǒng)中,有兩種主要的方法來(lái)進(jìn)行快速處理,分別是流水線和并行化,通常需要將兩者結(jié)合使用才能達(dá)到較好的效果。本章介紹兩個(gè)核函數(shù)圖執(zhí)行模型的設(shè)計(jì)及映射結(jié)構(gòu)。
文獻(xiàn)[16]提出,對(duì)于同一個(gè)流水線處理結(jié)構(gòu),在一定范圍內(nèi)圖像分塊越多,每塊圖像的像素總數(shù)越少,所需的處理時(shí)間則越短。本文綜合處理器的資源與文獻(xiàn)[16]的結(jié)論,將圖像分為四塊并行處理,每塊均進(jìn)行流水線操作??材徇吘墮z測(cè)旨在通過(guò)像素梯度方向檢測(cè)出圖像邊緣,屬于局部鄰域處理,分塊易導(dǎo)致其分界處出現(xiàn)偽角點(diǎn)。因此對(duì)邊界采用邊界復(fù)制法,使分界處存在重疊部分(1 行/1 列像素)。將Canny Edge Detector 算法的每一步映射為一個(gè)簡(jiǎn)單核函數(shù),圖10 為優(yōu)化后Canny Edge Detector 核函數(shù)的圖執(zhí)行模型,具體步驟如下(括號(hào)內(nèi)為映射的核函數(shù)):
圖10 優(yōu)化的Canny Edge Detector圖執(zhí)行模型Fig. 10 Optimized Canny Edge Detector graph execution model
(1)將彩色圖像轉(zhuǎn)換為灰度圖像(Color Convert)。
(2)對(duì)灰度圖像進(jìn)行濾波處理(Median Filter)。
(3)利用Sobel 算子判斷圖像像素、方向的梯度正負(fù)性,并計(jì)算出其絕對(duì)值|G|、|G|和對(duì)應(yīng)的梯度幅值=|G|+|G|(Sobel 3×3)。
(4)如圖11,將360°的梯度方向劃分為四個(gè)空間。原算法使用=arctan(G/G) 判斷梯度方向,OpenVX中沒(méi)有直接實(shí)現(xiàn)反三角函數(shù)的核函數(shù),本文總結(jié)出近似方法判斷梯度方向(Control Flow):
圖11 梯度方向劃分Fig. 11 Gradient direction division
第①區(qū)域:比較G與G絕對(duì)值,符合G>G×2.5。
第③區(qū)域:比較G與G絕對(duì)值,符合G>G×2.5。
第②區(qū)域:不在①、③區(qū)域,G與G同號(hào)。
第④區(qū)域:不在①、③區(qū)域,G與G異號(hào)。
(5)將梯度方向與梯度幅值合成一幅圖像信息,以3×3為模板,若中心像素比其梯度方向上兩個(gè)像素的梯度幅值都大,則標(biāo)記為真,否則標(biāo)記為假(nonmaxima suppression)。
(6)用中心像素梯度幅值與設(shè)定的雙閾值比較:
其中,H、L分別為高低閾值(Thresholding)。
(7)將像素真假及變量合成一個(gè)新的圖像,像素為真時(shí)考察變量的值,像素為邊緣點(diǎn)應(yīng)滿足為2′b10 或2′b01,同時(shí)在其八連通區(qū)域中存在像素的=2′b10(Control Flow)。
上述基于圖的執(zhí)行模型中,每一級(jí)結(jié)點(diǎn)都有各自的任務(wù),并且可以在同一時(shí)刻共同操作,構(gòu)成了連續(xù)的流水線操作,如圖12所示。
圖12 Canny Edge Detector流水線設(shè)計(jì)Fig. 12 Canny Edge Detector pipeline design
圖13 為Canny Edge Detector 映 射到OpenVX 并行處理器上的結(jié)構(gòu)。在兩個(gè)特征抽取函數(shù)的映射結(jié)構(gòu)中Line1~Line4各自處理圖像的1/4,共同完成底層特征抽取。當(dāng)?shù)谒牧薪Y(jié)點(diǎn)同時(shí)執(zhí)行完成之后,其結(jié)果返回第一列PE,完成完整的圖執(zhí)行模型。映射時(shí)用一條線路傳輸多路數(shù)據(jù),將多個(gè)結(jié)點(diǎn)的工作分成多個(gè)時(shí)間段,各個(gè)工作的各個(gè)時(shí)間段交叉使用,充分利用了分時(shí)復(fù)用(time division multiplexing,TDM)的思想,提高了資源利用率。
圖13 Canny Edge Detector映射結(jié)構(gòu)Fig. 13 Canny Edge Detector mapping structure
Harris 角點(diǎn)檢測(cè)的基本思想是使用一個(gè)固定窗口在圖像上進(jìn)行任意方向上的滑動(dòng),比較滑動(dòng)前與滑動(dòng)后兩種情況,窗口中的像素灰度變化程度,如果存在任意方向上的滑動(dòng)都有較大灰度變化,則認(rèn)為該窗口中存在角點(diǎn)。圖14為優(yōu)化后的Harris Corners基于圖的執(zhí)行模型,具體步驟如下:
圖14 優(yōu)化的Harris Corners圖執(zhí)行模型Fig. 14 Optimized Harris Corners graph execution model
(1)將彩色圖像轉(zhuǎn)換為灰度圖像(Color Convert)。
(2)計(jì)算出灰度圖像每一個(gè)像素點(diǎn)方向、方向的梯度值I、I(Sobel 3×3)。
(3)計(jì)算I、I、II并緩存(Control Flow)。
(5)計(jì)算圖像中每一個(gè)像素點(diǎn)的響應(yīng)值(Control Flow):
(6)將值與給定閾值比較,大于閾值的標(biāo)記為候選點(diǎn),否則不標(biāo)記(Thresholding)。
(7)對(duì)上述結(jié)果進(jìn)行非極大值抑制,輸出最終圖像(non-maxima suppression)。
圖14 中最左側(cè)的結(jié)點(diǎn)Control Flow 得到方向梯度值I后,計(jì)算其平方值,經(jīng)過(guò)高斯窗口計(jì)算局部累加和,得到得分值所需的系數(shù)。中間和右側(cè)路徑分別計(jì)算系數(shù)、,三條路徑同時(shí)工作。Harris Corners的流水線設(shè)計(jì)如圖15所示。
圖15 Harris Corners流水線設(shè)計(jì)Fig. 15 Harris Corners pipeline design
圖14 的Harris Corners 圖執(zhí)行模型中,同時(shí)計(jì)算梯度值乘積的3個(gè)結(jié)點(diǎn)Control Flow和同時(shí)計(jì)算得分值系數(shù)的3 個(gè)結(jié)點(diǎn)Gaussian Filter。分別被映射到2 個(gè)PE 上,如圖16 所示,使得16 個(gè)PE 可以同時(shí)處理1/4的圖像數(shù)據(jù),每條處理路徑都支持任務(wù)并行。
圖16 Harris Corners映射結(jié)構(gòu)Fig. 16 Harris Corners mapping structure
為驗(yàn)證本結(jié)構(gòu)對(duì)OpenVX 核函數(shù)的并行處理速度有所提升,使用Verilog 硬件描述語(yǔ)言,在Xilinx 公司的FPGA芯片xcvu440-flga-2892-2-e進(jìn)行綜合。用單個(gè)基本核函數(shù)映射在一個(gè)和多個(gè)PE 上的加速比、兩個(gè)底層特征抽取函數(shù)串行與并行速度的對(duì)比來(lái)衡量本并行處理器的處理速度。圖17為單個(gè)基本核函數(shù)映射在1 個(gè)和多個(gè)PE 上的加速比,計(jì)算時(shí)統(tǒng)一將映射在1個(gè)PE上的速度歸一化。圖18為底層特征抽取核函數(shù)拆分之前分別與拆分后串行和并行的加速比,將拆分之前用一個(gè)PE實(shí)現(xiàn)的速度歸一化,分別計(jì)算2個(gè)、4個(gè)、8個(gè)和16個(gè)PE并行的加速比。
圖17 OpenVX基本核函數(shù)并行加速比Fig. 17 Parallel speedup of OpenVX basic kernel functions
圖18 OpenVX底層特征抽取函數(shù)加速比Fig. 18 Speedup of OpenVX underlying feature extraction functions
由圖中數(shù)據(jù)可知,將復(fù)雜特征抽取核函數(shù)拆分為多個(gè)結(jié)點(diǎn),并將每個(gè)核函數(shù)映射到4個(gè)PE上,即圖像分為四塊并行處理可以在OpenVX 并行處理器上獲得最大的加速比。整個(gè)架構(gòu)在Vivado 2020.1平臺(tái)上綜合后的資源利用率如圖19所示。
圖19 資源利用率Fig. 19 Resource utilization
如圖20所示,(a)為仿真的原始灰度圖像,(b)為Gaussian Filter核函數(shù)的運(yùn)行結(jié)果,(c)、(d)為最終的特征抽取結(jié)果。
圖20 原始灰度圖及仿真結(jié)果Fig. 20 Original gray image and simulation results
本文介紹了一種用于OpenVX 加速的ASIP,并在硬件平臺(tái)上實(shí)現(xiàn)了部分核函數(shù)。硬件最高工作頻率可達(dá)125 MHz。這些實(shí)現(xiàn)以數(shù)據(jù)并行方法和流水線方法將OpenVX 1.3 核函數(shù)映射到ASIP 上。實(shí)驗(yàn)證明了本結(jié)構(gòu)具有線性加速比。當(dāng)圖像分辨率為640×480 時(shí),該結(jié)構(gòu)的幀頻率約為66 frame/s。本文提出的計(jì)算機(jī)視覺(jué)函數(shù)的處理方法,在相關(guān)應(yīng)用領(lǐng)域可以大大節(jié)省圖像處理時(shí)間,提高處理效率。例如,通過(guò)顯微圖像、血管造影圖像或超聲波圖像檢測(cè)腫瘤;在軍事領(lǐng)域檢測(cè)敵軍士兵或車輛等,具有廣闊的應(yīng)用前景。