发新帖

【悦读】用TF实现图像风格迁移:一个艺术风格化神经网络算法

[复制链接]
1543 3

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
本帖最后由 Tensorflower_攸岚 于 2018-4-21 08:43 编辑

   

艺术是活的科学。


——科克托


prisma_1-800x420.jpg

相信不少人都用过Prisma,而其背后的原理,就是通过神经网络学习某个图像的风格,然后再将这种风格应用到目标图像上。

下面介绍此论文





文章大纲
这里是整个paper在neural style的工作流,理解这幅图对理解整篇paper的逻辑很关键,主要分为两部分:
  • Content Reconstruction: 上图中下面部分是Content Reconstruction对应于CNN中的a,b,c,d,e层,注意最开始标了Content Representations的部分不是原始图片(可以理解是给计算机比如分类器看的图片,因此如果可视化它,可能完全就不知道是什么内容),而是经过了Pre-trained之后的VGG network model的图像数据, 该model主要用来做object recognition, 这里主要用来生成图像的Content Representations。理解了这里,后面就比较容易了,经过五层卷积网络来做Content的重构,文章作者实验发现在前3层的Content Reconstruction效果比较好,d,e两层丢失了部分细节信息,保留了比较high-level的信息。
  • Style Reconstruction: Style的重构比较复杂,很难去模型化Style这个东西,Style Represention的生成也是和Content Representation的生成类似,也是由VGG network model去做的,不同点在于a,b,c,d,e的处理方式不同,Style Represention的Reconstruction是在CNN的不同的子集上来计算的,怎么说呢,它会分别构造conv1_1(a),[conv1_1, conv2_1](b),[conv1_1, conv2_1, conv3_1],[conv1_1, conv2_1, conv3_1,conv4_1],[conv1_1, conv2_1, conv3_1, conv4_1, conv5_1]。这样重构的Style 会在各个不同的尺度上更加匹配图像本身的style,忽略场景的全局信息。


论文关键概念

卷积神经网络(CNN)

  一张输入的图片,会在卷积神经网的各层以一系列过滤后的图像表示。随着层级的一层一层处理,过滤后的图片会通过向下取样的方式不断减小(比如通过池化层)。这使得每层神经网的神经元数量会原来越小。(也就是层越深,因为经过了池化层,单个feature map会越来越小,于是每层中的神经元数量也会越来越少)。


内容重塑

  在只知道该层的输出结果,通过重塑输入图像,可以看到CNN不同阶段的图像信息。在原始的VGG-Network上的5个层级:conv1_1,conv1_2,conv1_3,conv1_4,conv1_5上重塑了输入的图像。

输入的图像是上图中的一排房子,5个层级分别是a,b,c,d,e。在较低层的图像重构(abc)非常完美;在较高层(de),详细的像素信息丢失了。也就是说,这样做提取出了图片的内容,但是抛弃了像素。


风格重塑

  在原始的CNN表征之上(feature map),建立了一个新的特征空间(feature space),这个特征空间捕获了输入图像的风格。风格的表征计算了在CNN的不同层级间不用特征之间的相似性。通过在CNN隐层的不同的子集上建立起来的风格的表征,我们重构输入图像的风格。如此,便创造了与输入图像一致的风格而丢弃了全局的内容。

  这篇论文的关键是对于内容和风格的表征在CNN中是可以分开的。可以独立地操作两个表征来产生新的,可感知意义的图像。论文中生成一个图片,混合了来自两个不同图片的内容和风格表征。

  一张图片,它同时符合照片的内容表征,和艺术画的风格表征。原始照片的整体布局被保留了,而颜色和局部的结构却由艺术画提供。

  风格表征是一个多尺度的表征,包括了神经网络的多层。在图2中看到的图像,风格的表征包含了整个神经网络的层级。而风格也可以只包含一小部分较低的层级。(见下面的图,第一行是卷基层1,第5行是卷基层5的输出)。若符合了较高层级中的风格表征,局部的图像结构会大规模地增加,从而使得图像在视觉上更平滑与连贯。

  简言之,作者直接把局部特征看做近似的图片内容,这样就得到了一个把图片内容和图片风格(说白了就是纹理)分开的系统,剩下的就是把一个图片的内容和另一个图片的风格合起来。

  图像的内容和风格并不能被完全地分解开。当风格与内容来自不同的两个图像时,这个被合成的新图像并不存在在同一时刻完美地符合了两个约束。但是,在图像合成中最小化的损失函数分别包括了内容与风格两者,它们被很好地分开了。所以,我们可以平滑地将重点既放在内容上又放在风格上。

风格重塑.png



实现原理

原理.png


                                                                                              


Experiments

效果那是相当的好


deep_learning_photos_example.0.jpg

Github下载地址


感谢各位的阅读

诸多不足,还请见谅


另外,本萌新建了一个QQ群,欢迎各位大神加入



参考:https://www.jianshu.com/p/9f03b61fdeac

https://blog.csdn.net/elaine_bao/article/details/50502929

https://blog.csdn.net/qq_30611601/article/details/79007202



本楼点评(0) 收起

精彩评论3

Tensorflower_攸岚  TF荚荚  发表于 2018-4-20 06:46:20 | 显示全部楼层
自己沙发
本楼点评(0) 收起
TF-boy  TF芽芽  发表于 2018-4-20 08:23:09 | 显示全部楼层
帮顶
本楼点评(0) 收起
Tensorflower_攸岚  TF荚荚  发表于 2018-4-20 20:06:33 | 显示全部楼层
完成了,希望能对大家有所帮助!
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表