Header logo is

Grassmann Averages PCA


Robust and scalable PCA using Grassmann averages, in C++ and multithreaded, with Matlab bindings

The library is an implementation of the Grassmann Averages for computing a PCA in robust and linear manner, presented in the paper:

"Grassmann averages for scalable robust PCA", Soren Hauberg, Aasa Feragen and Michael J. Black, CVPR 2014.

and article

"Scalable Robust Principal Component Analysis Using Grassmann Averages", Soren Hauberg, Aasa Feragen, Raffi Enficiaud and Michael J. Black, IEEE Transactions on Pattern Analysis and Machine Intelligence, Volume 38, Issue 11, Nov. 2016

The Grassmann Averages PCA is a method for extracting the principal components from a sets of vectors, with the nice following properties

  • it is of linear complexity wrt. the dimension of the vectors and the size of the data, which makes the method highly scalable,
  • it is more robust to outliers than PCA in the sense that it minimizes an L1 norm instead of the L2 norm of the standard PCA.

It comes with two variants:

  • the standard computation, that coincides with the PCA for normally distributed data, also referred to as the GA
  • a trimmed variant, that is more robust to outliers, referred to the TGA

The paper is available from the homepage above and the details of the computations are given there.

Content of the repository

The repository contains the following:

  • a C++ multi-threaded implementation of the GA and TGA
  • a C++ multi-threaded implementation of the EM-PCA (for comparisons)
  • binaries that computes the GA, TGA and EM-PCA on a set of images (frames of a video)
  • Matlab bindings
  • Documentation of the C++ API

Author(s): Soren Hauberg, Raffi Enficiaud
Department(s): Perceiving Systems
Software Workshop
Research Projects(s): Robust PCA
Publication(s): Scalable Robust Principal Component Analysis using {Grassmann} Averages
Grassmann Averages for Scalable Robust {PCA}
Authors: Soren Hauberg, Raffi Enficiaud
Maintainers: Raffi Enficiaud
Release Date: 2014-06-01
License: The 3-Clause BSD License (BSD-3-Clause)
Repository: https://github.com/MPI-IS/Grassmann-Averages-PCA