CycleISP:通过改进数据合成实现真实图像修复(CVPR 2020 -- 口头报告)
Syed Waqas Zamir,Aditya Arora,Salman Khan,Munawar Hayat,Fahad Shahbaz Khan,Ming-Hsuan Yang,Ling Shao
摘要: 大规模数据集的可用性帮助释放了深度卷积神经网络(CNN)的真正潜力。然而,对于单张图像去噪问题,捕获一个真实数据集是一个不可接受的昂贵且繁琐的过程。因此,图像去噪算法大多在合成数据上开发和评估,这些数据通常是在加性白高斯噪声(AWGN)假设下生成的。虽然CNN在这些合成数据集上取得了令人印象深刻的结果,但在应用于真实相机图像时表现不佳,正如最近基准数据集中报道的那样。这主要是因为AWGN不足以模拟真实的相机噪声,该噪声依赖于信号并且被相机成像流程大量转换。在本文中,我们提出了一个框架,可以在正向和反向方向上模拟相机成像流程。这使我们能够在RAW和sRGB空间中生成任意数量的逼真图像对以用于去噪。通过在逼真的合成数据上训练一个新的图像去噪网络,我们在真实相机基准数据集上实现了最新的性能。我们模型中的参数比之前最好的RAW去噪方法少约5倍。此外,我们证明了所提出的框架不仅限于图像去噪问题,例如,在立体电影中的颜色匹配。
用于图像去噪的数据合成的CycleISP
提出的CycleISP框架允许将sRGB图像转换为RAW数据,然后再转换回sRGB图像。它包含(a) RGB2RAW网络分支,和(b) RAW2RGB网络分支。
CycleISP的整体框架
递归残差组 (RRG)
提出的去噪网络
安装
该模型基于PyTorch 1.1.0构建,并在Ubuntu 16.04环境(Python3.7,CUDA9.0,cuDNN7.5)下进行了测试。
安装步骤如下:
sudo apt-get install cmake build-essential libjpeg-dev libpng-dev
conda create -n pytorch1 python=3.7
conda activate pytorch1
conda install pytorch=1.1 torchvision=0.3 cudatoolkit=9.0 -c pytorch
pip install matplotlib scikit-image yacs lycon natsort h5py tqdm
使用CycleISP进行数据合成
- 下载所有模型并将其放在./pretrained_models/isp/目录下
- 从MIR-Flickr数据集中下载一些样本图像,并将它们放在./datasets/some_sample_images/目录下
生成RAW去噪数据
RGB2RAW网络分支将干净的sRGB图像作为输入并将其转换为干净的RAW图像。噪声注入模块向RGB2RAW网络分支的RAW输出添加不同级别的拍摄噪声和读取噪声。因此,我们可以从任何sRGB图像生成干净和对应的噪声图像对{RAW_clean, RAW_noisy}。
- 运行演示
python generate_raw_data.py
生成sRGB去噪数据
给定合成的RAW噪声图像作为输入,RAW2RGB网络分支将其映射到一个噪声的sRGB图像;因此,我们能够生成sRGB去噪问题的图像对{sRGB_clean, sRGB_noisy}。
- 运行演示
python generate_rgb_data.py
评估
您可以一次性从这个Google Drive 链接下载CycleISP的完整库(包括预训练模型、数据集、结果等),或者按照以下说明评估各个任务:
去噪DND的RAW图像
python test_dnd_raw.py --save_images
去噪SIDD的RAW图像
python test_sidd_raw.py --save_images
去噪DND的sRGB图像
python test_dnd_rgb.py --save_images