Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/qiancao/hskl
A library for hyperspectral image analysis using scikit-learn.
https://github.com/qiancao/hskl
hyperspectral image-analysis-toolbox machine-learning scikit-learn
Last synced: 22 days ago
JSON representation
A library for hyperspectral image analysis using scikit-learn.
- Host: GitHub
- URL: https://github.com/qiancao/hskl
- Owner: qiancao
- License: bsd-3-clause
- Created: 2021-02-28T18:18:02.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2021-04-01T19:15:25.000Z (over 3 years ago)
- Last Synced: 2024-10-11T09:23:09.501Z (26 days ago)
- Topics: hyperspectral, image-analysis-toolbox, machine-learning, scikit-learn
- Language: Python
- Homepage: https://github.com/qiancao/hskl
- Size: 578 KB
- Stars: 9
- Watchers: 3
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# HSKL: Hyperspectral-scikit-learn
Hyperspectral image analysis using *scikit-learn*
## Installation
The package can be installed using `pip`:
`pip install hskl`
Or install HSKL directly from the repository:
1. Verify that git is installed:
`git --version`
2. Install HSKL:
`pip install git+https://github.com/qiancao/hskl.git`
## Usage
Training a pixel-level classifier for segmentation:
```python
import osfrom hskl.demo import dl_hyrank, load_hyrank
import hskl.classification as classification
import hskl.utils as utils# Download, unpack, and load HyRANK dataset from current directory.
path = os.getcwd()
if not os.path.exists("HyRANK_satellite"):
dl_hyrank(path)
images, labels, _ = load_hyrank(path)# Dimensional reduction using PCA, retain 99.9% image variance
pca = utils.pca_fit(images[0])
train, _ = utils.pca_apply(images[0], pca, 0.999)
test, _ = utils.pca_apply(images[1], pca, 0.999)
label = labels[0]
test_mask = labels[1]>0# Train a classifier and predict test image labels
cl = classification.HyperspectralClassifier(
method_name="LinearDiscriminantAnalysis")
cl.fit(train, label)
prediction = cl.predict(test)# Visualization of training data, test prediction, and test ground truth
fig_objs_train = utils.overlay(train,label)
utils.save_overlay(fig_objs_train, "hyrank_train.png")fig_objs_predict = utils.overlay(test,prediction*test_mask)
utils.save_overlay(fig_objs_predict, "hyrank_predict.png")fig_objs_test = utils.overlay(test,labels[1])
utils.save_overlay(fig_objs_test, "hyrank_test.png")
```
Output:Training image and ground truth labels:
![Training](https://raw.githubusercontent.com/qiancao/hskl/main/examples/hyrank_train.png)
Test image and ground truth labels:
![Testing Ground Truth](https://raw.githubusercontent.com/qiancao/hskl/main/examples/hyrank_test.png)
Test image and predicted labels:
![Testing Prediction](https://raw.githubusercontent.com/qiancao/hskl/main/examples/hyrank_predict.png)
Notes:
1. Shape of `train` and `test` arrays are (DimX, DimY, SpectralChannels).
2. Shape of `label` and `prediction` arrays are (DimX, DimY).
3. Labeling convention for classifiers:
(a) Datatype: `label.dtype == np.uint8`.
(b) Labeled classes start from integer 1. Pixels with `label == 0` are ignored (masked out).
5. Dimension(s) of `train` and `label` must be consistent: `train.shape[0] == label.shape[0]` and `train.shape[1] == label.shape[1]`.
6. Inputs: `train`, `test`, and `label` can also be lists of `np.ndarray`s with each element satisfying the preceeding requirements.## Planned Features
In the near-term:
* Test scripts and data
* Grid search cross validationIn the long-term, support for:
* Pipelines
* Patch-based featurizer
* Dask-enabled parallelism
* Deep learning (PyTorch) models## Cite this Project
Qian Cao, Deependra Mishra, John Wang, Steven Wang, Helena Hurbon and Mikhail Berezin. HSKL: A Machine Learning Framework For Hyperspectral Image Analysis. *Proc. IEEE WHISPERS*. IEEE, 2021.
## References
Karantzalos, Konstantinos, Karakizi, Christina, Kandylakis, Zacharias, & Antoniou, Georgia. (2018). HyRANK Hyperspectral Satellite Dataset I (Version v001). Zenodo. http://doi.org/10.5281/zenodo.1222202
Spectral Python (SPy): https://github.com/spectralpython/spectral