Code Monkey home page Code Monkey logo

pseudo-isp's Introduction

Pseudo-ISP: Learning Pseudo In-camera Signal Processing Pipeline from A Color Image Denoiser

Abstract

The success of deep denoisers on real-world color photographs usually relies on the modeling of sensor noise and in-camera signal processing (ISP) pipeline. Performance drop will inevitably happen when the sensor and ISP pipeline of test images are different from those for training the deep denoisers (i.e., noise discrepancy). In this paper, we present an unpaired learning scheme to adapt a color image denoiser for handling test images with noise discrepancy. We consider a practical training setting, i.e., a pretrained denoiser, a set of test noisy images, and an unpaired set of clean images. To begin with, the pre-trained denoiser is used to generate the pseudo clean images for the test images. Pseudo-ISP is then suggested to jointly learn the pseudo ISP pipeline and signal-dependent rawRGB noise model using the pairs of test and pseudo clean images. We further apply the learned pseudo ISP and rawRGB noise model to clean color images to synthesize realistic noisy images for denoiser adaption. Pseudo-ISP is effective in synthesizing realistic noisy sRGB images, and improved denoising performance can be achieved by alternating between Pseudo-ISP training and denoiser adaption. Experiments show that our Pseudo-ISP not only can boost simple Gaussian blurring-based denoiser to achieve competitive performance against CBDNet, but also is effective in improving state-of-the-art deep denoisers, e.g., CBDNet and RIDNet.

Illustration of our unpaired learning scheme

drawing

Illustration of our unpaired learning scheme, which iterates with four steps. First, the denoiser is used to obtain pseudo clean images of test noisy images. Then, Pseudo-ISP is deployed to learn noise model in the pseudo rawRGB space, which is further used to synthesize realistic noisy images. Finally, the denoiser is finetuned for adaption using both pseudo and synthetic paired data.

Learning PseudoISP for Noise Modeling

drawing

We constitute our Pseudo-ISP involving three subnets, i.e.,sRGB2Raw, Raw2sRGB and noise estimation (see Fig. 3).

Comparison with State-of-the-arts

drawing

Table 6 lists the PSNR and SSIM results. On all datasets, CBDNet*, RIDNet* and PT-MWRN* outperform their counterparts, indicating that our Pseudo-ISP can be incorporated with different pre-trained denoisers for handling various kinds of noise discrepancy.

Dataset Download Link

Download the mat file of DND dataset

Pre-trained Denoising Model Download Link

Contact

Please send email to [email protected] or [email protected]

pseudo-isp's People

Contributors

happycaoyue avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pseudo-isp's Issues

Nice work! Questions on some results.

Three questions.

1/ According to your paper, you perform evalutation on SIDD benchmark and DND benchmark. I saw results about the PSNR on two datasets. Can you provide both the PSNR and SSIM on two datasets? I only find results on sRGB of SIDD on that website. I need specific results for comparison.

2/ There are two results of PseudoISP on DND leaderboard. It seems that the second one is illustrated on the paper. What do the two methods represent?

3/ From my opinion, PseudoISP also need extra data for training, just like CycleISP, but not the same.

Thanks a lot! Im looking forward to your replies.

Using Pseudo-ISP (Demo)

Hi,

Thank you for this wonderful work. I m hoping to use this for my project since I do not have the ground truth for the set of ultrasound medical images I am working with. I would really appreciate it if you can share a quick demo of how I can use the pre-trained denoising models along with the Pseudo-isp to generate clean data for the medical images I have. I am attaching a sample image to this post:
frame1

I really appreciate your work. Thanks in advance!

Yusuf

Program randomly hangs and doesn't complete data generation with trained Psuedo ISP.

I do not know why but I could not run Stage 2 train, specifically 'Generate_Synthesis_Dataset()'.

I solved this by adding a 'train' flag to the three models and disabling weight initialization when the train flag was false. Without this the program randomly crashes and needs to be killed in htop/nvtop.

Simply as follows:


class RGB2PACK(nn.Module):
    def __init__(self, channels=3, filters_num = 128, filters_pack = 4, train=True):
        super(RGB2PACK, self).__init__()

        # RGB2RAW Network
        self.RGB2RAW = nn.Sequential(
            nn.Conv2d(channels, filters_num, 3, 1, 1),
            nn.ReLU(True),
            nn.Conv2d(filters_num, filters_num, 3, 1, 1),
            nn.ReLU(True),
            nn.Conv2d(filters_num, filters_num, 3, 1, 1),
            nn.ReLU(True),
            nn.Conv2d(filters_num, filters_num, 3, 1, 1),
            nn.ReLU(True),
            nn.Conv2d(filters_num, filters_num, 3, 1, 1),
            nn.ReLU(True),
            nn.Conv2d(filters_num, channels, 3, 1, 1),
            nn.ReLU(True))

        # Mosaic
        self.mosaic = Mosaic_Operation()
        if train:
            self._initialize_weights()

Repeat for the other two networks.

Paper download link

Thanks for your awesome work!
But I can't find your paper in Google. Can you provide it for me?

Incorrect Colour and checkerboard artefact in Noisy images

Hi there. Firstly thank you for the very interesting paper! I am very interested in modeling noise profiles with your program. I have trained the model using the default settings, with DND images denoised using a DNCNN network. However, the dataset generated (using DIV2K) does not seem to have noise similar to the original DND images. There seems to be some incorrect colour shifts as well as some checkerboard artefacts.

Did you observe this in your work and have you any advice for me with regards to settings I could change? Does training for longer help? This seems to be a problem in training PseudoISP as my training data appears to be good. I will try to train again. For now below is an example of the images produced.

Checkerboarding

84_clean84_noisy

Colour artefacts
67_clean67_noisy

Strange colour with Bayer/checkerboard artefacts?
42_clean42_noisy

I did try to train DNCNN again using this but it made performance worse. Any suggestions are welcome

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.