This repository contains the pytorch implementation for the paper: Hyperspectral Unmixing Using a Neural Network Autoencoder (Palsson et al. 2018). As a POC, the dataloaders and parameters corresponding to experiments on the Samson dataset are presented.
- PyTorch 1.8.0
- Python 3.7.10
The datasets used in the paper are publicly available and can be found here.
Download the Samson dataset from the above-mentioned source. Follow the directory tree given below:
|-- [root] HyperspecAE\
|-- [DIR] data\
|-- [DIR] Samson\
|-- [DIR] Data_Matlab\
|-- samson_1.mat
|-- [DIR] GroundTruth
|-- end3.mat
|-- end3_Abundances.fig
|-- end3_Materials.fig
The shell script that trains the model (samson_train.sh
) can be found in the run folder. You can simply alter the hyperparameters and other related model options in this script and run it on the terminal.
You can refer to opts.py to explore other command line arguments to customize model training.
The shell script that extracts the abundance maps and end-members (extract.sh
) can be found in the run folder. Ensure that the charateristics of the model match exactly with the pre-trained version to be used for extraction.
The following are the results of a deep autoencoder, Configuration Name: LReLU (see paper). You can experiment with other configurations by altering the command line arguments during model training.
The pre-trained model for this configuration can be found here.
Left: Tree, Middle: Water and Right: Rock.
Left: Tree, Middle: Water and Right: Rock.
Original work by the authors
@article{palsson2018hyperspectral,
title={Hyperspectral unmixing using a neural network autoencoder},
author={Palsson, Burkni and Sigurdsson, Jakob and Sveinsson, Johannes R and Ulfarsson, Magnus O},
journal={IEEE Access},
volume={6},
pages={25646--25656},
year={2018},
publisher={IEEE}
}