当前位置: 首页 > news >正文

DIP: Spectral Bias of DIP 频谱偏置解释DIP

On Measuring and Controlling the Spectral Bias of the Deep Image Prior

文章目录

  • On Measuring and Controlling the Spectral Bias of the Deep Image Prior
    • 1. 方法原理
      • 1.1 动机
      • 1.2 相关概念
      • 1.3 方法原理
        • 频带一致度量与网络退化
        • 谱偏移和网络结构的关系
        • Lipschitz-controlled 卷积层
        • Gaussian-controlled 上采样层
        • 自动停止迭代过程
    • 2. 实验结果
    • 3. 总结

文章地址:https://arxiv.org/pdf/2107.01125.pdf

代码地址: https://github.com/shizenglin/Measure-and-Control-Spectral-Bias

参考博客: https://zhuanlan.zhihu.com/p/598650125


1. 方法原理

1.1 动机

动机

  • Deep Image Prior已经被广泛地应用于去噪、超分、图像恢复等
  • 但是我们尚不清楚如何在网络架构的选择之外控制DIP
  • DIP存在性能达到峰值之后退化的问题 --> 需要early stopping

贡献

  • 使用谱偏移度量和解释 DIP的原理
    • DIP学习目标图像低频分量的效率比高频分量高
  • 控制谱偏移
    • 使用Lipschitz-controlled 正则化和 Lipschitz 批归一化加速和稳定优化过程
    • 使用 上采样方法(bilinear upsampling)引入了倾向于恢复低频分量的特点(谱偏移)
    • 使用了一种简单的early stopping策略防止多余的计算

1.2 相关概念

谱偏移原则是指:神经网络拟合低频信息的效率比高频信息快

相关文章参考:

  • On the Spectral Bias of Neural Networks
  • FREQUENCY PRINCIPLE: FOURIER ANALYSIS SHEDS LIGHT ON DEEP NEURAL NETWORKS

用其中的一些图进行解释:

  • 随着迭代的进行,神经网络的输出(绿色线)首先拟合的是真实观测数据的低频,然后再去逐渐拟合高频

在这里插入图片描述


反(逆)问题根据观测结果获取真实模型的一种求解模式。具体的可以参考

  • Untrained Neural Network Priors for Inverse Imaging Problems: A Survey

注意反问题求解存在一个普遍的问题:多解性。也就是多个反演结果的合成数据都可以和观测数据匹配。通常一个减少多解性的方法就是添加约束条件(在公式中表现为正则化约束)


1.3 方法原理

频带一致度量与网络退化

  这篇文章是从频率域的角度进行谱偏移分析的,用 { θ 1 , . . . , θ T } \{\theta^{1},...,\theta^{T}\} {θ1,...,θT}表示第对应迭代次数网络的参数,用 { f θ 1 , . . . , f θ T } \{f_{\theta^{1}},...,f_{\theta^{T}}\} {fθ1,...,fθT}表示对应的网格过程。对图片频率分析需要使用傅里叶变换获得 频率域的信息,用 F ( f θ ( t ) ) F(f_{\theta^{(t)}}) F(fθ(t))表示。频谱图的表示如下:

如果对标签图片也做一次傅里叶变换,那么可以求解网络输出和这个结果的比值
H θ ( t ) = F { f θ ( t ) } F { y 0 } H_{\theta^{(t)}} = \frac{F\{f_{\theta^{(t)}}\}}{F\{y_0\}} Hθ(t)=F{y0}F{fθ(t)}

  • 这个比值越接近于1表示网络输出和标签的相关性越高
  • H图像是一个以中心对称的图像,这里为方便统计就将其分割成为多个同心圆环,求圆环中的平均值作为这个圈内的值。也就是将一个二维的度量变为了一个一维的度量
  • 文章中将频率划分为了:lowest、low、medium、high和highest五个部分

这个度量比值在DIP不同应用场景中随着迭代次数的变化

  • 随着DIP迭代次数的增加,PSNR会先达到最高然后缓慢降低(性能达到峰值之后会下降)
  • 在PSRN最高的时候(图中绿线),恰好是lowest分量的频带一致性刚好最高的时候
  • 通过下图验证了 DIP也存在谱偏移的现象:低频分量学得更快且频带一致性很高,而高频分量学习相对较慢且频带一致性较低
  • 随着高频部分的频带一致性提高,PSNR下降

谱偏移和网络结构的关系

前面有研究表示Encoder-Decoder结构的DIP效果更好,这里作者对比了三种不同结构进行测试对比(a. 没有Encoder部分的DIP; b. 没有上采样层的DIP;):

  • 不论什么结构谱偏移都存在
  • 去掉上采样层的Decoder结构(ConvNet)拟合高频的效率更高,这里表现为高频部分的频带一致性高
  • 无上采样层的ConvNet结构最大的PSNR比Decoder和DIP低

结论

  • 无训练网络UNNP可以解决逆图像问题的原因是:低频学习效率高,高频学习效率相对较慢(谱偏移)
  • 高频信息通常为为结构高频信息和噪声高频信息,当网络开始学习噪声高频信息的时候,网络恢复的性能开始下降
  • 这里通过一个类似消融实验的方法说明上采样层是可以提高PSNR的,但是这会影响低频的收敛速度

防止网络退化,平衡性能与效率的方向

  • 保证性能的前提下,使用参数量更少的 Decoder结构 替代DIP的 Encoder-Decoder结构
  • 性能退化:抑制网络对高频噪声的学习(使用上采样层)
  • 加速收敛:使用更合适的上采样层
  • 提前停止策略:自动检测?

Lipschitz-controlled 卷积层

从频率域理解卷积操作

  • 对一个时间域/空间域的变量做一个傅里叶变换其实是将作用域变换到了频率域,这样的其中一个作用是:
    • 将空间域的卷积操作 变为 频率域的乘积操作,简化计算
    • 当然对于信号处理还有更多的好处,比如FK变换可以用于滤波
  • 图像和“卷积核”的作用在频率域其实就是一个乘积过程
    • 在这里插入图片描述

卷积核具有滤波的作用,但是什么样的卷积核可以抑制高频呢?


L-Lipschitz连续
这个概念很有意思,WGAN-GP中也用到了

其定义是:如果函数f在区间Q中,以常数L Lipschitz连续,那么对于 x , y ∈ Q x,y \in Q x,yQ有:
∣ ∣ f ( x ) − f ( y ) ∣ ∣ ≤ L ∣ ∣ x − y ∣ ∣ ||f(x)- f(y)|| \leq L||x - y|| ∣∣f(x)f(y)∣∣L∣∣xy∣∣

常数L就被称为函数f在区间Q上的 Lipschitz常数。Lipschitz连续其实是限制了连续函数f的局部变动幅度不能超过某一个常量。我个人感觉一个非常更简单地理解这个概念的方法就是将稍微变动一下这个公式:
∣ ∣ f ( x ) − f ( y ) ∣ ∣ ∣ ∣ x − y ∣ ∣ ≤ L \frac{||f(x)- f(y)||}{||x - y||} \leq L ∣∣xy∣∣∣∣f(x)f(y)∣∣L
这个东西看起来就像是求导了,更多的可以参考https://blog.csdn.net/FrankieHello/article/details/105739610


结合Lipschitz和频谱分析

假设卷积层的 f f f是符合C-Lipschitz的,存在:
∣ f ^ ( k ) ∣ ≤ C ∣ k ∣ 2 ≤ ∣ ∣ w ∣ ∣ s n ∣ k ∣ 2 |\hat{f}(k)| \leq \frac{C}{|k|^2} \leq \frac{||w||_{sn}}{|k|^2} f^(k)k2Ck2∣∣wsn

  • k表示频率, ∣ f ^ ( k ) ∣ |\hat{f}(k)| f^(k)表示傅里叶系数的模(有实部和虚部)
  • 分母是 k 2 k^2 k2表示在高频的时候衰减很强,学习更高的频率需要更高的频谱范数(分子)
  • ∣ ∣ w ∣ ∣ s n ||w||_{sn} ∣∣wsn 表示卷积层参数矩阵w的谱范数,可以通过限制谱范数的上限来限制卷积层学习更高频率的能力
    • ∣ ∣ w ∣ ∣ w ∣ ∣ s n ∣ ∣ s n = 1 ||\frac{w}{||w||_{sn}}||_{sn} = 1 ∣∣∣∣wsnwsn=1, ∣ ∣ w λ ∣ ∣ w ∣ ∣ s n ∣ ∣ s n = λ ||\frac{w\lambda}{||w||_{sn}}||_{sn} = \lambda ∣∣∣∣wsnwλsn=λ
    • w m a x ( 1 , ∣ ∣ w ∣ ∣ s n / λ ) \frac{w}{max(1,||w||_{sn}/\lambda)} max(1,∣∣wsn/λ)w

注意这里我们想要达到的一个效果就是:限制最高可以学习的频率。可以选择一个合适的 λ \lambda λ在保证恢复效果的同时不去恢复噪声信号。

其他网络层对Lipschitz常数的影响


Gaussian-controlled 上采样层

插值、邻近上采样层的平滑操作会让DIP网络收敛速度变慢,但是上采样层对于抑制高频信息又有一定的作用,为了平衡二者作者引入了 gaussian-controlled上采样层。

方法就是:转置卷积 + 高斯核

  • 转置卷积可以自定义上采样的卷积核
  • 为了控制平滑程度,卷积核最简单的就是高斯核
  • 实验不同的高斯核 σ \sigma σ越小收敛越快,但是PSNR越小

自动停止迭代过程

  • 利用Lipschitz方法限制了网络学习的最高频率噪声,避免了网络的退化
  • 当高频部分到达了上界限,也就意味着网络在之前就已经收敛了
  • 怎么评估高频到达了上界限
    • r = B l u r r i n e s s S h a r p n e s s r = \frac{Blurriness}{Sharpness} r=SharpnessBlurriness
    • 即当模糊度/锐度之间的导数小于预先设置的阈值的时候,停止迭代
    • r ( f θ ) = B ( f θ ) / S ( f θ ) r(f_{\theta}) = B(f_{\theta})/S(f_{\theta}) r(fθ)=B(fθ)/S(fθ)
    • Δ r ( f θ ( t ) ) = ∣ 1 n ∑ i = 1 n r ( f θ ( t − n − i ) ) − 1 n ∑ i = 1 n r ( f θ ( t − n − i ) ) ∣ \Delta r(f_{\theta ^{(t)}}) = |\frac{1}{n}\sum_{i=1}^{n}r(f_{\theta}^{(t-n-i)}) - \frac{1}{n}\sum_{i=1}^{n}r(f_{\theta}^{(t-n-i)})| Δr(fθ(t))=n1i=1nr(fθ(tni))n1i=1nr(fθ(tni))

2. 实验结果

  • 去噪

  • Image deblockign

    • 在这里插入图片描述
  • Image Inpainting

  • 在这里插入图片描述

3. 总结

研究思路

  1. 从谱偏置方向分析DIP的工作,网络先拟合低频信息,逐渐拟合高频信息
  2. 怎么控制拟合高频信息?–> 高频截断 --> 应用Lipschitz理论控制,解决网络层退化的问题
  3. 网络训练慢怎么解决?–>分析发现常规的上采样层相当于一个低通滤波器,引入了过多的低频分量导致很多时候收敛非常慢,所以使用 gaussian 核控制的转置卷积方法 平衡网络收敛效率的问题。
  4. 怎么Early stopping 减少迭代次数? --> 使用模糊度与锐度的比值的导数进行衡量

优点

  • 将GAN 谱优化的策略放到DIP之中,在频率域中分析各个层的性质:低频收敛快,高频收敛慢。
  • 用谱偏置的思路解释了网络退化问题
  • 提出频带一致性模糊度和锐度比值梯度 平衡了DIP收敛效率和效果

改进方向

  • 就个人观点:噪声这里假设都是高频的,但是低频噪声、结构噪声是否会有影响?
  • 该研究给实际应用DIP提供了很大的可能性,但是就实验效果来看并没有提升,甚至有所下降。所以基于这种方法怎么去同时提高效果?
  • 就我个人想法:继续减少参数化网络的参数量(PIP等工作),并且提高恢复的效果(持续研究方向) 是现在的研究方向。

相关文章:

DIP: Spectral Bias of DIP 频谱偏置解释DIP

On Measuring and Controlling the Spectral Bias of the Deep Image Prior 文章目录 On Measuring and Controlling the Spectral Bias of the Deep Image Prior1. 方法原理1.1 动机1.2 相关概念1.3 方法原理频带一致度量与网络退化谱偏移和网络结构的关系Lipschitz-controlle…...

【考研数学】概率论与梳理统计 | 第一章——随机事件与概率(1)

文章目录 一、随机试验与随机事件1.1 随机试验1.2 样本空间1.3 随机事件 二、事件的运算与关系2.1 事件的运算2.2 事件的关系2.3 事件运算的性质 三、概率的公理化定义与概率的基本性质3.1 概率的公理化定义3.2 概率的基本性质 写在最后 一、随机试验与随机事件 1.1 随机试验 …...

LeetCode 36题:有效的数独

题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图&#xff…...

word横向页面侧面页码设置及转pdf后横线变竖线的解决方案

在处理材料的时候,会遇到同一个文档里自某一页开始,页面布局是横向的,这时候页码要设置在侧面,方法是双击页脚,然后在word工具栏上选择“插入”——>“文本框”——>“绘制竖版文本框”,然后在页面左…...

华为OD机试 - 字符串划分(Java JS Python)

题目描述 给定一个小写字母组成的字符串 s,请找出字符串中两个不同位置的字符作为分割点,使得字符串分成三个连续子串且子串权重相等,注意子串不包含分割点。 若能找到满足条件的两个分割点,请输出这两个分割点在字符串中的位置下标,若不能找到满足条件的分割点请返回0,…...

使用 `nmcli` 在 CentOS 8 上添加永久路由

CentOS 8 使用 NetworkManager 作为默认的网络管理工具,因此我们可以使用 nmcli 工具来实现相同的目标。使用 nmcli 可以更加直观地管理路由,并且更符合 CentOS 8 的默认网络管理方式。 以下是使用 nmcli 在 CentOS 8 上添加永久路由的步骤:…...

Java基础五之for循环小练习

加油,新时代大工人! 一、Java基础之算术运算符 二、Java基础之类型转换 三、Java基础之【字符串操作以及自增自减操作】 四、Java基础之赋值运算符和关系运算符 package base;import java.io.InputStream; import java.util.Scanner;/*** author wh* date 2023年08…...

解决 Python RabbitMQ/Pika 报错:pop from an empty deque

使用 python 的 pika 包连接rabbitmq,代码如下: import pika import threading import timedef on_message(channel, method_frame, header_frame, body):print(fon_message thread id: {threading.get_ident()})delivery_tag method_frame.delivery_t…...

观察者模式实战

场景 假设创建订单后需要发短信、发邮件等其它的操作,放在业务逻辑会使代码非常臃肿,可以使用观察者模式优化代码 代码实现 自定义一个事件 发送邮件 发送短信 最后再创建订单的业务逻辑进行监听,创建订单 假设后面还需要做其它的…...

035_小驰私房菜_Qualcomm账号注册以及提case流程

全网最具价值的Android Camera开发学习系列资料~ 作者:8年Android Camera开发,从Camera app一直做到Hal和驱动~ 欢迎订阅,相信能扩展你的知识面,提升个人能力~ 一、账号注册 1)登陆高通网站Wireless Technology & Innovation | Mobile Technology | Qualcomm, 采用…...

uniapp input输入框placeholder文本右对齐

input输入框placeholder文本右对齐 给input标签加上placeholder-class,这个是给placeholder设置样式,右对齐这就是text-align:right;字体颜色之类依次编辑即可。...

分布式监控平台—zabbix

前言一、zabbix概述1.1 什么是zabbix1.2 zabbix的监控原理1.3 zabbix常见五个应用程序1.4 zabbix的监控模式1.5 监控架构1.5.1 C/S(server—client)1.5.2 server—proxy—client1.5.3 master—node—client 二、部署zabbix2.1 部署 zabbix server 端2.2 …...

【leetcode】第一章数组-2

977. 有序数组的平方 简单的方法是平方后使用排序方法第2种方法是双指针方法,从两边进行判断,将最大的从后往前放 public static int[] sortedSquares(int[] nums) {// 输入:nums [-4,-1,0,3,10]// 输出:[0,1,9,16,100]// 解释…...

程序使用Microsoft.XMLHTTP对象请求https时出错解决

程序中使用Microsoft.XMLHTTP组件请求https时出现如下错误: 出错程序代码示例: strUrl "https://www.xxx.com/xxx.asp?id11" dim objXmlHttp set objXmlHttp Server.CreateObject("Microsoft.XMLHTTP") objXmlHttp.open "…...

Linux安装配置nginx+php搭建

Linux安装配置nginxphp搭建 文章目录 Linux安装配置nginxphp搭建1.nginx源码包编译环境和安装相应的依赖1.1 安装编译环境1.2 安装pcre库、zlib库和openssl库 2.安装nginx2.1 在[nginx官网](https://nginx.org/en/download.html)上获取源码包并进行下载2.2 进行解压编译 3.启动…...

springboot的各种配置

1.AOP配置 <!-- AOP的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency>package com.qf.HomeWork.aop;import lombok.extern.slf4j.Slf4j; im…...

OSI七层模型及TCP/IP四层模型

目录 OSI七层模型 TCP/IP四层模型 OIS七层模型和TCP/IP模型图 七层详解 两种模型比较 为什么OSI七层体系结构不常用 四层详解 网络为什么要分层&#xff1f; 说说 OSI 七层模型和 TCP/IP 四层模型的关系和区别 OSI七层模型 OSI&#xff08;Open System Interconnect&a…...

MDN-Web APIs

参考资料 文章目录 简介DOM APIXMLHttpRequestWeb Storage APIWebsockets API 简介 Web APIs&#xff08;Application Programming Interfaces&#xff09;是用于与浏览器环境中的 Web 功能进行交互的一组接口和方法集合。通过 Web APIs&#xff0c;开发人员可以访问浏览器提…...

2023国赛数学建模C题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…...

暑假集训笔记

刷题刷的好累啊...不想刷题了...然后就来写题解了... 昨天晚上打了场div2..2000来名&#xff0c;加了155分....现在rating1281...我是菜鸡..暑假之前就打到了1200分以上了&#xff0c;结果暑假一掉再掉&#xff0c;直接掉到1100了...然后我就一直压力很大....... 昨天在机房打…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...