CRISM Hyperspectral Composition Mapping (Mars, Nili Fossae)
This project implements a complete machine learning pipeline for pixel-wise classification of Martian surface materials using hyperspectral data from NASA's CRISM instrument. It combines unsupervised clustering and supervised deep learning to generate mineralogical maps of the Nili Fossae region without requiring manual labels.
- Python 3.9.22
- OS: Red Hat Enterprise Linux 9.5 (Plow)
- GPU: NVIDIA RTX 4070 (12GB VRAM)
- RAM: 32GB
- Managed via
conda, nopipused
This repository excludes the following:
- Raw hyperspectral cubes (
/data) - Preprocessed
.npyarrays - Conda virtual environment folder (
hyperenv)
├── data/ # (ignored) Raw and preprocessed CRISM data
├── notebooks/ # Jupyter notebooks for each pipeline stage
├── outputs/
│ ├── cnn_labelmaps_20_epochs/
│ ├── map_tests/
├── results/
│ ├── clustering/ # Cluster labels
│ ├── labelmaps/ # Spatial labelmaps (e.g. k=8)
├── .gitignore
├── README.mdRun inside a Conda environment. Key libraries:
- Python 3.9
- NumPy 2.0.2
- PyTorch 2.6.0
- scikit-learn 1.6.1
- matplotlib
- tqdm
- pandas
- skimage
- spectral
All libraries were installed using conda only, without pip.
data/,.npyfiles, andhyperenv/are excluded from version control- The final CNN was trained for 20 epochs with 88.78% validation accuracy
- Average disagreement between CNN and clustering: 14.97% across 28 cubes
- All figures and metrics were generated using reproducible notebooks