This repo is prepared for IEEE Image Analysis and Data Fusion (IADF) Summer school 3rd Oct. 2022. recorded lecture
This course will discuss linear hyperspectral unmixing, including Geometrical Approaches, Blind Linear Unmixing, and Sparse Unmixing. The course will further discuss Autoencoders and Convolutional Networks for unmixing. The hands-on session aims to train participants to use the advanced open-source machine and deep learning-based spectral unmixing techniques and fine-tune the models.
This course contains an open source python-based repository. The repository contains two supervised unmixing, one sparse (semisupervised) unmixing, and four blind unximing. The list of the methods are as follow. Colab version of the notebooks are provided for all the methods.
- Supervised Unmixing:
- FCLSU: Fully constraint least square unmixing. VCA is used for endmember extraction.
- UnDIP: Unmixing using Deep Image Prior. SiVM is used for endmember extraction.
- Sparse (Semisupervised) Unmixing:
- SUnCNN: Sparse Unmxing using Unsupervised Convolutional Neural Network
- Blind Unmixing:
- MiSiCNet: Minimum Simplex Convolutional Network for Deep Hyperspectral Unmixing
- EDAA: Entropic Descent Archetypal Analysis for Blind Hyperspectral Unmixing
- CNNAE: Convolutional Autoencoder for Spectral–Spatial Hyperspectral Unmixing
- EndNet: Sparse AutoEncoder Network for Endmember Extraction and Hyperspectral Unmixing
For users that do not have access to a GPU, we recommend to use the notebooks directly in Google Colab. You can access Colab by clicking on the link at the top of each notebook (.ipynb files) rendered on Github.
If you have access to a GPU, it is preferred that you run the notebook yourself, without using Colab.
In order for the notebooks to run properly, you will need to install some Python packages yourself in a dedicated conda
environment.
Simply follow the instructions below and copy paste the commands in a terminal.
We recommend using conda
to handle the Python distribution and pip
to install the Python packages.
- First clone the repository on your computer.
git clone https://github.com/BehnoodRasti/Unmixing_Tutorial_IEEE_IADF.git
cd Unmixing_Tutorial_IEEE_IADF
- Create a dedicated
conda
environment namediadf
for Python 3.8.
conda create --name iadf python=3.8
- If you do not have
conda
on your computer, first install it using Miniconda.
- Activate the
conda
environment.
conda activate iadf
- Install the required Python packages.
pip install -r requirements.txt
- Install the relevant
ipython
kernel to be used in Jupyter.
ipython kernel install --user --name iadf
- Launch
jupyter lab
. This will open a new tab in your browser.
jupyter lab
- Open any notebook from the repository and make sure you select the right Kernel. In the menu, click on
Kernel
and selectChange Kernel...
. Finally, pick theiadf
kernel and you are ready to go!
Note that the notebooks were primarily designed to function with Colab. As such, you may encounter code that is not necessary when running on a standalone notebook. However we still recommend that you run the notebook as is (e.g. linearly to make sure everything works as intended). Address any questions to the course instructors.
- On your remote server, launch
jupyter lab
on a specific port (e.g.1234
):
jupyter lab --no-browser --port 1234
- To be able to display the notebooks on your local browser, you need to setup a
ssh
tunnel in a terminal on your local machine:
- Please change
remote_username
andremote_machine_address
according to your specific configuration.
ssh -NL 1234:localhost:1234 <remote_username>@<remote_machine_address> -f
-
Now open your favorite browser at the following address: http://localhost:1234/lab
-
You may need to copy paste the jupyterlab-generated URL that contains a token from your remote server to your local browser, e.g. http://localhost:1234/lab?token=e76fd55267495be44b79e3d2313257faf68a7a47de4969b5