一种面向超高清分辨率图案的风格化***及方法
技术领域
本发明涉及神经网络、深度学习、并行计算、图像处理、图像识别领域,特别是涉及到基于神经网络的生成对抗网络,提供一种面向超高清分辨率图案的风格化***及方法。
背景技术
随着神经网络和深度学习技术的发展,使用深度学习技术进行图像的图像的处理和变换取得了突出的效果,比如:利用神经网络进行黑白照片的上色、基于神经网络的图像色彩纠正等。这其中最火热的应用是基于神经网络的风格化滤镜,它可以将输入图转变为和目标图绘画风格一致的新图案。国外的Prisma公司开发的风格化滤镜成为最畅销的手机App。
然而这些风格化滤镜都是面向手机拍摄的低分辨率图案,无法支持可打印需求。在普通28cm*28cm的面料上打印图案就需要超过8K分辨率的超高清大图,才能保证打印出来的效果。因为显卡计算能力和存储能力的限制。目前一块中等档次的显卡具有显存12GB,而处理1K分辨率图案大约需要8GB的显存,处理2K的图案需要32GB,处理4K的图案需要128GB。当前没有任意一块独立显卡可以支持到4K以上图案的风格化渲染。而本发明则通过分而治之的并行计算方法使得可以出来任意大子图案的风格化渲染。
发明内容
本发明的目的在于这对现有技术的不足,提供一种面向超高清分辨率图案的风格化***及方法。本发明能够支持在普通显卡设备上进行超高分辨率图案的风格化渲染方法。
本发明解决其技术问题所采用的技术方案如下:
本发明利用神经网络进行图像转换,使得输入图具有和目标图相同的绘画风格,并通过分而治之的并行策略,支持超高分辨率图案的渲染:
一种面向超高清分辨率图案的风格化***,包括基于生成对抗网络的风格化滤镜模块、图像切分模块、分布式图像卷积计算模块和面向批量正则化的采样计算模块;
所述的基于生成对抗网络的风格化滤镜模块:模块包括一个图像生成网络和一个图像风格化效果判别网络;图像生成网络对输入图案进行风格化变换;图像风格化效果判别网络用于判断产生的图案是否和目标图案风格一致,并且和输入图具有相同的图像内容;
该模块基于生成对抗网络,生成器网络是一个包含三个Resnet卷积模块的简单网络,负责对输入图进行风格化;判别网络是一个标准VGG-19网络,该网络负责计算生成图像、目标图像和输入图像之间的差异;
所述的图像切分模块:负责将超高分辨率大图切分为若干大小不一的子图,每一张子图都能够在一张独立显卡上进行计算;切分后的子图分配给不同的显卡进行风格化,为了保证风格化后的图像能够正常拼接成完整的大图,该模块采用特定的图像边缘填充技术;
所述的分布式图像卷积计算模块:为了控制图像切分模块生成的子图能够并行分配到多显卡集群中计算,通过对基于生成对抗网络的风格化滤镜模块生成网络中的卷积层进行改造,支持基于BSP模式的并行卷积计算;该模块将子图分发给不同的显卡进行渲染计算;将计算分为卷积和同步,在不同的卷积计算之间协调不同显卡之间的进度;最终该模块将多个风格化结果进行合并以产生最终风格化结果;
所述的面向批量正则化的采样计算模块:通过对原始大图的数据进行采样,并根据批量正则化的需求求近似解,同步过程被异步采样所替代,降低同步代价,使得并行效率接近于线性可扩展。
所述的图像切分模块中图像边缘填充技术如下:对切分后的子图边缘进行像素补全,如果子图边缘也是原大图边缘则采用循环补全,如果子图边缘是因为切分造成的,则采用镜面补全方法。
一种面向超高清分辨率图案的风格化***的实现方法,具体步骤如下:
步骤1.构建基于生成对抗网络的风格化滤镜模块
该模块基于生成对抗网络,生成器网络是一个包含三个Resnet卷积模块的简单网络,负责对输入图进行风格化;判别网络是一个标准VGG-19网络,该网络负责计算生成图像、目标图像和输入图像之间的差异;其中VGG网络中的relu1-1、relu2-1、relu3-1和relu4-1层用作比对生成图和目标图的风格;而relu4-2层用来比较生成图和输入图的内容相似度;该模块的步骤如下:
1-1.指定一个特定的目标图为风格图;
1-2.将标准训练集中的每一张图片通过生成对抗网络进行风格化;
1-3.经过若干次迭代后,网络参数趋于稳定,固定生成网络,
舍弃判别网络;
1-4.对任意新输入的图片,通过生成网络进行风格化变换;
步骤2.构建图像切分模块
该模块用于将图像进行水平、垂直切分,以生成若干大小不一的子图,每张子图都能够在一张独立显卡中渲染技术,具体步骤包括:
2-1.针对特定大小的图像估算风格化渲染所需要的GPU显存;
2-2.根据可用显卡及其显存配置,计算每一张显卡最大支持的图像大小M像素,将图像切分为大小不超过M像素的若干子图;
2-3.对切分后的子图边缘进行像素补全,如果子图边缘也是原大图边缘则采用循环补全,如果子图边缘是因为切分造成的,则采用镜面补全方法;
2-4.所有切分出的子图进入分布式计算模块;
步骤3.构建分布式图像卷积计算模块
该模块将子图分发给不同的显卡进行渲染计算;通过将计算分为卷积(convolution)和同步(synchronization)两个模式,在不同的卷积计算之间协调不同显卡之间的进度;最终该模块将多个风格化结果进行合并以产生最终风格化结果,具体步骤包括:
3-1.根据显卡显存和计算能力将子图分发给不同显卡的计算队列;
3-2.每一个显卡在卷积过程中都独立进行子图的卷积计算;
3-3.当全部显卡结束其卷积计算时,进入同步模式,由服务器收集卷积结果并进行正则化;
3-4.正则化的结果发送给每一个显卡,显卡根据新的正则化结果调整其卷积网络的结果,并开始下一层的卷积计算;
3-5.重复步骤3-2到3-4,直至全部卷积计算完成;
3-6.拼接全部卷积结果以生成最终的风格化图像;
步骤4.构建面向批量正则化的采样计算模块
将步骤3中的同步过程由异步采样所替代,其中对步骤3的改进步骤为:
3.1.根据显卡显存和计算能力将子图分发给不同显卡的计算队列;
3.2.对每一个子图或者其中间卷积结果进行采样,并发送到服务节点;每一个显卡在卷积过程中独立进行子图的卷积计算,同时服务器对采样进行同样的卷积计算,并对结果进行正则处理;正则结果发送给每一张参加计算的显卡;
3.3.显卡完成卷积计算后,采用服务器发来的采样正则结果对计算结果进行正则处理;
3.4.重复步骤3.2和3.3直至全部卷积运算结束;
3.5.拼接全部卷积结果以生成最终的风格化图像。
本发明有益效果如下:
本发明通过将目标图上的绘画风格应用到输入图上,从而将输入图转换为具有和目标图相同绘画风格的新图案。不同于其他风格化算法,本发明针对可打印的超高分辨率图案(超过4K分辨率)。由于显卡计算能力和存储能力的限制,普通风格化算法不能渲染超高分辨率大图,而本发明采用分而治之的并行算法,将渲染任务分配给多个显卡同时处理,可以支持任意分辨率的图案的风格化渲染。
本发明能够支持在普通显卡设备上进行超高分辨率图案的风格化渲染方法。
附图说明
图1是风格化滤镜的神经网络图。
图2是分布式图像卷积计算模块图。
图3是面向批量正则化的采样计算模块图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
如图1-3所示,一种面向超高清分辨率图案的风格化***,包括基于生成对抗网络的风格化滤镜模块、图像切分模块、分布式图像卷积计算模块和面向批量正则化(BatchNormalization)的采样计算模块。
所述的基于生成对抗网络的风格化滤镜模块:模块包括一个图像生成网络和一个图像风格化效果判别网络。图像生成网络对输入图案进行风格化变换;图像风格化效果判别网络用于判断产生的图案是否和目标图案风格一致,并且和输入图具有相同的图像内容。
该模块基于生成对抗网络。生成器网络是一个包含三个Resnet卷积模块的简单网络,负责对输入图进行风格化;判别网络如图1所示,是一个标准VGG-19网络,该网络负责计算生成图像、目标图像和输入图像之间的差异。其中VGG网络中的relu1-1、relu2-1、relu3-1和relu4-1层用作比对生成图和目标图的风格;而relu4-2层用来比较生成图和输入图的内容相似度。
该模块通过学习标准图案数据集的图像特征,抽取出风格化算法参数,支持对子图案(小于1K分辨率)的风格化处理。
所述的图像切分模块:负责将超高分辨率大图切分为若干大小不一的子图,每一张子图都能够在一张独立显卡上进行计算。切分后的子图分配给不同的显卡进行风格化,为了保证风格化后的图像能够正常拼接成完整的大图,该模块采用特定的图像边缘填充技术。
所述的分布式图像卷积计算模块:为了控制图像切分模块生成的子图能够并行分配到多显卡集群中计算,本发明通过对基于生成对抗网络的风格化滤镜模块生成网络中的卷积层进行改造,支持基于BSP(Bulk Synchronization Parallelism,批量同步并行)模式的并行卷积计算。该模块将子图分发给不同的显卡进行渲染计算;将计算分为卷积(convolution)和同步(synchronization),在不同的卷积计算之间协调不同显卡之间的进度。最终该模块将多个风格化结果进行合并以产生最终风格化结果。
所述的面向批量正则化(Batch Normalization)的采样计算模块:分布式图像卷积计算模块的卷积计算由于采用分布式框架,需要显卡将其中间计算结果发送给服务节点,造成较大的代价,成为性能瓶颈;而通过对原始大图的数据进行采样,并根据批量正则化的需求求近似解,同步过程被异步采样所替代,能够降低同步代价,使得并行效率接近于线性可扩展(Linear Scalability)。
一种面向超高清分辨率图案的风格化***的实现方法,具体步骤如下:
步骤1.构建基于生成对抗网络的风格化滤镜模块
该模块基于生成对抗网络,生成器网络是一个包含三个Resnet卷积模块的简单网络,负责对输入图进行风格化;判别网络如图1所示,是一个标准VGG-19网络,该网络负责计算生成图像、目标图像和输入图像之间的差异。其中VGG网络中的relu1-1、relu2-1、relu3-1和relu4-1层用作比对生成图和目标图的风格;而relu4-2层用来比较生成图和输入图的内容相似度。该模块的步骤如下:
1-5.指定一个特定的目标图为风格图(比如梵高的星空)。
1-6.将标准训练集(如微软公开图像训练集CoCo)中的每一张图片通过生成对抗网络进行风格化。
1-7.经过若干次迭代后,网络参数趋于稳定,固定生成网络,舍弃判别网络。
1-8.对任意新输入的图片,通过生成网络进行风格化变换。
步骤2.构建图像切分模块
该模块用于将图像进行水平、垂直切分,以生成若干大小不一的子图,每张子图都能够在一张独立显卡中渲染技术,具体步骤包括:
2-1.针对特定大小的图像估算风格化渲染所需要的GPU显存。
2-2.根据可用显卡及其显存配置,计算每一张显卡最大支持的图像大小M像素,将图像切分为大小不超过M像素的若干子图。
2-3.对切分后的子图边缘进行像素补全,如果子图边缘也是原大图边缘则采用循环补全,如果子图边缘是因为切分造成的,则采用镜面补全方法。
2-4.所有切分出的子图进入分布式计算模块。
步骤3.构建分布式图像卷积计算模块
该模块将子图分发给不同的显卡进行渲染计算;如图2所示,通过将计算分为卷积(convolution)和同步(synchronization)两个模式,在不同的卷积计算之间协调不同显卡之间的进度。最终该模块将多个风格化结果进行合并以产生最终风格化结果,具体步骤包括:
3-1.根据显卡显存和计算能力将子图分发给不同显卡的计算队列。
3-2.每一个显卡在卷积过程中都独立进行子图的卷积计算。
3-3.当全部显卡结束其卷积计算时,进入同步模式,由服务器收集卷积结果并进行正则化。
3-4.正则化的结果发送给每一个显卡,显卡根据新的正则化结果调整其卷积网络的结果,并开始下一层的卷积计算。
3-5.重复步骤3-2到3-4,直至全部卷积计算完成。
3-6.拼接全部卷积结果以生成最终的风格化图像。
步骤4.构建面向批量正则化的采样计算模块
步骤3中的同步过程需要显卡将其中间计算结果发送给服务节点,造成较大的代价,成为性能瓶颈。为解决这一问题,在图3所示的采样计算模块中,同步过程被异步采样所替代,从而大大的降低了计算代价,其中对步骤3的改进步骤为:
3.1.根据显卡显存和计算能力将子图分发给不同显卡的计算队列。
3.2.对每一个子图或者其中间卷积结果进行采样,并发送到服务节点;每一个显卡在卷积过程中独立进行子图的卷积计算,同时服务器对采样进行同样的卷积计算,并对结果进行正则处理;正则结果发送给每一张参加计算的显卡。
3.3.显卡完成卷积计算后,采用服务器发来的采样正则结果对计算结果进行正则处理。
3.4.重复步骤3.2和3.3直至全部卷积运算结束。
3.5.拼接全部卷积结果以生成最终的风格化图像。