Resources
Bibliography
Biologically motivated object recognition (MATLAB)
This is an implementation of the 'bypass' version of the standard model for object recognition.
The implementation follows "Serre, T. and Wolf, L. and Poggio, T.", "A new biologically motivated framework for robust object recognition",CVPR,2005.
Please visit CBCL for several publications describing this model.This version allows you to arbitrarily replace each layer with several faster approximations.
There are other implementations (C,C++,matlab) available from the following locations
Description
You can find the description and trade-off of these approximations in the draft report found here
Code
The following lists the important files in the implementation.
Data
The caltech 101 database can be found here
Installing and running the code
- Download the {code,approx,caltech} tar balls and unzip them into your directory
- gunzip code.tar.gz && tar -C code -xvf code.tar
- gunzip approx.tar.gz && tar -C approx -xvf approx.tar
- gunzip caltech.tar.gz && tar -C caltech -xvf caltech.tar
- gunzip third_party.tar.gz && tar -C third_party -xvf third_party.tar
- Startup matlab and add the paths
- addpath code; addpath approx; addpath caltech; addpath(genpath('third_party'));
- Running a binary classifier
- Set the path of the training and testing data in demo_baseline.m
- Running the model over caltech 101 database
- Extract features over all images using script101.m script. This script is parallelized and can be run from multiple nodes simultaneously. It uses lock files to run concurrently on the whole database.
- Combine the results using script101_combine_matrices
- Use script101_perf.m to evaluate the performance
Biologically motivated object recognition (OPENCV)
The "bypass route" of the model has also been written in C++ using OPENCV for
primitive image operations. The outputs of the C++ version are nearly identical (correlation > 0.99) with the matlab version. Additionally,
the c-version is multi-threaded and computes several filter responses in parallel making it much faster than the matlab version
on multi-core machines.
Code
The source code for the OPENCV version can be downloaded from here. Supporting files
to convert models and filters between matlab code and C can be found here.
Sample data
The C version is currently trained to recognize four object categories (faces,mugs,books,pens). The training and testing data
were collected by Johnathan Harel at Caltech and can be downloaded from here
Installing and running the code
In order to run the C++ version, you need to install opencv first. You can obtain the source distribution of opencv from
sourceforge. After you install opencv you can use build_linux.sh
or build_pc.sh to build the binaries(needs cygwin on PCs). Run the program without any parameters to see the
proper syntax.
Training for other object categories
Currently, the C++ version performs only recognition. The training weights and features are obtained offline, using the matlab code (see
above). Matlab scripts to export the S1 and S2 fitlers are provided here. You need
to download the matlab version of the code and also the STPR toolbox to train the model.
Use the following procedure to use the code with other object categories
- Download the matlab version of the model (see above)
- Use either the universal dictionary or object specific dictionary to generate features for the entire training set
- Use STPRtoolbox multi-class svm (oaasvm) to train a simple classifier to distinguish between the object categories
- Optionally, you can use feature selection (highly recommended) to reduce the run-time (linear in the number of features). We use
L0 norm SVM to perform our feature selection (code).
- Use the conversion scripts filter_m2c.m,patches_m2c.m and model_m2c.m to export the S1 filters,
S2 filters and the SVM model to text files to be loaded by the C++ program.
Fingerprint Toolbox
I'm currently writing a bunch of routines for fingerprint verification in matlab. From the many mails I've got so far,
it looks like anybody who wants to work on fingerprint recognition has to start from the scratch. The toolbox is my
effort to provide people with implementation of popular algorithms found in literature. I will be posting the routines here as I
go along. You'll need Matlab Image Processing Toolbox in order to run these programs
Some test data for working with the toolbox can be obtained from the following sources
CUBS Fingerprint Feature Extraction Tool
This tool provides a graphical user interface for minutiae feature extraction and visualization. It also allows the user
to manually identify new minutiae or remove spurious ones. This tools was used by us to evaluate the efficiency of different
feature extractors.The windows setup program and sample data
can be downloaded from here
CUBS Fingerprint Recognition Tool
This tool provides a graphical user interface for fingerprint recognition. The tool enables visualization of matched minutiae. It also
allows the user to identify new matched pairs or remove false correspondences. The windows setup program and sample data
can be downloaded from here
. NOTE: The feature extraction
code was contributed by Chaohang Wu (cwu3@buffalo.edu). Pl address request for feature extraction code to him. The matching and
enhancement code is avaialable here
Speaker Verification
This is the source code and report for my DSP class project at UB. The source code implements Furui's cepstral features based
speaker verification. The matlab source code can be downloaded from here
Speaker ID
This is the source code and report for my machine learning class project at MIT. The source code implements MFCC and VQ/GMM based
speaker identification system. Also provides an option to learn optimal number of cluster centers based on Bayesian Information
Criterion. The matlab source code can be downloaded from here. The zip file also contains
the project report that you may find helpful
Oclet: Character recognition using wavelets and neural networks
This was my undergraduate project and implements a simple wavelet feature based character recognition. You can find the windows
binaries and description here and here
Kohenen Self Organizing Map
C source code for a configurable KSOM. Source code here
Bits stream handler
A group of functions to handle streaming data (e.g. encoded audio or video stream). Source code can be found
here