论文阅读笔记之——《Toward Convolutional Blind Denoising of Real Photographs》及基于pytorch的CBDNet的复现

2023-05-16

本文是CBDNet(convolutional blind denoising network)的阅读笔记。本博文分为两块,一块是阅读笔记,一块是本人对CBDNet的实验记录

论文链接:https://arxiv.org/pdf/1807.04686.pdf

论文的代码:https://github.com/GuoShi28/CBDNet

一些去噪用的数据集https://blog.csdn.net/zbwgycm/article/details/82144242

 

理论部分

Background

作者开篇写道“Despite their success in Gaussian denoising, deep convolutional neural networks (CNNs) are still very limited on real noisy photographs, and may even perform worse than the representative traditional methods such as BM3D and K-SVD.”尽管深度卷积网络在高斯去噪取得了重大的成就,但是对于真实的噪声,它的Generalization ability却是非常的差,甚至不如一些传统的方法。大多数基于卷积网络的去噪算法都是基于additive white Gaussian noise (AWGN),仅仅是去除高斯噪声.但是现实中,camera的噪声会来自于暗电流噪声、热噪声、粒散噪声等等(可以看博文《IPS流程(camera成像原理的介绍)》)因此真实噪声跟人为建模的高斯噪声是差很远的,而如果仅仅让网络去学习这个高斯加噪的图片,网络的泛化能力就会比较差。

在盲去噪中都存在着noise estimation and non-blind denoising.To the best of our knowledge, little work has been given to develop CNN-based model for the blind denoising of real photographs.

Due to that the real noise distribution is much different from Gaussian, DnCNN trained based on AWGN generally does not work well on noise removal for most real images.

 

通过incorporating network architecture, noise modeling, and asymmetric learning(非对称学习)提出CBDNet网络.CBDNet
is comprised of a noise estimation subnetwork and a denoising subnetwork, and is trained using a more realistic noise model by considering both signal-dependent noise and in-camera processing pipeline(信号相关噪声与ISP流程的噪声).

CBDNet包含了两个子网络:噪声估计子网络和非盲去噪子网络

the asymmetric learning is presented on the noise estimation subnetwork to suppress more on under-estimation of noise level.(这是受启发于BM3D)

To make the learned model applicable to real photographs, both synthetic images (合成的图像)based on realistic noise model and real noisy photographs with nearly noise-free images are incorporated to train our CBDNet.

incorporate both synthetic images based on signal dependent noise model and real noisy photographs with nearly noise-free images during the training of our CBDNet, which can improve the denoising performance and generalization ability of the learned model.

 

本文的亮点:

  • 提出了一个更加真实的噪声模型,其考虑了信号依赖噪声和ISP流程(可参考博文《IPS流程(camera成像原理的介绍)》)对噪声的影响,展示了图像噪声模型在真实噪声图像中起着关键作用。从某种程度上而言,本人觉得,这可以理解为作者用了一个更加接近真实场景的退化模型
  • 提出了CBDNet模型,其包括了一个噪声估计子网络(noise level map)和一个非盲去噪子网络,可以实现图像的盲去噪(即未知噪声水平)——通过噪声估计网络和非盲去噪网络实现图像的盲去噪的过程
  • 提出了非对称学习(asymmetric learning)的损失函数,并允许用户交互式调整去噪结果(interactively rectify the denoising result by tuning the estimated noise level map.通过调整估计的噪声水平图来交互地纠正去噪结果。),增强了去噪结果的鲁棒性。
  • 将合成噪声图像与真实噪声图像一起用于网络的训练,提升网络的去噪效果和泛化能力。
     

the introduction of noise estimation subnetwork can bring more benets to the denoising of real photographs. We note that non-blind denoisers (e.g., BM3D and FFDNet) are sensitive to under-estimation error of noise level but performs robust to over-estimation error.作者在这里的一个重要的发现是,对于噪声过估计,会有利于网络去噪。就是说你估计的noise level map太小,那可能会导致效果比较差,但是你估计的noise level map估计大了,却会使得performance更好,这就是一个asymmetric sensitivity(非对称性的灵敏度)even the real noise is much dierent from AWGN, non-blind denoisers can still achieve satisfying non-blind denoising result by simply increasing the noise level adopted in the algorithm.(就说每次都过高的去估计noise level map可以使得结果更加好???)

如下图所示。both non-blind BM3D and blind DnCNN fail to denoise the two real noisy photographs from DND. In contrast, our CBDNet achieves very pleasing denoising results and can retain most structure and details while well suppressing the sophisticated noise in images.

 

Real Image Noise Modeling(真实的噪声图片模型synthetic noisy images或称为Realistic Noise Model)

真实图片的噪声is much more sophisticated than AWGN

作者在论文里面提到“signi cantly depends on noise model, while more realistic noise model generally bene ts denoising performance.”

The noise model plays a critical role in guaranteeing the denoising performance of CNN-based denoiser on real photographs.

更真实的加噪

把camera的ISP考虑在内:

对于噪声RAW图像,采用公式1来训练CBDNet/模型。

对于噪声未压缩图像,采用公式2来训练CBDNet模型。

对于噪声压缩图像,采用公式3来训练CBDNet模型

 

Network  Architecture

 

 

Noise Estimation Network

adopts a plain five-layer fully convolutional network without pooling and batch normalization operations. In each convolution layer, the number of feature channels is set as 32, and the filter size is 3x3. The ReLU nonlinearity is deployed after each convolution (Conv) layer.

an asymmetric loss——imposing more penalty on under-estimation error of noise level(对噪声水平的低估误差施加更多的惩罚。)

With the asymmetric learning, our CBDNet can produce better results on real photographs in the blind denoising setting.

非对称学习(Asymmetric Learning)

作者观察到非盲去噪方法(如BM3D、FFDNet等)对噪声估计的误差具有非对称敏感性(the asymmetric sensitivity of non-blind denoisers)。如下图所示,分别用BM3D和FFDNet使用不同的输入噪声标准差去噪(标准差依次设为5、10、15、25、35、50),其中绿色框代表输入噪声的标准差与真实噪声标准差一致。可以观察到,当输入噪声的标准差与真实噪声的标准差一致时,去噪效果最好。当输入噪声标准差低于真实值时,去噪结果包含可察觉的噪声;而当输入噪声标准差高于真实值时,去噪结果仍能保持较好的结果,虽然也平滑了部分低对比度的纹理。因此,非盲去噪方法对低估误差比较敏感,而对高估的误差比较鲁棒。正是因为这个特性,BM3D可以通过设置相对较高的输入噪声标准差得到满意的真实图像去噪效果。

the asymmetric sensitivity of non-blind denoisers。为了将这种 asymmetric sensitivity 应用于盲超分。(下图中,第一个loss对应噪声估计网络,第二个loss是为了约束平滑性,第三个loss是去噪的loss)

 

The non-blind denosing subnetwork

关于网络的总结见下图

 

关于论文数据(Incorporating Synthetic and Real Noisy Images in Training)

Despite the progress in noise modeling, there remains a gap between the real noise and synthetic noise. It is noted that deep models tend to over-fit the training data, which may make the CBDNet learned on solely synthetic images have limited generalization ability to real photographs. Fortunately,approaches have been developed to obtain nearly noise-free image of the real noisy photographs, and several small scale datasets RENOIR(RENOIR也是人工合成的把?所以这也看来,应该是没有作者自己做的真实的数据集,或者说,所谓的作者做的数据是synthetic images)

For the synthetic images, the ground-truth clean image and noise level map are available。

For the real noisy images, the noise is real, but only the nearly noise-free image is available and the noise level map is unavailable.

对于合成噪声图像,作为ground-truth的干净图像和噪声水平图是可用的,但噪声模型可能与真实噪声不太相符;而对于真实噪声图像,噪声是真实的,但仅仅可以获得接近无噪声的图像作为ground truth,而噪声水平图是未知的。另外,一般真实噪声图像的ground truth比较难以获取,而合成噪声图像可以比较方便的大规模合成。因此,在训练CBDNet的过程中,结合这两种类型的图像,提高网络的泛化能力。 

  • 对于合成噪声图像。文章使用上述的噪声模型合成噪声图像。其使用了BSD500的400张图像,Waterloo的1600张图像,MIT-Adobe FiveK数据库的1600张图像作为训练数据。
  • 对于真实图像。使用RENOIR数据库的120张图像(http://ani.stat.fsu.edu/~abarbu/Renoir.html)。 

为了提高网络的泛化能力,本文交替使用一批合成图像和一批真实图像进行训练。

 

目前去噪数据集的建立主要分为以下三种方式: 
1. 从现有图像数据库获取高质量图像,然后做图像处理(如线性变化、亮度调整)并根据噪声模型添加人工合成噪声,生成噪声图像; 

这种方法比较简单省时,高质量图像可以直接从网上获取,但由于噪声是人工合成的,其与真实噪声图像有一定差异,使得在该数据集上训练的网络在真实噪声图像上的去噪效果受限; 
2. 针对同一场景,拍摄低ISO图像作为ground truth,高ISO图像作为噪声图像,并调整曝光时间等相机参数使得两张图像亮度一致; 

这种方法只使用单张低ISO图像作为ground truth,难免会残留噪声,且与噪声图像可能存在亮度差异和不对齐的问题; 
3. 对同一场景连续拍摄多张图像,然后做图像处理(如图像配准、异常图像剔除等),然后加权平均合成ground truth; 

这种方法需要拍摄大量图像,工作量比较大,且需要对图像进行严格对准,但一般得到的ground truth质量比较高; 

为了提高去噪网络的鲁棒性和泛化能力,常常需要将输入噪声图像的噪声水平估计也作为网络输入。而真实噪声图像的噪声水平估计往往存在一定误差,从这一方面考虑,合成噪声图像由于噪声模型已知,所以其噪声水平估计是准确的,有利于网络的在不同噪声水平上的泛化。CBDNet就考虑将真实噪声图像和合成噪声图像一起作为训练集,交替对网络进行训练以提升网络的性能。


论文的实验的测试集基于three real noisy image datasets来实现的DND、NC12、Nam(可是这三个数据集不是人工生成的数据么。。。算真实的数据?所以个人感觉,这里所说的真实图片,其实也就是更加接近真实情景的图片)所谓的“adopt a signal-dependent image noise, and also take in-camera image processing pipeline into account to generate synthetic training images.”是不是就是用了这里的数据集呢?还是说作者自己处理的,并没有公布出来呢?但作者又说our CBDNet is trained by synthetic and real noisy images,所以这至此还是一个疑问。。。。。。。

在评价指标(quantitative metrics)上采用了PSNR和SSIM

 

#############################################################################################################

代码实操部分

打开才发现代码是matlab版本的,接下来把它重塑为pytorch版本。。。。。。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考

https://blog.csdn.net/zbwgycm/article/details/82052003

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文阅读笔记之——《Toward Convolutional Blind Denoising of Real Photographs》及基于pytorch的CBDNet的复现 的相关文章

  • Jetson Xavier NX安装opencv3.x以及踩过的坑

    Jetson Xavier NX默认安装的是opencv4 x xff0c 在很多项目中其与opencv3 x xff0c 其中opencv3与opencv4中有部分函数是完全不同的 xff08 例如点一些Point的定义 xff0c Cv
  • 【导航算法】无人机路径跟踪L1导航算法

    L1导航算法是非常经典的非线性无人机路径跟随算法 xff0c 最早由MIT于2004年提出 xff0c 论文为 A New Nonlinear Guidance Logic for Trajectory Tracking xff0c 其导航
  • 【人工智能】1.问题求解:状态空间图和盲目搜索

    什么是问题求解 xff1f 问题求解可以理解为利用知识 xff0c 尽可能有效的找到问题的解 xff0c 或者最优解的过程 xff0c 主要包括 xff1a 1 xff09 问题描述方法 xff1a 状态空间法 xff0c 与或树表示法 x
  • 【路径规划】A*三维全局路径规划(附Python实现源码)

    1 A 启发式搜索 A 算法介绍 xff1a 启发式搜索算法 xff0c 除了wiki之外比较全的一个参考资料 xff1a A 启发式搜索算法详解 人工智能 这里是用Python写了一个简单的路径规划例子供参考 2 Matplotlib库
  • 【数据结构】3.图、最小生成树

    一 图的基本概念 1 什么是图 图表示一种多对多的关系 图包括 xff1a 1 xff09 一组顶点 xff1a 通常用 V Vertex 表示顶点集合 2 xff09 一组边 xff1a 通常用 E Edge 表示边的集合 3 xff09
  • 【NLP】主题模型文本分类

    自然语言处理之主题模型文本分类 LDA主题模型 1 主题模型 xff08 Topic Model xff09 主题模型是以非监督学习的方式对文集的隐含语义结构进行聚类的统计模型 主题模型主要被用于自然语言处理中的语义分析和文本挖掘问题 xf
  • 【NLP】Word2Vec模型文本分类

    自然语言处理之词向量模型聚类分析 Word Embedding 词嵌入向量 Word Embedding 是NLP里面一个重要的概念 xff0c 我们可以利用Word Embedding一个单词固定长度向量的表示一种表示形式 Word Em
  • (6.1)Kubernetes的Sevice服务间调用

    1 场景1 选择器 xff08 selector xff09 在k8s上运行了两个pod replicas 2 我们通过Service来整合这两个pod 在创建 Service 时 xff0c 就要通过选择器 xff08 selector
  • 【飞控算法】四旋翼飞行器控制原理与设计入门

    从动力学建模和几个四旋翼核心算法角度分析半自主飞控系统的建立 xff0c 即实现传统四旋翼的姿态控制和高度控制的过程 xff0c 文章主要借鉴了北航多旋翼设计课程 正点原子minifly微型四旋翼的资料 四旋翼无人飞行器设计 清华出版社 x
  • 【开源飞控】匿名飞控TI版解析(1)

    准备电赛的飞控题 xff0c 买来了匿名的飞控学习一下 xff0c 这里整理了一下匿名飞控中比较关键的几部分 xff0c 学习了一下原理 xff0c 然后代码解读都写注释里了 xff0c 篇幅较长 目录 一 遥控器信号接收 1 代码解读 2
  • 【开源飞控】匿名飞控TI版解析(2)

    因为电赛 xff0c 买来匿名飞控研究一下 xff0c 感觉相比其他的一下开源飞控 xff0c 易开发性和稳定性都是比较好的 xff0c 但就是比较贵 匿名TI版飞控是从32版改过来的 xff0c 硬件上就换了个芯片 xff0c 程序里也有
  • ROS中机器人与电脑的网络配置

    打开网络连接菜单 xff1a 选择网络 xff0c 输密码 并连接 xff08 以350502为例 xff0c 这里我就不连进去这个WiFi了 xff0c 还是连回402 xff0c 意思到了就行 xff09 查看连接信息 xff08 GU
  • ROS学习笔记之——gazebo仿真

    本博文是本人学习gazebo的学习记录 Gazebo是一款3D仿真器 xff0c 支持机器人开发所需的机器人 传感器和环境模型 xff0c 并且通过搭载的物理引擎可以得到逼真的仿真结果 Gazebo是近年来最受欢迎的三维仿真器之一 xff0
  • ROS学习笔记之——gazebo模型(URDF)

    最近在学习gazebo仿真 在之前博文里面 学习笔记之 gazebo仿真 xff0c 在介绍深度相机的ROS插件的时候 xff0c 涉及到了gazebo里面的一些模型文件架构的定义 本博文主要是对模型文件的定义做学习记录 目录 Model
  • ROS学习笔记之——ROS与gazebo之间的控制关系

    之前博客 学习笔记之 gazebo仿真 有采用用ricz来监控gazebo中的机器人 本博文对其进行深入的介绍 本文以 ROS学习笔记之 gazebo模型 xff08 URDF xff09 中的RRBot为例 目录 ros control
  • ROS学习笔记之——移动机器人的导航

    之前博客 ROS学习笔记之 激光雷达SLAM建图 已经介绍过如何通过激光雷达SLAM建图了 xff0c 本博文讲一下ROS机器人的导航相关 目录 导航相关理论介绍 导航的概述 costmap AMCL Dynamic Window Appr
  • ROS学习笔记之——EKF (Extended Kalman Filter) node 扩展卡尔曼滤波

    最近正好准备想试试利用EKF实现多传感器的融合 但没想到本身ROS里面就已经有EKF的功能包了 这个包用于评估机器人的3D位姿 xff0c 使用了来自不同源的位姿测量信息 xff0c 它使用带有6D xff08 3D position an
  • ROS学习笔记之——路径规划及avoid obstacles

    之前博客 ROS学习笔记之 Navigation Stack及路径规划 介绍了navigation stack xff0c 其中涉及到的amcl 路径规划以及避障还没有详细的展开 目录 AMCL 路径规划 全局路径规划中的地图 栅格地图 x
  • 【LeetCode】LCS最长公共子序列

    最长公共子序列 题目描述思路分析递归结构算法实现输出最长子序列算法实现 题目描述 思路分析 设A 61 a0 xff0c a1 xff0c xff0c am xff0c B 61 b0 xff0c b1 xff0c xff0c bn xff
  • ROS实验笔记之——基于ArUco Marker来估算camera的位姿

    最近在做课程的project的时候 xff0c 实现了基于Marker的3D 2D的相机位姿估计算法 写下本博文作为学习记录用 xff5e 先看看整体的实现效果 基于ArUco Marker来估算camera的位姿 目录 安装ArUco A

随机推荐

  • ROS实验笔记之——基于Prometheus自主无人机开源项目的学习与仿真

    最近在公众号上看到Prometheus无人机的资料 xff0c 发现里面开源了很好的无人机的仿真环境 xff0c 并且有很好的教程 而本人正好在上 Introduction to Aerial Robotics 的课程 xff0c 正好搭建
  • ROS实验笔记之——基于Prometheus的控制模块

    之前博客 ROS实验笔记之 基于Prometheus自主无人机开源项目的学习与仿真 已经介绍过Prometheus项目 本博文继续学习其中的控制模块 xff5e ROS无人机仿真之轨迹跟踪 ROS无人机仿真之航点跟踪 目录 仿真功能启动脚本
  • 学习笔记之——VIO与VINS-Mono

    本博文为本人学习VIO与VINS的学习笔记 xff0c 部分内容来源于网上的资料 xff0c 文末给出参考 本博文仅仅为本人学习记录用 xff0c 不作任何商业用途 先给出复现的demo 视觉惯导紧融合VINS Mono的复现 目录 VIO
  • ROS学习笔记之——PX4开发初入门

    PX4 是一款专业级飞控 它由来自业界和学术界的世界级开发商开发 xff0c 并得到活跃的全球社区的支持 xff0c 为从竞速和物流无人机到地面车辆和潜水艇的各种载具提供动力 目录 基本概念 QGroundControl xff08 QGC
  • ROS实验笔记之——PX4仿真

    之前博文 ROS学习笔记之 PX4开发初入门 ROS学习笔记之 PX4生态系统 已经对PX4做了一些基本的学习 xff0c 并且在mac上搭建了px4开发环境 本博文在ubuntu下对PX4进行一些基本的仿真学习 xff5e 之前在做无人机
  • ROS学习笔记之——基于QGC的PX4在线仿真调PID

    之前博客 ROS实验笔记之 PX4仿真 已经介绍了PX4编译及QGC的安装 xff0c 本博文进一步的基于QGC进行仿真控制 基于QGC的PX4在线仿真 首先运行基于px4的gazebo仿真 make px4 sitl default ga
  • ROS学习笔记之——PX4位置环PID控制

    之前博客 ROS学习笔记之 基于QGC的PX4在线仿真调PID 已经学习了如何在仿真环境下 xff0c 调节PID位置环与姿态环 本博文细细的看一下PX4位置环PID调节 如下图所示 输入的是期望的位置 xff0c 然后外环是P控制 而内环
  • ROS实验笔记之——JCV-450无人机初入门

    最近测试了阿木实验室的JCV 450无人机 本博文记录本人使用及实验的过程 目录 基本设置 注意点 飞行前调试 一 加载固件 二 加载参数 三 校准传感器 四 遥控器校准 五 飞行模式 六 电调校准 七 检查参数 QGC的使用 首先看一下飞
  • ROS学习笔记之——MSCKF

    原理 精度方面 xff0c MSCKF应该与graph optimazation差不多 xff0c 但是其对算力要求没有那么高 xff5e http www xinliang zhong vip msckf notes header n13
  • FreeRTOS调试神器分享

    在B站看到的大神的分享 xff0c 记录一下 xff1a FreeRTOS调试神器 xff01
  • ROS实验笔记之——Intel Realsense l515激光相机的使用

    最近实验室购买了Intel Realsense l515相机 本博文记录使用过程 驱动安装 先到官网安装驱动 xff1a https github com IntelRealSense realsense ros https github
  • ROS实验笔记之——VINS-Mono在l515上的实现

    之前博客 ROS实验笔记之 Intel Realsense l515激光相机的使用 实现了用l515运行RTABmap xff0c 本博文试试在l515上实现vins mono 首先需要将vins mono配置成功 xff0c 如果出现像之
  • ROS学习笔记之——EVO工具的使用

    之前博客 ROS学习笔记之 VICON的使用 用vincon获得了机器人的真实轨迹 xff0c 并且通过amcl可以获得了机器人的定位结果 xff0c 下面通过EVO包来表征performance xff08 本文不像网上大部分博客复制粘贴
  • ROS实验笔记之——无人机在VICION下试飞

    之前博 ROS实验笔记之 自主搭建四旋翼无人机 ROS实验笔记之 JCV 450无人机初入门 ROS实验笔记之 基于Prometheus自主无人机开源项目的学习与仿真 已经介绍过一些无人机的仿真 xff0c 试飞 本博文基于vicion实现
  • ROS学习笔记之——无人机PID调参过程记录

    问题描述 最近搭建了一架无人机如下 飞行demo self design Quadrotor flighting test2 但是在手飞过程 xff0c 发现陀机很烫 应该是由于pid没调 xff0c 然后机臂抖动导致的发热 接下来 xff
  • 基于可见光通信的室内定位与导航及物联网应用

    本人从2014年起从事可见光通信 xff08 Visible Light Communication VLC xff09 相关研究 xff0c 主要包括 xff1a 基于光电二极管 xff08 PD xff09 图像传感器 xff08 ca
  • ROS实验笔记之——FAST-LIVO

    最近IROS22的FAST LVIO源码开源了 xff0c 笔者赶紧测试一下 源码链接 xff1a GitHub hku mars FAST LIVO A Fast and Tightly coupled Sparse Direct LiD
  • 算法学习笔记

    最近无意中看到一个算法的网站 xff0c 看着感觉介绍得挺系统的 xff0c 虽然做算法以及指导学生开发各种算法这么些年了 xff0c 却没有真正系统的学习过 xff08 几年前啃过算法导论 xff0c 但是苦于那蹩脚的中文翻译 xff0c
  • 2023年可见光通信(LiFi)研究新进展

    可见光无线通信Light Fidelity xff08 LiFi xff09 又称 光保真技术 xff0c 是一种利用可见光进行数据传输的全新无线传输技术 LiFi是一种以半导体光源作为信号发射源 xff0c 利用无需授权的自由光谱实现无线
  • 论文阅读笔记之——《Toward Convolutional Blind Denoising of Real Photographs》及基于pytorch的CBDNet的复现

    本文是CBDNet xff08 convolutional blind denoising network xff09 的阅读笔记 本博文分为两块 xff0c 一块是阅读笔记 xff0c 一块是本人对CBDNet的实验记录 论文链接 xff