Official Tensorflow Code for the paper "Overcomplete Deep Subspace Clustering Networks" - WACV 2021
Deep Subspace Clustering Networks (DSC) provide an efficient solution to the problem of unsupervised subspace clustering by using an undercomplete deep auto-encoder with a fully-connected layer to exploit the self expressiveness property. This method uses undercomplete representations of the input data which makes it not so robust and more dependent on pre-training. To overcome this, we propose a simple yet efficient alternative method - Overcomplete Deep Subspace Clustering Networks (ODSC) where we use overcomplete representations for subspace clustering. In our proposed method, we fuse the features from both undercomplete and overcomplete auto-encoder networks before passing them through the self-expressive layer thus enabling us to extract a more meaningful and robust representation of the input data for clustering. Experimental results on four benchmark datasets show the effectiveness of the proposed method over DSC and other clustering methods in terms of clustering error. Our method is also not as dependent as DSC is on where pre-training should be stopped to get the best performance and is also more robust to noise.
This repo hosts the code for ODSC method for subspace clustering. It contains code and hyperparameters tuned for the following datasets:
All these datasets have been included in the Data folder as .mat files for easy usage.
- Python 3.6
- Tensorflow 1.14
- munkres
- sklearn
- Clone this repository:
git clone https://github.com/jeya-maria-jose/Overcomplete-Deep-Subspace-Clustering
cd Overcomplete-Deep-Subspace-Clustering
-
The codes for each dataset has been organized into separate folders
MNIST, COIL20, ORL and EYaleB
. -
The pretrained models can be found for each dataset:
dataset_name/pretrained/
-
To do the pretraining yourself, run the pretraining code found in each dataset folder
dataset_name/pretrain_ODSC.py
To perform fine-tuning, just run the ODSC_x.py
code found under each dataset folder where x is the dataset name.
For example, for fine-tuning and checking the error for MNIST dataset, do the following:
cd MNIST/
python ODSC-mnist.py
This code is developed on top of Pan Ji's DSC.
@article{valanarasu2020overcomplete,
title={Overcomplete Deep Subspace Clustering Networks},
author={Valanarasu, Jeya Maria Jose and Patel, Vishal M},
journal={arXiv preprint arXiv:2011.08306},
year={2020}
}
Open an issue in case of any queries.