Instance Normalization(实例归一化)

BatchNorm、LayerNorm、InstanceNorm以及GroupNorm 如果某个特征的值明显大于另一个特征,这会导致模型输出的结果对该特征变化变的十分敏感。 阅读详情

1. 核心概念

Instance Normalization(实例归一化,简称InstanceNorm) 是深度学习中一种特征归一化技术。它的核心思想是:对每个样本的每个通道的特征图进行独立的归一化。

简单来说,它计算每个样本、每个通道的均值和方差,并用这些统计量来归一化该通道的特征值。

2. 与BatchNorm、LayerNorm的对比(非常重要!)

要理解InstanceNorm,最好通过与更常见的归一化方法对比。假设我们的输入张量形状为 (N, C, H, W):

  • N:Batch Size(批次大小,样本数量)
  • C:Channels(通道数)
  • H:Height(高度)
  • W:Width(宽度)
归一化方法计算均值和方差的维度计算公式适用场景
BatchNorm跨样本,同一通道
(N, H, W)
μc=1NHW∑n=1N∑h=1H∑w=1Wxnchw\mu_c = \frac{1}{NHW}\sum_{n=1}^N\sum_{h=1}^H\sum_{w=1}^W x_{nchw}μc​=NHW1​∑n=1N​∑h=1H​∑w=1W​xnchw​标准CNN, batch size较大且稳定时
LayerNorm跨通道、高、宽,同一样本
(C, H, W)
μn=1CHW∑c=1C∑h=1H∑w=1Wxnchw\mu_n = \frac{1}{CHW}\sum_{c=1}^C\sum_{h=1}^H\sum_{w=1}^W x_{nchw}μn​=CHW1​∑c=1C​∑h=1H​∑w=1W​xnchw​RNN, Transformer,NLP任务
InstanceNorm跨高和宽,同一样本同一通道
(H, W)
μnc=1HW∑h=1H∑w=1Wxnchw\mu_{nc} = \frac{1}{HW}\sum_{h=1}^H\sum_{w=1}^W x_{nchw}μnc​=HW1​∑h=1H​∑w=1W​xnchw​图像风格迁移,生成模型

3. 直观理解

想象一批图像(比如4张猫的图片,N=4, C=3(RGB), H=256, W=256):

  • BatchNorm:会计算所有4张图片的R通道的均值,所有4张图片的G通道的均值,所有4张图片的B通道的均值。它混合了不同样本的信息。
  • InstanceNorm:会单独计算第一张图片的R通道的均值、G通道的均值、B通道的均值。然后单独计算第二张图片的R、G、B通道的均值,以此类推。它完全独立地处理每个样本的每个通道。

4. 数学公式

对于输入张量 xxx 中的一个特定值 xncijx_{ncij}xncij​(第n个样本,第c个通道,位置(i,j)),InstanceNorm的变换为:

x^ncij=xncij−μncσnc2+ϵ\hat{x}_{ncij} = \frac{x_{ncij} - \mu_{nc}}{\sqrt{\sigma_{nc}^2 + \epsilon}}x^ncij​=σnc2​+ϵ​xncij​−μnc​​

其中:

  • μnc=1HW∑h=1H∑w=1Wxnchw\mu_{nc} = \frac{1}{HW}\sum_{h=1}^H\sum_{w=1}^W x_{nchw}μnc​=HW1​∑h=1H​∑w=1W​xnchw​ (第n个样本,第c个通道的均值)
  • σnc2=1HW∑h=1H∑w=1W(xnchw−μnc)2\sigma_{nc}^2 = \frac{1}{HW}\sum_{h=1}^H\sum_{w=1}^W (x_{nchw} - \mu_{nc})^2σnc2​=HW1​∑h=1H​∑w=1W​(xnchw​−μnc​)2 (第n个样本,第c个通道的方差)
  • ϵ\epsilonϵ 是一个很小的数,用于防止除以零(代码中的 eps=1e-6)
  • 通常还会有一个可学习的缩放因子 γ\gammaγ 和偏移量 β\betaβ:yncij=γcx^ncij+βcy_{ncij} = \gamma_c \hat{x}_{ncij} + \beta_cyncij​=γc​x^ncij​+βc​
    • 代码中的 affine=True 就表示启用这两个可学习参数。

5. 为什么在代码中使用InstanceNorm?

在代码片段中:

nn.InstanceNorm2d(n_c, affine=True, eps=1e-6)

这行代码创建了一个InstanceNorm层:

  • n_c:输入数据的通道数(C)
  • affine=True:启用可学习的缩放和平移参数(γ\gammaγ 和 β\betaβ)
  • eps=1e-6:防止除以零的小常数

选择InstanceNorm而不是BatchNorm的原因可能包括:

  1. 对小批量大小(Batch Size)不敏感:BatchNorm在小批量(比如batch size=1或2)时性能会急剧下降,因为计算的统计量不可靠。而InstanceNorm不依赖批次中的其他样本,所以即使batch size=1也能正常工作。
  2. 适用于生成式任务:在图像风格迁移、超分辨率等任务中,我们希望保留每个样本的独特特征(即“风格”)。InstanceNorm通过独立处理每个样本,能更好地保持样本间的独立性,避免不同样本间的特征“泄漏”。
  3. 减少内部协变量偏移:和BatchNorm一样,它也有助于稳定训练过程,使网络更容易训练。

6. 总结

InstanceNorm的核心优势在于其“独立性”:它独立地归一化每个样本的每个通道,使其:

  • 不依赖于批次大小
  • 能更好地保留单个样本的特征
  • 非常适合视觉领域的生成式模型和一些需要对每个实例进行独立处理的任务
Instance Normalization(实列正则化) 对一个批次中单个图片进行归一化,而不是像batch normaliztion一样对整个批次的所有图片进行归一化,提取出平均值等。 更多 Instance Normalization的提出源于论文“实例规范化:快速程式化的缺失成分” Github:https://github.com/DmitryUlyanov/texture_nets  https://www.zhihu.com/qu... 阅读详情

相关推荐

Batch Normalization vs Instance Normalization:图像任务中如何选择正确的归一化方法

本文深入比较了Batch Normalization(BN)和Instance Normalization(IN)在图像任务中的应用差异,帮助开发者根据任务需求选择最佳归一化方法。BN在分类任务中表现卓越,而IN则是生成任务的理想选择。文章通过原理分析、实战案例和决策树,为不同场景下的技术选型提供专业指导。

weixin_29050513的博客 327

各种归一化层(BatchNorm、LayerNorm、InstanceNorm、GroupNorm、Weight Standardization)及其Pytorch实现

BN,LN,IN,GN从学术化上解释差异:BatchNorm:batch方向做归一化,算NHW的均值,对小batchsize效果不好;BN主要缺点是对batchsize的大小比较敏感,由于每次计算均值和方差是在一个batch上,所以如果batchsize太小,则计算的均值、方差不足以代表整个数据分布LayerNorm:channel方向做归一化,算CHW的均值,主要对RNN作用明显;InstanceNorm:一个channel内做归一化,算H*W的均值,用在风格化迁移;因为在图像风格化中,生成结果主要依赖.

David's Tweet 2万+

PyTorch Instance Normalization介绍

Instance Normalization 是一种非常有效的标准化方法,尤其在图像生成任务中表现优秀。通过对每个样本的每个通道独立进行归一化,它摆脱了对批量统计的依赖,非常适合小批量训练任务或风格迁移等应用。

qq_27390023的博客 1409

【深度学习拾遗】四种归一化方式对比:| LayerNorm,BatchNorm,InstanceNorm,GroupNorm

归一化技术可以很好地,缓解梯度消失/爆炸问题,并有助于更快地收敛,也是一种正则化技术防止过拟合实际中会看到好多归一化比如BatchNorm,LayerNorm,GroupNorm,InstanceNorm。

专注于人工智能的算法与应用 8697

常用归一化/正则化层:InstanceNorm1d、InstanceNorm2d、

批量归一化与实例归一化的最大区别在于计算均值及方差的依据不同,实例归一化是对每个样本沿着通道方向独立对各个通道进行计算,而批量归一化则是对所有样本沿着batch的方向对各个通道分别进行计算。比如:输入特征图形状为:(2,3,256,512),表示有两个256×512的特征图,特征图通道数为3,假设为RGB三个通道依次对样本1,样本2分别计算R、G、B三个通道的均值、方差,每次计算其实是对256×512个元素值记性计算;依据计算出的均值和方差,对各通道的元素实现图中的公式;...

NorthSmile的博客 1万+

小知识点系列(十三) 本文(2万字) | 解读 Normalization | Batch Normalization | Layer | Instance | Group | Weight |

人工智能专栏 Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程。

专注于人工智能学习,总结 953

Instance Normalization(实例归一化)详解

InstanceNormalization(实例归一化)是深度学习中一种重要的归一化方法。与BatchNormalization不同,它针对每个样本的每个通道单独进行归一化处理,计算单个样本内的均值和方差。这种方法特别适用于图像生成(如GAN、风格迁移)任务,因为它能保持单个样本的特性,不受batch大小影响,且对图像内容更敏感。在实现上,可通过BatchNorm2d(affine=False)模拟,或直接使用InstanceNorm2d。相比BatchNorm,InstanceNorm更关注单张图像本身的

Kenji_Shinji的博客 1139

直流有刷电机控制 - 认识电机(一)

电机控制学习

u011030644的博客 917

Pytorch深入浅出(十一)之归一化(Layer Normalization、Instance Normalization、Group Normalization)

LN不在 Batch 维度上进行统计。它是逐样本(Sample-wise)计算的。计算方式:不看 batch 中的其他样本,每个样本独立对其所有特征维度计算均值和方差。特点:与batch_size无关,无论 batch 是 1 还是 1000,同一个样本得到的标准化结果完全一致。👉每个 token、每个样本都单独算一组统计量。IN 是逐 Instance(单样本、单通道)计算的。计算方式。

typical_yyc的博客 1167

避坑指南:Abaqus网格划分中90%用户会遇到的5个质量陷阱(附解决方案)

本文深入剖析Abaqus网格划分中90%用户会遇到的5个典型质量陷阱,包括单元扭曲、扫掠网格失败、尺寸梯度控制等,并提供工程级解决方案。通过Python脚本和虚拟拓扑等技巧,帮助用户提升网格质量,确保有限元分析结果的可靠性,适用于CAE工程师和仿真分析师。

weixin_29243279的博客 99

视觉SLAM与激光SLAM简单对比分析

本文旨在梳理目前较为前沿的SLAM技术,包括激光和视觉,主要从精度和实时性两个方面对算法进系评价。对于激光SLAM了解不深,后期需要补充相关算法的核心思想与算法框架。有问题请大佬们随时留言,我再改正。

超爱吃小蛋糕的66的博客 3854

深度学习篇---Instance Normalization(实例归一化)

InstanceNorm(实例归一化)是深度学习中针对风格迁移和图像生成任务的关键技术。它通过对每个样本的每个通道单独进行标准化,有效剥离图像风格信息(如亮度、对比度),保留内容结构特征。与BatchNorm和LayerNorm不同,InstanceNorm不依赖批量统计量,具有样本独立性。核心应用包括:1)风格迁移中配合AdaIN动态调整风格;2)GAN生成器中通过affine参数学习风格特征;3)SPADE等变种实现空间自适应风格控制。其优势在于内容-风格解耦能力,但也需注意小特征图时的稳定性问题。

在你不想做的时候,正是应该做的时候。 916

Mellanox CX7网卡搭配400G光模块实战:从选型到部署的完整指南

本文详细解析了Mellanox CX7网卡与400G光模块的选型策略与部署实践,涵盖硬件对比、兼容性验证及性能调优。重点介绍了OSFP光模块的选择要点和常见问题排查方法,帮助用户构建高性能网络基础设施,适用于AI训练、金融交易等场景。

efc1234567的博客 1291

[风格迁移系列四: DIN] Dynamic Instance Normalization for Arbitrary Style Transfer (动态实例归一化)

Dynamic Instance Normalization for Arbitrary Style Transfer 一、DIN 操作 动态实例归一化包括一个实例归一化和一个动态卷积操作(可以是标准的卷积,可变形卷积和组卷积)。其中 weight net 和 bias net 由简单的卷积层和自适应池化层构成。公式如下: DIN(FcL)=IN(FcL)∗WL+bLDIN(F_c^L)=IN(F_c^L)*W^L+b^LDIN(FcL​)=IN(FcL​)∗WL+bL 其中 FcF_cFc​ 是内容输入

kevinoop 的博客 1994

Cocos Creator发布微信小游戏:深度定制与去除默认加载页面的实践指南

本文详细介绍了如何使用Cocos Creator发布微信小游戏时去除默认加载页面的实践方法。通过修改构建配置和重写启动逻辑,开发者可以自定义加载体验,提升品牌一致性。文章还提供了进阶优化方案和常见问题解决方案,帮助开发者实现更专业的微信小游戏发布流程。

weixin_27972919的博客 568

uniapp:实现扫描二维码+自定义扫描框+扫一扫功能,支持扫码识别二维码、条形码(条码)、微信/支付宝等二维码功能,自定义扫码页面可添加按钮或文字展示布局(移动端H5网页/小程序/安卓苹果APP端)

UNI-APP实现扫描二维码,uniapp扫描条形码,uniapp实现扫一扫功能,扫码成功后跳转页面,uniApp扫描条码,uniApp-H5 使用摄像头扫码功能(扫一扫),实现手机扫描二维码并跳转全过程示例代码,用户扫码后自动跳转到链接,uniapp怎么调用扫一扫功能,uniapp实现扫一扫功能,uniapp请求相机使用权限,扫一扫权限申请,uniapp调用摄像头扫码,uniapp实现调用相机扫码,UniApp 实现扫描二维码,uniapp APP安卓苹果ios实现扫码扫一扫,Uniapp微信小程序扫描二

✅ 精选推荐文章 4708

深度学习之常用归一化(Normalization)

本文介绍了深度学习中常用的几种归一化方法,包括Batch Normalization(BN)、Layer Normalization(LN)、Instance Normalization(IN)、Group Normalization(GN)和Spectral Normalization(SN)。这些方法的核心差异在于归一化的维度选择:BN按通道跨样本归一化,适用于大batch CNN;LN按样本跨通道归一化,适合NLP任务;IN单样本单通道归一化,用于风格迁移;GN单样本分组通道归一化,适合小batch场

weixin_48495360的博客 1121

RT-DETR改进策略【注意力机制篇】| 2024 PPA 并行补丁感知注意模块,提高小目标关注度

本文记录的是利用改进检测精度,详细说明了优化原因,注意事项等。原论文在红外小目标检测任务中,小目标在多次下采样操作中容易丢失关键信息。通过替代编码器和解码器基本组件中的传统卷积操作,更好地保留小目标的重要信息。HCF-Net: Hierarchical Context Fusion Network for Infrared Small Object Detection采用多分支特征提取策略,通过不同分支提取不同尺度和层次的特征。利用局部、全局和串行卷积分支,对输入特征张量进行处理。通过控制 patch si

Limiiiing的博客 1648

深度学习模型组件-InstanceNorm-实例归一化(Instance Normalization)

Instance Normalization(实例归一化,简称InstanceNorm)是一种用于深度学习模型的归一化技术,最早由 Dmitry Ulyanov 等人 在 2016 年的论文`《Instance Normalization: The Missing Ingredient for Fast Stylization》`中提出。它最初是为风格迁移(Style Transfer)任务设计的,但后来被广泛应用于生成对抗网络(GAN)、计算机视觉等领域。

404 Not Found 2733

SSD |(二)SSD主控

控制器作为一个片上系统,处理来自用户端的命令并负责管理闪存颗粒。

知识库搭建ing 1962

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

深度学习模型组件-AdaIN-自适应实例归一化(Adaptive Instance Normalization, AdaIN)

自适应实例归一化(AdaIN)是一种用于风格迁移(Style Transfer)和图像生成的归一化方法,由 Huang & Belongie在 2017 年提出。其核心思想是让目标风格图像的统计信息(均值和标准差)直接影响内容图像的特征,从而实现风格转换。AdaIN 主要用于 风格化生成任务,如 StyleGAN 和图像风格迁移(Style Transfer)等。

404 Not Found 2880

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

详说Normalization(Batch Normalization,Layer Normalization,Instance Normalization,Group Normalization)

详说各种 Normalization Batch Normalization 是 Sergey 等人于2015年在 Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 中提出的一种归一化方法。 在开始讨论之前, 我们需要先探讨一个问题, 对于深度神经网络而言, 什么...

生命在于折腾! 2760

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

深度学习中的归一化技术详解:BN、LN、IN、GN

本文全面解析四种主流归一化技术:BatchNorm、LayerNorm、InstanceNorm 和 GroupNorm,涵盖原理、计算方式、适用场景及PyTorch实现。

weixin_51122828的博客 1394

深度学习中的Normalization总结(BN/LN/WN/IN/GN)

文章目录简介独立同分布(i.i.d)Internal Covariate ShiftBatch-Normalization为什么用BNBN怎么操作InferenceBatchNorm的好处 简介 在深度学习领域,Normalization用得很多,最近在学习各种Normalization方法的时候颇有感悟和收获,特此记录。 BN(Batch Normalization)于2015年由 Google...

aift的专栏 8045

Batch Normalization笔记

进行Normalization,输出一批量数据。问题是:无法一次性输入所有的训练数据到网络中!需要batch化,也就是常常听到的——你一次输入到网络的数据,这个数据的量,也就是batch size。测试/推理阶段通常没有batch一说,因此用训练阶段的moving average of。这个可以把他理解为一个巨大的神经网络:输入一批量数据,这批量数据会产生对应的。神经网络中内部层的输出也需要Normalization。变化差距大时,不同方向的斜率非常大。的改变,会影响到后续其他的输出。

cgaowei的博客 762

Norm汇总

本文系统介绍了深度学习中常用的归一化技术及其特性。主要包括:批量归一化(BN)通过标准化每层输入加速训练收敛;层归一化(LN)适用于RNN等序列模型;实例归一化(IN)独立处理样本特征,适用于风格迁移;组归一化(GN)结合通道分组,解决小批量问题;自适应归一化(AdaIN/adaLN)实现特征对齐;权重归一化(WN)直接优化网络参数。这些方法在计算维度、适用场景和性能表现上各具特点,BN在N/H/W维度计算,LN在C/H/W维度,IN在H/W维度,而GN则进行通道分组处理。合理选择归一化方法能有效提升模型训

倚杖柴门外,临风听暮蝉。 1562
上一篇: 深入理解Einsum:MSA共进化特征提取与标准注意力机制的对比
下一篇: PyTorch中view/transpose/permute的内存可视化解析
broken_utopia
博客等级 码龄4年 79粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值