Paper | Model-blind video denoising via frame-to-frame training
发表在2019年CVPR。
核心内容:基于Noise2Noise思想,这篇文章致力于无监督的视频盲去噪:是的,连噪声样本都不需要了。
这篇文章写作和概括太棒了!它的Introduction非常值得回味!它对去噪相关工作的概述、对本文启发工作的简述、对本文工作的概述都非常流畅。
故事
我们拥有的“干净”图像,往往不是干净的。理想的干净图像是从成像传感器上获取的,然而我们看到的图像还经过了相机内部的处理流程。该过程包含量化、去马赛克、伽马校正、压缩等。
因此,如果要对视频去噪,最好能知道有噪视频的生成过程,即所谓的model of processing chain。
然而,该model通常是未知且难以建模的,并且这些噪声通常是与信号相关的(signal-dependent)。
为此,本文作者提出了model-blind的逐帧去噪方法。
为了达到较好的无监督学习性能,该网络是从预训练的DnCNN上fine-tune的。
作者还提出了两种训练模式:on-line和off-line。在on-line模型下,该网络会根据输入视频的前几帧进行fine-tune;在off-line模式下,则可以用一批视频进行训练,效果更好。
本文受到了Noise2Noise思想和one-shot object video segmentation训练方法的启发。在one-shot中,作者借助一个预训练的分割网络,在第一帧中标注目标并fine-tune,以完成视频其余帧的分割任务;在Noise2Noise中,训练目标是最小化 同一张图像的两个有噪版本 之间的差异。本文类似于one-shot的去噪版本,且无需任何干净图像:将视频的相邻帧作为训练目标。
引述本文的一句话:
In this work we show that, for certain kinds of noise, in the context of video denoising one video is enough: a network can be trained from a single noisy video by considering the video itself as a dataset.
本文方法
流程
刚刚说了,我们需要从一个预训练的去噪网络出发。这是因为我们的训练集很小(线上模式只有该视频的几帧)。这也是借鉴one-shot的。
此外,我们假设视频中的相邻帧是同一自然图像的两种有噪分布。但它们仍然存在微小的运动误差。为此,我们采用TV-L1光流[46,37]。该运动补偿方法非常快。补偿后采用双线性插值。显然这里有两点假设:
相邻帧的噪声分布独立;
运动补偿后的帧 与 参考帧 的 潜在干净图像 是一致的。
还有,我们还考虑了遮挡,建立了一个遮挡膜(occlusion mask)。我们采用了[4]的简单方法:当光流散度较大时,我们就认为出现了遮挡情况,该点遮挡膜值为1,否则为0。
最后,我们计算损失时,出现遮挡的就不计入计算。即损失等于原损失乘以遮挡膜。
作者采用的是\(L_1\)损失。首先声明,选择损失函数要根据噪声的特性。但在噪声属性未知或复杂的情况下,最直接的办法就是:逐个实验,选其最佳。作者选择\(L_1\),是因为其表现比\(L_2\)更好[50],并且能处理包含泊松、JPEG压缩、低频等噪声。
训练
在线下训练时,我们会对整个视频进行迭代。训练目标是\(L_1\)损失,迭代若干次。
在线上训练时,我们逐帧训练。随着视频播放,迭代帧数会越来越多。这有点契合了life-long learning[47]的思想。
注意,我们还可以换反方向进行运动补偿,从而获得了双倍的训练数据用于迭代。
实验
实验采用的预训练网络,是在标准差25的AWGN下训练的DnCNN。
本文可能是第一篇视频盲去噪工作。因此,作者与Noise clinic、VBM3D和DnCNN进行了对比。

如图,首先探究的是在标准差为25的AWGN下的表现。此时DnCNN表现正常,本文方法无论何种模式,都与DnCNN不相上下。
其次,我们探究在标准差为50的AWGN下的表现。此时,DnCNN表现辣眼睛,而本文方法通过fine-tune逐渐地趋于优秀。
此外,我们还探究了其他噪声:混合高斯、相关、椒盐、JPEG噪声等。效果如图,盲去噪真香!:

两种模式主要差异:线下模式会更稳定,方差更小。
此外还有一个发现:本文方法和DnCNN一样,都会趋于过度平滑。如果将预训练网络换成其他更保真的视频去噪方法,可能会改善这个问题。
Paper | Model-blind video denoising via frame-to-frame training的更多相关文章
- 论文笔记:Heterogeneous Memory Enhanced Multimodal Attention Model for Video Question Answering
Heterogeneous Memory Enhanced Multimodal Attention Model for Video Question Answering 2019-04-25 21: ...
- frame与frame之间怎么用jquery传值
frame与frame之间如何用jquery传值 使用jquery操作iframe 1. 内容里有两个ifame <iframe id="leftiframe"...< ...
- com.rabbitmq.client.impl.Frame.readFrom(Frame.java:95)
RabbitMQ 基于Erlang 实现, 客户端可以用Python | Java | Ruby | PHP | C# | Javascript | Go等语言来实现.这里做个java语言的测试.首先 ...
- Note for video Machine Learning and Data Mining——training vs Testing
Here is the note for lecture five. There will be several points 1. Training and Testing Both of th ...
- Paper | Beyond a Gaussian Denoiser: Residual Learning of Deep CNN for Image Denoising
目录 故事背景 网络结构 BN和残差学习 拓展到其他任务 发表在2017 TIP. 摘要 Discriminative model learning for image denoising has b ...
- Research Guide for Video Frame Interpolation with Deep Learning
Research Guide for Video Frame Interpolation with Deep Learning This blog is from: https://heartbeat ...
- CVPR2016 Paper list
CVPR2016 Paper list ORAL SESSIONImage Captioning and Question Answering Monday, June 27th, 9:00AM - ...
- paper 15 :整理的CV代码合集
这篇blog,原来是西弗吉利亚大学的Li xin整理的,CV代码相当的全,不知道要经过多长时间的积累才会有这么丰富的资源,在此谢谢LI Xin .我现在分享给大家,希望可以共同进步!还有,我需要说一下 ...
- ### Paper about Event Detection
Paper about Event Detection. #@author: gr #@date: 2014-03-15 #@email: forgerui@gmail.com 看一些相关的论文. 1 ...
随机推荐
- 创建windows服务方法
将exe程序创建windows服务 sc create TestService binpath= "c:/in estapp.exe" displayname= "Tes ...
- 'index.js' does not match the corresponding name on disk: '.\node_modules\
跟着视频教程学习react的时候,遇到一个问题,困扰了一阵,最后发现真的很傻! 问题如下: 最后发现是import语句写的有问题,把react写成了React: 正确的引入语句是: import Re ...
- Nacos集群搭建过程详解
Nacos的单节点,也就是我们最开始使用的standalone模式,配置的数据是默认存储到内嵌的数据库derby中. 如果我们要搭建集群的话,那么肯定是不能用内嵌的数据库,不然数据无法共享.集群搭建的 ...
- VS 2017 + OpenCV + Spinnaker SDK(PointGrey) 配置
1. OpenCV 配置 1.1 下载 opencv 源码,并将其添加至环境变量 D:\opencv4.1\build\x64\vc15\bin 注:vs2015 选 vc14,vs2017 选 vc ...
- django--调用百度AI接口实现人脸注册登录
面部识别----考勤打卡.注册登录.面部支付等等...感觉很高大上,又很方便,下面用python中的框架--django完成一个注册登录的功能,调用百度AI的接口,面部识别在网上也有好多教程,可以自己 ...
- 《细说PHP》第四版 样章 第23章 自定义PHP接口规范 5
23.3 接口的安全控制规范 23.2节的示例实现了一个简单接口,但是这个接口此时是在“裸奔”的.因为这个接口所有人都可以请求,不仅我们的客户端可以正常访问数据,如果有人使用如fiddler.wir ...
- 【Linux命令】系统状态检测命令8个(ifconfig、uname、uptime、free、who、last、history、sosreport)
目录 ifconfig获取网卡配置信息 uname查看系统内核版本 uptime查看系统的负载信息 free查看内存信息 who查看当前主机用户的终端信息 last查看系统的登录记录 history查 ...
- Python将list中的unicode转换成中文显示
有这样一个列表: list = [{'channel_id': -3, 'name': u'\u7ea2\u5fc3\u5146\u8d6b'}, {u'seq_id': 0, u'name_en': ...
- C#面对对象之封装、继承、多态的简单理解
一.封装 隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读取和修改的访问级别. 简单来多,就是讲我们所需要的代码打包封装进入一个类里面,便于我们调用,操作.这就是封装. 这样就隔离了具体 ...
- Java生鲜电商平台-高并发核心技术订单与库存实战
Java生鲜电商平台-高并发核心技术订单与库存实战 一. 问题 一件商品只有100个库存,现在有1000或者更多的用户来购买,每个用户计划同时购买1个到几个不等商品. 如何保证库存在高并发的场景下是安 ...