A benchmark of selected algorithmic differentiation tools on some problems in computer vision and machine learning

Algorithmic differentiation (AD) allows exact computation of derivatives given only an implementation of an objective function. Although many AD tools are available, a proper and efficient implementation of AD methods is not straightforward. The existing tools are often too different to allow for a general test suite. In this paper, we compare 15 ways of computing derivatives including 11 automatic differentiation tools implementing various methods and written in various languages (C++, F#, MATLAB, Julia and Python), 2 symbolic differentiation tools, finite differences and hand-derived computation. We look at three objective functions from computer vision and machine learning. These objectives are for the most part simple, in the sense that no iterative loops are involved, and conditional statements are encapsulated in functions such as abs or logsumexp. However, it is important for the success of AD that such ‘simple’ objective functions are handled efficiently, as so many problems in computer vision and machine learning are of this form.

[1]  Boyana Norris,et al.  ADIC2: Development of a component source transformation system for differentiating C and C++ , 2010, ICCS.

[2]  Andrea Walther,et al.  Getting Started with ADOL-C , 2009, Combinatorial Scientific Computing.

[3]  Yair Weiss,et al.  From learning models of natural image patches to whole image restoration , 2011, 2011 International Conference on Computer Vision.

[4]  Alex Pothen,et al.  ColPack: Software for graph coloring and related problems in scientific computing , 2013, TOMS.

[5]  Varun Ramakrishna,et al.  User-Specific Hand Modeling from Monocular Depth Sequences , 2014, 2014 IEEE Conference on Computer Vision and Pattern Recognition.

[6]  Miles Lubin,et al.  Forward-Mode Automatic Differentiation in Julia , 2016, ArXiv.

[7]  Richard Szeliski,et al.  Bundle Adjustment in the Large , 2010, ECCV.

[8]  Razvan Pascanu,et al.  Theano: new features and speed improvements , 2012, ArXiv.

[9]  Willy Klier,et al.  Comparison of Automatic and Symbolic Differentiation in Mathematical Modeling and Computer Simulation of Rigid-Body Systems , 2002 .

[10]  Barak A. Pearlmutter,et al.  Automatic differentiation in machine learning: a survey , 2015, J. Mach. Learn. Res..

[11]  Dong Yu,et al.  Automatic Speech Recognition: A Deep Learning Approach , 2014 .

[12]  Olivier Stasse,et al.  MonoSLAM: Real-Time Single Camera SLAM , 2007, IEEE Transactions on Pattern Analysis and Machine Intelligence.

[13]  Andrew W. Fitzgibbon,et al.  ShadowHands: High-Fidelity Remote Hand Gesture Visualization using a Hand Tracker , 2016, ISS.

[14]  Daniel Freedman,et al.  Reality Skins: Creating Immersive and Tactile Virtual Environments , 2016, 2016 IEEE International Symposium on Mixed and Augmented Reality (ISMAR).

[15]  Robin J. Hogan,et al.  Fast Reverse-Mode Automatic Differentiation using Expression Templates in C++ , 2014, ACM Trans. Math. Softw..

[16]  Richard Szeliski,et al.  Building Rome in a day , 2009, ICCV.

[17]  Laurent Hascoët,et al.  The Tapenade automatic differentiation tool: Principles, model, and specification , 2013, TOMS.

[18]  Andreas Griewank,et al.  Evaluating derivatives - principles and techniques of algorithmic differentiation, Second Edition , 2000, Frontiers in applied mathematics.

[19]  Torsten Sattler,et al.  Towards Fast Image-Based Localization on a City-Scale , 2011, Theoretical Foundations of Computer Vision.

[20]  Christian H. Bischof,et al.  Combining source transformation and operator overloading techniques to compute derivatives for MATLAB programs , 2002, Proceedings. Second IEEE International Workshop on Source Code Analysis and Manipulation.

[21]  Barak A. Pearlmutter,et al.  Efficient Implementation of a Higher-Order Language with Built-In AD , 2016, ArXiv.

[22]  Andrew W. Fitzgibbon,et al.  Bundle Adjustment - A Modern Synthesis , 1999, Workshop on Vision Algorithms.

[23]  Steven M. Seitz,et al.  Photo tourism: exploring photo collections in 3D , 2006, ACM Trans. Graph..

[24]  Bernhard P. Wrobel,et al.  Multiple View Geometry in Computer Vision , 2001 .

[25]  Anil V. Rao,et al.  An efficient overloaded method for computing derivatives of mathematical functions in MATLAB , 2013, TOMS.