Real-time Controllable Denoising for Image and Video
1.概述
与其他调制方法不同的是该方法,可以实时编辑,而不是设定参数后重新跑一遍网络。该方法跑一次网络后,用户设定控制参数,输出不同强度的图像。
网络最后输出了L种强度的noise map, 和对应的控制参数,得到Clean(AutoTune)
也可以用户自定义控制参数,得到自定义的Clean
其中用Noise Decorrelation的方法 生成noise map, The noise maps are then fed into the proposed
Noise Decorrelation (ND) block, which makes noise maps orthogonal to each other. In this way, the decorrelated noise maps will be zero-correlated and thus become linearly nterpolable。
2. 如何得到noise map
生成若干个 不同noise level(标准差)的noise map
how?
首先除以标准差,变为标准差为1, 然后乘上设定的noise level(比如5,10,。。。55,60等),那么这个noise map的noise level就设定好了。
3. noise map去相关
为什么要去相关?
因为生成的noise map相关性比较大,很多信息是冗余的。
如果不去相关,特定noise level的图像输入网络后,对应该noise level的noise map所对应的 参数将占据主导地位,而其他noise level的noise map似乎没有太多意义。
就是说如果noise level=10的图像输入网络后, noise level=10的noise map对应的c = 1,其他noise level的noise map的c=0。
那么如果设定noise level=20的noise map的c=1, 降噪强度会如预期的那样变大吗?
那么如果设定noise level=5 的noise map的c=1, 降噪强度会如预期的那样变小吗?
另外就是 不具有插值的性质,想要特定noise level=30,设定noise level=30的noise map=1即可,如果设定noise level=20 和 noise level=40各 0.5似乎达不到这样的目的?
去相关和不去相关的插值结果对比:
如何去相关?
利用白化的方法
4. 相同的noise level, 不同的ci
只要下面的公式是固定的数,噪声水平是相同的。
同样的噪声水平可以通过不同的ci组合来设定。
5.损失函数
每一个noise map的目标都是target,只是方差不同。相当于对noise map加了一个方差的约束
最终的损失函数
Invertible Image Signal Processing
Yazhou Xing* Zian Qian* Qifeng Chen
The Hong Kong University of Science and Technology
1.原理概述
从sRGB->raw或者从raw->sRGB
端到端的方式一次优化所有isp步骤
整体思路:
2.准备数据
https://github.com/yzxing87/Invertible-ISP
下载数据之后处理dng格式的raw图
- 减去黑电平,demosaic_bilinear 后得到de_raw, 以及读取 meta的 wb
- 利用rawpy 处理dng得到srgb图像,jpeg格式。
以上就是input和target
3. dataset
对de_raw进行wb
input_raw_img = target_raw_img
target_rgb_img 是rawpy之后的 jpeg格式srgb图像
4. 训练
-
raw经过黑电平校正,demosaic, wb后 是 input, 输入网络得到srgb图像
-
srgb图像经过 diffjpeg压缩过程得到 压缩后的srgb
-
压缩后的srgb 在经过 反向网络的raw.
然后 raw和 srgb都有自己的损失函数,简单的L1.
以上就是整个过程,但是有个问题。第一步得到的srgb 与 target(jpeg压缩后的)建立损失,理应表示压缩后的srgb, 第二步还需要吗?
5. 关键就是整个网络是可逆的
网络有很多个block组成,每个block是可逆的,读代码没有太理解其网络构建的原理。可能要看一下引文16,33.