EDAA
Official implementation of EDAA (TIP 2023)
Install / Use
/learn @inria-thoth/EDAAREADME
Entropic Gradient Archetypal Analysis for Blind Hyperspectral Unmixing
Official PyTorch implementation of the paper Entropic Gradient Archetypal Analysis for Blind Hyperspectral Unmixing
Introduction
This repository mainly implements the entropic gradient archetypal analysis method for blind hyperspectral unmixing.
In addition, we include various unmixing methods (supervised and blind) on several standard real datasets.
Citing EDAA
The authors kindly ask users to cite EDAA in their publications if they use it in their research:
A. Zouaoui, G. Muhawenayo, B. Rasti, J. Chanussot, J. Mairal, "Entropic descent archetypal analysis for blind hyperspectral unmixing", in IEEE Transactions on Image Processing, doi: 10.1109/TIP.2023.3301769
Installation
This repository was developed using Ubuntu 20.04 LTS, Python 3.8.8 and MATLAB 2020b.
We recommend using conda to handle the Python distribution and pip to install the Python packages.
conda create --name edaa --file conda.txt
Activate the new conda environment to install the Python packages and run the code:
conda activate edaa
git clone https://github.com/inria-thoth/EDAA
cd EDAA && pip install -r requirements.txt
Run matlab code in Python
It is possible to run the NMF-QMV code inside Python to make sure that the reported results are consistent across methods.
To install matlab.engine, first visit the official webpage.
- Locate
matlabroot(e.g.~/softwares/matlab-2020b/) - Create a
matlabbuild directory (e.g.~/matlab/) - Locate your current
condaenvironment (e.g.~/conda/envs/hsu)
cd $matlabroot/extern/engines/python
conda activate edaa
python setup.py build -b ~/matlab install --prefix ~/conda/envs/edaa
Data download
The data can be downloaded from http://pascal.inrialpes.fr/data2/azouaoui/data.zip.
To extract it in the appropriate ./data directory, simply run:
python -m utils.prepare_datasets
If for whatever reasons you were not able to use the script above:
- Download the file directly from the link.
- Create a new folder
./datain the root folder of this repository. - Extract
data.zipinto./data. - You should have all 7 datasets directly available in the
./datafolder.
Getting started
This repository uses hydra to seamlessly manage different configurations over the command line.
To run the EDAA model on the Samson dataset, use the following command:
python main.py dataset=Samson mode=blind model=BlindEDAA
The different datasets available are listed under ./hsi_unmixing/config/dataset:
- Samson
- JasperRidge
- Urban{4,5,6}
- TinyAPEX
- WDC
To run the EDAA model on all datasets, use the following command:
python main.py dataset=Samson,JasperRidge,Urban4,Urban6,TinyAPEX,WDC mode=blind model=BlindEDAA --multirun
Other methods
This repository implements other supervised and blind hyperspectral unmixing techniques:
- Supervised methods
- FCLSU using
VCA(Python implementation) and DecompSimplex (DS) fromSPAMS. - FCLSU using
VCA(Python implementation) andFCLSfrompysptools(slower).
- FCLSU using
Command to run FCLSU using VCA+DS on Samson:
python main.py dataset=Samson mode=supervised torch=False model=DS initializer=VCA
- Blind methods
NMF-QMVusing a Python wrapper on the Matlab implementation.- Archetypal Analysis (
AA) fromSPAMS. - Robust AA (
RAA) fromSPAMS.
Command to run AA on Samson:
python main.py dataset=Samson mode=blind torch=False model=AA
Related Skills
next
A beautifully designed, floating Pomodoro timer that respects your workspace.
product-manager-skills
47PM skill for Claude Code, Codex, Cursor, and Windsurf: diagnose SaaS metrics, critique PRDs, plan roadmaps, run discovery, and coach PM career transitions.
devplan-mcp-server
3MCP server for generating development plans, project roadmaps, and task breakdowns for Claude Code. Turn project ideas into paint-by-numbers implementation plans.
