zoukankan      html  css  js  c++  java
  • 【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),越来越像用风格图片的风格画出来的内容图片

  • 相关阅读:
    ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
    ASP.NET CORE 使用Consul实现服务治理与健康检查(1)——概念篇
    Asp.Net Core 单元测试正确姿势
    如何通过 Docker 部署 Logstash 同步 Mysql 数据库数据到 ElasticSearch
    Asp.Net Core2.2 源码阅读系列——控制台日志源码解析
    使用VS Code 开发.NET CORE 程序指南
    .NetCore下ES查询驱动 PlainElastic .Net 升级官方驱动 Elasticsearch .Net
    重新认识 async/await 语法糖
    EF添加
    EF修改部分字段
  • 原文地址:https://www.cnblogs.com/lau1997/p/12389196.html
Copyright © 2011-2022 走看看