This repository holds the implementation for certifiably solving outlier-robust geometric perception problems to global optimality. The certifiable outlier-robust geometric perception framework contains two main modules:
-
A sparse semidefinite programming relaxation (SSR) scheme that relaxes nonconvex outlier-robust perception problems into convex semidefinite programs (SDPs); and
-
A novel SDP solver, called STRIDE, that solves the generated SDPs at an unprecedented scale and accuracy.
We proposed a preliminary version of the SSR scheme in our NeurIPS 2020 paper, and released a certifier (that certifies if a given estimate is optimal) based on Douglas-Rachford Splitting (DRS). Please switch to the NeurIPS2020
branch of this repo to checkout the NeurIPS2020 implementation.
If you find this library helpful or use it in your projects, please cite:
@article{Yang21arXiv-certifiableperception,
title={Certifiable Outlier-Robust Geometric Perception: Exact Semidefinite Relaxations and Scalable Global Optimization},
author={Yang, Heng and Carlone, Luca},
journal={arXiv preprint arXiv:2109.03349},
year={2021}
}
A general polynomial optimization problem (POP) is an optimization problem of the following standard form
minimize_{x ∈ R^d} f(x)
subject to h_i(x) == 0, i=1,...,l_h
g_j(x) >= 0, j=1,...,l_g
where x ∈ R^d
is a d
-dimensional decision variable, f(x)
is a scalar polynomial objective function, h_i(x),i=1,...,l_h
are scalar polynomial functions that define equality constraints, and g_j(x),j=1,...,l_g
are polynomial functions that define inequality constraints. POPs are in general nonconvex and NP-hard problems. For example, one can easily see that binary quadratic programming is an instance of POP, because binary constraints x_i ∈ {+1, -1}, i=1,...,d
can be easily written as polynomial equalities h_i(x) = x_i^2 - 1 = 0,i=1,...,d
.
Semidefinite relaxations are a powerful tool for solving nonconvex POPs to global optimality. In this repo, we provide tools that can help the user exploit the power of semidefinite relaxations with minimum efforts.
Lasserre's hierarchy of moment relaxations is a standard technique for relaxing POPs into semidefinite programs (SDPs). The basic idea is as follows. Let kappa
be a positive integer (called the relaxation order) such that 2*kappa
is no smaller than the maximum degree of the defining polynomials f,h_i,g_j
, and let v = [x]_kappa
be the set of standard monomials in x
with degree up to kappa
. For example, suppose x = [x_1; x_2]
, then [x]_kappa
with kappa = 2
leads to v = [1; x_1; x_2; x_1*x_2; x_1^2; x_2^2]
. The essential idea of Lasserre's hierarchy is to express the original POP problem in the matrix variable X = v*v'
(called the moment matrix, by construction X
is positive semidefinite) and relax the POP into a convex SDP. In the seminal paper of Lasserre, it was proved that if kappa
is chosen large enough, then the convex SDP can solve the original nonconvex POP to global optimality.
Although the underlying mechanics of Lasserre's hierarchy can be complicated (the interested reader can refer to Section 2 of our paper for technical details), in this repo we provide a simple function that implements Lasserre's hierarchy:
[SDP,info] = dense_sdp_relax(problem,kappa)
where the inputs are:
problem
: a Matlab structure that contains the following fields:vars
: a vector of symbolic decision variables (i.e.,x
in the POP);objective
: a multivariate polynomial that specifies the objective function of the POP (i.e.,f(x)
in the POP);equality
(optional): a vector of multivariate polynomials with dimensionl_h
that specifies the equality constraints of the POP (i.e.,h_i(x),i=1,...,l_h
in the POP);inequality
(optional): a vector of multivariate polynomials with dimensionl_g
that specifies the inequality constraints of the POP (i.e.,g_j(x),j=1,...,l_g
in the POP).
kappa
(optional): a positive integer that specifies the relaxation order. Ifkappa
is not provided, or provided such that2*kappa
is smaller than the maximum degree of the defining polynomials, then our implementation uses the minimum relaxation orderkappa
such that2*kappa
is no smaller than the maximum degree.
and the outputs are:
SDP
: a Matlab structure that contains the following fields:blk,At,b,C
: standard SDP problem data in SDPT3 format. The interested reader should check out SDPT3 user manual for details. Section 2.1 of our paper also gives a quick introduction.sedumi
: a Matlab structure that provides the standard SDP problem data in sedumi format. The interested reader should checkout sedumi user manual for details. It is easy to convert sedumi format to MOSEK format, as we will show in one of the examples later.
info
: a Matlab structure that contains additional information about the relaxation.
We now use a simple example on binary quadratic programming (BQP) to illustrate how to supply the POP problem description to dense_sdp_relax
. The sample code is given below.
%% Generate random binary quadratic program
d = 10; % BQP with d variables
x = msspoly('x',d); % symbolic decision variables using SPOTLESS
Q = randn(d,d); Q = Q + Q'; % a random symmetric matrix
c = randn(d,1);
f = x'*Q*x + c'*x; % objective function of the BQP
h = x.^2 - 1; % equality constraints of the BQP (binary variables)
g = [x(1)]; % ask the first variable to be positive
%% Relax BQP into an SDP
problem.vars = x;
problem.objective = f;
problem.equality = h;
problem.inequality = g;
kappa = 2; % relaxation order
[SDP,info] = dense_sdp_relax(problem,kappa);
In this demo code, we first generate a random binary quadratic programming problem using the package SPOTLESS (which is a submodule of this repo), and then pass the problem
structure with fields vars
, objective
, equality
, and inequality
to the function dense_sdp_relax
to generate SDP relaxations. We recommend the user to run the script example_bqp.m
to check how to solve the SDP
data using MOSEK, and to see that SDP relaxations can actually solve BQP problems to global optimality.
Coming soon.