My research primarily involves the use of probabilistic graphical models to engineer solutions to problems in both computer vision and computational biology.   A little side project of mine has been the development of a distributed computing system for executing machine learning algorithms.


  • Video Epitome
    A patch-based method of consisely representing a video sequence.  This representation is itself, a video and is quite interesting, it also can be used to perform a variety of video processing tasks, such as super-resolution, filling-in missing data, compression, and denoising.
    Joint work with Brendan Frey and Nebojsa Jojic.

  • Long-Range Patch Correlations
    Modelling image and video data using a system of flexible interconnected patches. This powerful model can be used for multiple object registration and detection and missing data interpolation, such as image relighting.
    Joint work with Nebojsa Jojic and Dimitris Samaras.

  • Factorgram
    A novel algorithm used to find pathways and complexes in Saccharomyces cerevisiae (yeast) from gene-gene interaction (synthetic genetic array) and gene expression (microarray) data.  The algorithm is generally applicable for finding patterns in data that overcome some of deficiencies of clustering.
    Joint work with Brendan Frey, Jack Greenblatt, and Nevan Krogan.

  • Java Distributed Computing System
    A Java based distributed computing system.  Communication occurs over TCP/IP with work packets scheduled and distributed from the server to the clients.  As the entire system is written in Java, the computing clients can be run on multiple platforms (Windows, Mac, Linux, etc.) including both desktops and clusters.  I have used this system to parallelize and distribute the execution of the EM algorithm for my research projects, and with just a small number of clients, have been able to obtain results an order of magnitude faster. Given more resources, even greater performance could be achieved.

Source Code

My released source code is available here.  Code is available for computing and using epitomes in Matlab as well as some utility functions for Matlab, Java, and C#.