【fishing-pan:https://blog.csdn.net/u013921430 转载请注明出处】

前言

  很久没写博客了,主要原因就是工作之后,为了避开工作内容,很多东西不能写!所以接下来的博客可能更多的探讨论文、数学知识和一些基础性的技术。

  这篇文章是18年就发表的一篇文章,19年就读到了,一直没写出来分享;起初接触的时候觉得很有意思,因为我一直认为将传统图像处理中的方法结合到深度学习中,能够提供很多启发。但是当我仔细阅读过后,发现这篇文章有一定的理论漏洞,所以今天特地写出来分享一下我的理解。

论文地址:https://arxiv.org/pdf/1803.05619v1.pdf
代码地址:https://github.com/wuhuikai/DeepGuidedFilter

背景

  大家都知道,深度学习的参数量和计算量要远远高于传统学习的方法,而且随着现在显卡性能的提升日常所训练的网络也是越来越大;虽然可以解决更复杂的问题,但是在实际的工程部署中却很难得到运用,一般的普通的台式机要这些模型都吃力。所以,如何在既保证效果又保证性能,成为了近年来各大顶会的热门。
  2017年,Google 提出了HDRNet《Deep Bilateral Learning for Real-Time Image Enhancement》,将 bilateral filter 与神经网络结合;通过神经网络,在低分辨下学习局部和全局的特征,得到线性变换系数,然后使用 bilateral grid 对系数上采样,减少了计算量有保证了效果;可以说是极其优秀的工作。

核心思想

  再把目光回到这篇文章,这篇文章的思路与HDRNet也是一样,只不过借助的是Guided filter 的思想,因为相比双边滤波,引导滤波的时间复杂度更低。

  完整的模型首先通过低分辨的输入得到低分辨的结果图,这样网络所需要学习的特征更少,而且feature map的尺寸更小,可以大大节省计算量;然后通过文章提出的 Guided filtering layer 得到pixel wise的线性变换系数;然后用双线性插值对线性系数进行上采样,最终通过线性变换得到高分辨输出。

  在上图中,IhI_hIh​ 表示高分辨的输入图像,IlI_lIl​ 表示下采样后的低分辨输入图像,OlO_lOl​ 表示经过全卷积网络 ClC_lCl​ 处理的低分辨输出,OhO_hOh​ 表示最终得到的高分辨的输出图像。

  文章的重点自然就是 Guided filtering layer ,首先来回顾一下引导滤波中最核心的公式,输出图像中的像素值由引导图像中像素值线性变换得到;目前想得到高分辨输出,对应的只有高分辨的输入;所以本论文中用高分辨输入 IhI_hIh​ 作为引导图。
qi=akˉIi+bkˉq_{i}=\bar{a_{k}}I_{i}+\bar{b_{k}}qi​=ak​ˉ​Ii​+bk​ˉ​
  再来看看线性变换系数如何得到。高分辨的线性变换系数是由低分辨的线性变换系数上采样得到的;而低分辨的系数需要通过 IlI_lIl​ 得到,与 IhI_hIh​ 对应, IlI_lIl​ 要作为低分辨情况下的引导图,而此时引导滤波还需要一个输入图像,OlO_lOl​ 自然就是这个输入。(tips:为什么要对线性变换系数上采样,而不是对低分辨输出上采样?1. 这样获取线性变换系数的计算量小。2.传统图像处理的经验表明对线性变换系数进行上采样最终的效果更好。)

  上图中, IlI_lIl​ 经过函数 F(I)F(I)F(I) 得到引导图像 GlG_lGl​ ,后面就是正常的引导滤波的线性系数求取步骤。当然了,文章将其中的很多步骤都换成了不同的卷积,使整个模型都是可训练的。 F(I)F(I)F(I) 设计成全卷积模块,均值滤波替换成了空洞卷积,局部线性模型替换成了逐点卷积;最终得到了下面这个模块。

  最终的结果对比,我就不介绍了,文章一般都说自己的好,又快又好。

文章再看

  经过上面的介绍,似乎也没什么问题,思想还挺巧妙的。但是仔细一想,似乎值得商榷。引导滤波中,引导图很关键,因为他核心的假设就是输出图像与引导图像在局部上是一个线性的模型,也就是说引导图会决定了输出图像的特征和质量,最终结果是输入图像的特征根据引导图像得到约束。而本文中用低分辨输入 IlI_lIl​ 经过函数 F(I)F(I)F(I) 得到引导图像 GlG_lGl​ ,这就有一个很重要的问题:GlG_lGl​ 的特征是否靠近想要的特征?但是从代码和论文来看, F(I)F(I)F(I) 是一个非常小的模块,并不能巨大地改变 IlI_lIl​ 的特征,所以 GlG_lGl​ 的特征分布是接近于 IlI_lIl​ ,那么这样一来由 GlG_lGl​ 得到的线性系数产生的输出图像是靠近 IlI_lIl​ 的,而靠近输入图像的结果,不会是我们想要的。举个例子,按照本文的思路,输入图像是无雾(或者噪声)的图像,引导图像是通过有雾(噪声)图像简单变换得到的,那么,最终得到的应该是有雾(或者噪声)的图像。

  通过上面简单的分析可以看出,其实我们应该利用 OlO_lOl​ 作为引导图,因为 OlO_lOl​ 的特征理论上是与目标空间一致的,而 IlI_lIl​ 应该作为输入。所以,我可以猜测,如果单独训练小网络 ClC_lCl​ ,再接入 Convolutional Guided filtering layer 很难得到理想的结果;而整个模型一起训练,最终的 OlO_lOl​ 应该也与 OhO_hOh​ 下采样的图相差较多。

  为什么不用 OlO_lOl​ 作为引导图,因为在高分辨下对应的是待获取的 OlO_lOl​ 。但是,这是不是说本文的工作就没有意义了呢?我觉得也还是有可行性的。要知道引导滤波也可以表示成双边滤波类似的表达形式,如下;也就是输出图像中的点 III 的像素值,由其输入图像中对应位置的点 I′{I}'I′ 的周围点像素值的加权得到,通过本文中的方式得到的可能就是综合了输入图像周围像素值及权重的线性变换系数。
qi=∑jWij(I)⋅pjq_{i}=\sum_{j} W_{ij}\left ( I \right )\cdot p_{j}qi​=j∑​Wij​(I)⋅pj​

最后

  这是我个人的见解,也不一定正确,写出来与大家分享,希望跟大家一起讨论。

【论文学习】Fast End-to-End Trainable Guided Filter相关推荐

  1. 导向滤波python_导向滤波(Guided Filter)简要介绍

    1.介绍 提到导向滤波,首先想到的是"何恺明",他的确是真大神,在图像领域,是中国人的骄傲,深度学习流行的时候,也是提出各种新算法,比如ResNets,而最近两年,深度学习的发展已 ...

  2. 【论文学习】《Parallel WaveGAN: A fast waveform generation model based on generative adversarial networks》

    <Parallel WaveGAN : A fast waveform generation model based on generative adversarial networks wit ...

  3. 【论文学习笔记】《Parallel WaveNet: Fast High-Fidelity Speech Synthesis》

    Parallel WaveNet 论文学习 文章目录 Parallel WaveNet 论文学习 1 简介 2 WaveNet 介绍 3 Parallel WaveNet 介绍 4 概率密度蒸馏 4. ...

  4. 【论文学习】《A Survey on Neural Speech Synthesis》

    <A Survey on Neural Speech Synthesis>论文学习 文章目录 <A Survey on Neural Speech Synthesis>论文学习 ...

  5. 【论文学习笔记】《An Overview of Voice Conversion and Its Challenges》

    <An Overview of Voice Conversion and Its Challenges: From Statistical Modeling to Deep Learning&g ...

  6. 【论文学习笔记-2】高分辨率3D深度重建

    [论文学习笔记-2] 高分辨率3D深度重建 背景介绍 模型 目标 Related Works 背景介绍 应用场景广泛:桥,电缆etc 高分辨率图像的特点:像素多,potential disparity ...

  7. 8.论文学习Liver Tumor Segmentation and Classification: A Systematic Review

    目录 摘要 1.引言 2.文献调查 3.肝脏肿瘤分割的一般步骤 A.CT肝脏图像 B.图像预处理 C.肝脏分割和肿瘤分割 D.特征提取 E.分类 4.肝脏图像预处理方法 A.中值滤波 B.双边滤波器( ...

  8. 【论文学习】《“Hello, It’s Me”: Deep Learning-based Speech Synthesis Attacks in the Real World》

    <"Hello, It's Me": Deep Learning-based Speech Synthesis Attacks in the Real World>论文 ...

  9. 论文学习笔记: Learning Multi-Scale Photo Exposure Correction(含pytorch代码复现)

    论文学习笔记: Learning Multi-Scale Photo Exposure Correction--含pytorch代码复现 本章工作: 论文摘要 训练数据集 网络设计原理 补充知识:拉普 ...

最新文章

  1. android五大布局的用法,android:stretchColumns用法
  2. RFID中间件成为全球软件产业争夺新焦点
  3. Hive中文注释乱码解决方案
  4. 明明白白你的Linux服务器——网络篇
  5. iOS开发之实现毛玻璃效果及图片模糊效果
  6. 选择您的Java EE 6应用服务器
  7. Linux下的ELF文件、链接、加载与库(含大量图文解析及例程)
  8. 关于 HDFS Append
  9. linux下ppp拨号无线上网
  10. Python判断是否json是否包含一个key
  11. JavaWeb图书管理系统+论文+答辩ppt
  12. python程序输入两个整数、实现加减乘除_加减乘除
  13. html怎么做一个正方形,使用HTML+CSS做一个正方体
  14. 8.3 bert的蒸馏方法概述
  15. @zxing/library实现平板手机扫码功能(二维码+条形码)
  16. laptop外接显示器
  17. python中pip如何更新到最新版本
  18. 如何将多个PDF文件合并为一个PDF,4种工具推荐,适用手机和PC
  19. CSS Tailwind
  20. 计算机英语口语面试自我介绍,2018考研复试面试英语口语自我介绍范文6

热门文章

  1. 购买原装三星内存注意事项
  2. 图片服务 - thumbor过滤器
  3. RMAN备份与还原 - 参考案例
  4. Eclipse的JavaWeb项目导入到IntelliJ IDEA 并且配置Tomcat
  5. 分布式事务 - 如何解决分布式事务问题?
  6. MySQL详细安装(windows)
  7. git配置远程仓库,同时配置github、gitee、gitlab,完美解决方案
  8. C#LeetCode刷题之#237-删除链表中的节点(Delete Node in a Linked List)
  9. HTTPS-思君如满月,日日减清辉
  10. JavaScript Try Catch:异常处理说明