Professional website

$$ \def\w{\mathbf{w}} \def\W{\mathbf{W}} \def\b{\mathbf{b}} $$

This package is a Matlab implementation of a sparse optimization scheme for automated feature selection in remote sensing. It is the code that has been used in the numerical experiments of the papers:

D. Tuia, M. Volpi, M. Dalla Mura, A. Rakotomamonjy, R. Flamary, **"Automatic Feature Learning for Spatio-Spectral Image Classification With Sparse SVM"**, Geoscience and Remote Sensing, IEEE Transactions on, Vol. 52, N. 10, pp 6062-6074, 2014.

[Abstract] [BibTeX] [URL] [DOI] [PDF] [Code]

@article{tuia2014automatic, author = {Tuia, D. and Volpi, M. and Dalla Mura, M. and Rakotomamonjy, A. and Flamary, R.}, title = {Automatic Feature Learning for Spatio-Spectral Image Classification With Sparse SVM}, journal = {Geoscience and Remote Sensing, IEEE Transactions on}, volume = {52}, number = {10}, pages = {6062-6074}, editor = {}, year = {2014} }

D. Tuia, N. Courty, R. Flamary, **"A group-lasso active set strategy for multiclass hyperspectral image classification"**, Photogrammetric Computer Vision (PCV), 2014.

[Abstract] [BibTeX] [PDF] [Code]

@inproceedings{tuia2014grouplasso, author = {Tuia, D. and Courty, N. and Flamary, R.}, title = {A group-lasso active set strategy for multiclass hyperspectral image classification}, booktitle = {Photogrammetric Computer Vision (PCV)}, editor = {}, year = {2014} }

D. Tuia, R. Flamary, N. Courty, **"Multiclass feature learning for hyperspectral image classification: sparse and hierarchical solutions"**, ISPRS Journal of Photogrammetry and Remote Sensing, 2015.

[Abstract] [BibTeX] [DOI] [PDF] [Code]

@article{tuia2015multiclass, author = {Tuia, D. and Flamary, R. and Courty, N.}, title = {Multiclass feature learning for hyperspectral image classification: sparse and hierarchical solutions}, journal = {ISPRS Journal of Photogrammetry and Remote Sensing}, editor = {}, year = {2015} }

The toolbox has been mainly coded by Devis Tuia, Michele Volpi and Rémi Flamary.

We provide a general solver for squared hinge loss SVM of the form:

$$
\begin{equation*}
\min_\varphi\quad\min_{\w,b} \quad\sum_{i=1}^{n} \max(0,1-y_i(\varphi(\mathbf{x}_i)^T\w+b))^2 + \lambda\Omega(\w)
\end{equation*}
$$

where $\Omega(\w)=\sum_i |w_i|$ promote sparsity and $\varphi(\cdot)$ is a nonlinear feature extraction.
Since version 2.0 of the toolbox we provide a solver for multiclass multinomial logistic regression to optimize problems such as:

$$
\begin{equation*}
\min_\varphi\quad\min_{\W,\b} \quad\sum_{i=1}^{n} L(y_i,\varphi(\mathbf{x}_i),\W,\b) + \lambda\Omega_{1,2}(\W)
\end{equation*}
$$

where $\Omega_{1,2}(\W)=\sum_i \|\W_{i,\cdot}\|_2$ promote joint sparsity accros classes and $\varphi(\cdot)$ is a nonlinear feature extraction.
This toolbox is in Matlab and the algorithm used for solving the inner problem is a Forward-Backward Splitting algorithm from the FISTA paper implemented in G-SVM.

Note that since version 2, we use the efficient group-lasso solver provided by the toolbox SPAMS.

Current version : 2.1

Download : fl-rs-svm-2.1.zip

Dataset : AVIRIS_IndianPines.mat

- Active set approach with l1 regularization.

- Add multiclass logistic regression with group lasso régularization.

- Correction of small bug in generateFeatures.m (Thanks to Sheng Ding).
- Update of DEMO_ActiveSet.m with better comments.

Quick version:

- Add all the paths and subpaths to matlab.
- Depending on your system, it might be necessary to compile the toolbox SPAMS using script /utils/spams-matlab/compile.m .

Entry points:

- DEMO_ActiveSet.m : Illustrate and compare the 3 active set approaches from the papers.
- generateFeatures.m : this is the file to be customized to generate the features of interest. in the example provided, it generates contextual features.
- contextualfeatures.m : to use the attribute filters, we use the attribute profile code as in Dalla Mura's paper. Be careful because the features ATT-i and ATT-s features can be VERY slow.
- get_feature_test_manybands.m : It must be capable of generating the features selected by the active set (whose specs are in "feat"). In the examples, it uses contextualfeatures.m, which generates spatial filters.