【AdaIN】自适应实例规范化图像风格迁移

article/2025/9/18 7:52:22

Adapative Instance Normalize

  • 1. AdaIN简介
  • 2. 相关工作与背景
    • 2.1 批归一化 Batch Normalization
    • 2.2 实例归一化 Instance Normalization
    • 2.3 条件实例归一化 Conditional Instance Normalization
  • 3. AdaIN(自适应实例规范化)
  • 4. 模型构建
    • 4.1 结构
    • 4.2 训练
  • 5. PyTorch实现
  • 6. 实验结果

1. AdaIN简介

使用GAN进行图像风格迁移,网络通常与固定的风格集相关联,无法适应任意新的风格。AdaIN首次实现了任意风格的实时传输。其方法的核心是一个新的自适应实例归一化(AdaIN)层,它将内容特征的均值和方差与样式特征的均值与方差对齐。与现有最快方法相当的速度,不受预定义样式集的限制。此外,允许灵活的用户控制,如内容风格权衡、风格插值、颜色和空间控制,所有这些都使用单个前馈神经网络。

2. 相关工作与背景

2.1 批归一化 Batch Normalization

Batch Normalization层最初设计用于加速区分网络的训练,但也被发现在生成图像建模中有效。

给定Batch输入 x ∈ R N × C × H × W x \in \mathbb{R}^{N \times C \times H \times W} xRN×C×H×W, Batch Normalization标准化每个通道的均值和标准差。

  • B N ( x ) = γ ( x − μ ( x ) σ ( x ) ) + β BN(x) = \gamma\left( \frac{x-\mu(x)}{\sigma(x)}\right)+\beta BN(x)=γ(σ(x)xμ(x))+β
  • γ \gamma γ β \beta β是从数据中学习到的仿射参数
  • μ ( x ) , σ ( x ) \mu(x),\sigma(x) μ(x),σ(x)是针对每个特征通道独立计算的批次大小和空间尺寸的平均值和标准差

2.2 实例归一化 Instance Normalization

在原始方法中,风格迁移网络在每个卷积层之后都包含BN层。但是用Instance Normalization层代替BN层可以实现显著改善性能。

  • I N ( x ) = γ ( x − μ ( x ) σ ( x ) ) + β IN(x) = \gamma\left( \frac{x-\mu(x)}{\sigma(x)}\right)+\beta IN(x)=γ(σ(x)xμ(x))+β
  • 不同于BN,这里的均值和标准差是对于每个通道和每个样本,跨空间维度独立重新计算得到的。
  • μ n c ( x ) = 1 H W ∑ h = 1 H ∑ w = 1 W x n c h w \mu_{nc}(x)=\frac{1}{HW}\sum_{h=1}^{H}\sum_{w=1}^{W}x_{nchw} μnc(x)=HW1h=1Hw=1Wxnchw
  • σ n c ( x ) = 1 H W ∑ h = 1 H ∑ w = 1 W ( x n c h w − μ n c ( x ) ) 2 + ϵ \sigma_{nc}(x)=\sqrt{\frac{1}{HW}\sum_{h=1}^{H}\sum_{w=1}^{W}(x_{nchw}-\mu_{nc}(x))^2+\epsilon} σnc(x)=HW1h=1Hw=1W(xnchwμnc(x))2+ϵ

2.3 条件实例归一化 Conditional Instance Normalization

  • 一个风格转换网络的所有卷积权重可以在许多风格中共享,而且在归一化之后为每种风格调整仿生变换的参数就足够了
  • C I N ( x ; s ) = γ s ( x − μ ( x ) σ ( x ) ) + β s CIN(x;s) = \gamma^s\left( \frac{x-\mu(x)}{\sigma(x)}\right)+\beta^s CIN(x;s)=γs(σ(x)xμ(x))+βs
  • γ s \gamma^s γs μ s \mu^s μs是针对每一种风格学习得到的仿射参数
  • 由于条件实例归一化只作用于缩放和移动参数,在N种风格上训练一个风格转移网络需要的参数比训练N个独立网络的朴素方法要少

3. AdaIN(自适应实例规范化)

  • A d a I N ( x , y ) = σ ( y ) ( x − μ ( x ) σ ( x ) ) + μ ( y ) AdaIN(x,y) = \sigma(y)\left( \frac{x-\mu(x)}{\sigma(x)}\right)+\mu(y) AdaIN(x,y)=σ(y)(σ(x)xμ(x))+μ(y)
  • AdaIN接收内容输入x和风格输入y,并简单地对齐x的通道平均值和方差以匹配y的值。与BN、IN或CIN不同,AdaIN没有可学习的仿射参数。相反,它从样式输入自适应地计算仿射参数
  • 其中,用σ(y)缩放归一化内容输入,并用µ(y)移位。与IN中类似,这些统计数据是跨空间位置计算的

直观地说,考虑一个检测特定风格笔画的特征通道。具有此类笔划的样式图像将产生此功能的高平均激活。AdaIN生成的输出将具有与此功能相同的高平均激活,同时保留内容图像的空间结构。可以使用前馈解码器将笔画特征反转到图像空间。该特征通道的变化可以编码更细微的风格信息,这些信息也被传输到AdaIN输出和最终输出图像。

简言之,AdaIN通过传递特征统计量,特别是信道均值和方差,在特征空间中进行风格传递。

4. 模型构建

4.1 结构

在这里插入图片描述

  • 该风格迁移网络T将内容图像c和任意风格图像s作为输入,并合成输出图像,该输出图像将前者的内容和后者的风格重新组合。
  • 采用了一种简单的编码器-解码器架构,其中编码器f固定在预训练VGG-19的前几层。
  • 在特征空间中对内容和风格图像进行编码之后,将两个特征映射送到AdaIN层,AdaIN层将内容特征映射的均值和方差与风格特征映射的平均和方差对齐,产生目标特征映射t。
    t = A d a I N ( f ( c ) , f ( s ) ) t=AdaIN(f(c),f(s)) t=AdaIN(f(c),f(s))
  • 训练随机初始化的解码器g以将t映射回图像空间,生成风格化图像
    T ( c , s ) = g ( t ) T(c,s)=g(t) T(c,s)=g(t)
  • 解码器主要镜像编码器,所有pooling层由最近的上采样代替,以减少棋盘效应。在f和g中使用反射填充以避免边界伪影。在解码器中不使用归一化层。

4.2 训练

使用Adam优化器,batch大小为8个内容样式图像对。在训练过程中,首先将两幅图像的最小维数调整为512,同时保留纵横比,然后随机裁剪大小为256×256的区域。由于网络是完全卷积的,因此在测试期间可以应用于任何大小的图像。

  • 使用预训练的VGG19来计算训练解码器的损失函数:
    L = L c + λ L s L = L_c + \lambda L_s L=Lc+λLs
  • L c = ∥ f ( g ( t ) − t ∥ 2 L_c = \begin{Vmatrix}f(g(t)-t\end{Vmatrix}_2 Lc= f(g(t)t 2
  • L s = ∑ i = 1 L ∥ μ ( ϕ i ( g ( t ) ) ) − μ ( ϕ i ( g ( s ) ) ) ∥ 2 + ∑ i = 1 L ∥ σ ( ϕ i ( g ( t ) ) ) − σ ( ϕ i ( g ( s ) ) ) ∥ 2 L_s=\sum_{i=1}^L\begin{Vmatrix}\mu(\phi_i(g(t)))-\mu(\phi_i(g(s)))\end{Vmatrix}_2+ \sum_{i=1}^L\begin{Vmatrix}\sigma(\phi_i(g(t)))-\sigma(\phi_i(g(s)))\end{Vmatrix}_2 Ls=i=1L μ(ϕi(g(t)))μ(ϕi(g(s))) 2+i=1L σ(ϕi(g(t)))σ(ϕi(g(s))) 2,用以计算每层上特征的均值和标准差的损失

5. PyTorch实现

6. 实验结果

在这里插入图片描述


http://chatgpt.dhexx.cn/article/oOJ9Ye5f.shtml

相关文章

【6.1】图片风格迁移 Neural Style Transfer

完整代码: from __future__ import division from torchvision import models from torchvision import transforms from PIL import Image import torch import torch.nn as nn import numpy as npimport matplotlib.pyplot as pltdevice torch.device("cu…

图像风格迁移基础入门及实践案例总结

目录 1图像的不同风格 2何为图像风格迁移 2.1基础概念及方法 2.2示例 3图像风格迁移的典型研究成果 3.1deep-photo-styletransfer 3.2CycleGAN 3.3U-…

图像处理:图像风格迁移(Style Transfer)

本文翻译自:《A brief introduction to Neural Style Transfer》 在图像风格迁移中,涉及两张图像,内容图像和风格(样式)图像。我们需要将风格图像的样式应用到内容图像上。 为此我们使用预训练好的模型 VGG-16n 卷积…

实战二:手把手教你图像风格迁移

实战二:手把手教你图像风格迁移 一、简介 图像风格迁移是指,将一幅内容图的内容,和一幅或多幅风格图融合在一起,从而生成一些有意思的图片。 有兴趣的可以看一下外文文献 Leon A. Gatys paper, A Neural Algorithm of Artisti…

VGG19-图像风格迁移

先导入包 import tensorflow as tf import IPython.display as display import matplotlib.pyplot as plt import numpy as np import PIL.Image import time import functools 迭代了50次(次数过少)的效果 迭代800次 定义一个加载图像的函数&#xff0…

图像风格迁移试玩

风格迁移 图像风格迁移原理内容损失函数风格损失函数 现成工具:tensorflow hub手工实现风格迁移我们对风格有失恭敬 神经风格转换是深度学习领域中一个很有趣的技术。它可以改变图像的风格。 如下图所示,根据一张内容图片和一张风格图片,生成…

迁移网络的应用-图像风格迁移

图片风格迁移指的是将一个图片的风格转换到另一个图片中,如图所示: 原图片经过一系列的特征变换,具有了新的纹理特征,这就叫做风格迁移。 VGG网络 在实现风格迁移之前,需要先简单了解一下VGG网络(由于VGG…

图像风格迁移算法学习总结

目录 一、简要说明 二、具体实施步骤 2.1综述 2.2基本思路 2.3核心思路 2.4基本问题处理 三、代码的简要描述 四、成果展示 一、简要说明 本次学习的图像风格迁移算法是基于一个2015年由Gatys等人发表的文章A Neural Algorithm of Artistic Style_的一个代码复…

【数字图像处理】图像风格迁移

代码和实验报告下载:http://download.csdn.net/detail/jsgaobiao/9523313 【作业要求】 设计自己的算法完成一个附图所示的图像风格迁移算法(基于matlab的快速实现)(很可能用到,并且鼓励使用)基于频率域…

图像风格迁移 CycleGAN原理

CycleGAN是一种很方便使用的用于进行图像风格转换的模型。它的一大优势就在于不需要成对的数据集就可以进行训练。比如我们只需要随便一大堆真人图像和随便另一大堆动漫图像,就可以训练出这两类风格互相转换的模型。 CycleGAN进行风格转换的原理是这样的&#xff1a…

Python实现基于深度学习的图像风格迁移

目录 一、选题意义与背景介绍 3 1.1背景介绍 3 1.2选题意义 3 二、相关方法介绍 4 2.1纹理建模 4 2.2图像重建 4 2.3图像风格迁移 4 2.3.1基于在线图像优化的慢速图像风格化迁移算法 4 2.3.2基于离线模型优化的快速图像风格化迁移算法 5 2.4图像风格迁移效果评估 6 三、具体方法…

图片风格迁移

##将图片进行风格迁移,将第一幅图片的均值平均差换成第二幅图的均值平方差。第三张是生成的图片 from numpy.lib.type_check import _imag_dispatcher from builtins import print from os import pread import sys from PIL import Image,ImageStat import numpy …

图像风格迁移及代码实现

图像风格迁移其实非常好理解,就是将一张图像的“风格”(风格图像)迁移至另外一张图像(内容图像),但是这所谓的另外一张图像只是在“风格”上与之前有所不同,图像的“内容”仍要与之前相同。Luan…

(一)图像风格迁移

图像风格迁移即把图像A的风格和图像B的内容按照一定比例结合,输出具备图像A风格和图像B内容的图像C. [github传送门1]https://github.com/anishathalye/neural-style [github传送门2]https://github.com/Quanfita/Neural-Style/tree/master/examples 系列文章 (二)快速图像风格…

图像风格迁移与快速风格迁移的对比(感知损失)

最近一段时间要写数字图像处理的文献综述,《深度学习在图像风格迁移中的原理与应用综述》。只能感慨自己一时选题不审,导致期末火葬场啊…… 这个问题我纠结了一天,看了N多篇文献(全是英文的…),结果还是没…

图像风格迁移【老版】

深度学习目前为止最有用的东西是图像处理,我们可以用它在极早期判断癌症, 也可以用它在茫茫人海里寻找犯人,但是要我说你能写一个小程序取悦女朋友, 你就不一定能信, 这一招叫艺术风格变换,就是你点击一下&…

图像风格迁移-DSTN

样式传输的目的是从参考图像中再现具有样式的内容图像。现有的通用风格转换方法成功地以艺术或照片逼真的方式将任意风格传递给原始图像。然而,现有作品所定义的“任意风格”的范围由于其结构限制而在特定领域内受到限制。具体而言,根据预定义的目标域来…

学习笔记:图像风格迁移

所谓图像风格迁移,是指利用算法学习著名画作的风格,然后再把这种风格应用到另外一张图片上的技术。著名的国像处理应用Prisma是利用风格迁移技术,将普通用户的照片自动变换为具有艺术家的风格的图片。这篇文章会介绍这项技术背后的原理&#…

图像风格迁移实战

最近看了一些基于深度学习的Style Transfer, 也就是风格迁移相关的paper,感觉挺有意思的。 所谓风格迁移,其实就是提供一幅画(Reference style image),将任意一张照片转化成这个风格,并尽量保留原照的内容(Content)。之前比较火的…

Pytorch实现图像风格迁移(一)

图像风格迁移是图像纹理迁移研究的进一步拓展,可以理解为针对一张风格图像和一张内容图像,通过将风格图像的风格添加到内容图像上,从而对内容图像进行进一步创作,获得具有不同风格的目标图像。基于深度学习网络的图像风格迁移主要有三种类型,分别为固定风格固定内容的风格…