Most knowledge-directed vision systems are tailored to recognize a fixed set of objects within a known context. Generally, the programmer or knowledge engineer who constructs them begins with an intuitive notion of how each object might be recognized, a notion which is refined by trial-and-error. Eventually the programmer finds a combination of features (e.g., color, shape, or context) and methods (e.g., geometric model matching, minimum-distance classification, or generalized Hough transforms) that allow each object to be reliably identified within the domain. Unfortunately, human engineering is not cost-effective for many real-world applications. Moreover, there is no way to ensure the validity of hand-crafted systems: their performance (in terms of accuracy and reliability) is unknown, as is their efficiency in comparison to other strategies. Worst of all, when the domain is changed, the systems often have to be rebuilt from scratch. The schema learning system (SLS) automates the construction of knowledge-directed recognition strategies. Starting with a set of potential actions called `knowledge sources,' SLS builds a strategy capable of recognizing the first training instance. With each successive training image, SLS generalizes the strategy (if necessary) to account for any new examples, while keeping the strategy as efficient as possible. The final result is a strategy capable of recognizing every instance in a training set at a minimal cost.