【论文阅读笔记】Pyramid Real Image Denoising Network

news2024/11/25 0:47:36

论文简介

  本文是19年的论文,网络名为PRIDNet。代码地址为https://github.com/491506870/PRIDNet。在1080ti上,PRIDNet处理512x512图像需要大约50ms;

  尽管深度卷积神经网络在特定噪声和去噪方面展示出非凡能力,但对于真实世界的噪声图像仍然表现不佳。主要原因在于真实世界的噪声更加复杂和多样化。为了解决盲去噪问题,本文提出了一种“金字塔真实去噪网络”(Pyranud Real Image Denoising Network,PRIDNet)。网络的设计如下图所示,分为三个阶段:(1)Channel注意力机制模块,来校准输入噪声的Channel重要性;(2)使用金字塔模块提取多尺度特征;(3)特征融合阶段使用内核选择模块自适应融合多尺度特征。
在这里插入图片描述

  与特定噪声(高斯白噪声、散粒噪声)不同,真实噪声来自于拍摄环境、图像处理管道,所以真实噪声的形势呈现出复杂性和多样性。
  在之前,有一些工作致力于消除特定噪声,提出了一些结构。比如为消除高斯噪声,使用带有skip-connect的非常深的全卷积编解码网络,REDNet。也有文章证明了融合残差学习和BN层的去噪CNN(DnCNN)可以比基于非CNN的传统方法要好。但是,上述这些对于特定噪声的方法,如果用于真实世界的噪声上,可能表现比BM3D等具有代表性的传统方法要差。很少有研究盲去噪的方法,特别是针对真实噪声图像的开发。通过交互相对高的噪声水平,FFDNnet可以处理更加复杂的噪声。CBDNet进一步利用噪声估计子网络,所以其整个网络可以实现端到端的盲去噪。Path-Restore使用多路径CNN,可以为每块图像区域动态地选择合适的路径,特别是对真实图像的各种噪声分布。作为Photoshop的商业插件,**Neat Image(NI)**也用于盲降噪。
  尽管上述方法对于真实图像去噪获得了巨大的改善,仍有三个问题需要注意:(1)大部分基于CNN的方法,所有的feature map channel都相同对待。(2)前面所提到的方法,都使用了相同的感受野,无法获得多样化的特征。参考传统去噪的方法BM3D,在整张图上进行相似块的搜索,这样可以充分利用上下文信息,而不是局限于小区域范围内。(3)对于多尺度特征的融合,大部分方法使用Add或者Concat算子进行融合,而没有进行区分,忽略了尺度特征的空间和通道特异性。意思是没有使用作者退出的channel attention机制,多尺度特征提取模块,以及特征融合模块。

  网络结构如上图所示,分为三个阶段:噪声估计阶段,多尺度去噪阶段和特征融合阶段。
第一阶段的噪声估计阶段使用没有BN层的五组卷积 + ReLU的方式,每个卷积的输出Channel为32(最后一层为3或1),卷积核大小为3。在最后一层卷积前,使用Channel Attention模块。Channel Attention模块如下图所示:是标准的全局池化层 + FC层的结构,中间有一个通道压缩的过程,FC层中间Cahnnel为2。这个设置为2,有必要去验证一下是否这个attention有效,对比普通的1*1如何
在这里插入图片描述
  第二阶段,多尺度特征阶段。需要注意的是,在多层不同尺度池化层之后,使用的是带有skip-connect的深层encoding-decoding的UNet结构。不同Unet结构不共享参数。
  第三阶段,特征融合阶段,使用的kernel选择模块结构如下图所示:输入U通过三个不同卷积核大小的卷积,卷积核大小分别为3,5,7。经过element-wise以及Channel Attention(与之前的Channel Attention不同的是,最后没有使用Sigmoid激活函数,而是Softmax算子)后,再与之前卷积进行交互。需要注意的是,这个Softmax算子,不是作用于同一个FC输出上的,而是不同FC的相同Channel上。这种操作,也断绝了速度上的可能性这Softmax算子的应用,更像是进行了每个Channel的权重赋值操作,所以最后进行了一个element-wise算子进行整合。
在这里插入图片描述

论文实验

  训练阶段,使用来自智能手机去噪图像数据集(SIDD)的320个图像对,都是在raw-RGB空间和sRGB空间的。然后,使用另外的来自40张图像的1280个256x256截图块作为验证集,用于消融实验。
  测试阶段,使用两个广泛使用的基准数据集DNDNC12。DND是由消费级相机拍摄的50张真实高分辨率图像。因为只对外提供了噪声图像,所以只能通过在线提交系统获得PSNR和SSIM。NC12有12张噪声图片,但Ground truth的干净图像无法获得,所以只能展示去噪结果,对这些图像进行定性评估。也就是说,这两个测试集,对于平常实验是无法定量比较的。

  本文训练两个模型,一个目标是raw images,一个目标是sRGB images。损失函数为 L 1 L_1 L1,优化器为Adam, β 1 = 0.9 , β 2 = 0.999 , ϵ = 1 0 − 8 \beta_1=0.9,\beta_2=0.999,\epsilon=10^{-8} β1=0.9,β2=0.999,ϵ=108。两个模型都训练 4000 4000 4000个epoch,初始学习率为 1 0 − 4 10^{-4} 104训练 1500 1500 1500个epoch,然后学习率降到 1 0 − 5 10^{-5} 105进行finetune。PatchSize设为256,BatchSize对于raw模型是2,对于sRGB模型是8。所有实现和完成都在GPU 1080ti上tensorflow实现。

  在测试集的表现结果如下表所示。需要注意的是,PRIDNet处理512x512图像需要大约50ms;
在这里插入图片描述

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

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

相关文章

最好的天线基础知识!超实用 随时查询

天线作为无线电的发射和接收设备是影响信号强度和质量的重要设备,其在移动通信领域的重要性非常关键。通过对天线选型,天线安装,天线调整从而保障基站覆盖区域的信号强度与质量。对其的 掌握程度是网规与网优工程师的技能基本要求之一。下文重点说明天线要掌握哪些方面及其原理…

jenkins配置钉钉机器人推送job构建信息

文章目录一、注册钉钉,创建群聊二、创建钉钉机器人,获取webhook三、jenkins安装DingTalk插件四、jenkins系统配置—配置钉钉1、找到钉钉配置项,继续配置五、jenkins的job内配置钉钉六、构建job,并发送钉钉信息推送Q & A一、注…

[iOS]App Store Connect添加银行卡时的CNAPS代码查询

App Store Connect 协议、税务和银行业务中,给付费APP类型添加银行卡需要填写CNAPS代码CNAPS代码,其实就是联行号。 联行号又称大额行号、银联号、银行行号或CNAPS号。 银行联行号查询

JavaScript -- 06.函数知识汇总

文章目录函数1 函数介绍2 函数的创建方式2.1 函数声明2.2 函数表达式2.33 参数3.1 函数声明3.2.函数表达式3.3 箭头函数3.4 默认参数3.5 使用对象作为参数3.6 函数作为参数4 函数的返回值5 作用域5.1 函数作用域5.2 作用域链5.3 练习6 window对象7 提升7.1 变量的提升7.2 函数的…

【深度学习】详解 ViLT

目录 摘要 一、引言 二、背景 2.1 视觉和语言模型的分类法 2.2 模态交互模式 2.3 视觉嵌入方案 2.3.1 区域特征 2.3.2 网格特征 2.3.3 图像块投影 三、视觉和语言 Transformer 3.1 模型概述 3.2 预训练目标 3.2.1 图像文本匹配 3.2.2 掩码语言建模 3.2.3 全…

文件包含漏洞详解

文件包含漏洞详解1.文件包含漏洞介绍1.1.文件包含漏洞解释1.2.文件包含漏洞原理1.3.文件包含的函数1.3.1.常见的文件包含函数1.3.2.PHP函数区别:1.4.文件包含漏洞特征1.5.文件包含漏洞分类1.5.1.本地文件包含漏洞  1.5.1.1.本地文件包含漏洞案例1.5.2.远程文件包含…

echarts-wordcloud ——文字云制作企业标签——基础积累

最近看到同事在写文字云的效果,最终效果图如下: 使用的是echarts-wordcloud插件: 下面介绍一下使用步骤: 1.npm安装echarts-wordcloud——npm install echarts-wordcloud --save 安装echarts-wordcloud的前提是也要安装echart…

谷粒学院——Day09【整合阿里云视频点播】

❤ 作者主页:Java技术一点通的博客 ❀ 个人介绍:大家好,我是Java技术一点通!( ̄▽ ̄)~* 🍊 记得关注、点赞、收藏、评论⭐️⭐️⭐️ 📣 认真学习,共同进步!&am…

YOLOv5使用方法记录

YOLOv5使用方法记录 本次主要是记录使用yolov5检测图片和视频的过程 下载源码 地址为:https://github.com/ultralytics/yolov5 配置环境 有两种方法 按照requirements 通过下述命令安装源码中给出的配置环境文件 pip install -r requirements.txt选择自己需…

诠释韧性增长,知乎Q3财报里的社区优势和商业化价值

当内容平台开始做生意,往往意味着它要扮演一个大包大揽的角色:从内容的可持续性到最终变现,设计一套完整的生态系统是必需的。 但并非所有平台都对此感到棘手,或者说在某些平台,生态已经不是困难,而是优势…

linux内核源码分析 - nvme设备的初始化

驱动的加载 驱动加载实际就是module的加载,而module加载时会对整个module进行初始化,nvme驱动的module初始化函数为nvme_init(),如下: static struct pci_driver nvme_driver {.name "nvme",.id_table nvme_id_table,.probe nvme_probe,.remo…

leetcode 746. 使用最小花费爬楼梯

文章目录题目思考代码和注释总结题目 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到…

Charles抓取接口报文并修改各种参数信息调试

1.首先介绍Charles面板 图上顶部工具栏常用介绍: 1是清除按钮:点击后将清空左侧抓取的接口列表,如果接口太多,可以点击该按钮清空列表,重新发起请求,一目了然; 2.是停止按钮:点击该按…

玩转redis(一)——基础数据结构

文章目录前言安装一、String1.常用命令和操作2.应用场景3.对应业务场景举例二、Hash1.常用命令和操作2.应用场景3.对应业务场景举例优缺点三、List1.常用命令和操作2.应用场景3.对应的业务场景举例四、Set1.常用的命令和操作2.应用场景3.对应的业务场景举例五、Zset1.常用的命令…

总结:SpringBoot内嵌Tomcat原理

一、介绍 一般我们启动web服务都需要单独的去安装tomcat,而Springboot自身却直接整合了Tomcat,什么原理呢? 二、原理 SpringBoot应用只需要引入spring-boot-starter-web中这个依赖,应用程序就默认引入了tomcat依赖,其…

[附源码]SSM计算机毕业设计疫情环境下的酒店管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通

STM32CubeMX 下载和安装 详细教程 【HAL库】STM32CubeMX开发----STM32F407----目录 LAN8720A数据手册(中文英文) 前言 本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。 以太网PHY层芯片为 LAN8720A,由MCU引脚 PA8 提供时钟。 LAN8720A引脚…

springboot整合mybatis实现增删改查

前言 在学习Springboot过程中,整合mybatis框架实现表数据的增删改查,话不多说,开始贴代码! Spring Boot提供了一个名为spring-boot-starter-parent的工程,里面已经对各种常用依赖(并非全部)的版本进行了管理&#xff…

基于51单片机智能IC卡电表控制系统

资料编号:201 功能介绍: 采用51单片机作为主控CPU,使用按键进行模拟冲卡(模拟缴费冲卡),通过按键来控制当前是否使用电力,并且LCD1602实时显示当前电力可用量剩余多少,当电力余额不…

3. JVM对象创建与内存分配机制

1. JVM对象创建过程详解 对象创建的主要流程 1.1 分配内存空间的方法 指针碰撞(默认使用指针碰撞) 如果JAVA堆中内存是绝对规整的,所有用过的内存都放在一边,空闲的内存放在另一边,中间放一个指针作为分界点&#xf…