Friday, August 07, 2009

Graphviz for Object Recognition Research

Many of the techniques that I employ for object recognition utilize a non-parametric representation of visual concepts. In many such non-parametric models, examples of visual concepts are stored in a database as opposed to "abstracted away" as is commonly done when fitting a parametric appearance model. When designing such non-parametric models, I find it important to visualize the relationships between concepts. The ability to visualize what you're working on creates an intimate link between you and your ideas and can often drive creativity.

One way to visualize a database of exemplar objects, or a "soup of concepts," is as a graph. This generally makes sense when it is meaningful to define an edge between to atoms. While a vector-drawing utility (such as Illustrator) is great for manually putting together graphs for presentations or papers, automated visualization of large graphs is critical for debugging many graph-based algorithms.

A really cool (and secret) figure which I generated using Graphviz somewhat recently can be seen below. I use Matlab to write a simple .dot file and then call something like neato to get the pdf output. Click on the image to see the vectorized pdf automatically produced by Graphviz.

Graphviz generated graph
What does this graph show? Its a secret... (details coming soon)


  1. I'm interested to read what the secret graph represents—I trust you'll link to the paper when it's ready and available?

    I've found GraphViz useful for many things through the years too. It's just so easy to write x->dot transformers, and the OS X graphviz app will update live when the dot file changes, graphviz becomes a very powerful debugging tool.

  2. I love it! Nice use of annular rings to represent graphs of increasing average complexity or Order. Not sure what to make of the information presented, but its a beautiful graph.