Implementation for the paper: Invertible Denoising Network: A Light Solution for Real Noise Removal (CVPR2021).

Overview

Invertible Image Denoising

This is the PyTorch implementation of paper: Invertible Denoising Network: A Light Solution for Real Noise Removal (CVPR 2021). arxiv.

Dependencies and Installation

  • Python 3 (Recommend to use Anaconda)
  • PyTorch >= 1.0
  • NVIDIA GPU + CUDA
  • Python packages: pip install numpy opencv-python lmdb pyyaml
  • TensorBoard:
    • PyTorch >= 1.1: pip install tb-nightly future
    • PyTorch == 1.0: pip install tensorboardX

Dataset Preparation

The datasets used in this paper is DND (can be downloaded here), SIDD (can be downloaded here) and RNI.

Get Started

Training and testing codes are in 'codes/'. Please see 'codes/README.md' for basic usages. Pretrained model can be found in 'pretrained/'

Invertible Architecture

Invertible Architecture

Visual Results

Qualitative results on the SIDD, DND and RNI dataset All visual results for SIDD dataset can be found in 'results/'.

Acknowledgement

The code is based on Invertible Image Rescaling. If you find this code is helpful, please also cite the paper Invertible Image Rescaling.

Citation

If you find this work helps you, please cite:

@article{liu2021invertible,
  title={Invertible Denoising Network: A Light Solution for Real Noise Removal},
  author={Liu, Yang and Qin, Zhenyue and Anwar, Saeed and Ji, Pan and Kim, Dongwoo and Caldwell, Sabrina and Gedeon, Tom},
  journal={arXiv preprint arXiv:2104.10546},
  year={2021}
}

Contact

If you have any questions, please contact [email protected] or [email protected].

Comments
  • training dataset psnr only 34.97

    training dataset psnr only 34.97

    我刚开始只使用了SIDD数据集进行训练,大概有16000张图片,psnr最终停留在32.x就不再上升了。后来又去给图片添加噪点,就是使用普通的高斯噪声,加了大概3万多继续训练,现在psnr只能达到34.97很难上去了。我想到可能是没有使用DND dataset,只是自己添加了随机的噪声才会导致这样,想请问我理解的正确吗?

    原谅我不能使用英文和你交流。

    opened by ai-Ilike 5
  • error in running the code

    error in running the code

    Hi,

    I got

    NameError: name '_file_' is not defined when running through

    opt['path']['root'] = osp.abspath(osp.join(_file_, osp.pardir, osp.pardir, osp.pardir))

    at codes/options/options.py.

    Any suggestions?

    yours, Luming

    opened by llmpass 4
  • How to set the training folders (format)

    How to set the training folders (format)

    In the yaml file, 2 folders have to be set:

    dataroot_GT: '' # path to training Clean images
    dataroot_Noisy: '' # path to training Noisy images
    

    Show I put original SIDD GT and noisy png files into these folders or show I run your crop_sidd.py to create a large number of cropped images? In addition, what should be the file names in those folders?

    opened by llmpass 2
  • How could I get the paper?

    How could I get the paper?

    Hi, I am interested in your paper's title and I wonder when you would release the full paper. Besides, the image link of network architecture in your readme has failed, so I cannot get a brief knowledge about your work.

    Thanks in advance.

    opened by SoHardToMakeAName 2
  • About training loss

    About training loss

    Hi, thanks for this great works! I try to train invdn in my own datasets. I get a strange problem. The l_back_rec is too big, eg 1e+3. I don't know whether it is normal. InvDN_back_rec_loss太大 I would apprecaite it if someone could help me.

    opened by YangGangZhiQi 1
  • How to make BenchmarkNoisyBlockssrgb.mat?

    How to make BenchmarkNoisyBlockssrgb.mat?

    感谢你的回复!不过我有遇到了新的问题,我不知道如何使用自己的测试集生成"BenchmarkNoisyBlocksSrgb.mat”。我在bing搜索了一下,看到了找到了这个链接:"https://github.com/TLampr/VDNet-TF-2.0/tree/master/datasets",请问是这样生成的吗?如果不是的话,能不能把有关的资料发给我去了解一下。谢谢!

    opened by ai-Ilike 1
  • What's the pre-processing of DIV2K for training? missing contents in crop_***.py

    What's the pre-processing of DIV2K for training? missing contents in crop_***.py

    I tried to perform training on DIV2K dataset with the help of LQGTSN_dataset.py. However, the performance seems poor(under 30dB PSNR, quite lower than proposed). The loss curves also differ a lot from the training on SIDD dataset. Maybe I missed some important configurations when training on the DIV2K. It will be appreciated if you provide corresponding pre-trained models or more detailed instructions for reproduction. It seems empty in crop_SIDD.py. Besides, crop_DIV2K.py doesn't match the DIV2K dataset.

    opened by Zirconium2159 1
  • about dataset

    about dataset

    The original SIDD dataset is not a folder structure like the author's /SIDD_Medium_Srgb/GT and SIDD_Medium_Srgb/Noisy, but a SIDD_Medium_Srgb\Data\0001_001_S6_00100_00060_3200_L*GT*.png or NOISY.png like this. Please tell me how the author runs the code.

    opened by mengchuangji 0
  • Questions about the training details

    Questions about the training details

    Hi! This is a really interesting work in image denoising, and I try to reproduce the results using your code. However, I have some questions about the details of your code:

    1. The train_InvDN.yaml file is different from the description in the paper, e.g., batch size of 28 in yaml vs 14 in the paper, learning rate steps 100k in yaml vs 50k in paper. Which configuration should I use to reproduce your result in the paper? or Could you please provide the original yaml file of your paper?
    2. About the loss function: the backward loss still contains the gradient loss and the SSIM loss. Should I comment them or not?
    3. Just to make sure how to prepare the SSID training data. Is it right to crop each training image into 100 patches with the patch size of 512 using Crop_SIDD.py?

    Thanks for your patience to read my questions, and I'm looking forward to receiving your reply!

    opened by yqjiang6 0
  • PCA

    PCA

    Hello, this is a very worthwhile paper, but I have a question for you now. Can you provide the code for the "PCA Visualization Results" part of your paper?Thank you so much!

    opened by ph0316 0
  • calculate FLOPs

    calculate FLOPs

    NICE work~ I tried to use thop on your code to calculate FLOPs, but there will always be errors. Could you please provide the code you report to calculate flops

    opened by Lucien66 0
  • Generate some artifacts

    Generate some artifacts

    Hi, thanks for your great work and sharing. I tested the pre-trained model with my test image, and it generated some artifaces. Have you ever encountered this? Any suggestions for improving this? image

    opened by realzheng 0
  • codes.models.modules.VDN not available

    codes.models.modules.VDN not available

    Hello in line 12 of Denoised_LR.py file there is "from codes.models.modules.VDN import VDN as DN" but in there is any VDN module or function so this generate me an error while trying to denoise an image. Hope I can have an answer, thank you.

    opened by SalimCheb 0
Owner
null
Code for CVPR2021 paper "Robust Reflection Removal with Reflection-free Flash-only Cues"

Robust Reflection Removal with Reflection-free Flash-only Cues (RFC) Paper | To be released: Project Page | Video | Data Tensorflow implementation for

Chenyang LEI 162 Jan 5, 2023
Self-Supervised Methods for Noise-Removal

SSMNR | Self-Supervised Methods for Noise Removal Image denoising is the task of removing noise from an image, which can be formulated as the task of

null 1 Jan 16, 2022
The trained model and denoising example for paper : Cardiopulmonary Auscultation Enhancement with a Two-Stage Noise Cancellation Approach

The trained model and denoising example for paper : Cardiopulmonary Auscultation Enhancement with a Two-Stage Noise Cancellation Approach

ycj_project 1 Jan 18, 2022
Re-implementation of the Noise Contrastive Estimation algorithm for pyTorch, following "Noise-contrastive estimation: A new estimation principle for unnormalized statistical models." (Gutmann and Hyvarinen, AISTATS 2010)

Noise Contrastive Estimation for pyTorch Overview This repository contains a re-implementation of the Noise Contrastive Estimation algorithm, implemen

Denis Emelin 42 Nov 24, 2022
PyTorch implementation of SmoothGrad: removing noise by adding noise.

SmoothGrad implementation in PyTorch PyTorch implementation of SmoothGrad: removing noise by adding noise. Vanilla Gradients SmoothGrad Guided backpro

SSKH 143 Jan 5, 2023
Official implementation of "Open-set Label Noise Can Improve Robustness Against Inherent Label Noise" (NeurIPS 2021)

Open-set Label Noise Can Improve Robustness Against Inherent Label Noise NeurIPS 2021: This repository is the official implementation of ODNL. Require

Hongxin Wei 12 Dec 7, 2022
Official code of "R2RNet: Low-light Image Enhancement via Real-low to Real-normal Network."

R2RNet Official code of "R2RNet: Low-light Image Enhancement via Real-low to Real-normal Network." Jiang Hai, Zhu Xuan, Ren Yang, Yutong Hao, Fengzhu

null 77 Dec 24, 2022
This is the repository for paper NEEDLE: Towards Non-invertible Backdoor Attack to Deep Learning Models.

This is the repository for paper NEEDLE: Towards Non-invertible Backdoor Attack to Deep Learning Models.

null 1 Oct 25, 2021
Code for "Neural Parts: Learning Expressive 3D Shape Abstractions with Invertible Neural Networks", CVPR 2021

Neural Parts: Learning Expressive 3D Shape Abstractions with Invertible Neural Networks This repository contains the code that accompanies our CVPR 20

Despoina Paschalidou 161 Dec 20, 2022
[ACMMM 2021 Oral] Enhanced Invertible Encoding for Learned Image Compression

InvCompress Official Pytorch Implementation for "Enhanced Invertible Encoding for Learned Image Compression", ACMMM 2021 (Oral) Figure: Our framework

null 96 Nov 30, 2022
InvTorch: memory-efficient models with invertible functions

InvTorch: Memory-Efficient Invertible Functions This module extends the functionality of torch.utils.checkpoint.checkpoint to work with invertible fun

Modar M. Alfadly 12 May 12, 2022
Light-weight network, depth estimation, knowledge distillation, real-time depth estimation, auxiliary data.

light-weight-depth-estimation Boosting Light-Weight Depth Estimation Via Knowledge Distillation, https://arxiv.org/abs/2105.06143 Junjie Hu, Chenyou F

Junjie Hu 13 Dec 10, 2022
Official pytorch code for SSAT: A Symmetric Semantic-Aware Transformer Network for Makeup Transfer and Removal

SSAT: A Symmetric Semantic-Aware Transformer Network for Makeup Transfer and Removal This is the official pytorch code for SSAT: A Symmetric Semantic-

ForeverPupil 57 Dec 13, 2022
RCDNet: A Model-driven Deep Neural Network for Single Image Rain Removal (CVPR2020)

RCDNet: A Model-driven Deep Neural Network for Single Image Rain Removal (CVPR2020) Hong Wang, Qi Xie, Qian Zhao, and Deyu Meng [PDF] [Supplementary M

Hong Wang 6 Sep 27, 2022
Official repository for "Restormer: Efficient Transformer for High-Resolution Image Restoration". SOTA for motion deblurring, image deraining, denoising (Gaussian/real data), and defocus deblurring.

Restormer: Efficient Transformer for High-Resolution Image Restoration Syed Waqas Zamir, Aditya Arora, Salman Khan, Munawar Hayat, Fahad Shahbaz Khan,

Syed Waqas Zamir 906 Dec 30, 2022
Official Tensorflow implementation of "M-LSD: Towards Light-weight and Real-time Line Segment Detection"

M-LSD: Towards Light-weight and Real-time Line Segment Detection Official Tensorflow implementation of "M-LSD: Towards Light-weight and Real-time Line

NAVER/LINE Vision 357 Jan 4, 2023
Pytorch implementation of "M-LSD: Towards Light-weight and Real-time Line Segment Detection"

M-LSD: Towards Light-weight and Real-time Line Segment Detection Pytorch implementation of "M-LSD: Towards Light-weight and Real-time Line Segment Det

null 123 Jan 4, 2023
Official implementation of our paper "Learning to Bootstrap for Combating Label Noise"

Learning to Bootstrap for Combating Label Noise This repo is the official implementation of our paper "Learning to Bootstrap for Combating Label Noise

null 21 Apr 9, 2022
Xview3 solution - XView3 challenge, 2nd place solution

Xview3, 2nd place solution https://iuu.xview.us/ test split aggregate score publ

Selim Seferbekov 24 Nov 23, 2022