本文主要针对Wavelet pooling for convolutional neural networks,ICLR 2018. 简而言之,我认为这篇文章存在一些问题,当然可能是自己理解有误。于是把自己的看法分享出来,希望各位批评指正。

论文地址:

Wavelet Pooling for Convolutional Neural Networks​openreview.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小波池化的思考相关推荐

  1. 从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换

    从傅里叶(Fourier)变换到伽柏(Gabor)变换再到小波(Wavelet)变换 本文是边学习边总结和摘抄各参考文献内容而成的,是一篇综述性入门文档,重点在于梳理傅里叶变换到伽柏变换再到小波变换的 ...

  2. SPP(spatial pyramid pooling) 空间金字塔池化

    (1)SPP层能达到什么样的效果? 由于全连接层对数据大小的输入是由要求的,比如要求是256*1才能输入到全连接层里面,那你288*1的特称图就不能输入到全连接层了. SPP层能达到的效果是:不管你的 ...

  3. Global Average Pooling全局平均池化的一点理解

    Traditional Pooling Methods 要想真正的理解Global Average Pooling,首先要了解深度网络中常见的pooling方式,以及全连接层. 众所周知CNN网络中常 ...

  4. 卷积和池化matlab 实现,UFLDL新版教程与编程练习(七):Convolution and Pooling(卷积和池化)...

    UFLDL是吴恩达团队编写的较早的一门深度学习入门,里面理论加上练习的节奏非常好,每次都想快点看完理论去动手编写练习,因为他帮你打好了整个代码框架,也有详细的注释,所以我们只要实现一点核心的代码编写工 ...

  5. 池化(Pooling)

    基础概念 在图像处理中,由于图像中存在较多冗余信息,可用某一区域子块的统计信息(如最大值或均值等)来刻画该区域中所有像素点呈现的空间分布模式,以替代区域子块中所有像素点取值,这就是卷积神经网络中池化( ...

  6. CNN(卷积层convolutional layer,激励层activating layer,池化层pooling,全连接层fully connected)

    CNN产生的原因:当使用全连接的神经网络时,因为相邻两层之间的神经元都是有边相连的,当输入层的特征纬度非常高时(譬如图片),全连接网络需要被训练的参数就会非常多(参数太多,训练缓慢),CNN可以通过训 ...

  7. 深度学习与神经网络(七)——卷积神经网络之池化pooling 上采样upsample与降采样downsample(下采样)(subsample)(nn.MaxPool2d)

    池化层pooling与采样 upsample与downsample upsample(interpolating)是上采样,是图片的放大 unpool是上采样的一种 downsample(subsam ...

  8. 一文弄懂各大池化Pooling操作

    池化Pooling是卷积神经网络中常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维,其本质是降维.在卷积层之后,通过池化来降低卷积层输出的特征维度,减少网络参数和计算成本的同时,降低过 ...

  9. 卷积神经网络中的池化方法(pooling)总结

    在卷积神经网络中,我们经常会碰到池化操作,而池化层往往在卷积层后面,通过池化来降低卷积层输出的特征向量,同时改善结果(不易出现过拟合). 为什么可以通过降低维度呢? 因为图像具有一种"静态性 ...

最新文章

  1. linux版魔兽服务端,linux下玩warcraft III(魔兽)
  2. 剑指offer--day07
  3. 中国AI专利申请量占全球74%,腾讯、百度、OPPO前五
  4. 从复现人类智能到挑战AI大工程,智能计算正经历什么考验?
  5. Python之PIL之绘图:基于Python的PIL库绘制各种图形、添加文字等
  6. CubieBoard开发板不用ttl线也不用hdmi线的安装方法
  7. html追加datatype,jquery ajax中dataType的设置问题
  8. XML 读写(命名空间)
  9. win7下 apache2.2 +php5.4 环境搭建
  10. Nike Air Jordan Sneakers
  11. jQuery基本过滤选择器
  12. php 解析 标记,如何使用PHP-simple-HTML DOM解析器获取标记的属性
  13. fastjson取某个key_JAVA学习:怎么给函数取一个“合理”的名字
  14. python版webpower的edm的api接口
  15. QT编写的数据转曲线工具
  16. 李在福羽毛球教学经典视频汇总31集
  17. 关于前端在vue中实现‘距离某个时间点的倒计时’问题:设置了间隔计算时间,刚开始有停顿。
  18. Java中jdk1.8和jdk17相互切换
  19. 静态链接库(LIB)和动态链接库(DLL),DLL的静态加载和动态加载,两种LIB文件。
  20. 甘肃省计算机二级考试试题,2013甘肃省计算机等级考试二级理论考试试题及答案...

热门文章

  1. 解决ThinkPHP关闭调试模式时报错的问题汇总
  2. 基于webpack的前端工程化开发解决方案探索(一):动态生成HTML
  3. Git问题Everything up-to-date解决
  4. 解决IntelliJ IDEA无法读取配置文件的问题
  5. 为什么我的Button文本被迫在Lollipop上全部大写?
  6. 如何编码和解码base64字符串?
  7. 递归查找具有特定扩展名的文件
  8. canvas——橡皮筋式线条绘图应用
  9. 2.7 usb摄像头之usb摄像头描述符打印
  10. [Git]常用的Git命令行