Set Solver Models
Trained models for the Set card game solver.
Live demo: huggingface.co/spaces/wangtianthu/set-solver
Models
Detector β YOLOv11n
Detects individual Set cards on a board image.
| Metric | Value |
|---|---|
| mAP50 | 99.5% |
| mAP50-95 | 97.4% |
| Architecture | YOLOv11n |
| Input size | 640x640 |
| Epochs | 10 |
| Training data | 4000 synthetic board images |
Files: detector/weights/best.pt (PyTorch), detector/weights/best.onnx (ONNX)
Classifier β MobileNetV3
Classifies each card's 4 attributes: shape, color, number, and fill.
| Metric | Value |
|---|---|
| Overall accuracy | 99.9% |
| Number accuracy | 100% |
| Color accuracy | 100% |
| Shape accuracy | 99.9% |
| Fill accuracy | 99.8% |
| Architecture | MobileNetV3-Small |
| Input size | 224x224 |
| Training data | ~9500 cropped card images (81 classes) |
File: classifier/classifier_best.pt
Usage
from ultralytics import YOLO
from PIL import Image
# Load detector
detector = YOLO("detector/weights/best.pt")
results = detector("board_photo.jpg", conf=0.25)
# Load classifier
import torch
from src.train.classifier import SetCardClassifier
classifier = SetCardClassifier(pretrained=False)
checkpoint = torch.load("classifier/classifier_best.pt", map_location="cpu")
classifier.load_state_dict(checkpoint["model_state_dict"])
classifier.eval()
Training
Both models were trained on synthetic data generated by a custom board generator that produces realistic Set game layouts with varied backgrounds, perspective transforms, and noise objects.
Source code: github.com/wangtian24/set-solver