The Future is Machine Learning
Back in 2009, when QuarkWorks was first getting into mobile, it was a daunting task. Everything was new, even Stack Overflow was a barren wasteland. And Android…forget it!
The Machine Learning (ML) landscape last year felt very reminiscent of those days. There are so many platforms coming up to overthrow the crowned industry golden child months before. And much like the early days of mobile, there is a talent war where Google, Microsoft, and Amazon are fighting to retain the best ML minds. This has the unfortunate side effect of causing a talent drought for industries that lack the resources or sex appeal of the big three.
All of this is fascinating to watch and I am convinced that ML is going to play a large part in the future of QuarkWorks. The best way to understand something is to do it. So for the past year or so we have been slowly working on building out an ML pipeline trying to understand what once seemed like snake oil and magic.
We have been focusing our work on ML networks specifically to augment mobile apps. When starting out the questions we wanted answers to were:
1. What is the proper network to solve my problem?
2. Where am I going to get the data to train my network?
3. What environment/framework am I going to use to train my network?
4. How will I get the GPU resources to train my network?
5. How will I get more data from my users to make the network better?
It’s surprising how much effort is involved in finding answers to these questions. When you get into it, you find that many of the resources are articles that get into the cutting edge. The PHD’s will focus on the latest papers and create novel networks using the latest tools. On the other side of the spectrum, you see the drastic oversimplification of specific areas without gleaning any actionable information, aside from the new ability to passably bullshit about the topic at networking events. And then there are the turnkey solutions where Microsoft, Google, and Amazon say leave the hard parts to us. I found it very hard to find resources describing the end-to-end process.
This is the beginning of a series of posts where I am hoping to document the answers we have found to the questions we have set out to answer. Along the way, I am hoping to cover the four pillars of the ML universe: the network, the training data, the training process, and finally the production model.
In this multi-part blog we are going to take you through the system we have pieced together. As we go through each of the parts in the series you can find the link to each below.
- Setting up Paperspace a cloud service to crunch your models without the need to buy your own hardware.
- Configuring an IDE to work with your cloud service, so that training your model in the cloud is as simple as hitting ‘run’.
- Data sourcing techniques: easy and advanced.
- Data annotations and tagging.
- Training an object detector using Tiny YOLO.
- Setting up MobileNetV2 with Keras and training in the cloud.
- Porting the model to Core ML for iOS.
- Performance optimizations tuning and graphing.
- Picking a network for your specific use case.
As ever, QuarkWorks is available to help with any software application project — web, mobile, and more! If you are interested in our services you can check out our website. We would love to answer any questions you have! Just reach out to us on our Twitter, Facebook, or LinkedIn.