APP下载

软硬件协同的图像放大系统设计

2024-01-10柴志雷

科学技术创新 2024年2期
关键词:加速器双层插值

樊 荣,柴志雷*

(1.江南大学人工智能与计算机学院,江苏无锡;2.江苏省模式识别与计算智能工程实验室,江苏无锡)

引言

图像放大是指将低分辨率的图像放大到高分辨率图像,现在也被称为图像超分辨率重建,图像放大应用范围很广,在医学影像[1]、卫星图像[2]、视频监视[3]等领域,在数字相机、智能手机、监控摄像头、智能家居等嵌入式[4]设备也常常需要对图像进行放大操作,以更好地观察细节。图像放大技术的应用,可以帮助用户更好地理解图像信息,提升图像观察体验。

传统放大算法是以插值为基础的放大,其计算简单,但是放大效果有限。在插值算法中一般以三次卷积插值放大效果最好,而基于卷积神经网络的图像超分辨率重建效果常常要远超三次卷积插值,但是基于卷积神经网络的图像放大方法,其网络结构较深、网络体量较大[5],其处理速度远远达不到三次卷积插值,针对这种情况本文提出一种轻量图像放大加速器,设计了一种软硬件协同的图像放大系统,在放大系统中,其放大速度要比三次卷积插值快,放大的效果要比三次卷积插值要好。

1 图像放大模块介绍

本文使用如图1 所示基于卷积神经网络的双层模型放大。首先,由初始特征提取模块(如图1 中的绿色块)从低分辨率输入图中提取出的低分辨率的特征,然后将其输出至反卷积模块(如图1 中的橙色块)中,反卷积模块将提取的特征图融合上采样为最终生成放大后图。双层模型结构特点,输入彩色图像需要先进行颜色空间转换,将其从RGB 颜色空间通道转变为YCbCr 通道,经过双层模型对Y 通道进行放大,通过线性插值对CbCr 进行放大,合并得到YCbCr 三通道,最终转换为RGB 彩色图。conv(m,n,o)代表着输入通道为m,输出通道为n,卷积核尺寸大小为o×o 的卷积计算,deconv(p,q,r)代表着输入通道为p,输出通道为q,卷积核尺寸大小为r×r 的反卷积计算,在图1中特征提取的卷积层的输出通道数为16,在上双层模型中反卷积核大小与放大倍数S 相等。

图1 双层模型结构图

2 双层模型加速器介绍

本文通过FPGA 设计的双层模型加速器如图2所示,双层模型加速器输入数据和输出数据均为数据流的方式,为了使卷积层和反卷积层能够以数据流的方式并行运算,在卷积层和反卷积层之间添加了中间缓冲,当卷积层处理一批数据后,可将数据存储中间缓冲,反卷积则从中间缓冲中获取数据。

图2 双层模型加速器

当数据入流卷积层时,为了提高数据的并行本文设计实现了窗口缓冲加行缓冲的组合,如图3 所示,当外部数据feature(i,j)流入输入特征模块时,此时需要先对linebuffer 中的数据进行更新,先将linebuffer 第j列的数据向上移动,随后将流入的数据插入linebuffer第5 行的j 列处。linebuffer 更新结束后需要对windowbuffer 进行更新,先将windowbuffer 中的数据按照5 行5 列的排布方式整体左移1 格,而后取出linebuffer 第j 列数据,插入到windowbuffer 的第5 列。最后将windowbuffer 中的数据一次性全部取出,流向卷积乘模块。

图3 窗口缓冲+行缓冲结构示意图

将卷积乘、卷积加、偏置、激活、数据存储五个步骤进行流水,由于每个卷积层数据计算是相互独立的,故而可以对16 通道进行流水展开。其展开结构如图4。

图4 卷积流水展开示意图

反卷积与卷积计算方式类似,但是在双层模型中反卷积计算比卷积更适合流水,本文针对反卷积并行特点设计了在进行反卷积展开+双重流水的结构,如图5 所示,其中一个反卷积基本操作对16 个通道和反卷积核宽(与放大倍数相同,本文设计了6 放大)进行展开,该结构大大提高了反卷积并行计算力度,加速了反卷积计算。

图5 反卷积流水展开示意图

3 放大系统设计与分析

本文设计的放大系统如图6 所示,该系统分为软件部分和硬件部分,软件部分是PC 在Web 页面书写代码调动双层模型加速器进行处理,硬件部分是在PYNQZ1 板卡上搭建的SoC 系统。

软件上使用Python 读取需要放大的LR 图像,将其转化为YCbCr 颜色空间,提取出其Y 通道值,对Cb、Cr 通道通过三次卷积插值进行放大。在输入前需要通过PYNQ 系统自带Overlay 类从而调用PL 端设计的模块,设置输入LR 图像高、宽以及需要放大倍数,目前支持放大6 倍,然后指定Overlay 中的DMA类,将填充好的图像数据传输至放大模块加速器对其进行放大,然后等待DMA 模块接受放大后Y 通道数据,将Y、Cb、Cr 通道数据融合为RGB 图像。

硬件上为SoC 系统,该系统由PS 和PL 组成,其中PS 主要实现与PC 通过以太网进行数据交换,同时对PL 部分进行参数配置、数据传输。在整个RIP 系统中控制指令在PC 端通过以太网传输至PS 部分,PS中的APU(Application Processor Unit)在介绍到控制指令后,通过中央总线传输将控制指令通过通用GP口,将实现对DMA 控制器进行控制配置、对双层模型接口进行配置。需要放大处理的LR 图像数据在PC 端通过以太网传输至PS部分,PS 将数据存储至DDR 中,DDR中的数据通过HP 口在DMA 模块控制下从PS 段传输入PL 中双层模型加速处,双层模型加速器内部分为卷积层和反卷积层,其中数据通路在第四章介绍过,根据图中模块依次通过卷积层,中间缓冲,反卷积层,最后反卷积层流出的数据通过DMA 控制下经过HP 写入DDR 中,最后通过以太网口,传输至PC端。

表1 为系统在PYNQZ1 上资源消耗情况,由表可知,本设计由于最终将卷积计算和反卷积计算都进行展开,因此其消耗的DSP48 资源损耗较多,最终总共使用132 个,其中conv 占用了35 个,卷积层计算为5×5 大小的卷积核,deconv 占用了97 个,LUT 资源消耗最多,总共消耗达到了49 748 个,已经接近PYNQ-Z1 板卡的总量。

表1 系统资源消耗

本文使用放大前图像为180*320,放大6 倍,即放大后图像大小为820*1 920 对放大系统进行测试评价,对比双层模型与三次卷积插值的处理效果,双层模型通过FPGA 加速器实现,三次卷积插值是在ARM9 上用python 调用opencv 库实现,如表2 所示。

表2 处理时间和PSNR 对比

其中,就处理时间而言,本文设计比三次卷积插值放大的处理时间要快22.7%,PSNR 能够衡量图像效果,PSNR 要高0.76,处理效果更好。

4 结论

本文采用一种轻量化的双层模型,并通过数据流的方式实现双层模型加速器,通过窗口缓冲和行缓冲、流水展开等优化方式加速双层模型卷积层、反卷积层,在PYNQZ1 通过软件与硬件协同设计方式,调用双层模型加速器进行放大,实现一种软硬件协同的放大系统,经测试在该系统上实现图像放大比三次卷积插值处理速度快22%,PSNR 高0.76,因此本文设计的图像放大系统具有一定优越性。

猜你喜欢

加速器双层插值
莫比斯加速器众创办公空间
知识快餐店 科学加速器
全民小康路上的“加速器”
墨尔本Fitzroy双层住宅
基于Sinc插值与相关谱的纵横波速度比扫描方法
等待“加速器”
一种改进FFT多谱线插值谐波分析方法
基于四项最低旁瓣Nuttall窗的插值FFT谐波分析
次级通道在线辨识的双层隔振系统振动主动控制
传统Halbach列和双层Halbach列的比较