二维小波变换_Wavelet Pooling小波池化的思考
本文主要针对Wavelet pooling for convolutional neural networks,ICLR 2018. 简而言之,我认为这篇文章存在一些问题,当然可能是自己理解有误。于是把自己的看法分享出来,希望各位批评指正。
论文地址:
Wavelet Pooling for Convolutional Neural Networksopenreview.net
论文讲了什么?
首先,池化是以舍弃信息来实现正则化的效果。传统的池化操作有问题。max pooling, average pooling和probabilistic pooling都有一些局限性。例如,当主要的特征幅度值低于不重要的特征时,重要的特征在max pooling中就丢失了。而average pooling接收了幅值大的特征和幅值小的特征,会稀释幅值大的特征。具体如图所示,
于是相对于traditional neighborhood pooling,这篇文章从wavelet domain进行操作。具体来说,首先介绍了如何变换到wavelet domain,
这两个公式(6) (7)分别是小波变换的近似函数和细节函数,分别用于计算输入map的低频子带和高频子带。二维的输入分别在行方向和列方向应用这两个公式,于是得到四个子带LL,LH,HL和HH。其中LL表示低频特征,其余带H的表示高频特征。由于小波变换引入了下采样,因此四个子带map的边长是输入的一半。反变换可以将四个子带完美地重建出输入。
小波变换可以进行多级。对于输入map I,一级小波变换记为
LL1, LH1, HL1, HH1 = DWT(I)
对应的逆变换为
I = IDWT(LL1, LH1, HL1, HH1)
二级小波变换针对LL1,为
LL2, LH2, HL2, HH2 = DWT(LL1)
对应的逆变换为
LL1 = IDWT(LL2, LH2, HL2, HH2)
介绍完这些基本知识,来看文章的方法是怎样的:
文章没有给出公式表达,我用公式总结一下。对于输入图像I,进行两级小波变换,得到了
LL2, (LH2, HL2, HH2), (LH1, HL1, HH1) = DWT(DWT(I))
舍弃最高频的子带LH1, HL1和HH1,保留相对低频的LL2, (LH2, HL2, HH2)。最后对保留的二级小波系数进行反变换重建池化后的图像,即
I‘ = IDWT(LL2, LH2, HL2, HH2)
根据之前对小波变换的介绍,不难发现I‘=LL1。所以为什么要对输入图像I进行两次小波变换,再进行一次逆变换呢?进行一次小波变换,舍弃(LH1, HL1, HH1),保留LL1不就完成了小波池化吗?这两种做法有什么区别?我是觉得完全相同。
另外一个槽点在于,文章的实验只使用了Haar小波基。Haar小波基产生的LL1分量对应的卷积核为[[1, 1], [1, 1]],这和average pooling没有任何区别呐。文章开始说average pooling具有的缺点,文章实验用的方法也逃不掉。然后,实验结果是不相同的。
当然这个思路(进行一次小波变换,舍弃(LH1, HL1, HH1),保留LL1)已经发表在了ECCV 2018 Workshop了,论文题目为Multiple Wavelet Pooling for CNNs。另外Haar小波基等同于average pooling的问题也被消除了——该文选取了两种不同的小波基做pooling然后concat起来。这样,就算用了Haar小波基,另一个小波基也能产生不同于average pooling的效果。
Multiple Wavelet Pooling的故事听着合理多了,但我仍然想不明白Wavelet Pooling的作者为什么要做两次正再做一次逆变换,是不是有什么理解不到位的地方,于是抱着求证的心态就去联系作者了。为了更高效的交流,我把自己的理解拆分成yes或no的选择来征求作者的意见。例如,我这样理解wavelet pooling是否正确,haar-based wavelet pooling和average pooling的输出是否相等,如果只用haar bases的话wavelet pooling和multiple wavelet pooling输出相同等等。作者没有正面回复所有问题,而是回答的比较宏观,给了几张图像(分别是wavelet pooling的输出,average pooling的输出)和对应代码,通过这几张图的不同来说明haar wavelet pooling和average pooling是不相同的。但我检查了代码,发现wavelet pooling的小波基参数是'db2'而非‘haar’小波基,这结果当然是不同的。于是我将修改成haar小波基的结果(跟average pooling相同)反馈给他并指出代码的问题。这轮依然没有正面回应yes或no的问题,而是
感觉作者并不想理我了 。作为一个强迫症,就把自己的想法分享出来,想和大家讨论确认下。
Reference:
[1] Williams, Travis, and Robert Li. "Wavelet pooling for convolutional neural networks." ICLR2018.
[2] Liu, Pengju, et al. "Multi-level wavelet-CNN for image restoration."Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition Workshops. 2018.
二维小波变换_Wavelet Pooling小波池化的思考相关推荐
- 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换
从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换 本文是边学习边总结和摘抄各参考文献内容而成的,是一篇综述性入门文档,重点在于梳理傅里叶变换到伽柏变换再到小波变换的 ...
- SPP(spatial pyramid pooling) 空间金字塔池化
(1)SPP层能达到什么样的效果? 由于全连接层对数据大小的输入是由要求的,比如要求是256*1才能输入到全连接层里面,那你288*1的特称图就不能输入到全连接层了. SPP层能达到的效果是:不管你的 ...
- Global Average Pooling全局平均池化的一点理解
Traditional Pooling Methods 要想真正的理解Global Average Pooling,首先要了解深度网络中常见的pooling方式,以及全连接层. 众所周知CNN网络中常 ...
- 卷积和池化matlab 实现,UFLDL新版教程与编程练习(七):Convolution and Pooling(卷积和池化)...
UFLDL是吴恩达团队编写的较早的一门深度学习入门,里面理论加上练习的节奏非常好,每次都想快点看完理论去动手编写练习,因为他帮你打好了整个代码框架,也有详细的注释,所以我们只要实现一点核心的代码编写工 ...
- 池化(Pooling)
基础概念 在图像处理中,由于图像中存在较多冗余信息,可用某一区域子块的统计信息(如最大值或均值等)来刻画该区域中所有像素点呈现的空间分布模式,以替代区域子块中所有像素点取值,这就是卷积神经网络中池化( ...
- CNN(卷积层convolutional layer,激励层activating layer,池化层pooling,全连接层fully connected)
CNN产生的原因:当使用全连接的神经网络时,因为相邻两层之间的神经元都是有边相连的,当输入层的特征纬度非常高时(譬如图片),全连接网络需要被训练的参数就会非常多(参数太多,训练缓慢),CNN可以通过训 ...
- 深度学习与神经网络(七)——卷积神经网络之池化pooling 上采样upsample与降采样downsample(下采样)(subsample)(nn.MaxPool2d)
池化层pooling与采样 upsample与downsample upsample(interpolating)是上采样,是图片的放大 unpool是上采样的一种 downsample(subsam ...
- 一文弄懂各大池化Pooling操作
池化Pooling是卷积神经网络中常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维,其本质是降维.在卷积层之后,通过池化来降低卷积层输出的特征维度,减少网络参数和计算成本的同时,降低过 ...
- 卷积神经网络中的池化方法(pooling)总结
在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合). 为什么可以通过降低维度呢? 因为图像具有一种"静态性 ...
最新文章
- linux版魔兽服务端,linux下玩warcraft III(魔兽)
- 剑指offer--day07
- 中国AI专利申请量占全球74%,腾讯、百度、OPPO前五
- 从复现人类智能到挑战AI大工程,智能计算正经历什么考验?
- Python之PIL之绘图:基于Python的PIL库绘制各种图形、添加文字等
- CubieBoard开发板不用ttl线也不用hdmi线的安装方法
- html追加datatype,jquery ajax中dataType的设置问题
- XML 读写(命名空间)
- win7下 apache2.2 +php5.4 环境搭建
- Nike Air Jordan Sneakers
- jQuery基本过滤选择器
- php 解析 标记,如何使用PHP-simple-HTML DOM解析器获取标记的属性
- fastjson取某个key_JAVA学习:怎么给函数取一个“合理”的名字
- python版webpower的edm的api接口
- QT编写的数据转曲线工具
- 李在福羽毛球教学经典视频汇总31集
- 关于前端在vue中实现‘距离某个时间点的倒计时’问题:设置了间隔计算时间,刚开始有停顿。
- Java中jdk1.8和jdk17相互切换
- 静态链接库(LIB)和动态链接库(DLL),DLL的静态加载和动态加载,两种LIB文件。
- 甘肃省计算机二级考试试题,2013甘肃省计算机等级考试二级理论考试试题及答案...