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
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