CoinSorter is an open source coin inspection system. It sorts coins by solenoid on conveyors by classifying images with models created using Caffe & DIGITS and controlled with Python, OpenCV, and Arduino.
2/6/17: This CoinSorter repo is getting out of date, but the project itself is still very active. The biggest news is manual labeling has been eliminated! Designs and coin features sometimes can be found with only 1 example (One Shot Learning). The project has been rebuilt in a number of separate repos:
The Goal of CoinSorter is to be a:
|Clear Belt & Cameras Removed||Scanning with a Center Cutout||Top and Bottom Camera Closeup|
Milestones & Short term goals & tasks:
How to Contribute & Participate
The first proof of concept of this system used a C# project to capture images from a Canon Rebel camera and called MATLAB to preprocess them. A VB project was used to call DIGITS to classify the images and call a HP Power supply to drive a solenoid. These two projects have now been replaced.
The second proof of concept used C#, OpenCV, a webcam, Arduino solenoid control, and local classification with Caffe on Windows 10. Here is a poster and a Power Point that describes the 2nd version. You can download the second proof of concept release here.
This first two groups of programs and scripts were just a quick proof of concept to show physical coin sorting. They sorted about 2 pennies a second, continuously. One solenoid and 2 physical bins are currently set up. Using Caffe it’s easy to distinguish between designs, orintation, and dates of coins. For example you can train a convolutional neural network (CNN, what Caffe uses) to determine if a coin image is heads vs tails or say recognize the state on a random US state quarter image. On one of the first models that was built Caffe could tell heads vs tails between US copper pennies 99.9% of the time. This can be done using using DIGITS with default setting of AlexNet with no programming involved! In practice it's more efficient to use smaller image sizes and optimized networks.
On the surface this system may look toy like and have a very narrow focus, but this is not true at all. You can take the basics of this system and use it for all sorts of very practical industrial uses. It’s not just sorting a handful of coins. It scales very quickly to tons of coins (or any parts for that matter). I have no doubt the system will get to the thousands of users range and be used for uses I could never envision.
Nothing remotely like it exists that is very low cost or open source. There are undocumented one off builds for all kinds of part handling. Probably the closest thing would be the open source pick and place machines. I have yet to see any personal or open source part handling systems that use the current crop of deep learning tools. MakerBot did have a conveyor on one of their machines, but this was a blind setup. Please let me know if you know about other, complete or not, documented open hardware machine vision systems
Feel free to contact me if you have questions about this project.