基于GPU加速的实时视频超分辨率重建

时间:2022-09-15 03:27:27

基于GPU加速的实时视频超分辨率重建

摘要:基于稀疏表示的超分辨率算法的图像重建质量好,但算法复杂,现有的CPU串行执行算法无法满足视频实时处理的需要为此提出了基于GPU加速的稀疏表示的实时视频超分辨率算法该算法着重于优化数据并行处理流程,提高GPU资源利用率,通过设置视频帧队列、提高显存访问并发率、采用主成分分析(PCA)降维、优化字典查找等手段,使算法执行速度比现有CPU串行算法提高了2个数量级,在显示分辨率为669×546的视频回放测试中达到每秒33帧

关键词:视频;实时;超分辨率;稀疏表示;通用计算图形处理器

中图分类号: TP391 文献标志码:A

0引言

超分辨率(SuperResolution,SR)重建的目标是通过单幅或多幅低分辨率图像得到高分辨率图像,

现有主要方法包括基于多帧图像融合的超分辨率重建与基本图例学习的超分辨率重建基于多帧图像融合的超分辨率重建算法,

如文献[1-3],利用对同一景物的多幅低分辨率图像得到高分辨率图像这类重建方法提升图像的分辨率倍数受到较大限制[4-5],一般不超过2倍近年来,基于图例学习的超分辨率重建获得了快速发展,超分辨率提升倍数可达到3至5倍Freeman等[6]首先提出了基于学习的图像超分辨率重建方法Chang等[7]基于图像块在低维度空间和高维度空间具有相似的近邻关系的假定,提出了近邻嵌入的超分辨率重建(Super Resolution through Neighbour Embedding,SRNE)方法,该方法具有与Freeman的方法相近的效果,同时又减少了引入人工杂质;但是该方法忽略了图像的区域特征,对所有区域取相同的近邻个数重建图像Chan等[8]提出的NeedFS(Neighbor Embedding based superresolution through Edge Detection and Feature Selection)则充分地考虑了图像的区域特征,例如边沿、平滑区域等,对不同区域采用不同的近邻个数,并且通过旋转图像扩展训练集,获得了较好的重建效果;但同时也增加了算法的复杂度廖秀秀等[9]在上述文献的基础上提出了基于流形学习和梯度约束的图像超分辨率重建方法,实验中获得了更好的图像重建效果Yang等[10],Zeyde等[11]以及Dong等[12]基于图像块可由完备字典中的少数原子项近似表示的思想,提出了基于稀疏表示的超分辨率重建方法,对图像细节和边缘的恢复比近邻嵌入的方法有更好的效果

虽然基于图例学习的超分辨率重建算法在图像超分辨率重建应用当中取得了良好的效果,但在视频超分辨率重建应用领域,由于这类型算法计算复杂,往往难以做到实时处理,不能满足实时性要求高的应用,如在线播放、在线视频分析等

近年随着以统一计算架构(Compute Unified Device Architecture,CUDA)为代表的新一代图形处理器(Graphics Processing Unit,GPU)通用计算模型的快速发展,为计算机图像处理技术的发展和应用带来了契机Pu等[13]实现了基于GPU加速的近邻嵌入图像超分辨率重建算法,同时运用多采样随机投影树减少冗余的图像块数量,与非GPU加速的算法比较获得了1至2个数量级的速度提升

Chantas[14]实现了基于变分贝叶斯推断框架和保持图像边缘先验的图像超分算法,由于算法计算量大,故采用GPU并行计算进行提速,相对于非GPU计算,获得了10倍速度提升

Wetzl等[15]基于GPU并行计算实现了一个利用多帧图像重建高分辨率图像的算法,能够在109ms内通过10帧带噪声的200×200像素的低分辨率图像重建一幅2倍尺度的高分辨率图像然而,上述算法在图像的重建效果与图像的分辨率方面仍有提升空间近年随着高清屏的普及,对高清视频的实时处理与回放提出了更高的要求

受近年稀疏表示的超分辨率重建算法和快速发展的以CUDA为代表的GPU通用计算模型的启发,提出基于GPU加速的实时视频超分辨率重建算法算法分为两个环节:基于图例学习的字典训练和视频超分辨率重建前者是后者的前提,但不需要考虑速度问题,在离线方式执行一次生成所需的字典即可视频超分辨率重建采用GPU加速,分为以下主要步骤:1)提取视频帧,对每帧图像进行分块,并提取图块特征;2)在训练得到的字典中,通过正交匹配追踪算法寻找每个图块的稀疏的字典项线性表示,得到非零字典项权值;3)利用权值和高分辨率图块字典计算出估计的高分辨率图块;4)所有估计的高分辨率图块叠加得到最终高分辨率图像四个步骤串行执行,每个步骤内部采用并行执行,充分利用CPU和GPU资源,从而达到实时处理的速度要求

1GPU加速的实时视频超分

CUDA是由NVIDIA公司提出的一种统一计算设备架构,可用于完成高度并行化的计算任务,安装了支持CUDA的NVIDIA显卡的计算机均可以编写和执行CUDA程序CUDA设备当中包含众多能同时工作的处理单元,批量的线程被分配到这些处理单元上以单指令多数据(Single Instruction Multiple Data, SIMD)的方式运行同时,为了配合海量数量处理的需要,CUDA设备都配备了带宽很高的存储器,这种结构非常适合图像处理这类涉及大量向量进行同一操作的计算为此,选择CUDA框架实现了GPU加速的实时视频超分辨率重建算法完整的算法包括字典训练和视频超分辨率重建两个环节

首先需要通过对高分辨率训练图像进行学习,得到高分辨率图像与其退化的低分辨率图像的关联字典学习的过程如下:将高分辨率图像通过模糊再下采样3倍得到退化的低分辨率图像(与文献[6-12]处理方式一样,文中假设模糊核是已知的)将高分辨率图像按9×9大小分块,对应的低分辨率图像插值放大3倍后先提取特征,同样按9×9大小分块,使用提取的特征构成特征向量表示每个低分辨率图块,并通过主成分分析(Principal Component Analysis, PCA)对特征向量进行降维对应的高分辨率图块信息和低分辨率图块特征向量构成向量对

字典训练是视频超分辨率重建的前提,由于只需要执行一次, 因而不需要考虑GPU加速,采用Matlab 2012b实现

第二个环节视频超分辨率重建过程如图1所示,为了更大限度地发挥计算机的性能,程序采用了CPU+GPU的异构并行模式CPU负责获取视频数据并提取视频帧,传送到GPU;GPU负责对视频图像进行超分辨率重建和显示CPU和GPU同时工作,为了协调它们之间的速度差异和隐藏视频帧从CPU到GPU的传送时间,在GPU显存中设置了先入先出队列,并采用了CUDA多重流和内存拷贝异步传输技术执行过程如图2所示

第二个环节算法的主要部分是视频帧的超分辨率重建,为了避免数据在主存与显存之间来回传递,数据处理全部在GPU一端进行首先将视频帧的尺度通过插值放大3倍,然后提取图像特征,再分块,将每个分块用图块特征向量表示,再利用PCA进行降维,然后利用字典重建图块,最后融合在一起

其中,图像特征采用图像的一、二阶差值,可以分别用4个一维模板对图像进行卷积得到,模板分别为:

之后,对图像按9×9大小分块,每一块的四种特征组合成代表该图块的特征向量,共324维,然后通过PCA降维到24维本文的实验表明(第2章),通过PCA降维后,图像重建速度显著提高,且重建质量微弱提升

一般采用近似算法求解式(3),例如正交匹配追踪(Orthogonal Matching Pursuit,OMP)、BOMP(Batch Orthogonal Matching Pursuit)或FSSA(FeatureSign Search Algorithm)等,本文选取OMP算法OMP采用了贪心策略,每次从字典中寻找一个与要表示的向量余量相关性最大的字典项(即方向夹角余弦的绝对值最大)加入选中的字典项集合,然后将向量在选中的字典项各个方向上的投影分量全减去得到新的向量余量重复上述步骤,直到选取的字典项个数达到3或向量余量为0

最后将所有估计的高分辨率图块合并成完整的高分辨率图像事先,为了消除分块处理产生的块状效应,分块时保持相邻块之间一定程度的像素重叠;合并时,由于存在像素重叠,因而,为了能够让GPU同时将批量图块填充到图像中,采用了分组策略,令同组内的图块互不重叠,这样同组内的图块可以在显存中同时执行填充操作,被多次填充的重叠像素则最终采用求和取平均值

另外,超分辨率重建操作只针对视频帧的亮度成分,对于彩,只需在重建结果中加入输入视频的色度信息即可

2实验分析

实验对本文算法的重建效果和运行速度进行了测试测试视频采用了YUV格式的视频标准测试序列Foreman和Container字典训练采用了文献[8]中使用的图像集图像集为随机选取的图像,包括风景、动物、人物等,从中随机提取了10万个9×9大小图块进行训练

2.1重建效果

先将分辨率为351×288的视频转变为117×96,即缩小3倍,然后对缩小后的视频以帧为单位进行超分辨率重建,实验中,分别采用双三次插值(Bicubic)、基于近邻嵌入的NeedFS算法[8]、不带PCA降维的稀疏表示的GPU并行超分算法(SuperResolution via Sparse Representation and GPU acceleration, SRSRG)和带PCA降维的稀疏表示的GPU并行超分算法(简记为SRSRGPCA)进行重建得到351×288的视频,再与原视频比较图3为从2个视频中分别抽取1个图像帧的重建效果,采用稀疏表示的GPU并行超分辨率重建算法能更好地恢复图像中的细节,保持锐利的物体边沿,重建效果明显优于其他方法另外,带PCA与不带PCA的重建效果相当,在视觉上难以察觉到差异

为了更精确地分析重建质量,对重建的图像计算峰值信噪比(Peak SignaltoNoise Ratio,PSNR),结果如表1所示

从数据上可以看到,SRSRG与SRSRGPCA得到的重建图像的峰值信噪比明显高于双三次插值和NeedFS算法;另外,SRSRG与SRSRGPCA两者的数值相近,SRSRGPCA略高一些

2.2运行速度

实验的硬件环境为个人计算机,CPU为Q9400 2.66GHz,主存8GB,GPU为GTX660,显存2GB作对比的两个软件环境分别为:1)CPU模式,运行方式是串行执行,软件平台是Matlab2010b,算法主要部分采用C语言的MEX文件实现;2)CPU+GPU混合模式,运行方式是串并结合,软件平台是VS2010+CUDA5.0,采用C语言实现

实验采用了YUV格式的视频标准测试序列Foreman,输入的视频数据分辨率分别为89×74、112×93、141×116、177×145、223×182、280×229、352×288共7种(在图4中以A~G表示),分别执行4种算法4种算法根据其运行模式分为CPU和CPU+GPU两类,根据是否采用PCA降维又可分为两类,为方便表示,给出4种算法对应的简称如表2所示

所有测试视频以超分辨率放大3倍播放,计算每一种算法平均处理1个视频帧所使用的时间(单位:ms),为便于比较,所有数据取10的对数,实验结果如图4所示

实验表明,CPU+GPU模式比单CPU模式有2个数量级的速度提升;同一种模式下,带PCA降维比不带PCA降维有4到8倍左右的提速以显示分辨率669×546为例,SRSRGPCA、SRSRG、SRSRPCA、SRSR四种算法平均处理1个视频帧所使用的时间分别为30ms、126ms、6610ms、54089ms,其中,SRSRGPCA达到了每秒33帧

3结语

为了能将基于稀疏表示的图像超分辨率重建方法应用于需要实时处理的视频应用中,本文提出了基于GPU加速的视频超分辨率重建算法,算法通过合理应用异步传输、队列和CUDA多重流技术提高了数据吞吐量,并通过巧妙地预处理输入数据使图像重建过程中的耗时操作通过矩阵乘法得以快速实现下一步的工作包括在并行计算中考虑视频连续多帧图像中的冗余信息以获得更好的图像重建效果,并结合移动侦测技术进一步提高视频的处理速度

参考文献:

[1]IRANI M, PELEG S. Improving resolution by image registration [J]. Graphical Models and Image Processing, 1991, 53(3): 231-239.

[2]FARSIU S, ROBINSON M, ELAD M, et al. Fast and robust multiframe super resolution [J]. IEEE Transactions on Image Processing, 2003, 13(10):1327-1344.

[3]PHAM T Q, van VLIET L J, SCHUTTE K. Robust fusion of irregularly sampled data using adaptive normalized convolution [J]. EURASIP Journal on Advances in Signal Processing, 2006, 2006(1): 1-12.

[4]BAKER S, KANADE T. Limits on superresolution and how to break them [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2002, 24(9):1167-1183.

[5]LIN Z, SHUM H. Fundamental limits of under local translation [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2004, 26(1):83-97.

[6]FREEMAN W T, JONES J M, PASZTOR E C. Examplebased superresolution [J]. Computer Graphics and Applications, 2002, 22(2): 56-65.

[7]CHANG H, YEUNG D Y, XIONG Y. Superresolution through neighbor embedding [C]// Proceedings of the 2004 IEEE Conference on Computer Vision and Pattern Recognition. Piscataway: IEEE, 2004: 275-282.

[8]CHAN T M, ZHANG J, PU J, et al. Neighbor embedding based superresolution algorithm through edge detection and feature selection [J]. Pattern Recognition Letters, 2009, 30(5): 494-502.

[9]廖秀秀,韩国强,沃焱,等.基于流形学习和梯度约束的图像超分辨率重建[J].华南理工大学学报:自然科学版, 2012,40(4): 8-15.

[10]YANG J, WRIGHT J, HUANG T S, et al. Image superresolution via sparse representation[J]. IEEE Transactions on Image Processing, 2010, 19(11): 2861-2873.

[11]ZEYDE R, ELAD M, PROTTER M. On single image scaleup using sparse representations [C]// The 7th International Conference on Curves and Surfaces, LNCS 6920. Berlin: SpringerVerlag, 2010: 711-730.

[12]DONG W, ZHANG D, SHI G, et al. Image deblurring and superresolution by adaptive sparse domain selection and adaptive regularization [J]. IEEE Transactions on Image Processing, 2011, 20(7): 1838-1857.

[13]PU J, ZHANG J P, GUO P H, et al. Interactive superresolution through neighbor embedding [C]// ACCV 2009: The 9th Asian Conference on Computer Vision, LNCS 5996. Berlin: SpringerVerlag, 2009:496-505.

[14]CHANTAS G. Variational Bayesian image superresolution with GPU acceleration [C]// ICANN 2010: The 20th International Conference on Artificial Neural Networks. Berlin: SpringerVerlag, 2010:480-489.

[15]WETZL J, TAUBMANN O, HAASE S, et al. GPUaccelerated timeofflight superresolution for imageguided surgery [M]// Bildverarbeitung für die Medizin 2013. Berlin: SpringerVerlag, 2013: 21-26.

上一篇:基于AdaBoost的微博垃圾评论识别方法 下一篇:基于共线点的镜头畸变校正方法