谈谈图像的style transfer(二)

总说

主要从几个方面来进行说明吧

- 加快transfer的速度

- 让transfer的效果看起来更加visual-pleasing

- 其他的一些方面

- 用GAN来做

加快style stransfer

谈谈图像的Style Transfer(一)

这里写了 Neural style以及fast neural style。

超越fast style transfer—-任意风格图和内容图0.1秒出结果已经可以将转换做到实时。这篇的一个主要的问题是耗费的大部分时间是在提取隐藏层的patch上。

下面介绍的论文都秉承任意风格图一次前向直接出结果

A Learned representation for artistic style

这个在ICLR 2017发表的文章,核心思想:many styles probably share some degree of computation.就是说,虽然我们可以用fast neural style根据很多不同的style训练不同的模型,但是这些模型的所有卷积层的权值都是一样的!

看原文比较容易:

we found a very surprising fact about the role of normalization in style transfer networks:

to model a style, it is sufficient to specialize scaling and shifting parameters after normalization to each specific style.

In other words, all convolutional weights of a style transfer network can be shared across many styles,

and it is sufficient to tune parameters for an affine transformation after normalization for each style.

他们把这个方法称为condition instance normalization

z=γs(x?μσ)+βs

我们只要根据不同的style选择不同的参数γs和βs就行。这样的话,一次前向,就能生成N幅不同style的图像。这种方法只能生成指定数量的预先训练的style,还不能说是任意的。

Arbitrary Style Transfer in Real-time with Adaptive Instance Normalization

论文

这篇的话主要的思想是:加入了 adaptive instance normalization(AdaIN)层,主要是让生成图像特征与画的特征在 均值和方差上进行尽量相似。其实就是换了一种约束。原版的neural style是用二阶统计信息(协方差,用Gram矩阵)来进行匹配风格,但是也有用其他的,比如MRF loss(ombining markov random fields and convolutional neural networks for image synthesis.), Adversarial loss(C. Li and M. Wand. Precomputed real-time texture synthesis with markovian generative adversarial networks. In ECCV,2016), 梯度直方图(P. Wilmot, E. Risser, and C. Barnes. Stable and controllable neural texture synthesis and style transfer using histogram losses. arXiv preprint arXiv:1701.08893 , 2017), MMD损失(P. Wilmot, E. Risser, and C. Barnes. Stable and controllable neural texture synthesis and style transfer using histogram losses. arXiv preprint arXiv:1701.08893, 2017)等等吧。然后貌似均值和方差没有人用啊,所以他们就用了。

先说一下,Instance Normalization不同于不同的BN,它是每个例子的每个通道进行normalization的。

μnc(x)=1HW∑h=1H∑w=1Wxnchw

上篇说的CIN(condition Instance Normalization)

CIN(x;s)=γs(x?μ(x)σ(x))+βs

他们学的是每种style图的这两个参数。但是这种仿射参数其实可以由style图的本身的统计信息来替代。

所以如果我们把这两个仿射系数去掉,用style图像的方差和均值替代,那么就可以将CIN转换成任意风格的图像。

AdaIN(x,y)=σ(y)(x?μ(x)σ(x))+μ(y)

代码:https://github.com/xunhuang1995/AdaIN-style

让style transfer更加的visual-pleasing

Controlling Perceptual Factors in Neural Style Transfer

这篇主要是从三个方面着手

颜色控制

在以前的风格转换中,生成图的颜色都会最终变成style图的颜色,但是很多时候我们并不希望这样。其中一种方法是,将RGB转换成YIQ,只在Y上进行风格转换,因为I和Q通道主要是保存了颜色信息。

空间控制

主要是加入R个引导通道。

唯一的区别是

Frl(x)[:,i]=Trl°Fl(x)[:,i]

原版的是这样的,可以看到下面的生成图片,天空有一部分变成墙壁了。这是因为协方差来衡量一个分布存在不稳定性。(在 Risser E, Wilmot P, Barnes C. Stable and Controllable Neural Texture Synthesis and Style Transfer Using Histogram Losses[J]. 2017. 有提到这一点。)

如果加入了空间控制,那么

如果再加上style II,那么得到如下,可以看到被style II所stransfer只有天空部分。

复现代码:https://github.com/leongatys/NeuralImageSynthesis

Deep Photo Style Transfer(个人很喜欢)

从最初的CNN做style transfer一年多,style transfer出来的都是“画”,并不是照片。直到17年3月份,Cornell和Adobe的这篇论文。

可以看到,这种风格转换可以使得生成图几乎看不出任何“画”的细节,如同照片一样。所谓“画”就是包含局部的扭曲,这篇论文成功抑制了这种扭曲,将style transfer变成颜色域的仿射变换。

可以看到,比如第四行,最右侧被子颜色成功变成第二幅的,而前两种方法都没法很好的进行颜色转换,并且前两种方法扭曲明显,比如墙壁的垂直边缘扭曲很明显,而这篇论文的方法就几乎没有这种现象。

他们还比较了其他一些”spatially-variant color transfer”的方法。效果明显更好。

他们主要在传统损失函数中加入了一个”Photorealism regularization”项。由于是local color stransfer,所以他们采用 Matting Laplacian of Levin的方法,这种方法将灰度模板用RGB通道的局部仿射组合来表示。所以

Lm=∑c=13Vc[O]TMIVv[O]

其中,Vc[O]表示第c个通道的输出的向量化(Nx1)。关键点在于这个MI,这个值只和输出有关,Mi是NxN的。

此外,由于Gram矩阵自身是计算整幅图的协方差,并不是局部的,所以就先根据输入图像生成多个masks,然后将该图像标上一系列标签(天空、楼房、水等等),然后把这些模板作为额外通道直接concatenate上去就行。

Lls+=∑c=1C12N2l,c∑ij(Gl,c[O]?Gl,c[S])2ij

Fl,c[O]=Fl[O]Ml,c[I]

Fl,c[S]=Fl[S]Ml,c[S]

可以看到我们需要分别给C图和S图进行分割,还是挺麻烦的。

最终公式:

Ltotal=∑l=1LαlLlc+Γ∑l=1LβlLls++λLm

代码:https://github.com/luanfujun/deep-photo-styletransfer

顺带说一句,3月份公开的论文,现在才过了2个月不到,竟然已经差不多8800多颗star了。。大家挺喜欢这个工作的。。

其他方面

Stable and Controllable Neural Texture Synthesis and Style Transfer Using Histogram Losses

他们发现Gram矩阵用于style transfer的不稳定性,即两种完全不同的分布其Gram矩阵可能是一样的。

从而提出加入直方图信息来强化约束。用于纹理生成时可以生成更加符合参考图的纹理。

SON OF ZORN’S LEMMA TARGETED STYLE TRANSFER USING INSTANCE-AWARE SEMENTIC SEGMENTATION

以前都是整幅图stransfer的,然后他们想只对一幅图的单个物体进行stransfer,比如下面这幅图是电视剧Son of Zorn的剧照,设定是一个卡通人物生活在真实世界。他们还说这种技术可能在增强现实起作用,比如Pokemon go.



通过GAN的风格转换

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks(个人很喜欢)

暂时不想写了,有空再写吧,反正也没人看。

代码:Torch版本(论文原版):https://github.com/junyanz/CycleGAN

Pytorch版本(仍旧是作者实现的):https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix

待做列表

高优先级

  • 加入ZM-NET
  • CycleGAN补充
  • Unsupervised cross-domain image generation
  • Characterizing and Improving Stability in Neural Style Transfer
  • Demystifying Neural Style Transfer

低优先级

  • Multimodal Transfer: A Hierarchical Deep Convolutional Neural Network for Fast Artistic Style Transfer
  • Visual Attribute Transfer through Deep Image Analogy
  • StyleBank: An Explicit Representation for Neural Image Style Transfer
  • 对”其他方面”加入加入更多的补充。
时间: 2025-01-05 03:53:54

谈谈图像的style transfer(二)的相关文章

图像风格转换(Image style transfer)

图像风格转换是最近新兴起的一种基于深度学习的技术,它的出现一方面是占了卷积神经网络的天时,卷积神经网络所带来的对图像特征的高层特征的抽取使得风格和内容的分离成为了可能.另一方面则可能是作者的灵感,内容的表示是卷积神经网络所擅长,但风格却不是,如何保持内容而转换风格则是本文所要讲述的. 本篇属于论文阅读笔记系列.论文即[1]. 引入 风格转换属于纹理转换问题,纹理转换问题在之前采用的是一些非参方法,通过一些专有的固定的方法来渲染. 传统的方法的问题在于只能提取底层特征而非高层抽象特征.随着CNN的

OpenCv dnn模块扩展研究(1)--style transfer

一.opencv的示例模型文件 使用Torch模型[OpenCV对各种模型兼容并包,起到胶水作用], 下载地址: fast_neural_style_eccv16_starry_night.t7 http://cs.stanford.edu/people/jcjohns/fast-neural-style/models/eccv16/starry_night.t7 和 fast_neural_style_instance_norm_feathers.t7 http://cs.stanford.e

Perceptual losses for real-time style transfer and super-resolution(by_xiao jian)

Perceptual losses for real-time style transfer and super-resolution,2016 ECCV https://cs.stanford.edu/people/jcjohns/eccv16/ 官方源码Torch:https://github.com/jcjohnson/fast-neural-style 其他程序Tensorflow:https://github.com/lengstrom/fast-style-transfer,实现细节

Neural Style Transfer

风格转移 这几天看了一篇风格转移的论文,这里大致介绍下论文的内容,并且推到下论文中出现的公式. 基本思想 有两张图片,我们关注一张图片的内容(Content)记为C,一张图片的风格(Style)记为S,想要生成一张图片包含C的内容和S的风格,记为G. 那么如何获取图片的C和S那?论文使用训练好的VGG net解决这一问题. 文中使用VGG net的中间层来表示C:对于一张input_image,中间某一输出层shape为$heighttimes width times channel$,将其re

ActionScript3游戏中的图像编程(连载二十)

1.4.2 灰度的计算方法 回过头来看RGB,站在科学的角度来解释,它们确实也有更明亮的理由,因为下面一排色彩反射出来的色光总量是上一排色的两倍.      为此,作者曾自作聪明地发明了一条“原创”的灰度公式: Gray=(r+g+b)/3 哈哈,用色光总量来表达颜色的灰度想必就比较准确了吧!沾沾自喜一番以后,我还试着用这条自创的定律来转换这张测试图片,上下色块的灰度果然拉开了,可是很不幸地,左右相邻,边界分明的色块依然粘连在一块(图 1.30). 图 1.30 笔者“自创”的灰度转换 显然此法

ActionScript3游戏中的图像编程(连载二十一,第1章完)

1.4.3 用灰度/明度指导色彩搭配 试着只通过调整不等于0的通道,让上一排的色彩在灰度上保持一致,把三个颜色分别代入到心理学公式.得 Gray(red) = r * 0.299      Gray(green) = g * 0.587      Gray(blue) = b * 0.114 让它们灰度相等,则 r * 0.299 = g * 0.587 = b * 0.114 可见,b值一定最大,不妨让b取最大值255,求得r=97, g=50.把这两个值分别应用到红和绿两个色块上. 绿色不再

[原创]ActionScript3游戏中的图像编程(连载二十九)

2.2.2 Photoshop投影大小的模拟 投影没有之前那么浓了,但是跟Photoshop里的效果差别还挺大,因为在Photoshop里我们还设置了另外一个属性:大小. Flash里似乎找不到它的影子,我们用排除法来进行定位,Photoshop投影样式的大小属性以像素为单位,Flash投影滤镜的选项只有距离和那对被“手铐”扣住的模糊属性符合条件,而Photoshop里也有一个距离,所以我们定位到模糊属性(图 2.15). 图 2.15 Flash投影的模糊属性 分别调整Photoshop的大小

ActionScript3游戏中的图像编程(连载二十一)

1.4.3 用灰度/明度指导色彩搭配 试着只通过调整不等于0的通道,让上一排的色彩在灰度上保持一致,把三个颜色分别代入到心理学公式.得 Gray(red) = r * 0.299 Gray(green) = g * 0.587 Gray(blue) = b * 0.114 让它们灰度相等,则 r * 0.299 = g * 0.587 = b * 0.114 可见,b值一定最大,不妨让b取最大值255,求得r=97, g=50.把这两个值分别应用到红和绿两个色块上. 绿色不再显得刺眼,整体感也因

ActionScript3游戏中的图像编程(连载二)

内容编排 本套教程共分3部分. 第一部分介绍色彩的相关知识及Flash,Photoshop等可视化软件在图形图像处理方面的一些特性,包括常用的色彩模式,Photoshop图层效果,ActionScript滤镜,混合模式等知识,并指出这些特性在不同软件下的异同. 第二部分以应用数学为思想,以BitmapData,像素为工具,深入剖析各种图像处理技术的工作原理,让读者可以深入到算法的层面上认识图像处理,在ActionScript乃至其它支持像素级编程的语言中实现与Photoshop等专业图像软件相媲