<style> .reveal section img { background:none; border:none; box-shadow:none; } </style> # DiSCo ## Dictionary-based Spectral unmixing for Coastal environmental monitoring PANAMA Thomas Cusson Jérémy Cohen --- ## Hyperspectral Imaging - Light<!-- .element: class="fragment" data-fragment-index="1" --> - Imaging<!-- .element: class="fragment" data-fragment-index="2" --> - Spectroscopy<!-- .element: class="fragment" data-fragment-index="3" --> - Hyperspectral Imaging<!-- .element: class="fragment" data-fragment-index="4" --> ---- ### Light ![](https://i.imgur.com/6UtrtMN.png) $\lambda = \frac{c}{\nu}$<!-- .element: class="fragment" data-fragment-index="2" --> ---- ### Imaging Number of Channels :<!-- .element: class="fragment" data-fragment-index="1" --> - One : Black and white<!-- .element: class="fragment" data-fragment-index="2" --> - Three : Red, Green and Blue<!-- .element: class="fragment" data-fragment-index="3" --> - More : Display individually, or conversion function<!-- .element: class="fragment" data-fragment-index="4" --> ---- ### Spectroscopy Analysis of spectrum<!-- .element: class="fragment" data-fragment-index="1" --> ![](https://cdn.discordapp.com/attachments/567713157276237847/592759031274143756/unknown.png =450x400)<!-- .element: class="fragment" data-fragment-index="1" --> ---- ## Hyperspectral Imaging ![](https://i.imgur.com/AESE2fP.png) ---- ## Hyperspectral Imaging ![](https://i.imgur.com/vU34eAH.png =500x560) ---- ## Hyperspectral Imaging ### Sources of spectral variance - The sensor - The light source - The atmosphere - Indirect lighting - Reflections - The material itself - Shadows - Everything else… --- ## Goal - Good Clustering/Segmentation<!-- .element: class="fragment" data-fragment-index="1" --> - No prior knowledge : Unsupervised<!-- .element: class="fragment" data-fragment-index="2" --> ---- ### Urban ![](https://cdn.discordapp.com/attachments/567713157276237847/592680651564646446/urban1.png =1200x400) ---- ### Urban ![](https://cdn.discordapp.com/attachments/567713157276237847/592716738072674328/urban2.png =1200x400) ---- ### Naive clustering ![](https://i.imgur.com/dHNOzZA.png =700x500) ---- ### Clustering problems ![](https://i.imgur.com/8iqWKfq.png) ---- ### Clustering problems ![](https://i.imgur.com/BdGVVRS.png) ---- ### Clustering problems ![](https://i.imgur.com/57xiOTB.png) --- ### Spectral Unmixing Each pixel is a mixture of materials/endmembers Working assumptions<!-- .element: class="fragment" data-fragment-index="1" --> - Spectra are non-negative<!-- .element: class="fragment" data-fragment-index="2" --> - Abundances are non-negative<!-- .element: class="fragment" data-fragment-index="3" --> - Spectra combine linearly<!-- .element: class="fragment" data-fragment-index="4" --> ---- ### Spectral Unmixing #### Non-negative Matrix Factorization<!-- .element: class="fragment" data-fragment-index="1" --> Data (Known):<!-- .element: class="fragment" data-fragment-index="2" --> $X\in \mathbb{R}_+^{n\times m}$<!-- .element: class="fragment" data-fragment-index="2" --> Abundances (Unknown):<!-- .element: class="fragment" data-fragment-index="3" --> $H\in \mathbb{R}_+^{n\times r}$<!-- .element: class="fragment" data-fragment-index="3" --> Spectra (Unknown):<!-- .element: class="fragment" data-fragment-index="4" --> $W\in \mathbb{R}_+^{r\times m}$<!-- .element: class="fragment" data-fragment-index="4" --> $X_{ji}= \sum_{k=0}^r{H_{jk} W_{ki} + \epsilon}$<!-- .element: class="fragment" data-fragment-index="5" --> $X=HW +\epsilon$<!-- .element: class="fragment" data-fragment-index="6" --> ---- #### NMF ![SUj](https://cdn.discordapp.com/attachments/567713157276237847/590280722799919122/dimensions1px.png) ---- ### Spectral Unmixing ![SU](https://cdn.discordapp.com/attachments/567713157276237847/590280748377047060/dimensions.png) ---- #### NMF ![](https://i.imgur.com/chsmfBl.png =600x600) ---- ### Spectral Unmixing ### Pseudo-code for NMF 1. Initialize<!-- .element: class="fragment" data-fragment-index="1" --> 2. Optimize $H$ by Non-Negative Least Squares<!-- .element: class="fragment" data-fragment-index="2" --> 3. Optimize $W$ by Non-Negative Least Squares<!-- .element: class="fragment" data-fragment-index="3" --> 4. Go back to 2 until stopping conditions are met<!-- .element: class="fragment" data-fragment-index="4" --> --- ### The Conversion Problem Simply take biggest abundance $H_j$ for a pixel ?<!-- .element: class="fragment" data-fragment-index="1" --> Except it's not necessarily representative<!-- .element: class="fragment" data-fragment-index="2" --> $X_{ji}= \sum_{k=0}^r{\alpha H_{jk} \frac{1}{\alpha} W_{ki} + \epsilon}$<!-- .element: class="fragment" data-fragment-index="3" --> ---- ### The Conversion Problem Normalize $W$ ? ![](https://i.imgur.com/G1ZkRfv.png=1600x400) ---- ### The Conversion Problem Divide each abundance map $H_k$ by max value ?<!-- .element: class="fragment" data-fragment-index="1" --> ![](https://i.imgur.com/oI2GTr0.png)<!-- .element: class="fragment" data-fragment-index="2" --> ---- ### Results Labeling error (%) | Method | r=4 | r=5 | r=6 | |--------------|-------|-------|-------| | Ground-truth | 0 | 0 | 0 | | Kmeans | 64.96 | 48.69 | 50.42 | | NKmeans | 7.36 | 29.76 | 34.02 | | best NMF | 12.92 | 15.03 | 32.83 | <!--- ### Results Average reconstruction error (%) | Method | r=4 | r=5 | r=6 | |--------------|-------|-------|-------| | Ground-truth | 7.59 | 8.82 | 8.53 | | Kmeans | 31.22 | 28.34 | 26.02 | | NKmeans | 11.87 | 10.42 | 9.72 | | NMF | 4.34 | 3.79 | 3.33 | --> --- ## Goal - Good Clustering/Segmentation - No prior knowledge : Unsupervised - Prior knowledge : Semi-supervised<!-- .element: class="fragment" data-fragment-index="1" --> ---- ## Semi-supervised - Dataset<!-- .element: class="fragment" data-fragment-index="1" --> - Clustering supervised by Dictionary spectra<!-- .element: class="fragment" data-fragment-index="2" --> - Blind NMF results projected on Dictionary<!-- .element: class="fragment" data-fragment-index="3" --> - Voting system<!-- .element: class="fragment" data-fragment-index="4" --> ---- ### The data : Hyperspectral image ![](https://i.imgur.com/Qup5RPe.jpg =550x550) ---- ### The data : Spectra library - 14 Materials<!-- .element: class="fragment" data-fragment-index="1" --> - From 5 to 40 spectra for each<!-- .element: class="fragment" data-fragment-index="2" --> - Total of 200 spectra<!-- .element: class="fragment" data-fragment-index="3" --> - Spectra from 287 to 1094nm, 512 samples<!-- .element: class="fragment" data-fragment-index="4" --> ---- ### The data : Anotated patches ![](https://i.imgur.com/ezLHY2l.jpg =550x550) ---- ### Naive supervised clustering using Dictionary Simply take the largest similarity !<!-- .element: class="fragment" data-fragment-index="1" --> Normalize vectors :<!-- .element: class="fragment" data-fragment-index="2" --> $\vec{u_n} = \frac{\vec{u}}{||\vec{u}||_F^2}$ and $\vec{v_n} = \frac{\vec{v}}{||\vec{v}||_F^2}$<!-- .element: class="fragment" data-fragment-index="3" --> $\rho_{\vec{u},\vec{v}} = \vec{u_n}\cdot\vec{v_n}$<!-- .element: class="fragment" data-fragment-index="4" --> ---- ### Clustering supervised by Dictionary ![HTI_naive_label](https://cdn.discordapp.com/attachments/567713157276237847/590443675192918023/naive_correl_original.png =500x500) Baseline ---- ### Comparing patches and Dictionary ![](https://i.imgur.com/bvBawUy.png =650x270)<!-- .element: class="fragment" data-fragment-index="1" --> ![](https://i.imgur.com/hAq4Hr9.png =650x270)<!-- .element: class="fragment" data-fragment-index="2" --> ---- ### Spectra image/library #### Zoom on Ascophyllum ![](https://i.imgur.com/wHm845a.png) ![](https://i.imgur.com/LV56VPW.png)<!-- .element: class="fragment" data-fragment-index="1" --> <!--- Enlevable ? Un peu hors-sujet ### Clustering supervised by patches ![supatch](https://cdn.discordapp.com/attachments/567713157276237847/590448100196483072/patches_spectra_dot.png =550x550) Enlevable ? Un peu hors-sujet ### Clustering from abundance derived from patches spectra ![Honly](https://cdn.discordapp.com/attachments/567713157276237847/590449324186664971/Honly_main99.png =550x550) --> --- ## Blind NMF then dictionary comparison ---- ![](https://i.imgur.com/fvh3HpC.png) ---- ![](https://i.imgur.com/steVaKo.png) ---- ![](https://i.imgur.com/4VDqCFt.png) ---- ### Lookalikes ![](https://i.imgur.com/dt6CV5F.png) --- ### Voting system Still work in progress<!-- .element: class="fragment" data-fragment-index="1" --> $Score_{m, j}=\sum_{k=0}^r H_{k, j}\frac{\sum \rho_{W_k, D_m^\top}}{||D_m||}$<!-- .element: class="fragment" data-fragment-index="2" --> Pixel's material : Best score<!-- .element: class="fragment" data-fragment-index="3" --> - Each endmembers gives a correlation score with every library spectrum<!-- .element: class="fragment" data-fragment-index="4" --> - Each correlation with library spectrum is averaged for each material<!-- .element: class="fragment" data-fragment-index="5" --> - Each abundance gives a weight for correlations<!-- .element: class="fragment" data-fragment-index="6" --> - Final score for each material is the sum of abundances times correlations scores<!-- .element: class="fragment" data-fragment-index="7" --> --- # Conclusion Encouraging result to improve clustering with spectral unmixing.<!-- .element: class="fragment" data-fragment-index="1" --> Further testing with other techniques needed.<!-- .element: class="fragment" data-fragment-index="2" --> ---- # My contribution - Experiments with sparsity constraints<!-- .element: class="fragment" data-fragment-index="1" --> - Conversion method Unsupervised NMF→clustering<!-- .element: class="fragment" data-fragment-index="2" --> - Supervised by patch<!-- .element: class="fragment" data-fragment-index="3" --> - Voting system for clustering (WIP)<!-- .element: class="fragment" data-fragment-index="4" --> ---- # Questions
{"metaMigratedAt":"2023-06-14T22:17:32.374Z","metaMigratedFrom":"Content","title":"DiSCo","breaks":true,"contributors":"[{\"id\":\"4c5771d3-bd31-41a9-92bd-07a3f292e641\",\"add\":21228,\"del\":11101}]"}
    438 views