• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于HLS和PYNQ圖像縮放的硬件加速器設(shè)計(jì)

      2023-08-26 01:35:12趙思捷高尚尚王如剛王媛媛周鋒郭乃宏
      關(guān)鍵詞:插值法圖像處理框架

      趙思捷 ,高尚尚 ,王如剛 ,王媛媛 ,周鋒 ,郭乃宏

      (1.鹽城工學(xué)院 信息工程學(xué)院,江蘇 鹽城 224051;2.鹽城雄鷹精密機(jī)械有限公司,江蘇 鹽城 224006)

      隨著現(xiàn)代電子技術(shù)的迅速發(fā)展,人們對(duì)機(jī)器視覺以及圖像處理的要求逐漸提高。目前,圖像處理技術(shù)主要集中在基于PC機(jī)、DSP等傳統(tǒng)平臺(tái)技術(shù)和基于現(xiàn)場(chǎng)可編程門陣列(field programmable gate array,F(xiàn)PGA)硬件平臺(tái)技術(shù)等[1-3]?;趥鹘y(tǒng)的PC機(jī)平臺(tái)中,存在體積較大、不方便攜帶以及對(duì)高速圖像信號(hào)難以實(shí)時(shí)處理等缺點(diǎn),使得該技術(shù)不能運(yùn)用在無人機(jī)偵查等場(chǎng)合?;贒SP平臺(tái)的技術(shù)中,只能處理某些特定的圖像算法,不能實(shí)現(xiàn)實(shí)時(shí)圖像信息的采集與處理;若利用多個(gè)DSP芯片并行運(yùn)算實(shí)現(xiàn)快速處理,則大大提高了系統(tǒng)的成本。FPGA是在可編程器件PAL、GAL、CPLD的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)品,可以更加高效地處理數(shù)據(jù),既解決了定制電路的不足,又克服了原有可編程器件門電路個(gè)數(shù)有限的缺點(diǎn)。但FPGA使用的是硬件描述性語言,開發(fā)難度大、可移植性差,因此利用FPGA對(duì)圖像進(jìn)行實(shí)時(shí)處理是一種挑戰(zhàn)。

      近些年,隨著Xilinx公司高層次綜合(highlevel synthesis, HLS)工具的運(yùn)用,可以使用C、System C 和C++語言代替?zhèn)鹘y(tǒng)的Verilog語言進(jìn)行編程,大大降低了開發(fā)難度,減少了開發(fā)時(shí)間[4];而PYNQ框架的出現(xiàn)不僅縮短了開發(fā)周期,提高了開發(fā)效率,還可以實(shí)現(xiàn)高性能應(yīng)用程序如并行硬件執(zhí)行、實(shí)時(shí)信號(hào)處理、高幀率視頻處理和硬件加速算法等[5]的運(yùn)用。

      由于HLS工具可以減少FPGA的植入時(shí)間,而PYNQ框架可以提高生產(chǎn)力[6],因此它們?cè)诶碚撗芯恐械玫搅舜罅康倪\(yùn)用。Vashist等[7]使用HLS提供的xfOpenCV庫(kù)實(shí)現(xiàn)了Canny的邊緣檢測(cè),提出了使用xfOpenCV庫(kù)可以更好地檢測(cè)帶有噪聲圖像的邊緣,但是它并沒有在PYNQ框架上使用;張瑞琰等[8]提出了基于PYNQ框架的高精度異構(gòu)無預(yù)選框檢測(cè)模型,處理時(shí)長(zhǎng)由ARM端的9.228 s縮減到FPGA端的0.008 s,大大提高了檢測(cè)模型的速度;Cui等[9]提出了基于PYNQ框架的核相關(guān)濾波異構(gòu)跟蹤系統(tǒng),該系統(tǒng)具有良好的實(shí)時(shí)性,跟蹤速度平均為27.9 幀/s,具有較高的執(zhí)行效率,易于開發(fā)和移植,具有一定的工程參考價(jià)值。

      基于以上研究,本文提出了基于HLS和PYNQ的圖像處理硬件加速器設(shè)計(jì),利用HLS工具實(shí)現(xiàn)縮放算法,再經(jīng)過優(yōu)化、仿真、綜合后生成IP核;在Vivado 2018.3硬件平臺(tái)上連接IP核,并輸出硬件描述文件和比特流文件;把PYNQ鏡像復(fù)制到SD卡并啟動(dòng)開發(fā)板,再在瀏覽器上打開Jupyter Lab進(jìn)行運(yùn)行驗(yàn)證和分析。

      1 縮放算法

      在圖像處理過程中,圖像縮放是對(duì)圖像大小作一定的調(diào)整,目的是為了適應(yīng)顯示區(qū)域的大小。圖像縮放包含圖像的縮小和放大,分別稱為圖像的下采樣和上采樣,一般是利用圖像的插值實(shí)現(xiàn)的。常見的圖像插值算法有最近鄰算法、雙線性插值法和雙三次插值法等[10-11],其中最近鄰算法具有計(jì)算量小、算法簡(jiǎn)單、處理速度快、占用資源少等特點(diǎn),但采樣后的圖像具有明顯的不連續(xù)現(xiàn)象,且圖像放大時(shí)會(huì)出現(xiàn)馬賽克,縮小時(shí)會(huì)有失真現(xiàn)象;雙線性插值法具有連續(xù)性好,縮小時(shí)具有較好的圖像品質(zhì),但放大時(shí)會(huì)有一定的細(xì)節(jié)損失;雙三次插值法具有計(jì)算精度高、圖像品質(zhì)好等特點(diǎn),但算法復(fù)雜、計(jì)算量大。

      經(jīng)綜合比較,本文采用雙線性插值法進(jìn)行加速測(cè)試,原因是雙線性插值法比最近鄰算法只是計(jì)算量稍大一些,但縮放后圖像質(zhì)量高,基本克服了最近鄰插值算法灰度值不連續(xù)的特點(diǎn)。

      雙線性插值又稱為雙線性內(nèi)插,即在兩個(gè)方向上分別進(jìn)行一次線性插值(在一個(gè)方向上使用線性插值,然后在另一個(gè)方向上再使用線性插值執(zhí)行雙線性插值),如圖1所示。

      圖1 雙線性插值坐標(biāo)Fig. 1 Bilinear interpolation coordinates

      圖1中,設(shè)二元函數(shù)z=f(x,y),A、B、C、D點(diǎn)的坐標(biāo)分別為(x0,y0)、(x1,y0)、(x1,y1)、(x0,y1),若P點(diǎn)的橫、縱坐標(biāo)分別為x'、y',則要在A、B、C、D中通過插值法計(jì)算點(diǎn)P的z軸坐標(biāo)z',計(jì)算步驟如下:

      (1)根據(jù)AD與BC的線性關(guān)系,得:

      (2)設(shè)P0、P1分別為線段AD、BC上的任意一點(diǎn),其z軸坐標(biāo)分別為Z0、Z1,令α=(x-x0)/(x1-x0),則P0、P1的z軸坐標(biāo)分別為:

      (3)令β=(y-y0)/(y1-y0),則P點(diǎn)在z軸上的坐標(biāo)z'為:

      整理式(4),得z'表達(dá)式為:

      2 硬件加速器設(shè)計(jì)

      2.1 系統(tǒng)整體設(shè)計(jì)

      根據(jù)對(duì)縮放算法的特性分析,可以發(fā)現(xiàn)執(zhí)行縮放算法時(shí)一方面需要系統(tǒng)控制和過程調(diào)度,另一方面需要大量的計(jì)算。因此,硬件加速器的實(shí)驗(yàn)開發(fā)板采用Xilinx公司的ZYNQ-7000系列XC7Z020CLG400-2芯片為核心,實(shí)驗(yàn)平臺(tái)采用Vivado2018.3、HLS 2018.3以及Firefox。

      在縮放算法中,由于涉及的數(shù)據(jù)重復(fù)程度高,但計(jì)算結(jié)構(gòu)并不繁瑣,因此采用具有并行加速度特性的PL(programmable logic)端來實(shí)現(xiàn)(即FPGA來實(shí)現(xiàn));算法涉及的復(fù)雜結(jié)構(gòu)化過程控制與調(diào)度部分,由PS(processing system)端來實(shí)現(xiàn)(即ARM來實(shí)現(xiàn))。PS與PL的互聯(lián)完成了硬件加速器控制流與數(shù)據(jù)流的交互。

      硬件加速器整體系統(tǒng)如圖2所示。從圖2可以看出,該系統(tǒng)分成3部分。在第一部分的HLS里,編寫縮放算法的C代碼和C測(cè)試代碼;功能驗(yàn)證成功后,添加優(yōu)化指令并進(jìn)行高層次綜合;高層次綜合后再對(duì)結(jié)果進(jìn)行評(píng)估。評(píng)估時(shí),如果速度、資源等不滿足條件,則需要重新優(yōu)化設(shè)計(jì),直到滿足條件后,導(dǎo)出RTL作為IP核。第二部分由開發(fā)板的PL端和PS端組成,PL端的作用是在Vivado平臺(tái)上設(shè)計(jì)Block design并連接IP核,然后導(dǎo)出.hwh文件和.bit文件;PS端的作用是在ARM上啟動(dòng)裝有PYNQ鏡像的SD卡。第三部分是通過網(wǎng)線或者USB連接PC端,在Firefox上打開Jupyter Lab運(yùn)行代碼并查看結(jié)果。

      圖2 整體系統(tǒng)框圖Fig. 2 Block diagram of overall system

      2.2 HLS設(shè)計(jì)

      為了加速傳統(tǒng)“寄存器傳輸級(jí)(register transfer level,RTL)”開發(fā)FPGA的時(shí)間,Xilinx公司推出了可以提升行為抽象等級(jí)的編譯器Vivado HLS。該編譯器可以使用C++對(duì)算法進(jìn)行設(shè)計(jì)開發(fā),并最終綜合成HDL描述。

      HLS設(shè)計(jì)流程如圖3所示。在編寫C代碼時(shí),首先使用hls::AXIvideo2Mat函數(shù)將AXI4-Stream格式的輸入圖像轉(zhuǎn)換成HLS工具可以處理的hls::Mat格式,然后調(diào)用HLS Video Library 里的函數(shù)或者自定義算法函數(shù)進(jìn)行圖像處理,最后使用hls::Mat2AXIvideo函數(shù)將hls:Mat格式的圖像轉(zhuǎn)換成FPGA可以處理的AXI4-Stream格式;同時(shí)結(jié)合C測(cè)試代碼驗(yàn)證算法功能的有效性,并進(jìn)行高層次綜合;然后根據(jù)高層次綜合的評(píng)估結(jié)果,觀察FPGA中的資源使用情況,以及支持的最高時(shí)鐘頻率是否滿足條件等。如果不滿足條件,則需要重新優(yōu)化,直到滿足條件為止,然后導(dǎo)出IP核。

      圖3 HLS設(shè)計(jì)流程圖Fig. 3 Flow chart of HLS design

      在上述過程中還需要對(duì)代碼進(jìn)行優(yōu)化,而優(yōu)化HLS代碼的方式有約束和指令兩種。約束是指對(duì)時(shí)鐘周期、資源利用情況等指標(biāo)進(jìn)行限制,確保實(shí)驗(yàn)結(jié)果能夠滿足系統(tǒng)要求;而指令的添加可以優(yōu)化C代碼中的循環(huán)、數(shù)組和運(yùn)算延時(shí)等,能夠在很大程度上改變RTL的輸出結(jié)果。因此,本文在設(shè)計(jì)縮放算法代碼時(shí),添加了如下優(yōu)化。

      (1)#pragma HLS UNROLL:FPGA可以實(shí)現(xiàn)并行處理,所以代碼可以展開循環(huán),并創(chuàng)建多個(gè)獨(dú)立的操作,即在單個(gè)時(shí)鐘里并行處理for循環(huán)中的操作。

      (2)#pragma HLS PIPELINE:PIPELINE可以允許上一個(gè)操作完成前,同時(shí)執(zhí)行下一個(gè)操作,即循環(huán)流水線操作,以提高系統(tǒng)的吞吐率。

      (3)#pragma HLS LOOP_FLATTEN OFF:可以防止優(yōu)化等級(jí)過高,把嵌套循環(huán)結(jié)構(gòu)優(yōu)化成單層次循環(huán)結(jié)構(gòu)。

      (4)#pragma HLS dataflow:可以使各個(gè)圖像處理函數(shù)能夠并行執(zhí)行,并獲得高質(zhì)量處理結(jié)果。

      (5)將輸入圖像和輸出圖像綜合成AXI4-Stream接口:

      #pragma HLS INTERFACE axis port=INPUT_STREAM

      #pragma HLS INTERFACE axis port=OUTPUT_STREAM。

      (6)將圖像行數(shù)和列數(shù)配置成AXI4-lite接口:

      #pragma HLS INTERFACE s_axilite port=rows

      #pragma HLS INTERFACE s_axilite port=cols。

      在高層次綜合后,經(jīng)對(duì)綜合結(jié)果評(píng)估后得到資源占用情況,如表1所示。從表1可以看出,縮放算法占用資源較少,能夠滿足系統(tǒng)的要求。

      表1 縮放算法占用資源情況Table 1 Resource usage of scaling algorithms

      2.3 Overlay設(shè)計(jì)

      Overlay設(shè)計(jì)本質(zhì)上就是ZYNQ的PL端設(shè)計(jì),它既可以加速軟件應(yīng)用程序,也可以定制相應(yīng)的硬件平臺(tái)。

      縮放算法的Overlay系統(tǒng)框圖如圖4所示。圖4中1號(hào)位置所指的IP是HLS綜合后導(dǎo)出的縮放IP,它采用的是雙線性插值算法,上采樣支持小于或等于8倍的放大比例,下采樣支持大于或等于25%的縮小比例。2號(hào)位置所指的IP是Vivado平臺(tái)自帶的IP,可以直接添加。DRAM中的數(shù)據(jù)是DMA IP利用位寬轉(zhuǎn)換IP將32位圖像數(shù)據(jù)轉(zhuǎn)換成縮放IP可處理的24位圖像數(shù)據(jù);數(shù)據(jù)處理完畢后,將24位圖像數(shù)據(jù)轉(zhuǎn)換成32位圖像數(shù)據(jù),再經(jīng)過DMA傳到DRAM。其余方框是系統(tǒng)根據(jù)設(shè)計(jì)自動(dòng)生成的。

      圖4 縮放算法的Overlay系統(tǒng)框圖Fig. 4 Block diagram of Overlay system with scaling algorithm

      IP核添加完成后,進(jìn)行配置和連線,從而完成Overlay的設(shè)計(jì)。

      2.4 PYNQ 框架

      隨著Python的流行,Xilinx公司推出了可以使用Python語言和特定庫(kù)的PYNQ框架。該框架利用ZYNQ中的FPGA和ARM快速構(gòu)建高性能的嵌入式應(yīng)用程序,不僅免除了傳統(tǒng)的SDK開發(fā)方式,還代之以不限平臺(tái)的瀏覽器開發(fā),極大地方便了軟件開發(fā)人員使用硬件設(shè)備。PYNQ框架包括以下幾層:

      (1) FPGA為主的硬件層:FPGA部分的設(shè)計(jì)被稱為Overlay設(shè)計(jì),在Vivado2018.3平臺(tái)上搭建并連接好IP核后,點(diǎn)擊綜合分析,在生成bit流文件后,就可以在軟件上調(diào)用API,實(shí)現(xiàn)FPGA邏輯功能的動(dòng)態(tài)切換以及PS和PL的協(xié)同交互。

      (2) Linux內(nèi)核加Python為主的軟件層:主要是運(yùn)行在ZYNQ的ARM端,可以通過Python調(diào)用API庫(kù)來訪問FPGA端的處理單元。

      (3) Jupyter Lab為主的應(yīng)用層:Jupyter Lab是一個(gè)基于瀏覽器的交互式實(shí)驗(yàn)環(huán)境,在這環(huán)境里,可以使用Python語言運(yùn)行代碼、查看結(jié)果和可視化分析等。

      3 實(shí)驗(yàn)與結(jié)果

      在Firefox上打開在線編輯工具Jupyter Lab,然后導(dǎo)入文件庫(kù),下載Bitstream文件,最后將準(zhǔn)備存放在SD卡中圖片加載到DDR3中。圖片加載完成后,Jupyter Lab會(huì)顯示原始圖像的尺寸。為了方便調(diào)用,可以創(chuàng)建 DMA 和Resize IP對(duì)象,然后通過Overlay字典查看DMA IP和Resize IP的配置信息(IP字典會(huì)顯示具有 AXI Lite 接口且需要用戶進(jìn)行控制調(diào)配的AXI IP)。

      鑒于計(jì)算復(fù)雜,Jupyter渲染大圖片時(shí)可能需要一段時(shí)間。為了獲得更好的視覺效果,可以將顯示圖片的畫布在Jupyter Lab上增加一倍。

      圖5為在Jupyter Lab中實(shí)現(xiàn)Resize IP的情況。由圖5可知,加載的測(cè)試圖片大小為3840 pixels×2400 pixels,在Jupyter Lab上執(zhí)行Resize IP后的圖像大小為1920 pixels×1200 pixels,測(cè)試圖片縮小為原圖像的一半。此外,本文在Jupyter Lab上還設(shè)計(jì)軟件版本的縮放算法,該算法是由Python環(huán)境和PYNQ框架提供的OpenCV庫(kù)實(shí)現(xiàn)的。

      圖5 在Jupyter Lab中實(shí)現(xiàn)Resize IPFig. 5 Implementing Resize IP in Jupyter Lab

      Resize IP執(zhí)行時(shí)間如表2所示。從表2可以看出,軟件實(shí)現(xiàn)本文算法的執(zhí)行時(shí)間為1110 ms,而硬件實(shí)現(xiàn)本文算法的執(zhí)行時(shí)間為213 ms,硬件加速下處理性能提升了5倍左右。

      表2 Resize IP執(zhí)行速度Table 2 Execution speed of Resize IP

      4 結(jié)論

      針對(duì)CPU上無法滿足圖像實(shí)時(shí)處理的需求,提出了一種基于PYNQ框架的圖像處理加速器設(shè)計(jì)。首先選取縮放算法作為圖像加速測(cè)試的算法,再利用HLS工具使用C++語言完成了Resize IP的設(shè)計(jì),最后在Jupyter Lab上完成了算法的驗(yàn)證與分析。

      實(shí)驗(yàn)結(jié)果表明,基于PYNQ硬件平臺(tái)的執(zhí)行速度約是軟件平臺(tái)的5倍,極大地提高了算法的處理速度;并且硬件平臺(tái)系統(tǒng)是模塊化IP設(shè)計(jì),便于移植和二次開發(fā),在計(jì)算機(jī)圖像處理領(lǐng)域具有一定的工程應(yīng)用價(jià)值。

      猜你喜歡
      插值法圖像處理框架
      框架
      廣義框架的不相交性
      《計(jì)算方法》關(guān)于插值法的教學(xué)方法研討
      機(jī)器學(xué)習(xí)在圖像處理中的應(yīng)用
      電子制作(2018年18期)2018-11-14 01:48:20
      模糊圖像處理,刑事偵查利器
      圖像處理技術(shù)的實(shí)戰(zhàn)應(yīng)用
      WTO框架下
      法大研究生(2017年1期)2017-04-10 08:55:06
      基于二次插值法的布谷鳥搜索算法研究
      一種基于OpenStack的云應(yīng)用開發(fā)框架
      Newton插值法在光伏發(fā)電最大功率跟蹤中的應(yīng)用
      棋牌| 信丰县| 寻甸| 丰台区| 阿坝县| 蒙自县| 荣成市| 禹州市| 南投县| 崇仁县| 兴海县| 义乌市| 沾益县| 利津县| 独山县| 和硕县| 集安市| 延津县| 祁东县| 景洪市| 娄烦县| 海林市| 上饶市| 桃园县| 扎兰屯市| 尤溪县| 安达市| 石首市| 高密市| 安徽省| 漳浦县| 绥芬河市| 兴国县| 射阳县| 溧水县| 长岭县| 方山县| 车致| 社会| 会理县| 漯河市|