概述
本项目属于GAN网络在图片风格迁移上的一个有趣的应用案例。风格迁移,其实就是提供一幅画,将任意一张照片转化成这个风格,并尽量保留原照的内容。该系统旨在对每一张输入的图片做风格化处理,得到有趣的风格化画面。另外,该系统不但模型简单轻巧,而且整个流程也很清晰,体验上具备比较友好的互动特性。
模型介绍
一、网络结构定义
本系统采用了《ReCoNet: Real-time Coherent Video Style Transfer Network》中所用的transformer结构。网络结构图如下所示。其中包含两次下采样操作和两次上采样操作,中间含有5个残差模块。
二、训练数据
本工作在训练过程中所采用的公开数据集为coco数据集(T.-Y. Lin, M. Maire, S. Belongie, J. Hays, P. Perona, D. Ramanan, P. Dollar, and C. L. Zitnick. Microsoft COCO: Com- ´ mon objects in context. In ECCV, 2014)。
三、训练方法
1、基础网络的训练
在风格迁移任务中,需要风格迁移后的图像具有原图片的内容特征和风格图片的风格特征。Gatys 在2015年发表的论文《Texture Synthesis Using Convolutional Neural Networks》(Gatys, Leon, Alexander S. Ecker, and Matthias Bethge. 'Texture synthesis using convolutional neural networks.' Advances in neural information processing systems. 2015.)和《A neural algorithm of artistic style》(Gatys, Leon A., Alexander S. Ecker, and Matthias Bethge. 'A neural algorithm of artistic style.' arXiv preprint arXiv:1508.06576 (2015).)中,将对图片进行风格迁移的过程转化为了一个训练的过程,通过迭代优化的过程使得生成图片在内容上与内容图片越来越相似,在风格上与风格图片越来越相似。而Johnson 在2016年发表的论文《Perceptual Losses for Real-Time Style Transfer and Super-Resolution》(Johnson, Justin, Alexandre Alahi, and Li Fei-Fei. 'Perceptual losses for real-time style transfer and super-resolution.' European conference on computer vision. Springer, Cham, 2016.)中将风格迁移生成目标图片的过程转化为一个测试的过程。在初始时对transformer网络进行训练,使得其能学习到风格迁移的信息,在测试时直接生成风格迁移后的图像。
在对网络进行训练时,为了使得生成的图像在局部上尽可能平滑,采用一个正则化项来约束网络的训练,其所采用的损失函数为
最终Transformer网络训练所用的损失函数,即感知损失函数,为
2、模型剪枝的训练
利用模型剪枝方法,能够得到更加轻量级、运行速度更快的网络。
(1)生成网络的全局二值编码
设计了一种针对生成网络的全局二值编码方式,对于预训练的生成卷积神经网络进行二值编码,对应于编码0的,去除跟该通道相关的计算单元,对于编码1,保留跟该通道相关的计算单元。
(2)生成模型压缩目标函数
对生成模型来说,网络输出是高维的生成图像,很难直接从这些图像本身去量化评价压缩模型的好坏,借鉴传统的剪枝算法,可以直接最小化压缩生成模型前后的重建误差来获得压缩后的模型。可以定义为生成器感知误差,
直接优化生成器感知误差可以让压缩后的生成器和原始生成器尽量像素相近,并使得压缩前后网络的风格化效果相同。此种方法可以使得剪枝后的网络能够有和剪枝之前网络同样的特征表达能力和风格迁移能力。
所以总体来说,压缩风格迁移网络的目标函数如下:
其中N(·)表示网络的参数量,γ用来平衡网络参数量和压缩模型的误差。
基于上述压缩优化目标函数,设计进化算法中度量压缩个体差异的方法。这种计算方法融合了网络参数量和网络性能。网络参数量相关的部分主要度量生成网络的参数量,间接反映出网络的计算开销,使得网络参数少,计算开销小的生成网络在多代遗传算法中保持优势。网络性能的部分充分利用了生成对抗网络结构中的判别器,使得在判别器得分高的生成模型在遗传算法中保持优势。这样的个体适应值计算方式,能够自动平衡在网络参数量和网络性能,使得两者均优的生成模型得以保留。
(3)采用进化算法对风格迁移网络进行剪枝优化
Shu 等人在论文《Co-Evolutionary Compression for Unpaired Image Translation》(Shu, Han, et al. 'Co-evolutionary compression for unpaired image translation.' Proceedings of the IEEE International Conference on Computer Vision. 2019.)提出了一种针对生成对抗网络的协同进化方法。从一个现有经过训练的生成网络出发,通过对生成网络的通道数进行二值编码。对每一个压缩后的生成网络进行若干轮迭代,利用遗传算法,维持一个包含若干压缩模型的个体子群,根据生成对抗网络特性,通过设计的度量个体差异的计算值,在子群中进行多代选择、交叉和变异,选出若干代个体中的适应值最优的个体,对个体进行调优,得到最终的压缩后的生成网络模型。相比原来的模型,压缩后的模型计算开销更小,模型所占内存也更小。生成图片效果与原有模型相当。考虑到风格迁移网络本身是一个生成网络,本工作在该论文方法基础上,采用进化算法对风格迁移网络进行剪枝。在种群中选择、交叉、变异的过程中,首先根据一定的概率S1进行个体选择,选择的个体直接保留至下一代;按照概率S2进行个体交叉,交叉后个体保留至下一代;按照概率1-S1-S2进行变异,变异后个体进入下一代。经过多代进化,选择出优化的二值编码。
获得了二值编码,需要把二值编码对应到剪枝的神经网络。将二值编码按神经网络每层通道切分,可以得到每一层神经网络的二值编码。以下清单表示了对于一层卷积,如何用二值编码表示剪枝结构,即把对应通道编码为0的卷积通道值置0,且不更新梯度即可。每一层神经网络都按照这种方式表示,就可以得到剪枝后的神经网络结构。
在得到剪枝后的神经网络结构之后,需要再对神经网络结构进行训练,以获得更好的风格迁移效果。
应用介绍
本应用采用了下图所示的模块化设计,通过各模块之间的协调配合完成一张图片的推理输出。
其中各个模块的主要功能点如下所示:
1.运行管理资源申请:用于初始化系统内部资源,固定的调用流程。
2.加载模型文件并构建输出内存:通过用户选择的风格种类,从文件加载对应风格的离线模型style_type.om数据,需要由用户自行管理模型运行的内存,根据内存中加载的模型获取模型的基本信息包含模型输入、输出数据的数据buffer大小。由模型的基本信息构建模型输出内存,为接下来的模型推理做好准备。
3.数据预处理:对读入的图像数据进行预处理,然后构建模型的输入数据。
4.模型推理:根据构建好的模型输入数据进行模型推理。
5.解析推理结果:根据模型输出,解析模型的推理结果。
效果展示
原始图片
糖果风格
毕加索风格
工农兵风格
星空风格