Madura: A language for learning vision programs from examples
Recently the idea of designing a computer system which automatically connects a number of independent vision modules together to solve a given computer vision problem has attracted significant interest. However the main assumption of this endeavour, namely that the modules used as the building blocks of the vision system are essentially fixed, is questionable in the light of previous experience. Therefore it is important to be able to modify even the detailed operation of the basic modules used, something which is not practical using conventional techniques. This paper constructs a general method by which the computer code of a vision module can be altered automatically to make it mimic a desired behaviour. The system which does this, termed L-u, modifies a basic module template using interaction with an Oracle as a guide. The Oracle is an entity which, when given an input value, produces the corresponding output of the function which is to be mimicked. The system developed is based upon a new model of computation which endows it with the important properties that extracting the template (i.e. structure) of any module's computer code, as well as determining the best questions to pose to the Oracle are both performed automatically. Thus the L-u described has significant advantages over many other models which might be used (e.g. Neural Networks). Dealing directly with this new model is not always convenient. Therefore a new computer language Madura is defined which provides a high-level interface to it. As Madura is syntactically similar to JAVA, it is simple to express the code of many basic vision modules in its terms and the results of L-u (the Madura code of a module which mimics the Oracle) are similarly simple to understand and use. This paper shows a number of results which demonstrate how the L-u developed can learn many state-of-the-art initial vision algorithms in a matter of minutes. The current and future impact of this work is also examined.
computer vision machine learning theoretical computing automatic program refinement