# Fitting surface models to data: Accuracy, Speed, Robustness

## Andrew Fitzgibbon, Microsoft

## Jonathan Taylor, PerceptiveIO

Slides: PDF (16MB) PPTX (385MB) GitHub

In vision and machine learning, almost everything we do may be considered to be a form of model fitting. Whether estimating the parameters of a convolutional neural network, computing structure and motion from image collections, tracking objects in video, computing low-dimensional representations of datasets, estimating parameters for an inference model such as Markov random fields, or extracting shape spaces such as active appearance models, it almost always boils down to minimizing an objective containing some parameters of interest as well as some latent or nuisance parameters. This tutorial will describe several tools and techniques for solving such optimization problems, with a focus on fitting 3D smooth-surface models, such as subdivision surfaces, to 2D and 3D data.

## Agenda

**Note: We will stop for questions at any time, and may choose to go slower or faster over some points, and we reserve the right to slip some topics across session boundaries. This means that if you want to attend just one specific session, you might want to allow a 15-30 minute buffer afterwards.**

0900 Intro: Applications in vision and graphics.

- Lots of exciting and inspirational examples of model fitting:
- Kinetre (Siggraph 12)
- Dolphins (PAMI 13)
- Nonrigid tracking (Siggraph 14)
- FlexSense (CHI 15)
- Hand tracking (Siggraph 16)

- Preview of the day

0920 Session I: Matrix and vector calculus, nonlinear optimization

- vector functions and the Jacobian, generalized Jacobian
- advanced matrix operations: block operations, kronecker products etc
- derivatives of matrix expressions
- sparse matrices and sparse storage
- finite-difference versus symbolic derivatives
- nonlinear optimization, Gauss-Newton and Levenberg-Marquardt algorithms
- gradient descent vs Newton
- linear vs quadratic convergence

1030 Coffee

1045 Session II: Curves and Correspondences

- What is a curve? Parametric descriptions of curves and surfaces
- Curves and data points: closest point operations
- Fitting curves to data: correspondences
- Iterated closest points
- “Lifting” correspondences

- Worked example: Gauss's Ceres problem

1140 Break and stretch

1145 Session III: Surfaces

- Splines and subdivision surfaces in 3D
- Optimizing with subdivision
- Implementing for speed

1230 Lunch

1400 Session IV: Robustness and speed

- Models
- LBS, blendshapes, NURBS, lower order…

- Priors/smoothers/convergers
- ARAP
- Background - DT ok for tracking, not for personalization
- Priors on correspondences, e.g. piecewise continuous contour generator

- Exposing Structure in Sum of Squares Form
- Error metric
- Robust terms
- square root trick
- A great example of where “lifting” really helps

1500 Coffee/Stretch

1515 Session V: Software

- OpenSubdiv
- Eigen
- Ceres
- Opt (Guest lecture from Matthias Niessner)
- AD tools: Theano etc

1615 More coffee, more stretching

1630 Session VI: Conclusions, open problems, misc…

- Topology adaptation
- Where are the local minima?
- And where lifting really hurts: VarPro algorithms
- Implementing rotations: quaternions vs infinitesimals with recentering
- derivatives of minimization problems
- Schur complement QR

1715 Close