zoukankan      html  css  js  c++  java
  • 风格迁移论文--Arbitrary style transfer in real-time with adaptive instance normalization

    目录

    1. 整体思路
    2. 优化点:Adaptive Instance Normalization(AdaIN)
    3. 网络结构
    4. 损失函数
    5. 论文实验结果

    这篇文章是2017年发表的,在Gatys的2015年论文《A Neural Algorithm of Artistic Style》基础上,做了不少改进工作,当然也吸收了其他论文中的部分,比如尝试去训练一个前向传播的神经网络提高迁移速度,吸收IN(Instance normalization)层的思想,去掉Gram矩阵,修改损失函数,从而大大提高了分割迁移速度和质量。因此也顺利被cvpr收入。原论文地址:https://arxiv.org/pdf/1703.06868.pdf

    一、整体思路

    文章大体沿用之前风格迁移的思想,损失函数的定义依旧使用内容损失和风格损失。其中风格网络设计较之前有些复杂,但是只使用了前向网络,速度反而加快了,整体计算变得更加简单。

    风格网络使用encode-decode和AdaIN层组成,其中encode-decode是使用对称的VGG -19网络,标定内容特征的均值和方差到对应的风格特征上,产生目标图片t

    一个随机的初始化的解码器g被训练去映射t到图片空间。生成有了风格的图片T(c,s)

    最终生成图片的函数(不同alpha下的生成图片可见下图):

    二、优化点:Adaptive Instance NormalizationAdaIN

    2.1 Batch Normalization-归一化一批样例

    简介:以一个单一风格为中心。对一批样例进行计算每通道的均值和方差。BN layers在训练和测试时采用的是不同的数据集,训练时是采用小批数据。Gatys等人的方法Gram matrix因为需要循环optimization,生成一张图要很久,Ulyanov等人提出用一个前馈神经网络替代这个optimization的过程,也就是训练一个generator,这个generator中用了BN。

    公式如下:

    BN 在训练的时候利用 mini-batch 统计来学习,在 inference 的阶段就用流行的统计来替换他们,这样就导致了 training 和 inference 的不一致。后来也有很多对该问题的改进。

    2.2 Instance Normalization -每个样例规范化

    简介:每个通道都独立计算均值、方差。IN layers在训练以及测试时使用相同的数据统计。归一化每个样例到一个单一的风格。Ulyanov等人发现只需将BN替换为instance normalization (IN)即可大幅提升收敛速度。BN和IN的区别在于BN用的mean和variance是从一个batch中所有的图片统计的,而IN的mean和variance是从单张图片中统计的。注意 γ和 β对每个channel都是不同的。

    公式如下:

    2.3 Conditional Instance Normalization-条件实例归一化

    简介:Dumoulin等人发现在进行IN的时候,使用不同的 γ和 β即可生成出风格不同的图像,提出了conditional instance normalization(CIN)

    公式如下:

    惊奇的是,该方法可以产生完全不同 style 的图像,但是用的是同一组网络参数,仅仅是 IN layer 的 affine parameters 不同。两个参数也是学习而来,Dumoulin等人的方法迁移有限种的风格,想迁移新的的风格则需要训练新的模型。

    2.4 Adaptive Instance Normalization-自适应实例归一化

    简介:既然 IN 可以根据 affine parameters 将输入归一化为 single style,那么,有没有可能,我们给定多种自适应的 affine transformations 来生成任意给定类型的图像呢?基于该动机,黄勋等人对 IN 的技术进行了拓展,提出了 Adaptive Instance Normalization (AdaIN)。AdaIN 接收一张内容图X 和一张风格图 Y,不引入参数,自动计算出其均值和方差,只需使用一次前向网络,即可完成风格网络的生成,将大大提高执行速度。与 BN, IN, CIN 不同,AdaIN 没有可学习的 affine parameters。其根据输入的 style image,自适应的生成 affine parameters:

    三、网络结构

     网络结构主要分为两部分:生成网络以及计算损耗网络两个网络。计算损耗网络是用来训练时约束的。生成网络是一个前向网络,后期用来进行风格转换网络。风格转换生成网络由Encoder-AdaIN-Decoder这3部分组成。

    1、Encoder 部分是采用预训练好的VGG网络,只使用到了Relu4_1部分,将风格和内容图的图像都从图像空间转到特征空间。

    2、AdaIN层是对内容图进行归一化,这里是通过对齐内容图的每通道的feature map的均值和方差来匹配风格图每通道feature map的均值和方差。在不同层进行AdaIN测试(relu2_1、relu3_1、relu4_1)。在越高的层数上使用AdaIN风格化越明显,层数越低效果也越不明显。

    3Decoder部分是一个将feature空间转成图像空间的网络,这部分网络一般是采用和encoder对称的网络结构,整个网络中需要训练的就是这部分网络的权重参数信息,初始可以随机一些初始化参数,通过梯度下降可以不断进行更新参数以使整个损耗函数比较小、网络逐渐收敛。池化层一般是替换成采用最近邻上采样的方式来防止棋盘效应,在encoder decoder部分的padding一般都是采用反射填充避免边界artifactsdecoder中没有使用归一化层,因为IN/BN这些实例归一化和批归一化都是针对单个风格的。

    整个生成网络的时间花费基本是content encoding、style encoding、decoding各占三分之一时间。

    四、损失函数

    损失函数分析转自:https://zhuanlan.zhihu.com/p/57875010

    五、论文实验效果

  • 相关阅读:
    Dynamics CRM安装教程一:域环境准备
    C#判断日期是否合法
    Visual Studio 2015 无法加载.Net FrameWork4.6.2
    Dynamics CRM产生公共签名,避免每次插件换环境重新输入签名密钥账号密码
    Dynamics CRM使用JS隐藏自定义按钮
    <3>Python开发——列表(list)
    <2>Python开发——字符串(str)
    <1>Python开发——基础入门
    Sed命令详解
    国内搭建Minikube测试环境
  • 原文地址:https://www.cnblogs.com/yifanrensheng/p/12594524.html
Copyright © 2011-2022 走看看