• 【65】神经风格迁移


    1. 神经风格迁移
    最近,卷积神经网络最有趣的应用是神经风格迁移
    来看几个例子,比如这张照片,照片是在斯坦福大学拍摄的
    如果想利用右边照片的风格来重新创造原本的照片,右边的是梵高的星空
    神经风格迁移可以生成下面这张照片

    这仍是斯坦福大学的照片,但是用右边图像的风格画出来
    为了描述如何实现神经网络风格迁移,将使用 C来表示内容图像,S表示风格图像,G表示生成的图像

    另一个例子,比如,这张图片,C代表在旧金山的金门大桥,还有这张风格图片,是毕加索的风格
    然后把两张照片结合起来,得到G这张毕加索风格的的金门大桥

    为了实现神经风格迁移,需要知道卷积网络提取的特征,在不同的神经网络,深层的、浅层的
    而这些在 上节笔记中已经提及到了

    关于神经风格迁移算法中展示的,是基于Leon Gatys, Alexandra Ecker和Matthias Bethge的这篇论文
    Leon A. Gatys, Alexander S. Ecker, Matthias Bethge, (2015). A Neural Algorithm of Artistic Style

    2. 代价函数
    要构建一个神经风格迁移系统,让为生成的图像定义一个代价函数
    通过最小化代价函数,可以生成想要的任何图像

    记住风格迁移问题,给一个内容图像C,给定一个风格图片S,而目标是生成一个新图片G
    为了实现神经风格迁移,要做的是定义一个关于G的代价函数 J JJ 用来评判某个生成图像的好坏
    将使用梯度下降法去最小化J JJ(G),以便于生成这个图像

    为了判断生成图像的好坏,把这个代价函数定义为两个部分:

    J content (C,G) 
    内容代价函数,它是用来度量生成图片G的内容与内容图片C的内容的相似度
    J style (S,G) 
    风格代价函数,它是用来度量生成图片G的风格和风格图片S的风格的相似度

    最后用两个超参数 a 和 β 来来确定内容代价和风格代价,两者之间的权重用两个超参数来确定
    两个代价的权重似乎是多余的,其实一个超参数似乎就够了
    但提出神经风格迁移的原始作者使用了两个不同的超参数,现在就保持一致计算吧

    算法的运行是这样的:
    对于代价函数J(G),为了生成一个新图像,接下来要做的是随机初始化生成图像G
    它可能是100×100×3,可能是500×500×3,又或者是任何想要的尺寸
    然后使用在之前定义的代价函数J(G)
    现在可以做的是使用梯度下降的方法减小代价函数J(G),更新G:

    在这个步骤中,对图像G的像素值进行了更新,也就是100×100×3,比如RGB通道的图片。注意!不仅对W、b参数进行了更新,还对输入的图像G进行了更新。

    这里有个例子

    假设从这张内容图片(编号1)和风格(编号2)图片开始,这是另一张公开的毕加索画作
    当随机初始化G,随机初始化的生成图像就是这张随机选取像素的白噪声图(编号3)
    接下来运行梯度下降算法,最小化代价函数J(G),逐步处理像素
    这样慢慢得到一个生成图片(编号4、5、6),越来越像用风格图片的风格画出来的内容图片

  • 相关阅读:
    MySQL的安装和基本管理
    前端基础之jQuery
    前端基础之BOM和DOM
    前端基础之JavaScript
    前端基础之CSS
    前端基础之HTML
    五,pod控制器应用进阶
    运维都该会的Socket知识!
    四,k8s集群资源清单定义入门
    三,k8s集群的应用入门
  • 原文地址:https://www.cnblogs.com/lau1997/p/12389196.html
Copyright © 2020-2023  润新知