This is the code for the chordal flag-mean and flag-median presented in Chordal Averaging on Flag Manifolds and Its Applications.
This paper presents a new, provably-convergent algorithm for computing the flag-mean and flag-median of a set of points on a flag manifold under the chordal metric. The flag manifold is a mathematical space consisting of flags, which are sequences of nested subspaces of a vector space that increase in dimension. The flag manifold is a superset of a wide range of known matrix spaces, including Stiefel and Grassmanians, making it a general object that is useful in a wide variety computer vision problems.
To tackle the challenge of computing first order flag statistics, we first transform the problem into one that involves auxiliary variables constrained to the Stiefel manifold. The Stiefel manifold is a space of orthogonal frames, and leveraging the numerical stability and efficiency of Stiefel-manifold optimization enables us to compute the flag-mean effectively. Through a series of experiments, we show the competence of our method in Grassmann and rotation averaging, as well as principal component analysis.
@InProceedings{Mankovich_2023_ICCV,
author = {Mankovich, Nathan and Birdal, Tolga},
title = {Chordal Averaging on Flag Manifolds and Its Applications},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
month = {October},
year = {2023},
pages = {3881-3890}
}
See requirements.txt
for Python dependencies. Was built with Python 3.8.8.
-
Initialize conda environment
conda create --name chordal_flag_averaging python=3.8.8 conda activate chordal_flag_averaging
-
Install requirements
pip install -r ./PythonCode/requirements.txt
-
Open
./GettingStarted/example.ipynb
and run it within thechordal_flag_averaging
environment.
example.ipynb
shows how to compute:
- chordal flag mean
- chordal flag median
Nathan Mankovich and Tolga Birdal: email