樊 榮,柴志雷*
(1.江南大學(xué)人工智能與計(jì)算機(jī)學(xué)院,江蘇無(wú)錫;2.江蘇省模式識(shí)別與計(jì)算智能工程實(shí)驗(yàn)室,江蘇無(wú)錫)
圖像放大是指將低分辨率的圖像放大到高分辨率圖像,現(xiàn)在也被稱(chēng)為圖像超分辨率重建,圖像放大應(yīng)用范圍很廣,在醫(yī)學(xué)影像[1]、衛(wèi)星圖像[2]、視頻監(jiān)視[3]等領(lǐng)域,在數(shù)字相機(jī)、智能手機(jī)、監(jiān)控?cái)z像頭、智能家居等嵌入式[4]設(shè)備也常常需要對(duì)圖像進(jìn)行放大操作,以更好地觀察細(xì)節(jié)。圖像放大技術(shù)的應(yīng)用,可以幫助用戶更好地理解圖像信息,提升圖像觀察體驗(yàn)。
傳統(tǒng)放大算法是以插值為基礎(chǔ)的放大,其計(jì)算簡(jiǎn)單,但是放大效果有限。在插值算法中一般以三次卷積插值放大效果最好,而基于卷積神經(jīng)網(wǎng)絡(luò)的圖像超分辨率重建效果常常要遠(yuǎn)超三次卷積插值,但是基于卷積神經(jīng)網(wǎng)絡(luò)的圖像放大方法,其網(wǎng)絡(luò)結(jié)構(gòu)較深、網(wǎng)絡(luò)體量較大[5],其處理速度遠(yuǎn)遠(yuǎn)達(dá)不到三次卷積插值,針對(duì)這種情況本文提出一種輕量圖像放大加速器,設(shè)計(jì)了一種軟硬件協(xié)同的圖像放大系統(tǒng),在放大系統(tǒng)中,其放大速度要比三次卷積插值快,放大的效果要比三次卷積插值要好。
本文使用如圖1 所示基于卷積神經(jīng)網(wǎng)絡(luò)的雙層模型放大。首先,由初始特征提取模塊(如圖1 中的綠色塊)從低分辨率輸入圖中提取出的低分辨率的特征,然后將其輸出至反卷積模塊(如圖1 中的橙色塊)中,反卷積模塊將提取的特征圖融合上采樣為最終生成放大后圖。雙層模型結(jié)構(gòu)特點(diǎn),輸入彩色圖像需要先進(jìn)行顏色空間轉(zhuǎn)換,將其從RGB 顏色空間通道轉(zhuǎn)變?yōu)閅CbCr 通道,經(jīng)過(guò)雙層模型對(duì)Y 通道進(jìn)行放大,通過(guò)線性插值對(duì)CbCr 進(jìn)行放大,合并得到Y(jié)CbCr 三通道,最終轉(zhuǎn)換為RGB 彩色圖。conv(m,n,o)代表著輸入通道為m,輸出通道為n,卷積核尺寸大小為o×o 的卷積計(jì)算,deconv(p,q,r)代表著輸入通道為p,輸出通道為q,卷積核尺寸大小為r×r 的反卷積計(jì)算,在圖1中特征提取的卷積層的輸出通道數(shù)為16,在上雙層模型中反卷積核大小與放大倍數(shù)S 相等。
圖1 雙層模型結(jié)構(gòu)圖
本文通過(guò)FPGA 設(shè)計(jì)的雙層模型加速器如圖2所示,雙層模型加速器輸入數(shù)據(jù)和輸出數(shù)據(jù)均為數(shù)據(jù)流的方式,為了使卷積層和反卷積層能夠以數(shù)據(jù)流的方式并行運(yùn)算,在卷積層和反卷積層之間添加了中間緩沖,當(dāng)卷積層處理一批數(shù)據(jù)后,可將數(shù)據(jù)存儲(chǔ)中間緩沖,反卷積則從中間緩沖中獲取數(shù)據(jù)。
圖2 雙層模型加速器
當(dāng)數(shù)據(jù)入流卷積層時(shí),為了提高數(shù)據(jù)的并行本文設(shè)計(jì)實(shí)現(xiàn)了窗口緩沖加行緩沖的組合,如圖3 所示,當(dāng)外部數(shù)據(jù)feature(i,j)流入輸入特征模塊時(shí),此時(shí)需要先對(duì)linebuffer 中的數(shù)據(jù)進(jìn)行更新,先將linebuffer 第j列的數(shù)據(jù)向上移動(dòng),隨后將流入的數(shù)據(jù)插入linebuffer第5 行的j 列處。linebuffer 更新結(jié)束后需要對(duì)windowbuffer 進(jìn)行更新,先將windowbuffer 中的數(shù)據(jù)按照5 行5 列的排布方式整體左移1 格,而后取出linebuffer 第j 列數(shù)據(jù),插入到windowbuffer 的第5 列。最后將windowbuffer 中的數(shù)據(jù)一次性全部取出,流向卷積乘模塊。
圖3 窗口緩沖+行緩沖結(jié)構(gòu)示意圖
將卷積乘、卷積加、偏置、激活、數(shù)據(jù)存儲(chǔ)五個(gè)步驟進(jìn)行流水,由于每個(gè)卷積層數(shù)據(jù)計(jì)算是相互獨(dú)立的,故而可以對(duì)16 通道進(jìn)行流水展開(kāi)。其展開(kāi)結(jié)構(gòu)如圖4。
圖4 卷積流水展開(kāi)示意圖
反卷積與卷積計(jì)算方式類(lèi)似,但是在雙層模型中反卷積計(jì)算比卷積更適合流水,本文針對(duì)反卷積并行特點(diǎn)設(shè)計(jì)了在進(jìn)行反卷積展開(kāi)+雙重流水的結(jié)構(gòu),如圖5 所示,其中一個(gè)反卷積基本操作對(duì)16 個(gè)通道和反卷積核寬(與放大倍數(shù)相同,本文設(shè)計(jì)了6 放大)進(jìn)行展開(kāi),該結(jié)構(gòu)大大提高了反卷積并行計(jì)算力度,加速了反卷積計(jì)算。
圖5 反卷積流水展開(kāi)示意圖
本文設(shè)計(jì)的放大系統(tǒng)如圖6 所示,該系統(tǒng)分為軟件部分和硬件部分,軟件部分是PC 在Web 頁(yè)面書(shū)寫(xiě)代碼調(diào)動(dòng)雙層模型加速器進(jìn)行處理,硬件部分是在PYNQZ1 板卡上搭建的SoC 系統(tǒng)。
軟件上使用Python 讀取需要放大的LR 圖像,將其轉(zhuǎn)化為YCbCr 顏色空間,提取出其Y 通道值,對(duì)Cb、Cr 通道通過(guò)三次卷積插值進(jìn)行放大。在輸入前需要通過(guò)PYNQ 系統(tǒng)自帶Overlay 類(lèi)從而調(diào)用PL 端設(shè)計(jì)的模塊,設(shè)置輸入LR 圖像高、寬以及需要放大倍數(shù),目前支持放大6 倍,然后指定Overlay 中的DMA類(lèi),將填充好的圖像數(shù)據(jù)傳輸至放大模塊加速器對(duì)其進(jìn)行放大,然后等待DMA 模塊接受放大后Y 通道數(shù)據(jù),將Y、Cb、Cr 通道數(shù)據(jù)融合為RGB 圖像。
硬件上為SoC 系統(tǒng),該系統(tǒng)由PS 和PL 組成,其中PS 主要實(shí)現(xiàn)與PC 通過(guò)以太網(wǎng)進(jìn)行數(shù)據(jù)交換,同時(shí)對(duì)PL 部分進(jìn)行參數(shù)配置、數(shù)據(jù)傳輸。在整個(gè)RIP 系統(tǒng)中控制指令在PC 端通過(guò)以太網(wǎng)傳輸至PS 部分,PS中的APU(Application Processor Unit)在介紹到控制指令后,通過(guò)中央總線傳輸將控制指令通過(guò)通用GP口,將實(shí)現(xiàn)對(duì)DMA 控制器進(jìn)行控制配置、對(duì)雙層模型接口進(jìn)行配置。需要放大處理的LR 圖像數(shù)據(jù)在PC 端通過(guò)以太網(wǎng)傳輸至PS部分,PS 將數(shù)據(jù)存儲(chǔ)至DDR 中,DDR中的數(shù)據(jù)通過(guò)HP 口在DMA 模塊控制下從PS 段傳輸入PL 中雙層模型加速處,雙層模型加速器內(nèi)部分為卷積層和反卷積層,其中數(shù)據(jù)通路在第四章介紹過(guò),根據(jù)圖中模塊依次通過(guò)卷積層,中間緩沖,反卷積層,最后反卷積層流出的數(shù)據(jù)通過(guò)DMA 控制下經(jīng)過(guò)HP 寫(xiě)入DDR 中,最后通過(guò)以太網(wǎng)口,傳輸至PC端。
表1 為系統(tǒng)在PYNQZ1 上資源消耗情況,由表可知,本設(shè)計(jì)由于最終將卷積計(jì)算和反卷積計(jì)算都進(jìn)行展開(kāi),因此其消耗的DSP48 資源損耗較多,最終總共使用132 個(gè),其中conv 占用了35 個(gè),卷積層計(jì)算為5×5 大小的卷積核,deconv 占用了97 個(gè),LUT 資源消耗最多,總共消耗達(dá)到了49 748 個(gè),已經(jīng)接近PYNQ-Z1 板卡的總量。
表1 系統(tǒng)資源消耗
本文使用放大前圖像為180*320,放大6 倍,即放大后圖像大小為820*1 920 對(duì)放大系統(tǒng)進(jìn)行測(cè)試評(píng)價(jià),對(duì)比雙層模型與三次卷積插值的處理效果,雙層模型通過(guò)FPGA 加速器實(shí)現(xiàn),三次卷積插值是在ARM9 上用python 調(diào)用opencv 庫(kù)實(shí)現(xiàn),如表2 所示。
表2 處理時(shí)間和PSNR 對(duì)比
其中,就處理時(shí)間而言,本文設(shè)計(jì)比三次卷積插值放大的處理時(shí)間要快22.7%,PSNR 能夠衡量圖像效果,PSNR 要高0.76,處理效果更好。
本文采用一種輕量化的雙層模型,并通過(guò)數(shù)據(jù)流的方式實(shí)現(xiàn)雙層模型加速器,通過(guò)窗口緩沖和行緩沖、流水展開(kāi)等優(yōu)化方式加速雙層模型卷積層、反卷積層,在PYNQZ1 通過(guò)軟件與硬件協(xié)同設(shè)計(jì)方式,調(diào)用雙層模型加速器進(jìn)行放大,實(shí)現(xiàn)一種軟硬件協(xié)同的放大系統(tǒng),經(jīng)測(cè)試在該系統(tǒng)上實(shí)現(xiàn)圖像放大比三次卷積插值處理速度快22%,PSNR 高0.76,因此本文設(shè)計(jì)的圖像放大系統(tǒng)具有一定優(yōu)越性。