Olly Oechsle's Research in the VASE Lab

Olly Oechsle Abstract My research concerns the search for a system that can create a variety of computer vision applications automatically. This consists of a software environment where users can define their problem, and an adaptive learning algorithm (genetic programming) that can generate the solution automatically. While Genetic Programming has been used for some time to generate computer vision applications, a lot of expert work has to be dedicated to initialising the GP process. The aim of my project is to find the adaptations to Genetic Programming that make this more automated.

This work is being performed by Olly Oechsle, supervised by Dr Adrian Clark. This page is a brief overview of the achievements to date.

Topics within my research:

Genetic Programming
Creating a Generic Computer Vision Tool
Segmentation
Recognition

Presentations / Articles

ECJ Tutorial
Research Overview
Colloquium Presentation
BMVA Summer School Poster
"Feature Extraction and Classification by GP", ICVS2008
Subjective Analysis of Classification by GP

Demo Images / Videos

Pasta Recognition
ANPR
Jasmine GUI
Posture Recognition (video)

Software:

Java Imaging Library
Java Function Plotter
Cellular Automata Demo and Source Code
HTML Fixer with Automated Find and Replace Refactoring
File Renamer
ECJ to Java Converter
Tree Visualiser / Animator
TeX To HTML Convertor
Java Source Writer
Java Line Counter
AdaBoost M1 Implementation

Genetic Programming (GP)

If you give a computer a set of functions and features, and ask it to build a program, there are potentially millions of combinations that it could try, if it were to do an exhaustive search. Of these programs, a certain proportion will produce reasonable solutions to the problem, but if that proportion is small, then the search may take a long time.

Genetic Programming is a means of discovering problems more efficiently, by means of simulated natural selection. The computer randomly generates a small "population" of programs to solve a particular problem, then chooses the one which seems to solve it best. A subsequent "generation" of individuals is created, based on the "better" individuals in the previous population. These new individuals are created by simulating the biological concepts of crossover and mutation, and so the process continues.

Although GP is in essence just a search methodology, like many others, its ability to search for computer programs makes it potentially more powerful than other learning techniques, some of which are inherently linear in nature. Due to the size of the search space, however, GP is quite slow in comparison to other tools.

In the past I used the ECJ (Evolutionary Computation for Java) toolkit, although now I use my own homebrew solution.

Creating a Generic Computer Vision Tool

Genetic Programming has been used to generate many solutions relating to computer vision. It has been successfully employed to segment skin lesions and faces, to recognise vehicles, golf courses and forest fires from space, to recognise small objects, find edges and has also proved useful in many other domains.

However, in each of these cases, the Genetic Programming system needs to be carefully adapted to make it suitable to work on the chosen task. Usually this involves creating a feature set appropriate to the data used for training.

My approach is to use a generic, two stage approach, consisting of segmentation (cutting out the parts of the image that are interesting) and classification (determining what those parts of the image mean). I aim to show that this approach can be used successfully in a number of different domains.

Performance is often an issue for generic tools, as opposed to ones which have been designed for a particular purpose. The second part of my project concerns finding methods to make Genetic Programming as efficient as possible in solving these problems.

Segmentation

Photography is the process of combining a number of different objects onto a 2D image. Segmentation is opposite: the process of recovering logically distinct parts from a 2D image, which amounts to separating foreground objects of interest from the background.

While there exist a variety of generic segmentation algorithms already, it makes sense to train the segmenter to look for specific things, rather just only finding boundaries between different objects. Genetic Programming can be used to do this. A program is evolved which can make a decision about a single pixel; the program is then applied to every pixel on the image. I've written a tutorial on how to do something like this using ECJ (a freely available Java GP toolkit).

The kind of segmentation that is appropriate is very much dependent on the kind of images in the training set. Sometimes the background may be distinguished by colour, other times by texture or other spatial features.

Recognition

Once the image is segmented, one is left with a number of regions which equate to different objects. If you gather data on each of these regions, such as how large is it, how round is it, etc, you can start to develop strategies for classifying different kinds of regions as different objects. Genetic Programming is again used to evolve classifiers for this.

Most recognition/classification tasks in the GP literature refer to low order problems, where there only exist a few classes (normally five or six at most), but I'm interested in developing GP solutions to problems where there are many more classes, say 20 or 30. I've developed a different GP approach which can do this quite well, and quickly too. Click here for more information