My job requires me to know how to write. While I think I’m a pretty good writer, I’m never once going to pretend that I’m good with math. If you told me to solve a nonlinear least square problem, I think my brain would just explode. Google thinks these problems are pretty tricky too and have created a program that makes them easier. Now they’re imparting this knowledgable application to you.
Google announced today that its nonlinear least squares solver – the Ceres Solver – is now available to the public. It’s been used internally by Google for quite a while now to help scientists and engineers solve various problems.
Now that the Ceres Solver is available to the public, what does the release entail? It’s a “portable C++ library that allows for modeling and solving large complex nonlinear least squares problems.” It contains a hefty amount of features that are sure to please the people out there who have to work with these kind of problems on a daily basis.
A simple, expressive API
Automatic differentiation
Robust loss functions
Local parameterizations
A threaded Jacobian evaluators and linear solvers
Dense QR factorization (using Eigen) for small problems
Sparse Cholesky factorization (using SuiteSparse) for large sparse problems
Specialized solvers for problems in 3D computer vision
A liberal license (New BSD)
Scales from servers to cell phones.
To show potential users some of its uses, Google has created a video detailing how they use the Ceres Solver with Street View. The video description says that Ceres Solver fuses with Street View sensor data to “produce accurate absolute position.”
It’s pretty impressive stuff and I’m sure a lot of people are going to get some great use out of it. The code is available for all to start utilizing the Ceres Solver for everything from building 3D models to estimating satellite image censor characteristics.