Opt: A domain specific language for non-linear least squares optimization in graphics and imaging

Zachary Devito, Michael Mara, Michael Zollhöfer, Gilbert Bernstein, Jonathan Ragan-Kelley, Christian Theobalt, Pat Hanrahan, Matthew Fisher, Matthias Niessner

Research output: Contribution to journalArticlepeer-review

32 Scopus citations

Abstract

Many graphics and vision problems can be expressed as non-linear least squares optimizations of objective functions over visual data, such as images and meshes. The mathematical descriptions of these functions are extremely concise, but their implementation in real code is tedious, especially when optimized for real-time performance on modern GPUS in interactive appli-cations. In this work, we propose a new language, Opt, 1 for writing these objective functions over image-or graph-structured unknowns concisely and at a high level. Our compiler automatically transforms these specifications into state-of-the-art GPU solvers based on Gauss-Newton or Levenberg-Marquardt methods. Opt can generate different variations of the solver, so users can easily explore tradeoffs in numerical precision, matrix-free methods, and solver approaches. In our results, we implement a variety of real-world graphics and vision applications. Their energy functions are expressible in tens of lines of code and produce highly optimized GPU solver implementations. These solvers are competitive in performance with the best published hand-tuned, application-specificGPUSolvers, and orders ofmagnitude beyond a generalpurpose auto-generated solver.

Original languageEnglish
Article numberA171
JournalACM Transactions on Graphics
Volume36
Issue number5
DOIs
StatePublished - Oct 2017

Keywords

  • Domain-specific languages
  • Gauss-Newton
  • Levenberg-Marquardt
  • Non-linear least squares
  • Real-time optimization

Fingerprint

Dive into the research topics of 'Opt: A domain specific language for non-linear least squares optimization in graphics and imaging'. Together they form a unique fingerprint.

Cite this