Multicore Bundle Adjustment
|
The emergence of multi-core computers represents a fundamental shift, with major implications for the design of computer vision algorithms. Most computers sold today have a multicore CPU with 2-16 cores and a GPU with anywhere from 4 to 128 cores. Exploiting this hardware parallelism will be key to the success and scalability of computer vision algorithms in the future. In this project, we consider the design and implementation of new inexact Newton type Bundle Adjustment algorithms that exploit hardware parallelism for efficiently solving large scale 3D scene reconstruction problems. We explore the use of multicore CPU as well as multicore GPUs for this purpose. We show that overcoming the severe memory and bandwidth limitations of current generation GPUs not only leads to more space efficient algorithms, but also to surprising savings in runtime. Our CPU based system is up to ten times and our GPU based system is up to thirty times faster than the current state of the art methods, while maintaining comparable convergence behavior.
|
Paper |
Changchang Wu,
Sameer Agarwal,
Brian Curless, and
Steven M. Seitz,
|
Software (written and maintained by Changchang Wu) |
pba(v1.0.5) (3MB,
including code and win32
binary) The software is distributed under the
GNU General Public License V3.
|
Recent changes (complete changelist, previous versions) |
8/22/2012
|
Performance tuning for CPU implementation |
The thread number settings are coded
in function:
|
Data |
The data used in the paper are from the Bundle Adjustment in the Large project. The only exception is the slightly larger Venice Final model. Some additional test data from UNC Landmark image reconstruction projects can be found here.
|
Documentation |
A short manual is available here. You should use more LM iterations for the
first few cameras if the two-view initialization
is bad (decomposed from Fundamental matrix
rather than Essential matrix). An alternative is
to switch from regular BA to PBA only after a
few cameras (e.g. 5). In particular for bundler,
you can switch from run_sfm to run_sfm_pba after
5 camras. |
|