Accelerating deep learning applications

Hello everybody!

Been looking into using deep learning on budget computers, and found an interesting new device for accelerating deep learning, specifically computer vision. It's called the Movidius Neural Compute Stick, and has an astonishing 8 cores and 4 gigabytes of RAM dedicated for deep learning programs, all for the low price of $79 in the US. Compatible with Ubuntu computers, as well as the raspberry pi. Only problem is the Python API will not function in MRL's Python service, since it accesses native code. However, it may be possible to integrate this into MRL using mrlpy, a native Python API to MRL. Mrlpy still requires a bit more maintenance and touching up before it's ready for this, but the good news is that it's theoretically possible to use the NCS in myrobotlab.

Mats's picture

USB Deep learning

That's an really interesting device. I ordered one. 18 weeks delivery from the factory. If I'm lucky it will arrive before x-mas :) We will probably see a lot more developments in this area.

Then we will see if theory can be translated to reality :) Time to read up a bit on the specificaitons.

I found this link to the software libraries. Raspberry PI support ( not for the full SDK but as a target host ). The examples show how it uses a web camera, but I think the PI camera should work also, since it can emulate a web camera. 

https://ncsforum.movidius.com/discussion/118/movidius-nc-sdk-1-07-07-wit...

https://developer.movidius.com/getting-started

AutonomicPerfectionist's picture

Interesting... Now that

Interesting...
Now that I've looked closer, the examples I saw for the raspberry pi use the pi camera, and I mistakenly assumed that meant full compatibility with all cameras on the raspberry pi.
Thanks for clearing that up!
I'll be looking at the SDK soon to get an idea of compatibility with MRL, but I don't currently have the funds to purchase a stick currently (working on my own InMoov right now), so I won't be able to do any testing with the physical device for awhile. Instead, I'll be working on mrlpy to bring it to a fully functional state (currently has some quirks regarding initialization).
 
I'll update when I've got more info.
Thanks!
Mats's picture

Ubuntu

If you can get mrlpy worky, that would be awsome :)  Are you planning to build it as a library or a template ?

I also need to get a computer where i can install the SDK.

Currently I'm only using Windows 10 and a couple of RasPi, but to use the SDK I need an x86_64 Ubunto 16.04 machine.

 

AutonomicPerfectionist's picture

Answers

Okay, this is a multipart response ;)

 

1. Mrlpy is actually pretty close to full functionality, can be installed using pip (pip install mrlpy), and currently allows writing native Python services. Only problem is it might not work in Windows (developed it using Ubuntu and not sure if the libraries work the same on Windows). Just fixing up some bugs regarding initialization routine (requires a proxy service be created MRL-side first, otherwise errors out, and main thread sometimes exits because the event threads are marked as Daemons instead of user). Should be able to do most of the service creation code while I fix those. Mrlpy is a library that exposes several API's to the coder, but also creates a template for creating new services (see examples in Github)

 

2. Windows !0 might actually suffice for some preliminary work, believe it or not. Completely depends on which update you're running. Starting Anniversary Update, Windows 10 started including something called Bash on Ubuntu on Windows, which used an underlying technology called WSL, or Windows Subsystem for Linux. Basically, this takes Linux syscalls and translates them to Windows. This allows for a surprising number of Linux programs to be ran natively on a Windows 10 system. There are some things missing, such as no X environment (can be fixed using vcxsrv or similar), but it might work for this. For specs: Windows 10 Creators Update contains an Ubuntu 16.04 x86-64 userspace, with support for serial communications to USB devices and complete support for Python, C, and Make, as well as Bash and other scripting languages. You do have to enable this feature manually (just Google it, lots of tutorials). Really quite useful, I got an entire ROS setup running in Windows 10 without any significant problems. Only thing that might cause a problem is USB support (only in Creator's Update and later). Hope this helps!

P.S., try Wubi.exe if WSL doesn't work, dualboots PC with Ubuntu but can be installed and uninstalled like a regular windows program

Mats's picture

mrlpy & ubuntu

Thanks.

1. Awsome. I'm really impressed by what you already have done with mrlpy. I'm hoping to be able to use the pi camera and some native python to do more image processing, and just return the result to MRL. 

2. I will try. Having both Windows 10 and Ubuntu on the same computer would be perfect. I will see if I can get Windows 10 Creators Update instaleld on my PC. 

Update: I successfully installed the Linux bash shell ( Ubuntu 16.04 )

https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-s...

Next step: Install Movidius SDK.

Install of Movidius SDK under WSL  failed: 

I think this is because of the USB ports in some way. 

libdc1394 error: Failed to initialize libdc1394

I also checked wubi.exe. Seems to have been working fine in older releases but now it's not recommended anymore. Testing to download Ubuntu 16.04 and use dual boot.

 

 

 

AutonomicPerfectionist's picture

My bad, USB support was added

My bad, USB support was added in the first post-Creators Update Insider Build, sleighted for the Fall Creators Update, not Creator's Update itself. I myself only have one Windows computer and it would not let me update to Creators. Sorry about that. I was also unaware Wubi was no longer recommended... Apparently it was deprecated as of the Ubuntu 16.04 release. I've never had problems with dual-booting, just wanted to point you in the safest direction in case something were to happen. I'll try installing the SDK once I finish up with mrlpy's initialization issues (pretty much all on the Java side now).

Mats's picture

Movidius SDK on Ubuntu 16.04

I installed Ubuntu 1604 and using dual boot, I was able to install the SDK. The instructions worked 100%

I also got an update from the supplier that the estimated delivery date has changed from 29 november to 20 September. So more than 2 months earlier than I originally expected. That's a good sign.

 

Mats's picture

Movidius compute stick

I registered on the Movidus developer site and got this encouraging message back from the Administrator of the devloper forum :)

@Mats the InMoov project is very inspiring, thank you for contributing your versions to the inMoov community. I myself have printed, and put together the hands.

I look forward to seeing an NCS powered intelligent inMoov!