We had a case that required the classification of a large number of images into several distinct categories. Manual classification would be a monumental and prohibitively expensive process, however, that was the industry’s current state of the art. Image or item recognition is an oft-used example of a good application of machine learning so we were curious to see if we could apply machine learning to solve our specific challenge.
After several iterations, we designed a process that uses a convolutional neural network (CNN) that’s based on the Inception-v3 model. We used a pre-trained network, retrained it on our dataset using transfer learning, and after tweaking quite a few parameters we were able to achieve results that surpassed manual classification accuracy.
To operationalize our neural network, we designed a sophisticated queue and processing mechanism that allows us to scale capacity as needed through processor and OS-independent parallelization. Depending on the requested turn-around time in the SLA, we can use expensive GPU instances to quickly rip through a large image backlog or we can use cheap, commodity hardware to steadily work through the queue but at a very low cost. The independence afforded by this design enables us to easily match speed to the appropriate to business and market factors allowing the client’s pricing strategy to stay responsive and very competitive.