As an undergraduate intern, I worked for a machine automation and human-machine interface company, where use of neural networks was commonplace but beyond my purview at the time. The math, training, and hardware were expensive and complex, not to mention of little interest to this hardware-focused electrical engineer.
The Intel® Movidius™ Neural Compute Stick platform has revolutionized neural networks—and my perception of them—by providing both a coprocessor capable of handling parallel matrix math and convolutions, and a Software Development Kit (SDK) equipped with five pre-trained neural networks. These aspects make the Intel Movidius an exciting platform designed to accelerate computer vision and object recognition using neural networks to process data (Figure 1). In Part 1 of this blog series, I take a quick look at the Stick’s ease of set-up and initial recognition tests.
Figure 1. The Movidius Neural Compute Stick is poised to advance computer vision and object recognition. (Source: Movidius.com)
The goal of neural networks is to get the computer to emulate densely-interconnected brain cells capable of reliably and repeatedly identifying components, recognizing patterns, and making decisions. Designers are still refining the macro concept of neural networks by emulating processes learned from the human brain and working to mimic them in the electronic domain.
Developing an artificial neural network requires two aspects:
Movidius addresses the operation mode by accepting the parameters of a trained neural network then processing inputs to create an output using what it was trained to recognize. At the time of writing, there are five pre-trained, primary neural network models included in the Developer SDK: AlexNet, GoogLeNet, SqueezeNet, Age, and Gender. The advantage of having pre-trained neural network models in the SDK, rather than housed in the compute stick? The external hardware allows the very complex parallel computations to occur separately from the primary CPU, which allows faster and simpler access to the recognition models and thereby allows faster overall learning and operation.
Getting the Movidius Compute Stick set up was fairly easy; the instructions were very simple to follow, and the community is very active and responsive to inquiries. The hardware is compatible with most systems and, in combination with the video instructions, I was able to have it running in a little over an hour. The command scripts might seem a bit daunting, though, to users who do not use Ubuntu/Linux regularly or whose skills are minimal.
The included scripts for pre-built networks were amazingly simple to implement using the built-in laptop webcam. Familiarity with basic programming, commenting, and copy-paste techniques are needed even for small adjustments or for configuring the included scripts. Additionally, I had not expected the Movidius to include a networking analysis component that rendered a visualization of the network allocation incredibly fast. In order to test this device, I devised a fairly simple test: Identifying and distinguishing five common office objects—a water bottle, coffee mug, pen, calculator, and laptop—using SqueezeNet, which seemed to produce the most accurate results.
For my test purposes, there were a couple of constraints: The neural network is trained on a square aspect ratio input, and I could not modify the live camera version to open either of the two cameras that I used, at least not without a concerted effort. The resolution did not seem to improve the Stick’s ability to recognize objects; I was however, able to modify the inputs using still images, and the recognition was dramatically better.
The Movidius is very user-friendly and its speed astounding, and I look forward to seeing what it can do as the networks and training continue to improve. The Figure 2 video shows the Movidius correctly identifying my coffee mug and its certainty of the recognition. Similarly, the water bottle was identified regularly as well, in the 70th percentile. The pen was more difficult to recognize and required just the right angle, as did the calculator, even when allowing that be identified as a handheld microcomputer. And finally, the laptop recognition was very accurate and reliable equivalent to the mug recognition.
Figure 2: The Movidius Neural Compute Stick correctly identified a coffee mug.
At first glance, the Movidius platform seems to have great potential for evaluating network training results and as a great tool to deploy neural networks without requiring access to the Internet or online processing. For developers, it should allow development of better, faster, and more accurate networks in the future. Stay tuned for Part 2 of this series!