boda
boda copied to clipboard
Boda: A C++ Framework for Efficient Experiments in Computer Vision
Boda: A C++ Framework for Efficient Experiments in Computer Vision [WIP]
Created by Matthew W. Moskewicz.
License
Boda is BSD 2-Clause licensed; refer to the LICENSE file for the full License.
Introduction
Boda is a one-grad-student, mostly-run-on-one-machine work in progress. However, for the brave, there is now a considerable amount of functionality present. Overall, documentation is still very much lacking. But, in particular, if you're interested in a unified C++ framework from camera/lmdbs/images to generated CUDA/OpenCL for CNNs, this might be an interesting project for you to explore. At this point, I think it's now plausible that others would be interested in and capable of usage of, experimentation with, and contributions to Boda. So, please file issues/PRs if that's the case.
Getting Started / Installation
See the INSTALL.md file.
June 2016 paper
Boda-RTC (to appear WiMob 2016 NYC)
June 2016 poster
Boda Poster Preview Slides Boda Poster
January 2016 poster
Boda Poster Preview Slides Boda Poster
May 2014 Poster
Boda Poster Preview Slides Boda Poster
Mid 2013 Poster
Boda Poster Preview Slides Boda Poster
Boda modes/UI:
In the above diagram, the middle box is a Boda 'mode' -- a c++ class with a main() function and a set of parameters. this is the boda version of a standard c++ program with a C main() and some command line argument processing such as gflags/getopt/etc. Boda makes it easy to support many modes in a single binary/program, and provides some magic comments / meta-programming to ease the burden of: 1) command line / XML based UI creation for many such modes (with hierarchical sharing of UIs / parameters) 2) testing (including automated regression diffs over outputs) 3) timing / profiling.
The main 'magic' is a NEsted Structure Initialization system (NESI), which uses magic comments, python, code generation, and a steaming pile of down-home-style void pointers and C (or at least C style) functions to initialize c++ structures from nested key/value trees (in turn created from command line arguments and/or xml files), a la JSON or the like.