/ncappzoo

Contains examples for the Movidius Neural Compute Stick.

Primary LanguagePythonMIT LicenseMIT

Neural Compute Application Zoo (ncappzoo)

Stable release MIT License

Welcome to the Neural Compute Application Zoo (ncappzoo). This repository is a place for any interested developers to share their projects (code and Neural Network content) that make use of the Intel® Neural Compute Stick 2 (Intel® NCS2) or the original Intel® Movidius™ Neural Compute Stick and the Deep Learning Deployment Toolkit (DLDT) portion of the OpenVINO™ Toolkit.

The ncappzoo is a community repository with many content owners and maintainers. All ncappzoo content is open source and being made available in this central location for others to download, experiment with, modify, build upon, and learn from.

ncappzoo Quick Start

If you have an Intel® NCS2 (or the first generation Intel® Movidus™ NCS) device and want to jump into the ncappzoo, follow these steps:

Clone the repo with the following command:

git clone https://github.com/movidius/ncappzoo.git

Run this command inside of any app/network folder to check your system software dependencies for that particular sample:

make install_reqs

If the script returns successfully, you're ready to run the app or network sample!

ncappzoo Apps and Networks

Explore apps by opening a terminal window navigating to any directory under ncappzoo/apps and execute this command:

make run

Explore the neural networks by navigating to any network directory under ncappzoo/networks and execute the same command:

make run

Thats it! All of the network and app directories have simple consistent makefiles. To see other make targets supported from these directories just execute this command:

make help

ncappzoo Repository Branches

There are main three branches in the repository; their descriptions are below. The master branch is the one most developers will want. The others are provided for legacy compatibility.

  • master branch: This is the most current branch, and the content relies on the DLDT from the OpenVINO™ Toolkit. This is the only branch that is compatible with the Intel® NCS2 however, it is also compatible with the original Intel® Movidius™ NCS device.
  • ncsdk2 branch: This branch is a legacy branch and the content relies on the NCSDK 2.x tools and APIs rather than the OpenVINO™ toolkit. This branch is only compatible with the original Intel® Movidius™ NCS device and is NOT compatible with the Intel® NCS2 device.
  • ncsdk1 branch: This branch is a legacy branch and the content relies on the NCSDK 1.x tools and APIs rather than OpenVINO™ toolkit. This branch is only compatible with the original Intel® Movidius™ Neural Compute Stick and is NOT compatible with the Intel® NCS2 device.

You can use the following git command to use the master branch of the repo:

git clone https://github.com/movidius/ncappzoo.git

ncappzoo Compatibility Requirements

Hardware compatibility

The projects in the ncappzoo are periodically tested on Intel® x86-64 Systems unless otherwise stated in the project's README.md file. Although not tested on other harware platforms most projects should also work on any hardware which can run the OpenVINO™ toolkit including the Raspberry Pi 3/3B/3B+/4B hardware

The projects in the ncappzoo work on both the Intel® NCS2 and the original Intel® Movidius NCS devices.

Operating System Compatibility

The projects in the ncappzoo are tested and known to work on the Ubuntu 18.04 OS. These projects will likely work on other Linux based operating systems as well but they aren't tested on those unless explicitly stated in the project's README.md file and there may be some tweaks required as well. If any specific issues are found for other OSes please submit a pull request as broad compatibility is desirable.

OpenVINO and DLDT Compatibility

The projects in the master branch depend on the Deep Learning Deployment Toolkit (DLDT) portion of the OpenVINO™ toolkit. There are two flavors of the the OpenVINO™ toolkit's DLDT:

Note: When using the open source distribution of the OpenVINO™ toolkit, you may need to modify your shell's path and environment variables to point to the toolkit's directories.

The projects in the ncappzoo work with both flavors of the OpenVINO™ Toolkit and unless otherwise specified in a project's README.md file all projects are targeted for the OpenVINO™ Toolkit 2020.1 release.

OpenCV Compatibility

Some projects also rely on OpenCV. For these projects, OpenCV distributed with the OpenVINO™ release is the recommended version. Other versions may also work but are not tested an may require tweaks to get working.

Python Compatibility

The Python projects in the ncappzoo rely on Python 3.5, unless otherwise stated in the individual project's README.

Raspberry Pi Compatibility

The ncappzoo is compatible with the Raspberry Pi 3 B+ and the Raspberry Pi 4. Some additional configuration steps are required:

Intel® Distribution of OpenVINO™ for Raspbian* OS

The Intel® Distribution of OpenVINO™ toolkit for Raspbian OS does not include the Model Optimizer. To use the ncappzoo, you must clone the open source version of the OpenVINO™ Deep Learning Development Toolkit (DLDT) and use that version of the Model Optimizer. Clone the repository, install dependencies for TensorFlow* and Caffe*, and set up your PATH and PYTHONPATH variables to point to the Model Optimizer:

cd ~
git clone https://github.com/opencv/dldt.git
cd dldt/model-optimizer
pip3 install -r requirements_tf.txt
pip3 install -r requirements_caffe.txt
export PATH=~/dldt/model-optimizer:$PATH
export PYTHONPATH=~/dldt/model-optmizer:$PYTHONPATH

Open Source OpenVINO™ Deep Learning Development Toolkit (DLDT)

To setup the open source version of OpenVINO™ with your Raspberry Pi, add to the PATH, PYTHONPATH, and LD_LIBRARY_PATH environment variables the location of the build Inference Engine libraries and Python API.

ncappzoo Repository Layout

The ncappzoo contains the following top-level directories. See the README file in each of these directories or just click on the links below to explore the contents of the ncappzoo.

  • apps : Applications built to use the Intel® Movidius Intel® NCS and Intel® Neural Compute Stick 2. This is a great place to start in the ncappzoo!
  • networks : Scripts to download models and optimize neural networks based on any framework for use with the Intel® NCS and Intel® NCS2.
  • caffe : Scripts to download caffe models and optimize neural networks for use with the Intel® NCS and Intel® NCS2. Note: this is a legacy directory and new networks will be in the networks directory.
  • tensorflow : Scripts to download TensorFlow™ models and optimize neural networks for use with the Intel® NCS and Intel® NCS2. Note: this is a legacy directory and new networks will be in the networks directory.
  • data : Data and scripts to download data for use with models and applications that use the Intel® NCS and Intel® NCS2

The top-level directories above have subdirectories that hold project content. Each of these project subdirectories has one or more owners that assumes responsibility for it. The OWNERS file contains the mapping of subdirectory to owner.

Contributing to the ncappzoo

The ncappzoo is meant to explore and teach features available for the Intel® Movidius™ Neural Compute Stick and Intel® Neural Compute Stick 2 with the Intel® OpenVINO™ toolkit. The more contributions to the ncappzoo, the more successful this community will be! We always encourage everyone with Neural Compute Stick related content to share by contributing their applications and model-related work to the ncappzoo. It's easy to do, and even when contributing new content you will be the owner and maintainer of the content.

If your inclusion is an opportunity to explore a new idea in computer vision, add as much documentation about the functionality and your process in creating your app or network, including smartly commenting your code. This will give others - and you! - a chance to learn from your addition. Your addition will help grow our community and improve all of our AI and computer vision skills. Most importantly, the insights you get from releasing your app into the wild here will only help you down the line if you ever want to commercialize your idea. As always, your work in the ncappzoo should be properly attributed so that its ownership will always be managed by you and those you grant additional rights to.

See the CONTRIBUTING.md file for instructions and guidelines for contributing.

Licensing

All content in the ncappzoo is licensed via the MIT license unless specifically stated otherwise in lower-level projects. Individual model and code owners maintain the copyrights for their content, but provide it to the community in accordance with the MIT License.

See the LICENSE file in the top-level directory for all licensing details, including reuse and redistribution of content in the ncappzoo repository.

Intel and the Intel logo are trademarks of Intel Corporation or its subsidiaries.

OpenVINO is a trademark of Intel Corporation or its subsidiaries.

Raspberry Pi is a trademark of the Raspberry Pi Foundation.

TensorFlow, the TensorFlow logo and any related marks are trademarks of Google Inc.