Skip to content
/ boda Public

Boda: A C++ Framework for Efficient Experiments in Computer Vision

License

Notifications You must be signed in to change notification settings

moskewcz/boda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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:

Boda Overall Diagram

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.