Simple geometric shape recognition based on fuzzy inference.
Final project for Introduction to Artificial Intelligence course @ Fudan University.
Read report for implementation details and experimental results.
- Experiment with standards shapes to derive the basic rules and framework of the system.
- Generate random images and introduce noise by distorting and rotating.
- Split images into training set, development set and testing set.
- Extract features using OpenCV.
- Use simple statistics from traning set to determine the shape and boundary of each fuzzy sets.
- Write fuzzy sets and rules into a separate rule base file.
- Implement a simplified Sugeno-style inferencer
- Tune parameters using development set.
- Evaluate performance on testing set.
- Ask different persons to drawn sketches as additional test images
src/puzzy/fset.py
Define different types of fuzzy sets (representation and membership function).src/puzzy/inferencer.py
Implement inference engine.src/puzzy/rule.py
Implement rule representation and parsing.src/analyze_features.py
Analyze features using simple statistics.src/evaluate.py
Evaluate performance on a given dataset.src/extract_features.py
Extract features from a given dataset.src/generate_images.py
Generate random noisy images.src/recognize.py
Interface for recognition.src/rule_base.txt
Rule base for the system.data/sample/
Sample images used in development and evaluation.