Exploring the effects of optical illusions on computational models of object recognition

Final year project for Beng electronic engineering at the university of surrey - 2012

The purpose of this project was to design and program a computational object recognition system, which can classify test images depending on the object present, and produce back-projection images containing useful data about the classification process. The system was testing against basic optical illusions in order to focus on why it thinks an image is a specific class, and which features of the image were used, as opposed to most object recognition systems that focus purely on the accuracy of the system.

The outcome of this project was the creation of an object recognition system, which can not only perform basic classification tasks, but can highlight which features in an image were used in the process, and why/how they were used.

One of the main images the system was tested with is the kanizsa triangle:

The result of passing this through the object recognition system is an image with highlights for each feature that was used to decide what the object was, and for each of these, the training class it belongs to. In this image, the rgb colour channels map to the square, triangle, and circle classes respectively.

This project formed a large part of my final year grade, and was also a good chance to practice with c++, my section of the code contains the usual basic inheritance and data structures used in OO programming, and while it could be better organised, the structure is quite good for a project that had major design changes almost every week

A lot more detail on the project can be read in the dissertation, and if you would like to see the code behind the system, just send an e-mail. I would upload the full source and image sets here, however the training image set along is about 300MB, and the full system about 3GB.

Dissertation (pdf, 5.2MB)