This repository contains code and notebooks for my semester project, conducted at the EPFL Center for Imaging and LIMNC. The project focuses on detecting, segmenting, and classifying particles (e.g., plankton and sediment) imaged using the LISST-Holo2 underwater holographic camera.
The goal is to extract both handcrafted and learned features from particles, assess their structure using clustering, and classify them into Living vs. Non-Living categories using supervised learning.
Our morphological segmentation pipeline preserves contours and texture without GPU inference.
UMAP projection of particle features — clusters highly overlap, indicating weak separability.
ROC curves for Random Forest, XGBoost, and LightGBM — limited separability between Living and Non-Living.
| File | Description |
|---|---|
src/preprocessing_creating_ROI_NN.ipynb |
Preprocessing and ROI creation for feature extraction (including DenseNet compatibility) |
src/shape_analysis.ipynb |
Extracts handcrafted shape, texture, and intensity features from segmented ROIs |
src/classification.ipynb |
Supervised classification using handcrafted features (Random Forest, XGBoost, LightGBM) |
src/NN_features.ipynb |
DenseNet121-based feature extraction and classification |
src/dino_extraction_classification.ipynb |
Self-supervised DINO feature extraction and classification |
src/size_vs_no_size_filter.ipynb |
Clustering analysis with and without area filtering |
/report |
Scientif report |
/media |
Illustrating figures |
You can install the required Python libraries using:
pip install -r requirements.txtThe main packages used include:
numpy,pandas,scikit-learn,matplotlib,seaborntorch,torchvisionumap-learn,scikit-image,albumentations
If you're using conda, we recommend creating a dedicated environment:
conda create -n lake_snow python=3.10
conda activate lake_snow
pip install -r requirements.txtThis project uses DINOv2 (ViT-S/14) for self-supervised feature extraction.
Please follow the installation instructions from the official repository:
https://github.com/facebookresearch/dino
The notebooks are intended to be run in the following general order:
preprocessing_creating_ROI_NN.ipynb: Prepares Regions of Interest (ROIs) for feature extraction.
shape_analysis.ipynb: Extracts handcrafted features (shape, texture, intensity).NN_features.ipynb: Extracts deep features using DenseNet121.dino_extraction_classification.ipynb: Extracts self-supervised features using DINOv2 and runs the same classification pipeline as inclassification.ipynb.
size_vs_no_size_filter.ipynb: Performs clustering on feature sets, with and without area filtering.classification.ipynb: Performs supervised classification (Living vs. Non-Living) using handcrafted features.
The full technical report is available in the report/ folder.
Due to size constraints and EPFL policies, raw holographic .tiff files and annotated masks are not stored here.
Please contact antoine.tissot-favre@epfl.ch for access if needed.
This work was supervised by:
- Prof. Edward Andò (EPFL Center for Imaging)
- Mallory Wittwer (EPFL Center for Imaging)
- Florian Aymanns (EPFL Center for Imaging)
- Natacha Pasche (LMINC)