通俗易懂理解小波池化/WaveCNet

news2024/10/2 1:34:28

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。

一、参考资料

github代码:WaveCNet

通俗易懂理解小波变换(Wavelet Transform)

二、相关介绍

关于小波变换的详细介绍,请参考另一篇博客:通俗易懂理解小波变换(Wavelet Transform)

1. DWT和IDWT原理

小波变换是可逆的,小波变换可以通过小波分解和重构,恢复原始图像详细。

在这里插入图片描述

对于输入图像 I I I,进行两级小波变换,可以得到:
L L 2 , ( L H 2 , H L 2 , H H 2 ) , ( L H 1 , H L 1 , H H 1 ) = D W T ( D W T ( I ) ) LL2, (LH2, HL2, HH2), (LH1, HL1, HH1) = DWT(DWT(I)) LL2,(LH2,HL2,HH2),(LH1,HL1,HH1)=DWT(DWT(I))
舍弃最高频的子带LH1, HL1和HH1,保留相对低频的LL2, (LH2, HL2, HH2)。最后对保留的二级小波系数进行逆变换,重构图像:
I ′ = I D W T ( L L 2 , L H 2 , H L 2 , H H 2 ) I^{\prime}= IDWT(LL2, LH2, HL2, HH2) I=IDWT(LL2,LH2,HL2,HH2)

三、小波池化

Wavelet Pooling小波池化的思考
小波变换和曲波变换用于池化层

以文献[1]为例,详细介绍小波池化。

1. 引言

池化是舍弃信息来实现正则化的效果。传统的 Max PoolingAverage Pooling都有一些局限性。Max pooling 是一个有效的池化方法,但可能过于简单;Average Pooling会产生模糊。当主要的特征幅度值低于不重要的特征时,重要的特征在max pooling中就丢失了。而Average Pooling接收了幅值大的特征和幅值小的特征,会稀释幅值大的特征。具体如下图所示:

在这里插入图片描述

并且,Average Pooling或Max Pooling是不可逆的。一旦进行平均池化或者最大池化,新的特征空间无法保留原先特征空间的所有信息。而小波池化是可逆的,能恢复所有的原始特征。

2. DWT与IDWT网络层

设计DWT和IDWT网络层的关键问题在于数据的前向(forward propagations)和后向传播(backward propagations)。本章节以1D正交小波和1D信号为例,分析DWT和IDWT。同理,可以推广到其他小波和2D/3D信号,只有细微的变化。

2.1 前向传播(Forward propagation)

对于1D信号 s = { s j } j ∈ Z \mathbf{s}=\{s_{j}\}_{j\in\mathbb{Z}} s={sj}jZ,通过DWT的低通滤波(low-pass filters)分解为低频成分 s 1 = { s 1 k } k ∈ Z \mathbf{s}_{1}=\{s_{1k}\}_{k\in\mathbb{Z}} s1={s1k}kZ,通过DWT的高通滤波(high-pass filters)分解为高频成分 d 1 = { d 1 k } k ∈ Z \mathbf{d}_{1}=\{d_{1k}\}_{k\in\mathbb{Z}} d1={d1k}kZ
{ s 1 k = ∑ j l j − 2 k s j , d 1 k = ∑ j h j − 2 k s j , ( 1 ) \left.\left\{\begin{array}{c}s_{1k}=\sum_jl_{j-2k}s_j,\\d_{1k}=\sum_jh_{j-2k}s_j,\end{array}\right.\right. \quad (1) {s1k=jlj2ksj,d1k=jhj2ksj,(1)
其中, l = { l k } k ∈ Z \mathbf{l}=\{l_{k}\}_{k\in\mathbb{Z}} l={lk}kZ h = { h k } k ∈ Z \mathbf{h}=\{h_{k}\}_{k\in\mathbb{Z}} h={hk}kZ 分别表示正交小波(orthogonal wavelet)的低通滤波(low-pass filters)和高通滤波(high-pass filters)。由 公式 ( 1 ) 公式(1) 公式(1) 可知,DWT包含两个过程:滤波和下采样。

使用IDWT,可以从 s 1 , d 1 s_1,d_1 s1,d1 重构 s s s
s j = ∑ k ( l j − 2 k s 1 k + h j − 2 k d 1 k ) . ( 2 ) s_j=\sum_k\left(l_{j-2k}s_{1k}+h_{j-2k}d_{1k}\right). \quad (2) sj=k(lj2ks1k+hj2kd1k).(2)
用矩阵和向量表示, 公式 ( 1 ) 公式(1) 公式(1) 公式 ( 2 ) 公式(2) 公式(2) 可以重写为:
s 1 = L s , d 1 = H s , ( 3 ) s = L T s 1 + H T d 1 , ( 4 ) \begin{aligned}\mathbf{s}_1&=\mathbf{L}\mathbf{s},\quad\mathbf{d}_1=\mathbf{H}\mathbf{s},\quad&(3)\\\mathbf{s}&=\mathbf{L}^T\mathbf{s}_1+\mathbf{H}^T\mathbf{d}_1,\quad&(4)\end{aligned} s1s=Ls,d1=Hs,=LTs1+HTd1,(3)(4)
其中
L = ( ⋯ ⋯ ⋯ ⋯ l − 1 l 0 l 1 ⋯ ⋯ l − 1 l 0 l 1 ⋯ ⋯ ⋯ ) , ( 5 ) \left.\mathbf{L}=\left(\begin{array}{ccccccc}\cdots&\cdots&\cdots&&&&\\\cdots&l_{-1}&l_0&l_1&\cdots&&\\&\cdots&l_{-1}&l_0&l_1&\cdots\\&&&&\cdots&\cdots\end{array}\right.\right),\quad(5) L= l1l0l1l1l0l1 ,(5)

H = ( ⋯ ⋯ ⋯ ⋯ h − 1 h 0 h 1 ⋯ ⋯ h − 1 h 0 h 1 ⋯ ⋯ ⋯ ) . ( 6 ) \left.\mathbf{H}=\left(\begin{array}{ccccccc}\cdots&\cdots&\cdots&&&\\\cdots&h_{-1}&h_0&h_1&\cdots&\\&&\cdots&h_{-1}&h_0&h_1&\cdots\\&&&&\cdots&\cdots\end{array}\right.\right).(6) H= h1h0h1h1h0h1 .(6)

对于2D信号 X \mathbf{X} X,DWT通常对每行(row) 和每列(column)进行1D DWT操作,也就是:
X l l = L X L T , ( 7 ) X l h = H X L T , ( 8 ) X h l = L X H T , ( 9 ) X h h = H X H T , ( 10 ) \begin{gathered} \mathbf{X}_{ll} =\mathbf{L}\mathbf{X}\mathbf{L}^{T}, \left(7\right) \\ \mathbf{X}_{lh} =\mathbf{HXL}^{T}, \left(8\right) \\ \mathbf{X}_{hl} =\mathbf{LXH}^{T}, \left(9\right) \\ \mathbf{X}_{hh} =\mathbf{HXH}^{T}, \left(10\right) \end{gathered} Xll=LXLT,(7)Xlh=HXLT,(8)Xhl=LXHT,(9)Xhh=HXHT,(10)
对应的IDWT可以表示为:
X = L T X l l L + H T X l h L + L T X h l H + H T X h h H . ( 11 ) \mathbf{X}=\mathbf{L}^T\mathbf{X}_{ll}\mathbf{L}+\mathbf{H}^T\mathbf{X}_{lh}\mathbf{L}+\mathbf{L}^T\mathbf{X}_{hl}\mathbf{H}+\mathbf{H}^T\mathbf{X}_{hh}\mathbf{H}.\quad(11) X=LTXllL+HTXlhL+LTXhlH+HTXhhH.(11)

2.2 反向传播(Backward propagation)

对于DWT的反向传播,首先对 公式 ( 3 ) 公式(3) 公式(3) 进行微分操作:
∂ s 1 ∂ s = L T , ∂ d 1 ∂ s = H T . ( 12 ) \frac{\partial\mathbf{s}_1}{\partial\mathbf{s}}=\mathbf{L}^T,\quad\frac{\partial\mathbf{d}_1}{\partial\mathbf{s}}=\mathbf{H}^T.\quad(12) ss1=LT,sd1=HT.(12)
类似的,对于1D IDWT的反向传播,微分操作可以表示为:
∂ s ∂ s 1 = L , ∂ s ∂ d 1 = H . ( 13 ) \frac{\partial\mathbf{s}}{\partial\mathbf{s}_1}=\mathbf{L},\quad\frac{\partial\mathbf{s}}{\partial\mathbf{d}_1}=\mathbf{H}.\quad(13) s1s=L,d1s=H.(13)
2D/3D DWT和IDWT的反向传播过程稍微复杂一点,但与1D DWT和IDWT类似。本文使用有限滤波器,例如Haar小波,它的低通滤波和高通滤波可以表示为: l = 1 2 { 1 , 1 } \mathbf{l}=\frac{1}{\sqrt{2}}\{1,1\} l=2 1{1,1} h = 1 2 { 1 , − 1 } \mathbf{h}=\frac{1}{\sqrt{2}}\{1,-1\} h=2 1{1,1}

在网络层中,对于多通道数据进行逐通道的DWT和IDWT操作。

3. WaveCNets网络模型

3.1 基于小波的通用去噪方法

给定一个2D的噪声数据 X \mathbf{X} X,随机噪声主要表现在其高频成分中。如下图所示,基于小波的通用去噪方法包括三个步骤:

  1. 利用DWT将噪声数据 X \mathbf{X} X 分解为低频成分 X l l \mathbf{X}_{ll} Xll 和高频成分 X l h , X h l , X h h \mathbf{X}_{lh},\mathbf{X}_{hl},\mathbf{X}_{hh} Xlh,Xhl,Xhh
  2. 过滤掉高频成分;
  3. 利用IDWT对处理后的成分进行重构数据。

在这里插入图片描述

3.2 最简单的基于去噪方法的小波

本文选择最简单的基于去噪方法的小波,也就是丢弃高频成分,如下图所示:

在这里插入图片描述

其中, D W T l l \mathrm{DWT}_{ll} DWTll 表示将特征图映射到低频成分的转换。

3.3 基于小波的下采样方法

本文通过用 D W T l l \mathrm{DWT}_{ll} DWTll 替换传统的下采样,设计出WaveCNets网络模型。如下图所示,(a) 表示传统的下采样方法,(b) 表示基于小波的下采样方法。

在这里插入图片描述

在WaveCNets网络中,将max-poolingaverage-pooling 直接替换为 D W T l l \mathrm{DWT}_{ll} DWTll 。同时,将 strided-convolution卷积替换为步长为1的卷积,也就是:
MaxPool s = 2 → DWT l l , ( 14 ) Conv s = 2 → DWT l l ∘ Conv s = 1 , ( 15 ) AvgPool s = 2 → DWT l l , ( 16 ) \begin{aligned}\text{MaxPool}_{s=2}&\to\text{DWT}_{ll},\quad&(14)\\\text{Conv}_{s=2}&\to\text{DWT}_{ll}\circ\text{Conv}_{s=1},\quad&(15)\\\text{AvgPool}_{s=2}&\to\text{DWT}_{ll},\quad&(16)\end{aligned} MaxPools=2Convs=2AvgPools=2DWTll,DWTllConvs=1,DWTll,(14)(15)(16)
其中 M a x p o o l s \mathrm {Maxpool_s} Maxpools C o n v s \mathrm {Conv_s} Convs A v g P o o l s \mathrm {AvgPool_s} AvgPools 分别表示 max-poolingstrided-convolutionaverage-poolings表示步长(stride)。

3.4 WaveCNets模型的优势

D W T l l \mathrm{DWT}_{ll} DWTll 对特征图进行去噪,移除高频成分,特征图尺寸减半。 D W T l l \mathrm{DWT}_{ll} DWTll 输出的低频成分,保存了特征图的主要信息,并提取出可识别的特征。在WaveCNets下采样过程中, D W T l l \mathrm{DWT}_{ll} DWTll 可以抵抗噪声的传播,有利于维持特征图中目标的基本结构。因此, D W T l l \mathrm{DWT}_{ll} DWTll 可以加快深度网络的训练,有利于更好的噪声鲁棒性提高分类模型的精度

4. (TensorFlow)代码实现

Tensorflow实现小波池化层

四、参考文献

[1] Li Q, Shen L, Guo S, et al. Wavelet integrated CNNs for noise-robust image classification[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2020: 7245-7254.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1402436.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【工具与中间件】GitGitHub相关知识与一些问题解决、工具推荐

文章目录 前言1. Git 基础快速回顾1.1 Git 相关概念简单回顾1.2 Git 基本命令1.2.1 分支命令1.2.2 推拉命令 2. Git Hub 创建仓库3. 版本控制实战3.1 创建本地项目3.2 绑定远程仓库3.3 代码推拉3.3.1 推拉实战3.3.2 合并请求 4. 补充与总结4.1 可能会遇到的问题4.2 补充&#x…

Unity -简单键鼠事件和虚拟轴

简单键鼠事件 — “Test_03” KeyTest 键鼠事件每帧都要监听,要放在Update()中处理 public class KeyTest : MonoBehaviour {// Start is called before the first frame updatevoid Start(){}// Update is called once per framevoid Update(){// 【鼠标点击事件…

15.1_使用Verilog设计:一个简单的状态机设计——序列检测器(可实现重复性检测)

使用Verilog设计:一个简单的状态机设计——序列检测器(可实现重复性检测) 1,一个简单的状态机设计:可重复性序列检测器2,可重复性状态机序列检测实现2.1,RTL设计代码实现2.2,tb测试代…

加码OT安全丨Fortinet与施耐德电气携手共创工业零信任安全创新方案

近日,专注于推动网络与安全融合的全球网络安全领导者 Fortinet在施耐德电气举办的第四季“绿色智能制造创赢计划”结营仪式上,正式与其签署联创方案合作协议,成为施耐德电气“生态合作伙伴”。双方将依托“基于关键装置/设备的微隔离防护”这…

【RT-DETR有效改进】Google | EfficientNetV2一种超轻量又高效的网络 (轻量化网络)

前言 大家好,我是Snu77,这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进,内容持续更新,每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本,同时修改内容也支持Re…

Oracle 高级网络压缩 白皮书

英文版白皮书在这里 或 这里。 本文包括了对英文白皮书的翻译,和我觉得较重要的要点总结。 执行概述 Oracle Database 12 引入了一项新功能:高级网络压缩,作为高级压缩选项的一部分。 本文概述了高级网络压缩、其优点、配置细节和性能分析…

基于SpringBoot的儿童疫苗预约系统的设计与实现-计算机毕业设计源码12222

摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 儿童疫苗预约管理,主要的模块包括查看首页、站点管理(轮播图、公告栏)用户管理(管理员、系统用…

【开源】基于JAVA语言的课程案例资源库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员需求分析2.2 用户需求分析 三、系统设计3.1 业务流程设计3.1.1 管理员业务流程设计3.1.2 用户业务流程设计3.1.3 首页功能模块及业务流程分析3.1.4 案例资源中心功能模块及业务流程分析3.1.5 用户信息中心功能模块…

seaborn可视化示例详解

目录 1、散点图 2、散点图回归线 3、折线图 4、频数柱状图 5、分组散点图 6、箱型图 7、数值分布柱状图 8、频数分布图 9、联合分布图 10、数值分布柱状图 11、相关系数热力图 划重点 少走10年弯路 Seaborn是一个基于Python的数据可视化库,Seaborn提供了许多用…

Keepalived + Nginx双主架构

Keepalived Nginx双主架构 环境准备: keepalived_master1服务器nginx:172.20.26.167 keepalived_master2服务器nginx:172.20.26.198 各服务器关闭selinux、防火墙等服务。 开机安装部署nginx 在172.20.26.167服务器上 yum install ngi…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (15) | 变分自编码器和扩散模型

前言 📚 笔记专栏:斯坦福CS231N:面向视觉识别的卷积神经网络(23)🔗 课程链接:https://www.bilibili.com/video/BV1xV411R7i5💻 CS231n: 深度学习计算机视觉(2017&#xf…

冒泡排序-BubbleSort

1、基本思路 从数组的左边开始,比较两个元素的大小,当左边大于右边时,更换左右元素位置,否则不改变;接着向右移动一步,比较第二个元素和第三个元素的大小,重复上述操作,直到最后一个…

chapter12-实战成绩通知短信系统(下)

注意!成绩短息通知服务的源码共分为两种:第一种为线性的程序,逻辑简单,但是格式杂乱;第二种为以类作为基础,封装了各种函数,逻辑较为复杂,但是格式清晰。建议新手先学习第一种代码风…

2. SpringBoot3 实战之用户模块接口开发

文章目录 开发模式和环境搭建开发模式环境搭建 1. 用户注册1.1 注册接口基本代码编写1.2 注册接口参数校验 2. 用户登录2.1 登录接口基本代码编写2.2 登录认证2.2.1 登录认证引入2.2.2 JWT 简介2.2.3 登录功能集成 JWT2.2.4 拦截器 3. 获取用户详细信息3.1 获取用户详细信息基本…

优化算法--李沐

目录 1.1梯度下降 1.2随机梯度下降 1.3小批量随机梯度下降 1.4冲量法 1.5 Adam 损失值也就是预测值与真实值之间的差值是f(x),x是所有超参数组成的一条向量,c是可以限制的,比如说权重大于等于0。 使用迭代优化算法求解一般只能保证找到局…

web开发学习笔记(12.mysql数据库进阶)

1.多表查询 2.内连接 3.外连接,分为左外连接和右外连接 左外连接完全包含左表的数据和两个表的交集 右外连接完全包含右表的数据和两个表的交集 4.子查询,又成为嵌套查询 分为标量子查询和列子查询和行子查询 首先是标量子查询 列子查询 in, not in…

sqlilabs第六十一六十二关

Less-61(GET - challenge - Double Query- 5 queries allowed -Variation 4) 手工注入 报错注入 Less-62(GET - challenge - Bilnd- 130 queries allowed -Variation 1) 手工注入 过于复杂简单写写 这个应该是用不了只能用延时 自动注入 写个脚本就可以

Mysql-全局锁、表锁、行锁

本文已收录于专栏 《数据库》 目录 全局锁概述说明开启方式应用场景 表锁概念说明实现方式意向锁 开启方式 行锁概念说明实现方式记录锁:间隙锁临键锁 总结提升 全局锁 概述说明 全局锁是是对整个数据库实例加锁,加锁后整个实例就处于只读状态&#xff…

bat批处理基础教学

bat批处理基础教学 titleset命令模式-算数运算重定向运算多命令运算| 管道符--左边的结果作为右边的输入接受外部参数 -%1注释 rem命令公共介绍- /?时间命令 date time启动 start调用其他bat文件 call计划任务查看环境变量 settelnet是远程端口命令,不加密判断ifpause>null…

Vue中$watch()方法和watch属性的区别

vue中$watch()和watch属性都是监听值的变化的,是同一个作用,但是有两个不同写法。 用法一: //注意:这种方法是监听不到对象的变化的。 this.$watch((newVal,oldVal)>{ }) 用法二: watch:{xxx:(newVal,oldVal)>…