Skip to content

3D Quasi-Recurrent Neural Network for Hyperspectral Image Denoising (TNNLS 2020)

Notifications You must be signed in to change notification settings

coderXuXiang/QRNN3D

 
 

Repository files navigation

QRNN3D

The implementation of TNNLS 2020 paper "3D Quasi-Recurrent Neural Network for Hyperspectral Image Denoising"

Highlights

  • Our network outperforms all leading-edge methods (2019) on ICVL dataset in both Gaussian and complex noise cases, as shown below:

  • We demonstrated our network pretrained on 31-bands natural HSI database (ICVL) can be utilized to recover remotely-sensed HSI (> 100 bands) corrupted by real-world non-Gaussian noise due to terrible atmosphere and water absorptions

Prerequisites

  • Python >=3.5, PyTorch >= 0.4.1
  • Requirements: opencv-python, tensorboardX, caffe
  • Platforms: Ubuntu 16.04, cuda-8.0

Quick Start

1. Preparing your training/testing datasets

Download ICVL hyperspectral image database from here (we only need .mat version)

Training dataset

Note cafe (via conda install) and lmdb are required to execute the following instructions.

  • Read the function create_icvl64_31 in utility/lmdb_data.py and follow the instruction comment to define your data/dataset address.

  • Create ICVL training dataset by python utility/lmdb_data.py

Testing dataset

Note matlab is required to execute the following instructions.

  • Read the matlab code of matlab/generate_dataset* to understand how we generate noisy HSIs.

  • Read and modify the matlab code of matlab/HSIData.m to generate your own testing dataset

2. Testing with pretrained models

  • Download our pretrained models from OneDrive and move them to checkpoints/qrnn3d/gauss/ and checkpoints/qrnn3d/complex/ respectively.

  • [Blind Gaussian noise removal]:
    python hsi_test.py -a qrnn3d -p gauss -r -rp checkpoints/qrnn3d/gauss/model_epoch_50_118454.pth

  • [Mixture noise removal]:
    python hsi_test.py -a qrnn3d -p complex -r -rp checkpoints/qrnn3d/complex/model_epoch_100_159904.pth

You can also use hsi_eval.py to evaluate quantitative HSI denoising performance.

3. Training from scratch

  • Training a blind Gaussian model firstly by
    python hsi_denoising_gauss.py -a qrnn3d -p gauss --dataroot (your own dataroot)

  • Using the pretrained Gaussian model as initialization to train a complex model:
    python hsi_denoising_complex.py -a qrnn3d -p complex --dataroot (your own dataroot) -r -rp checkpoints/qrnn3d/gauss/model_epoch_50_118454.pth --no-ropt

Citation

If you find this work useful for your research, please cite:

@article{wei2020QRNN3D,
  title={3-D Quasi-Recurrent Neural Network for Hyperspectral Image Denoising},
  author={Wei, Kaixuan and Fu, Ying and Huang, Hua},
  journal={IEEE Transactions on Neural Networks and Learning Systems},
  year={2020},
  publisher={IEEE}
}

Contact

Please contact me if there is any question (Kaixuan Wei [email protected])

About

3D Quasi-Recurrent Neural Network for Hyperspectral Image Denoising (TNNLS 2020)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 75.6%
  • MATLAB 21.2%
  • TeX 3.2%