New Card Identification Algorithm Experiment: Pt 2 (Faster Framerate!)

This new algorithm felt cute. Might delete later. Part 2!

Playing around with neural networks and some new scanning algorithms.

Had several people ask me about the framerate in the previous video, so decided to post a followup where I'm running at 10fps. This is being served by a little Mac Mini on my home network right now, but is small enough to run on practically anything.

Uses a couple of custom-trained neural networks -- one to predict card corner points (the "detector"), and another to hash / vectorize the image (the "identifier") and do nearest-neighbor search to find the closest match in our image database. It does not need to be re-trained every time new cards are released.

Both models are sized to be pretty small and lightweight -- should be able to run locally in fairly limited resources (in a browser, or on a phone, or in a Raspberry Pi). This current demo is just slapped together, and streams images up to a local web server running on my home network. Not optimized at all. Long-term, we should do the neural networks all locally (on the user's device) and only do the card lookup on the server -- that keeps us from having to stream images back and forth, but for now I'm doing it all on the server because it's simpler that way.

This is all still extremely preliminary and not super-tuned yet. The corner detector only has 15 epochs into it, and I think it can get a lot better.

The identification network is looking good, and still has a lot of headroom to improve, but I stopped training because I didn't want to overfit too much on Magic, and wanted to make sure I got some other CCGs into the mix before training it too much more.

This is not tied to any of my previous work, and could be licensed for use in your product. Interested? Send me a message!

📺 Watch on YouTube