I build sorters.
I have two of them by now - LEGO sorter and Magic the Gathering cards sorter.
The LEGO sorter sorts the parts by mold or color. It finally uses a set of standard single label CNNs based on Resnet34. The CNNs are organized hierarchically - first sorts to basic categories (brick, plate, technic, slope etc.), other networks do the more specific sorting of higher category. I have a data of cca 150 different molds by now. I have at least 500 images for most of the molds.
I tried to build just one multilabel CNN to cover all the hierarchy, but with no big success. The common categories were successful, the detailed didn’t learn well (obviously - much smaller dataset).
The MtG sorter originally used the simmilar hierarchical approach - and it worked quite well. I tried a single CNN, too, but with no success - 50 000 categories were too much for resnet34. Even if I were successfull, I’d have to rebuild the CNN with every new card.
Finally I adapted the @radek 's siamese network from Whale competition. It still has problems to distinguish between the almost the same cards sometimes, but works quite well. The controlling software is connected to the current card prices, so I can sort out the cards worth of selling.
The dataset contains one image per card.
You can see both machines on the video from LEGO exhibition in Olomouc, Czech.
There are a few more videos in my channel:
https://www.youtube.com/channel/UCfc7oHyDpceKFabTuM9Hzew/