摘要
本文解决《A neural algorithm of artistic style》一文中的问题,即图像风格转换。1.对于这种问题一般都是使用一个神经网络根据逐像素loss( per-pixel loss)来完成的。2.有研究表明基于从训练好的神经网络中提取出的高级图像特征通过定义及优化感知loss( perceptual loss)可以生成高分辨率的图像。本文就基于上面的两点,使用perceptual loss来训练神经网络以实时地进行图像转换。同时我们还用高分辨率的图像进行了实验,使用感知loss( perceptual loss)(==perceptual loss x1==)来代替之前的逐像素loss( per-pixel loss)获得了较好的效果。
关键词: 风格转换;超分辨率;深度学习
1.引言
本文针对的是图像转换问题。
- 一般的方法是使用监督学习的方式训练一个神经网络,使用per-pixel loss来衡量输出与ground-truth的差异,这种方法在测试的时候很有效率,数据只需要经过一个训练好的网络中。でも!逐像素loss不能发现图中的感知信息(perceptual)的差异,比如如果两张图像只差一个像素的偏移,内容几乎一样但是per-pixel loss 却大不相同。
- 研究表明我们可以基于perceptual loss使用从训练好的网络里提取出的图像的高级特征来生成高分辨率的图像。最小化loss生成图像,但是解决这种优化问题有点慢。
所以本文横空出世!!
本文结合了上述两种方法的优点。我们使用perceptual loss(==perceptual loss x2==)来训练神经网络,这个perceptual loss方程基于预先训练好的网络中提取的高级特征!==(论文作者内心os:机不机智!又是一篇top!)== 这种方法比per-pixel loss更加鲁棒,在测试的时候也能到达实时。
我们的实验有两个任务:1.图像风格转换;2.对单个图像的超分辨率。这两个任务都不好做,1.风格转换没有正确或固定的输出;2.有很多张高分辨率的图像可以生成同一张低分辨率的图像。
我们的结果不管是质量上还是目标方程的值上都跟《A neural algorithm of artistic style》这篇文章差不多,但是我们速度上吊打它,比它快3个数量级。
2.相关工作
前馈神经网络图像转换
有好多人都用前馈神经网络来做图像转换,大多数使用per-pixel loss,本文也用前馈神经网络来做这事儿!
感知优化
有好多人都在用感知优化(perceptual optimization)来生成图像,这里的感知的东西来自于卷积网络提取出来的高级特征。
本文与参考文献[6]做的事差不多,只不过但是[6]使用per-pixel loss,而我们使用perceptual loss(==perceptual loss x3==)
3.方法
如图所示,我们的系统分为两部分:一个图片转换网络

loss 网络

如下图所示,如果我们使用网络的浅层最小化特征重建loss,得到的图像跟原图几乎没差。而本文使用网络的深层,这样图像的内容和空间结构都保留下来,而颜色、纹理以及精密的形状则会丢失。
风格重建loss
特征重建loss得到的是图像的内容,而丢失了图像的颜色和细节等。这些都是由风格图像提供的,所以我们也需要得到它们。我们定义Gram 矩阵为
的矩阵:

我们可以将

如下图所示,当我们最小化风格重建loss的时候,几层指定的网络输出的结果保留了目标图像的风格特征而丢失了空间结构。越深的网络层次提取到越大尺度的特征。为了从多层网络J中进行风格重建,我们定义
3.3 简单loss函数
除了上面的两个loss函数,我们还定义了两个简单的loss函数,其仅仅取决于低层像素信息。
像素Loss
像素loss是两张范式图像的欧式距离。(目标图像,输出图像
)。若两者形状都为
,那么像素loss定义为
总变差正则化
为了使输出图像的空间结构更加平滑,我们使用总变差正则化。
4.实现
https://github.com/RanFeng/fast-neural-style-tensorflow
参考
参考文献[6]《Understanding Deep Image Representations by Inverting Them》
参考文献[42]《Unsupervised representation learning with deep convolutional generative adversarial networks》
参考文献[43] 《Deep residual learning for image recognition.》
参考文献[44] Training and investigating residual nets. http://torch.ch/blog/2016/02/04/resnets.html
本网络使用的数据集下载链接:COCO dataset.
参考链接 https://www.jiqizhixin.com/articles/2018-05-15-5
网友评论