国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的水平集圖像分割算法加速器

2021-06-24 09:40:36肖劍彪
電子與信息學(xué)報 2021年6期
關(guān)鍵詞:散度加速器輪廓

劉 野 肖劍彪 吳 飛 常 亮 周 軍

(電子科技大學(xué) 成都 611731)

1 引言

圖像分割技術(shù)已經(jīng)廣泛應(yīng)用于多個領(lǐng)域,如醫(yī)學(xué)圖像分析、自動駕駛、人臉識別等[1—3]。該技術(shù)可以獨立應(yīng)用或作為目標(biāo)檢測和目標(biāo)分類應(yīng)用的預(yù)處理方法。圖像分割可以使用傳統(tǒng)的分割方法實現(xiàn)(如水平集方法),也可以使用基于神經(jīng)網(wǎng)絡(luò)的方法。其中,基于神經(jīng)網(wǎng)絡(luò)的圖像分割方法比如全卷積網(wǎng)絡(luò)(Fully Convolutional Networks, FCN)和U-Net[4],由于其高準(zhǔn)確率的特點,在近幾年吸引了大量關(guān)注。但是這些方法的缺點是需要大量的訓(xùn)練數(shù)據(jù)才能達(dá)到如此高的準(zhǔn)確率。為了制作圖像分割的標(biāo)簽,需要為每個訓(xùn)練的數(shù)據(jù)畫出目標(biāo)輪廓,這往往需要耗費大量精力和時間。與基于神經(jīng)網(wǎng)絡(luò)的方法對比,基于水平集的圖像分割方法不需要訓(xùn)練數(shù)據(jù)并且能夠達(dá)到高準(zhǔn)確率。另外,基于水平集的圖像分割方法是根據(jù)像素紋理進(jìn)行分割的,與需要訓(xùn)練數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)方法相比,提供了更強(qiáng)的魯棒性。

水平集方法由Osher等人[5]首次提出,用于捕獲動態(tài)的圖像輪廓。隨后,Kass等人[6]提出了基于活動輪廓模型的改進(jìn)算法?;顒虞喞P陀袃煞N類型:參數(shù)活動輪廓模型[6,7]和幾何活動輪廓模型[8—10]。水平集算法的關(guān)鍵點是曲線演化理論,即使用高維曲面的零平面表示低維曲面的輪廓。水平集方法與其他的圖像分割方法對比的一個優(yōu)點是它能夠很好地處理拓?fù)浣Y(jié)構(gòu)變化的問題(比如在演化過程中,輪廓的拓?fù)浣Y(jié)構(gòu)從1個輪廓分化為兩個輪廓,或者從兩個輪廓合并為1個輪廓的情況)。

對比基于深度學(xué)習(xí)的圖像分割方法[11],水平集方法具有無需訓(xùn)練數(shù)據(jù)、準(zhǔn)確率高的特點,顯著地減少了制作標(biāo)簽消耗的時間。但是,該算法包含了大量的復(fù)雜計算和多次迭代的過程,導(dǎo)致計算復(fù)雜度很高。在水平集算法中,基于能量泛函的偏微分方程涉及大量的梯度和散度計算,并且在曲線輪廓演進(jìn)的過程中,需要重復(fù)計算該過程。此外,迭代計算的過程需要應(yīng)用于整張圖片的全部像素,從而進(jìn)一步增加了計算復(fù)雜度。目前,水平集算法仍然通過中央處理器(Central Processing Unit, CPU)利用軟件實現(xiàn)。復(fù)雜的計算過程導(dǎo)致該算法處理時間長和功耗大等問題,嚴(yán)重限制了水平集算法的應(yīng)用。

為了解決該問題,本文提出了一種基于現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)的水平集圖像分割算法加速器[12]。為了加速水平集算法并且提高硬件資源的高利用率,本文提出了4個設(shè)計創(chuàng)新點:(1)任務(wù)級并行處理;(2)圖像分塊像素級并行處理;(3)全流水線處理;(4)分時復(fù)用的梯度和散度算子處理。實驗結(jié)果表明:與CPU運(yùn)行的水平集算法相比,所提出的基于FPGA的水平集圖像分割算法加速器有著更高的處理速度。

本文的其余部分內(nèi)容安排如下:第2節(jié)介紹水平集算法;第3節(jié)描述本文提出的基于FPGA的水平集圖像分割算法加速器以及4個設(shè)計創(chuàng)新點;第4節(jié)展示實驗結(jié)果與分析;第5節(jié)總結(jié)全文。

2 水平集算法

在原始的水平集算法中,經(jīng)過多次迭代后,水平集函數(shù)需要重新初始化,以確保水平集曲線的平滑度。通過使用新的變分公式[15]以及距離正則化的水平集演化算法 (Distance Regularized Level Set Evolution, DRLSE)[16],將不再需要重新初始化水平集函數(shù)。關(guān)于水平集算法的軟件處理流程如圖1所示。原始的輸入圖像先經(jīng)過高斯濾波器處理,然后再進(jìn)行梯度運(yùn)算。同時,初始的輪廓使用Neumann邊緣函數(shù)處理,然后分別進(jìn)行梯度運(yùn)算和狄利克雷函數(shù)處理。經(jīng)過3個函數(shù)的處理后,可以獲得能量函數(shù),根據(jù)迭代次數(shù)和輪廓的收斂情況判斷下一次迭代是否繼續(xù)進(jìn)行。DRLSE算法的細(xì)節(jié)描述如下:

圖1 水平集算法處理流程

結(jié)合以上方程式和使能量函數(shù)ε降低的梯度[17]演化方程式(6),可以得出迭代方程式(7),利用梯度優(yōu)化方法使能量函數(shù)結(jié)果降低,可以使目標(biāo)輪廓收斂。

從水平集算法的細(xì)節(jié)可以看出,其計算過程非常復(fù)雜,涉及大量的迭代過程。此外,每次迭代都需要遍歷整個圖像,從而導(dǎo)致處理時間長、功耗高。近年來,一些工作提出了使用CPU+圖形處理器(Graphic Processing Unit, GPU)的方法來加速水平集算法的處理[18,19]。

相比于CPU,GPU以其較高的并行計算度在算法加速中具有較大優(yōu)勢,可以通過大量的并行計算引擎加速算法中矩陣或張量的密集運(yùn)算,但是,在水平集算法中,由于其算法處理的特殊性,不只有高密度矩陣運(yùn)算,同時還兼有很多邏輯串行計算,這就導(dǎo)致GPU和CPU之間需要進(jìn)行頻繁的數(shù)據(jù)交互,一方面降低了計算的加速效果,另一方面,增加了數(shù)據(jù)傳輸所帶來的額外功耗,因此GPU并不是加速水平集算法的最佳選擇。在參考文獻(xiàn)[18,19]中,為了解決這個問題,對原有水平集算法進(jìn)行了大量修改,提高了并行度,做了稀疏化處理,并對算法流程進(jìn)行了修改,才能讓該算法可以在GPU上高速運(yùn)行。然而,該算法降低了原有水平集算法的準(zhǔn)確性。

眾所周知,CPU按照串行方式執(zhí)行程序,從水平集算法層面來看,它的每次迭代都需要遍歷整個圖像的像素。因此,使用CPU執(zhí)行水平集算法的效率非常低,并且功耗很高。盡管GPU專用于圖像處理,但它也是通用圖像處理器,與專用硬件架構(gòu)相比,它不能針對特定算法采用高效策略,這也是造成其低能效和高功耗的原因。

在我們的工作之前,只有文獻(xiàn)[20]曾做過關(guān)于水平集圖像分割算法加速器的工作,但是該算法與我們的算法完全不同,因為它是一種輕量級的水平集算法,提高了性能但犧牲了準(zhǔn)確性,并且該作者使用了不同的測試圖像和方法,這使得很難比較這兩種設(shè)計。為了提高能效并加速水平集算法,本文提出了一種基于FPGA的水平集圖像分割算法加速器。

3 水平集圖像分割算法硬件架構(gòu)

本文提出的基于FPGA的水平集圖像分割算法加速器的總體硬件架構(gòu)如圖2所示。對應(yīng)處理流程如下:首先對原始圖像中的像素進(jìn)行預(yù)處理,包括高斯濾波去噪、計算圖像像素的梯度,通過邊緣指示計算模塊進(jìn)行數(shù)據(jù)轉(zhuǎn)換。然后,進(jìn)入迭代階段。對初始化或迭代輪廓進(jìn)行Neumann邊界處理,得到內(nèi)外能量處理模塊的輸入。在進(jìn)行外部能量處理時,將預(yù)處理后的數(shù)據(jù)與Neumann邊界處理后的輪廓進(jìn)行融合作為外部能量模塊的輸入,然后將內(nèi)部能量處理模塊與外部能量處理模塊的輸出傳輸?shù)骄仃嚰臃ㄋ阕幽K進(jìn)行進(jìn)一步處理。

為了提高處理速度,本文提出了4種設(shè)計技術(shù),包括(1)任務(wù)級并行處理;(2)圖像分塊像素級并行處理;(3)全流水線處理;(4)分時復(fù)用的梯度和散度算子處理。它們的細(xì)節(jié)將在后面的小節(jié)中描述。

圖2 基于FPGA的水平集圖像分割算法硬件架構(gòu)

3.1 任務(wù)級并行處理架構(gòu)

本文提出的任務(wù)級并行處理架構(gòu)如圖3所示。通過對水平集算法中子任務(wù)的相關(guān)性研究,本文發(fā)現(xiàn)了多個彼此不相關(guān)的子任務(wù)。因此,可以通過并行處理這些任務(wù)來提高整體處理速度。

圖3 任務(wù)級并行處理架構(gòu)

可以利用的任務(wù)級并行之一是內(nèi)部和外部能量處理子任務(wù)。本文將迭代輪廓緩存在多個并行的緩存區(qū)中,而不是緩存在單個緩存區(qū)中。這樣的好處在于:內(nèi)部和外部能量處理模塊可以同時讀取/寫入緩存區(qū)以并行處理,而且不會發(fā)生任何資源的調(diào)用沖突。

另一個可以利用的任務(wù)級并行是在內(nèi)部和外部能量處理模塊的內(nèi)部。對于內(nèi)部能量處理模塊而言,可以對梯度和距離正則化的計算進(jìn)行并行化處理。而對于外部能量處理模塊,可以并行計算梯度和狄利克雷函數(shù)。綜上,本文可以充分利用任務(wù)級并行性來提高處理速度。

3.2 圖像分塊像素級并行處理架構(gòu)

除任務(wù)級的并行性外,像素級的并行性也可以被利用。圖4展示了本文提出的圖像分塊像素級并行處理架構(gòu)。我們發(fā)現(xiàn)在水平集算法中,每個像素的處理只與該像素周圍的小部分像素相關(guān),而與其他像素?zé)o關(guān)。因此在設(shè)計硬件架構(gòu)的時候,本文將輸入圖像分割成多個圖像塊并存儲在多個隨機(jī)存取存儲器(Random Access Memory, RAM)中,這些RAM中的數(shù)據(jù)會被并行處理以提高處理速度。例如,在進(jìn)行高斯濾波平滑處理的過程中,左上角和右下角的圖像是互不相關(guān)的,因此可以通過將圖像分割成4塊來同時處理這兩個部分的圖像。同時為了保證數(shù)據(jù)處理的完整性和正確性,本文設(shè)計了數(shù)據(jù)分塊控制器來處理相鄰兩個數(shù)據(jù)塊之間的邊緣部分。最后,引入的數(shù)據(jù)分塊控制器模塊只增加了少量的硬件開銷,但大大提高了圖像分割迭代過程的收斂速度。

圖4 圖像分塊處理架構(gòu)

3.3 全流水線處理架構(gòu)

本文提出的全流水線處理架構(gòu)如圖5所示,其中水平集算法會在流水線控制器的控制下完全流水化處理。一旦模塊的輸入數(shù)據(jù)準(zhǔn)備好,就會立即開始該模塊的數(shù)據(jù)處理。通過在不同級別(系統(tǒng)級和模塊級)設(shè)計全流水線的處理結(jié)構(gòu),可以充分利用所有的處理模塊來提高吞吐量。流水線機(jī)制需要有一個狀態(tài)機(jī)來控制協(xié)調(diào),如圖5(a)所示,它主要分為地址生成狀態(tài)、梯度計算狀態(tài)和散度計算狀態(tài),對應(yīng)的控制信號如圖5(b)所示,當(dāng)發(fā)送數(shù)據(jù)請求發(fā)生時,它將跳轉(zhuǎn)到地址生成狀態(tài),并通過內(nèi)部計數(shù)器確定梯度計算是否開啟以及散度計算是否開啟。例如,對于外部能量處理模塊,可以實現(xiàn)梯度函數(shù)、散度函數(shù)、輪廓長度函數(shù)的流水線化。當(dāng)梯度計算完成后,其結(jié)果將直接傳遞到下一階段;一旦數(shù)據(jù)準(zhǔn)備好,散度的計算將立即開始;當(dāng)散度計算完成后,輪廓長度的計算也可以立刻開始。全流水線的處理架構(gòu)大大提高了吞吐量。

3.4 分時復(fù)用架構(gòu)

圖5 本文所提全流水線處理架構(gòu)

為了減少資源使用量,本文設(shè)計了分時復(fù)用的梯度和散度算子處理模塊,如圖6所示。在水平集算法中,有一些處理階段需要計算像素的梯度和散度。由于這些階段不需要同時工作,并且這些階段之間的時間間隔很長,所以可以對梯度和散度計算模塊進(jìn)行分時復(fù)用。本文通過設(shè)計一個分時復(fù)用控制器來實現(xiàn),它可以動態(tài)地切換梯度和散度計算模塊的數(shù)據(jù)輸入/輸出,并控制模塊的啟動/停止。這種設(shè)計有助于減少硬件開銷,同時不影響處理速度。

4 實驗結(jié)果

本節(jié)介紹用于驗證所提出的水平集圖像分割算法加速器的實驗設(shè)備搭建和實時演示平臺。然后,根據(jù)Xilinx Vivado平臺的評估結(jié)果來分析實驗結(jié)果。

圖7(a)展示了實驗設(shè)備的搭建流程,其中包括算法分析和優(yōu)化、硬件架構(gòu)設(shè)計以及FPGA實現(xiàn)。在算法分析中,本文抽象了水平集算法的關(guān)鍵部分,以加快執(zhí)行速度。在硬件架構(gòu)設(shè)計中,設(shè)計了任務(wù)級并行處理架構(gòu)、圖像分塊像素級并行處理架構(gòu)、全流水線處理架構(gòu)、分時復(fù)用的梯度和散度算子處理架構(gòu),組成了硬件的加速平臺。在FPGA實現(xiàn)中,采用Xilinx VC707 FPGA評估板來實現(xiàn)提出的定點數(shù)據(jù)的水平集圖像分割算法加速器。使用Xilinx Vivado平臺來驗證Verilog HDL語言描述的RTL行為,并生成比特流以供驗證評估。

圖7(b)展示了實驗的實時演示平臺,包括一個顯示器、Xilinx VC707 FPGA評估板和必要的連接器。將水平集圖像分割算法加速器應(yīng)用于圖像分割,圖像存儲在FPGA中,通過按FPGA板上的按鍵開始進(jìn)行分割。同時,中間迭代的分割輪廓被傳輸?shù)斤@示器上進(jìn)行實時顯示。

圖8顯示了軟件和FPGA實現(xiàn)的分割結(jié)果對比,其錯誤率小于1.8%。測試的醫(yī)學(xué)電子計算機(jī)斷層掃描(Computed Tomography, CT)圖像的像素尺寸為270×300,F(xiàn)PGA的工作時鐘頻率為100 MHz。在FPGA上實現(xiàn)的分割結(jié)果與軟件的結(jié)果匹配,但是通過FPGA實現(xiàn)的分割速度提升很多。其中CPU的型號為1.80 GHz的Intel Core i5-8250U,內(nèi)存為8 GB,硬件平臺為Xilinx VC707 FPGA評估板。在運(yùn)行功率為50 W的情況下,軟件實現(xiàn)對圖像進(jìn)行分割的處理時間為52.3 s,而在運(yùn)行功率為2.2 W的情況下,F(xiàn)PGA實現(xiàn)的處理時間僅為4.88 s,比軟件實現(xiàn)的處理時間減少了10.7倍。為了更好地展示本文架構(gòu)的性能,將算法進(jìn)一步通過GPU進(jìn)行了實現(xiàn),GPU型號為GeForce RTX 2080,分割時間為29.05 s,F(xiàn)PGA硬件架構(gòu)與其相比,加快5.9倍,如圖9所示。圖10展示了3張對其他圖像的分割輪廓結(jié)果,并給出了參考輪廓以及IoU值,IoU均能達(dá)到95%以上。

圖6 分時復(fù)用控制器以及時序圖

圖7 實驗平臺建立和實時演示平臺

圖8 軟件和FPGA實現(xiàn)的分割結(jié)果對比

表1顯示了FPGA的資源利用率。Virtex 7以100 MHz的時鐘頻率來運(yùn)行本文提出的硬件加速器??梢钥吹?,Xilinx Virtex 7 FPGA芯片的所有資源使用率只有10%左右,因此所提出的水平集圖像分割算法加速器是輕量級的。圖11展示了所提出的水平集圖像分割算法加速器的功耗以及功耗的詳細(xì)占比。在使用Xilinx Virtex 7 FPGA分割270×300醫(yī)學(xué)圖像時,硬件加速器的功率為2.2 W。在功耗的占比中,動態(tài)功耗占85%,包括了BRAM、信號、邏輯、DSP和時鐘上的功耗。

圖9 分割時間對比

5 結(jié)論

本文提出了一種基于FPGA的水平集圖像分割算法加速器,以提高水平集圖像分割算法的處理速度和能效。其中,提出了4種設(shè)計技術(shù),包括任務(wù)級并行處理、圖像分塊像素級并行處理、全流水線處理架構(gòu)和分時復(fù)用的梯度和散度算子處理。在Xilinx VC707 FPGA評估板上實現(xiàn)了水平集圖像分割算法加速器,并且得到了與軟件處理結(jié)果相同的分割輪廓。基于FPGA實現(xiàn)的水平集圖像分割算法結(jié)果與軟件實現(xiàn)的分割結(jié)果基本一致,分割速度提升10.7倍,功耗僅為2.2 W。

圖10 硬件加速器分割結(jié)果輪廓及參考輪廓

表1 資源利用率

圖11 水平集硬件加速器功耗占比

猜你喜歡
散度加速器輪廓
輪滑加速器
化學(xué)工業(yè)的“加速器”
輪廓錯覺
帶勢加權(quán)散度形式的Grushin型退化橢圓算子的Dirichlet特征值的上下界
全民小康路上的“加速器”
少先隊活動(2021年6期)2021-07-22 08:44:24
具有部分BMO系數(shù)的非散度型拋物方程的Lorentz估計
基于實時輪廓誤差估算的數(shù)控系統(tǒng)輪廓控制
H型群上一類散度形算子的特征值估計
H?rmander 向量場上散度型拋物方程弱解的Orlicz估計
等待“加速器”
东阿县| 南城县| 蓝田县| 越西县| 浮梁县| 岐山县| 当阳市| 股票| 荔浦县| 那曲县| 焉耆| 新民市| 始兴县| 屯门区| 涞源县| 香港 | 鞍山市| 保靖县| 宁乡县| 乐至县| 腾冲县| 池州市| 涿州市| 中方县| 彰化市| 彭州市| 克东县| 马公市| 清镇市| 兴城市| 上蔡县| 巴塘县| 九龙城区| 九江县| 文昌市| 洱源县| 南皮县| 金寨县| 承德市| 泾川县| 金平|