An invitation to try something new

Face recognition.
For Magic cards.

CardVision identifies Magic: The Gathering cards through your phone camera — not just the name, but the exact printing out of 98,421. Recognition runs entirely on your device. You are invited to try the native iOS and Android apps.

ResNet-50 + ArcFace, on-deviceSeriously fast — 50+ cards per second

Choose your platform to get started

iPhone installs via TestFlight. Android installs directly from the APK.

Alpha build: recognition is solid, the edges are not. Bug reports and photos of cards it gets wrong are the most useful thing you can send.

See it in action

Real cards. Actual app footage.

How a card gets to its exact printing.

Detector · Embedder · Gallery

Cheap recall, expensive precision.

A YOLO26n-pose detector returns four corners, and the card is warped onto a 488 × 680 raster. Hashing ranks all 59,007 artworks; ORB + RANSAC verifies only the best eight — 3.1 ms. OCR runs only on doubt. Pipeline measurement over 400 cases: 18 ms median, 24 ms p95.

A face recognizer that looks at cards.

The embedder is a self-trained ResNet-50 with an ArcFace margin head — the same loss function face recognition uses, here with one class per artwork instead of one per person. Trained on synthetic frames: foil glare, sleeves, wear, occlusion, low light.

New sets without retraining.

As with faces, identity lives in the gallery, not in the weights: a new set is added as a vector and the network stays untouched. Folded into the final Gemm via whitened PCA and shrunk to fp16 — 98 MB to 48 MB, 512 down to 192 dimensions, with slightly wider margins.

In the stackYOLO26n-poseResNet-50 / ArcFaceORB + RANSACCoreMLLiteRTSwiftKotlin