All Projects → cszn → Ffdnet

cszn / Ffdnet

FFDNet: Toward a Fast and Flexible Solution for CNN based Image Denoising (TIP, 2018)

Programming Languages

matlab
3953 projects

Projects that are alternatives of or similar to Ffdnet

stylenet
A pytorch implemention of "StyleNet: Generating Attractive Visual Captions with Styles"
Stars: ✭ 58 (-78.83%)
Mutual labels:  cnn
social-cnn-pytorch
Human Trajectory Prediction in Socially Interacting Crowds Using a CNN-based Architecture
Stars: ✭ 24 (-91.24%)
Mutual labels:  cnn
In Prestissimo
A very fast neural network computing framework optimized for mobile platforms.QQ group: 676883532 【验证信息输:绝影】
Stars: ✭ 268 (-2.19%)
Mutual labels:  cnn
WSCNNTDSaliency
[BMVC17] Weakly Supervised Saliency Detection with A Category-Driven Map Generator
Stars: ✭ 19 (-93.07%)
Mutual labels:  cnn
Stock-Prediction
stock predict by cnn and lstm
Stars: ✭ 25 (-90.88%)
Mutual labels:  cnn
Cnnvisualizer
Visualizer for Deep Neural Networks
Stars: ✭ 259 (-5.47%)
Mutual labels:  cnn
finetuneAlexVGG
Finetune ConvNets with Tensorflow
Stars: ✭ 20 (-92.7%)
Mutual labels:  cnn
Caffe Hrt
Heterogeneous Run Time version of Caffe. Added heterogeneous capabilities to the Caffe, uses heterogeneous computing infrastructure framework to speed up Deep Learning on Arm-based heterogeneous embedded platform. It also retains all the features of the original Caffe architecture which users deploy their applications seamlessly.
Stars: ✭ 271 (-1.09%)
Mutual labels:  cnn
deep-learning-coursera-complete
Deep Learning Specialization by Andrew Ng on Coursera - My Completed Coursework Repo - All 5 Courses
Stars: ✭ 104 (-62.04%)
Mutual labels:  cnn
Embeddedsystem
📚 嵌入式系统基础知识与主流编程语言相关内容总结
Stars: ✭ 266 (-2.92%)
Mutual labels:  cnn
mods-light-zmq
MODS with external deep descriptors/detectors
Stars: ✭ 46 (-83.21%)
Mutual labels:  cnn
RCAN-tf
TensorFlow code for ECCV 2018 paper "Image Super-Resolution Using Very Deep Residual Channel Attention Networks"
Stars: ✭ 25 (-90.88%)
Mutual labels:  cnn
Facial Expression Recognition Using Cnn
Deep facial expressions recognition using Opencv and Tensorflow. Recognizing facial expressions from images or camera stream
Stars: ✭ 261 (-4.74%)
Mutual labels:  cnn
DLSS
Deep Learning Super Sampling with Deep Convolutional Generative Adversarial Networks.
Stars: ✭ 88 (-67.88%)
Mutual labels:  cnn
Pytorch Saltnet
Kaggle | 9th place single model solution for TGS Salt Identification Challenge
Stars: ✭ 270 (-1.46%)
Mutual labels:  cnn
Audio-Classification-using-CNN-MLP
Multi class audio classification using Deep Learning (MLP, CNN): The objective of this project is to build a multi class classifier to identify sound of a bee, cricket or noise.
Stars: ✭ 36 (-86.86%)
Mutual labels:  cnn
Facedetection
C++ project to implement MTCNN, a perfect face detect algorithm, on different DL frameworks. The most popular frameworks: caffe/mxnet/tensorflow, are all suppported now
Stars: ✭ 255 (-6.93%)
Mutual labels:  cnn
Pytorch Image Classification
Tutorials on how to implement a few key architectures for image classification using PyTorch and TorchVision.
Stars: ✭ 272 (-0.73%)
Mutual labels:  cnn
Resnetcam Keras
Keras implementation of a ResNet-CAM model
Stars: ✭ 269 (-1.82%)
Mutual labels:  cnn
Handwritingrecognitionsystem
Handwriting Recognition System based on a deep Convolutional Recurrent Neural Network architecture
Stars: ✭ 262 (-4.38%)
Mutual labels:  cnn

FFDNet

FFDNet: Toward a Fast and Flexible Solution for CNN based Image Denoising

New training and testing codes (PyTorch) - 18/12/2019

Training and Testing Codes (PyTorch)

FFDNet-pytorch

An Analysis and Implementation of the FFDNet Image Denoising Method

PixelUnshuffle layer (PyTorch)

from torch.nn import Module


def pixel_unshuffle(input, upscale_factor):
    r"""Rearranges elements in a Tensor of shape :math:`(C, rH, rW)` to a
    tensor of shape :math:`(*, r^2C, H, W)`.
    written by: Zhaoyi Yan, https://github.com/Zhaoyi-Yan
    and Kai Zhang, https://github.com/cszn/FFDNet
    01/01/2019
    """
    batch_size, channels, in_height, in_width = input.size()

    out_height = in_height // upscale_factor
    out_width = in_width // upscale_factor

    input_view = input.contiguous().view(
        batch_size, channels, out_height, upscale_factor,
        out_width, upscale_factor)

    channels *= upscale_factor ** 2
    unshuffle_out = input_view.permute(0, 1, 3, 5, 2, 4).contiguous()
    return unshuffle_out.view(batch_size, channels, out_height, out_width)


class PixelUnShuffle(Module):
    r"""Rearranges elements in a Tensor of shape :math:`(C, rH, rW)` to a
    tensor of shape :math:`(*, r^2C, H, W)`.
    written by: Zhaoyi Yan, https://github.com/Zhaoyi-Yan
    and Kai Zhang, https://github.com/cszn/FFDNet
    01/01/2019
    """

    def __init__(self, upscale_factor):
        super(PixelUnShuffle, self).__init__()
        self.upscale_factor = upscale_factor

    def forward(self, input):
        return pixel_unshuffle(input, self.upscale_factor)

    def extra_repr(self):
        return 'upscale_factor={}'.format(self.upscale_factor)

Abstract

Due to the fast inference and good performance, discriminative learning methods have been widely studied in image denoising. However, these methods mostly learn a specific model for each noise level, and require multiple models for denoising images with different noise levels. They also lack flexibility to deal with spatially variant noise, limiting their applications in practical denoising. To address these issues, we present a fast and flexible denoising convolutional neural network, namely FFDNet, with a tunable noise level map as the input. The proposed FFDNet works on downsampled subimages,achieving a good trade-off between inference speed and denoising performance. In contrast to the existing discriminative denoisers, FFDNet enjoys several desirable properties, including

  • the ability to handle a wide range of noise levels (i.e., [0, 75]) effectively with a single network,
  • the ability to remove spatially variant noise by specifying a non-uniform noise level map, and
  • faster speed than benchmark BM3D even on CPU without sacrificing denoising performance.

Extensive experiments on synthetic and real noisy images are conducted to evaluate FFDNet in comparison with state-of-the-art denoisers. The results show that FFDNet is effective and efficient, making it highly attractive for practical denoising applications.

Network Architecture

architecture The input image is reshaped to four sub-images, which are then input to the CNN together with a noise level map. The final output is reconstructed by the four denoised sub-images

Test FFDNet Models

  • Demo_AWGN_Gray.m is the testing demo of FFDNet for denoising grayscale images corrupted by AWGN.

  • Demo_AWGN_Color.m is the testing demo of FFDNet for denoising color images corrupted by AWGN.

  • Demo_AWGN_Gray_Clip.m is the testing demo of FFDNet for denoising grayscale images corrupted by AWGN with clipping setting.

  • Demo_AWGN_Color_Clip.m is the testing demo of FFDNet for denoising color images corrupted by AWGN with clipping setting.

  • Demo_REAL_Gray.m is the testing demo of FFDNet for denoising real noisy (grayscale) images.

  • Demo_REAL_Color.m is the testing demo of FFDNet for denoising real noisy (color) images.

  • Demo_multivariate_Gaussian_noise.m is the testing demo of FFDNet for denoising noisy images corrupted by multivariate (3D) Gaussian noise model N([0,0,0]; Sigma) with zero mean and covariance matrix Sigma in the RGB color space.

Results on Real Noisy Images from The Darmstadt Noise Dataset

PSNR: 37.61dB

The left is the noisy image from The Darmstadt Noise Dataset. The right is the denoised image by FFDNet+.

Image Denoising for AWGN

Grayscale Image Denoising

Color Image Denoising

The left is the noisy image corrupted by AWGN with noise level 75. The right is the denoised image by FFDNet.

Real Image Denoising

The left is the real noisy image. The right is the denoised image by FFDNet.

example

Extension

  • Demo_multivariate_Gaussian_noise.m is the testing demo of FFDNet for denoising noisy images corrupted by multivariate (3D) Gaussian noise model N([0,0,0]; Sigma) with zero mean and covariance matrix Sigma in the RGB color space.

Requirements and Dependencies

To run the code, you should install Matconvnet first. Alternatively, you can use function vl_ffdnet_matlab to perform denoising without Matconvnet.

Citation

@article{zhang2018ffdnet,
  title={FFDNet: Toward a Fast and Flexible Solution for {CNN} based Image Denoising},
  author={Zhang, Kai and Zuo, Wangmeng and Zhang, Lei},
  journal={IEEE Transactions on Image Processing},
  year={2018},
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].