mhaut / hyperspectral_deeplearning_review

Code of paper "Deep Learning Classifiers for Hyperspectral Imaging: A Review"
GNU General Public License v3.0
186 stars 56 forks source link
classification deeplearning hyperspectral hyperspectral-image-classification review

Deep Learning Classifiers for Hyperspectral Imaging: A Review


The Code for "Deep Learning Classifiers for Hyperspectral Imaging: A Review".
[https://www.sciencedirect.com/science/article/pii/S0924271619302187]

M. E. Paoletti, J. M. Haut, J. Plaza and A. Plaza.
Deep Learning Classifiers for Hyperspectral Imaging: A Review
International Society for Photogrammetry and Remote Sensing
DOI: 10.1016/j.isprsjprs.2019.09.006
vol. 158, pp. 279-317, December 2019.

reviewHSI

Example of use

# Without datasets
git clone https://github.com/mhaut/hyperspectral_deeplearning_review/

# With datasets
git clone --recursive https://github.com/mhaut/hyperspectral_deeplearning_review/
cd HSI-datasets
python join_dsets.py

Run code

Go to algorithms folder and run

# Training from scratch
python <algorithm>.py --dataset IP 
# Example:
python svm.py --dataset IP --tr_percent 0.15

# Fine-tuning (not recommended) <DENSENET121, MOBILENET, RESNET50, VGG16, VGG19>:
python pretrained_cnn.py --dataset IP --arch <architecture>
# Example:
python pretrained_cnn.py --dataset IP --arch VGG16

# Transfer learning <CNN1D, CNN2D, CNN2D40bands, CNN3D>, two steps:
python transfer_learning.py --dataset1 IP --dataset2 SV --arch <algorithm> --search_base_model
python transfer_learning.py --dataset1 IP --dataset2 SV --tr_samples 2 --use_val --arch <algorithm> --use_transfer_learning
# Example:
python transfer_learning.py --dataset1 IP --dataset2 SV --arch CNN2D40bands --search_base_model
python transfer_learning.py --dataset1 IP --dataset2 SV --tr_samples 2 --use_val --arch CNN2D40bands --use_transfer_learning

Other parameters

Dimensionality reduction - - components [number]

python <algorithm>.py --dataset IP --components 40

You can change the proposed parameters - - set_parameters [parameters]

python svm.py --dataset IP --set_parameters --C 2 --g 0.01

You can use validation set - - use_val by default is 10%, you can change it - -use_val - -val_percent [percent]

python cnn1d.py --dataset IP --use_val --val_percent 0.10

Example:

python cnn1d.py --dataset IP --components 40  --set_parameters --epochs 100 --batch_size 32--use_val --val_percent 0.10