# Technologies Used

## Core ML & Vision
- ChessPieceClassifier.mlmodel for piece recognition
- VNCoreMLModel for image classification
- Vision framework for board detection

## Image Processing
- CoreImage for preprocessing
- CIColorControls and CIUnsharpMask filters
- CGImage for image manipulation

## Development Environment
- Xcode for Swift development
- Create ML for model training
- SwiftUI for UI components

# Technical Constraints

## ML Model Capabilities
1. Classification Types:
   - Pieces: pawn, rook, knight, bishop, queen, king
   - Colors: black, white
   - Empty squares: dark, light
   - Label formats: color_piece, empty_color

2. Recognition Features:
   - Multi-class classification
   - Per-class confidence scores
   - Position-aware validation
   - Piece count tracking

## Processing Requirements
1. Image Requirements:
   - Square dimensions (1:1 ±10%)
   - Non-zero dimensions
   - Center-cropped squares
   - Clear piece visibility

2. Recognition Rules:
   - Empty squares: exact class match with >0.9 confidence
   - Pieces: strict format with >0.98 confidence
   - Separation ratio: >5.0 between predictions
   - Position validation: essential rules only

3. Error Prevention:
   - Early empty square detection
   - Strict label validation
   - Safe optional handling
   - Clear error messages

## Performance Considerations
1. Processing Flow:
   - Early validation checks
   - Fast empty square detection
   - Efficient error handling
   - Quick rejection paths

2. Resource Optimization:
   - GPU acceleration for ML
   - Minimal preprocessing
   - Optimized validation
   - Efficient logging

# Development Setup
1. Clone repository
2. Open ChessPrism.xcodeproj
3. Build and run on macOS
4. Model at ChessPrism/ChessPieceClassifier.mlmodel
