Paper links: IEEE T-GARS paper and IGARSS2017 paper. Code download link: SSRN code.
UPDATE: A PyTorch implementation of SSRN is available at SSTN, which contains SSRNs for the KSC, PC, IN, and UP datasets. Specifically, you can find it here: PyTorch-SSRN
Here are the bibliography info:
@article{zhong2018spectral,
title={Spectral-Spatial Residual Network for Hyperspectral Image Classification: A 3-D Deep Learning Framework},
author={Zhong, Zilong and Li, Jonathan and Luo, Zhiming and Chapman, Michael},
journal={IEEE Transactions on Geoscience and Remote Sensing},
volume={56},
number={2},
pages={847--858},
year={2018},
publisher={IEEE}
}
In this paper, we designed an end-to-end spectral-spatial residual network (SSRN) that takes raw 3D cubes as input data without feature engineering for hyperspectral image classification. In this network, the spectral and spatial residual blocks consecutively learn discriminative features from abundant spectral signatures and spatial contexts in hyperspectral imagery (HSI).
Fig.1 Spectral Residual Block
Fig.2 Spatial Residual Block
Fig.3 Spectral-Spatial Residual Network with a 7x7x200 input HSI volume. The network includes two spectral and two spatial residual blocks. An average pooling layer and a fully connected layer transform a 5x5x24 spectral-spatial feature volume into a 1x1xL output feature vector
The proposed SSRN is a supervised deep learning framework that alleviates the declining-accuracy phenomenon of other deep learning models. Specifically, the residual blocks connect every other 3D convolutional layer through identity mapping, which facilitates the back propagation of gradients. Furthermore, we impose batch normalization on every convolutional layer to regularize the learning process and improve the classification performance of trained models. Quantitative and qualitative results demonstrate that SSRN achieved the state-of-the-art HSI classification accuracy in different kinds of hyperspectral datasets.
When you create a conda environment, check you have installed the packages in the package-list. You can also refer to the managing environments of conda.
Train models with commonly studied hyperspectral imagery (HSI) datasets:
$ python ./SSRN_IN.py
$ python ./SSRN_UP.py
Evaluate saved trained models:
$python ./Load_Models/Load_IN.py
$python ./Load_Models/Load_UP.py
Illustrate final classification maps:
$python ./Classification\ Maps/IN_classification_maps.py
$python ./Classification\ Maps/UP_classification_maps.py
If you encountered problems like " no such file or direcotry", please check the corresponding paths and change them to absolute paths.
Fig.4 The IN dataset classification result (Overall Accuracy 99.44%) of SSRN using 20% samples for training. (a) False color image. (b) Ground truth labels. (c) Classification map.
Fig.5 The UP dataset classification result (Overall Accuracy 99.91%) of SSRN using 10% samples for training. (a) False color image. (b) Ground truth labels. (c) Classification map.
Part of codes is from a wonderful implementation of ResNet by Raghavendra Kotikalapudi.