93 lines
1.9 KiB
Markdown
93 lines
1.9 KiB
Markdown
# System Patterns
|
|
|
|
## Model Architecture
|
|
1. Core ML Integration
|
|
- Vision framework for image handling
|
|
- Direct category mapping
|
|
- No intermediate transformations
|
|
|
|
2. Classification Flow
|
|
```
|
|
Image → VNImageRequestHandler → VNCoreMLRequest → VNClassificationObservation → SquareClassification
|
|
```
|
|
|
|
3. Category System
|
|
- 12 piece categories:
|
|
* white_pawn to white_king
|
|
* black_pawn to black_king
|
|
- Empty square fallback
|
|
- No background variations in model
|
|
|
|
## Processing Pipeline
|
|
1. Board Detection
|
|
- VNDetectRectanglesRequest
|
|
- Aspect ratio validation
|
|
- Square extraction
|
|
|
|
2. Image Processing
|
|
- Contrast enhancement
|
|
- Edge sharpening
|
|
- Noise reduction
|
|
- Center crop
|
|
|
|
3. Classification
|
|
- Vision framework integration
|
|
- Confidence threshold
|
|
- Error handling
|
|
|
|
## Code Organization
|
|
1. Recognition Layer
|
|
```
|
|
PieceRecognizer
|
|
├── Model loading
|
|
├── Image preprocessing
|
|
└── Classification handling
|
|
```
|
|
|
|
2. Model Layer
|
|
```
|
|
SquareClassification
|
|
├── Category mapping
|
|
├── Piece type/color
|
|
└── Empty square handling
|
|
```
|
|
|
|
3. Core Components
|
|
```
|
|
BoardDetector
|
|
├── Rectangle detection
|
|
├── Square extraction
|
|
└── Position validation
|
|
```
|
|
|
|
## Data Flow
|
|
1. Capture
|
|
```
|
|
ScreenCapture → Raw Image → Board Rectangle
|
|
```
|
|
|
|
2. Processing
|
|
```
|
|
Board Rectangle → Individual Squares → Preprocessed Images
|
|
```
|
|
|
|
3. Classification
|
|
```
|
|
Preprocessed Images → ML Model → Piece Categories → Chess Position
|
|
```
|
|
|
|
## Key Patterns
|
|
1. Direct Integration
|
|
- Vision framework throughout
|
|
- No intermediate conversions
|
|
- Consistent image handling
|
|
|
|
2. Error Handling
|
|
- Early validation
|
|
- Graceful fallbacks
|
|
- Detailed logging
|
|
|
|
3. Performance
|
|
- Shared CIContext
|
|
- Efficient image processing
|
|
- Optimized model loading
|