Giter Club home page Giter Club logo

self2selfplus's Introduction

Self2Self+: Single-Image Denoising with Self-Supervised Learning and Image Quality Assessment Loss

Abstract

Recently, denoising methods based on supervised learning have exhibited promising performance. However, their reliance on external datasets containing noisy-clean image pairs restricts their applicability. To address this limitation, researchers have focused on training denoising networks using solely a set of noisy inputs. To improve the feasibility of denoising procedures, in this study, we proposed a single-image self-supervised learning method in which only the noisy input image is used for network training. Gated convolution was used for feature extraction and no-reference image quality assessment was used for guiding the training process. Moreover, the proposed method sampled instances from the input image dataset using Bernoulli sampling with a certain dropout rate for training. The corresponding result was produced by averaging the generated predictions from various instances of the trained network with dropouts. The experimental results indicated that the proposed method achieved state-of-the-art denoising performance on both synthetic and real-world datasets. This highlights the effectiveness and practicality of our method as a potential solution for various noise removal tasks.

Denoising Process

  • CBSD68 Dataset with AWGN of σ=50

Prerequisites

  • Python 3.8.10
  • PyTorch>=1.12.1
  • Torchvision>=0.13.1
  • NVIDIA GPU + CUDA cuDNN

Installation

  • Clone this repo.

git clone https://github.com/JK-the-Ko/Self2SelfPlus.git
cd Self2SelfPlus/
pip install -r requirements.txt

Dataset

  • CBSD68 dataset with AWGN of 15, 25, and 50. The following dataset should be placed in dataset/CBSD68/sigma-N folder.
  • SIDD dataset. The following dataset should be placed in dataset/SIDD/Noisy folder.
  • PolyU dataset. The following dataset should be placed in dataset/PolyU/real folder.

Training

The following script is for training CBSD68 dataset with different AWGNs. We recommend using commands written in the scripts folder.

python train.py --dataType CBSD68 --sigma AWGN-SIGMA --p 0.4 --numIters 4000

The following script is for training SIDD dataset. We recommend using commands written in the scripts folder.

python train.py --dataType SIDD --p 0.9 --numIters 1000

The following script is for training PolyU dataset. We recommend using commands written in the scripts folder.

python train.py --dataType PolyU --p 0.7 --numIters 5000

Evaluation

During training, the final result will be saved automatically in results/dataset-name folder.

Pre-Trained Models

Since it is a single-image self-supervised learning task, no pre-trained models can be given.

Citation

If you use Self2Self+ in your work, please consider citing us as

@misc{ko2023self2self,
      title={Self2Self+: Single-Image Denoising with Self-Supervised Learning and Image Quality Assessment Loss}, 
      author={Jaekyun Ko and Sanghwan Lee},
      year={2023},
      eprint={2307.10695},
      archivePrefix={arXiv},
      primaryClass={cs.CV}
}

self2selfplus's People

Contributors

jk-the-ko avatar

Stargazers

Luckystar avatar 杨邴予 avatar Kun Yang avatar  avatar Qizhi Wang avatar Tristan Manchester avatar YouSiki avatar GIT avatar  avatar  avatar

Watchers

Kostas Georgiou avatar  avatar

self2selfplus's Issues

Issues with Program Reproduction and Usage

Dear Author,
I am a student studying image processing. I have recently read your article, downloaded the associated code, and attempted to reproduce the results. I have a rather naive question. I was successful in removing noise from the airplane images in the sigma25 folder of the CBSD68 dataset. However, when I replaced the airplane images with my own noisy images, the denoising was unsuccessful. I used the same path and the same denoising process and method, but I could not achieve the same denoising results. I am unsure about the reason behind this. I sincerely hope you could provide an answer! Thank you!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.