Graph Signal Processing tutorial using the PyGSP
Presented at the graphSIP summer school by Michaël Defferrard and Nicolas Tremblay.
We suggest you follow the installation guide to setup your own computer.
The material covers the following topics:
- Graphs: creation, models, properties, visualization
- Spectral Graph Theory: spectral clustering, Laplacian eigenmaps
- Graph signals: gradient, divergence, smoothness
- Fourier: modes, transform
- Filters: filterbanks, filtering, approximations
- Applications to point clouds: denoising and curvature estimation
- Applications to neuroscience: fMRI signals on brain connectome
Notes:
- representation of graphs and signals
- some standard graph models (e.g. Erdos-Renyi, Barabasi-Albert)
- graph construction (e.g. from point clouds)
- graph operators: Laplacian and difference
- smoothness of graph signals
- graph Fourier basis: eigenvectors and spectrum
- applications: spectral clustering, Laplacian eigenmap
- graph Fourier transform
- filtering by convolution in Fourier
- some standard filters & filterbanks
- fast filtering with polynomial approximations
- application: denoising with low-pass filtering as the solution to an optimization problem (maybe EEG / fMRI data), curvature estimation with wavelets (point cloud / shape)
- convex optimization on graph
- application: semi-supervized learning with Thikonov / TV prior
Optional / advanced:
- deep learning on graphs, i.e. learning graph filters
- application: semantic segmentation of point clouds
- spectrum estimation by filtering random signals
- application: spectral clustering, Laplacian eigenmap
- stationarity
For a local installation, you will need git, Python >= 3.6, Jupyter, and packages from the Python scientific stack. If you don't know how to install those on your platform, we recommend to install Miniconda, a distribution of the conda package and environment manager. Please follow the below instructions to install it and create an environment for the course.
- Download the Python 3.x installer for Windows, macOS, or Linux from
https://conda.io/miniconda.html and install with default settings. Skip
this step if you have conda already installed (from Miniconda or
Anaconda). Linux users may prefer to use their package manager.
- Windows: Double-click on the
.exe
file. - macOS: Run
bash Miniconda3-latest-MacOSX-x86_64.sh
in your terminal. - Linux: Run
bash Miniconda3-latest-Linux-x86_64.sh
in your terminal.
- Windows: Double-click on the
- Open a terminal. Windows: open the Anaconda Prompt from the Start menu.
- Install git with
conda install git
. - Download this repository by running
git clone https://github.com/mdeff/pygsp_tutorial_graphsip
or by pressing the green "Clone or download" button on the top of this page. - Create an environment with
conda create --name pygsp_tutorial_graphsip
. (you can also do this by launching Anaconda Navigator --> Environments --> Create) - Activate the environment with
conda activate pygsp_tutorial_graphsip
(oractivate pygsp_tutorial_graphsip
, orsource activate pygsp_tutorial_graphsip
). - Within this environment, run
conda install jupyter numpy scipy matplotlib pandas networkx
andpip install pygsp
.
Every time you want to work, do the following:
- Open a terminal. Windows: open the Anaconda Prompt from the Start menu.
- Activate the environment with
conda activate pygsp_tutorial_graphsip
(oractivate pygsp_tutorial_graphsip
, orsource activate pygsp_tutorial_graphsip
). - Start Jupyter with
jupyter notebook
orjupyter lab
. The command should open a new tab in your web browser. - Edit and run the notebooks from your browser.
You can try to run the Jupyter notebook mini_test.ipynb
to make sure that the main toolboxes are at least callable.
The content is released under the terms of the MIT License.