ARCHITECTURE $Header: /cvsroot/marf/marf/doc/architecture.txt,v 1.1 2002/10/14 20:00:31 mokhov Exp $ This "document" peesents rough "architecture" of the MARF system, including the layout of the physical directory structure and Java packages. Graphical representation of the architecture is being considered. Created on: October 14, 2002 Created by: Serguei Mokhov, mokhov@cs.concordia.ca The MARF presents modules responsible for a typical general pattern recognition pipeline: {input data} | +-> Preprocessing | +-> Feature Extraction | +->Classification Consequently, the frameork has the above basic modules, as well as some additional entities to manage storage and serialization of the input/output data. An application, using the framework, has to choose the concrete configuration and submodules for preprocessing, feature extraction, and classification. These main three module types have to know how they manage and store the data. There are two phases in MARF's usage by an app: o Training o Recognition Training is performed on a virgin MARF installation to get some data in. Recognition is actual identification of a sample against previously stored patterns during training. The following is the basic structure so far: marf.* MARF.java - The MARF Server (might not be available) Supports Training and Recognition mode (or it's just a thread an app has to subclass???) || || samples || \/ marf.Preprocessing.* - The Preprocessing Package /marf/Preprocessing/ Preprocessing.java - Abstract Preprocessing Module, has to be subclassed /FFT/*.java - FFT implementation of Preprocessing /BandpassFilter/*.java - Bandpass Filter as implementation of Preprocessing /Endpoint/*.java - Endpoint Filter as implementation of Preprocessing || || matrix || \/ marf.FeatureExtraction.* - The Feature Extraction Package /marf/FeatureExtraction/ FeatureExtraction.java /LPC/LPC.java /Ceptral/*.java /Segmentation/*.java || || set of vectors ? (refined matrix) || \/ marf.Classification.* - The Classification Package /marf/Classification/ Classification.java /NeuralNetwork/NeuralNetwork.java /Stochastic/*.java /Markov/*.java || || N-best || \/ marf.Storage.* - The Physical Storage Management Interface /marf/Storage/ StorageManager.java - Interface to be implemented by the above modules SampleLoader.java - Should know how to load different sample format /Loaders/*.* - WAV, MP3, ULAW, etc marf.Stats.* - The Statistics Module (totally optional, I'm unclear about it yet) /marf/Stats/ StatsCollector.java - Time took, noise removed, patterns stored, modules avail.... EOF