Magic Wand

Browse source code on GitHub

Overview

This sample application shows how to use TensorFlow Lite Micro to run a 20 kilobyte neural network model that recognizes gestures from an accelerometer.

Building and Running

Add the tflite-micro module to your West manifest and pull it:

west config manifest.project-filter -- +tflite-micro
west update

The application can be built for the LiteX VexRiscv for emulation in Renode as follows:

west build -b litex_vexriscv samples/modules/tflite-micro/magic_wand

Once the application is built, download and install Renode 1.12 or higher as a package following the instructions in the Renode GitHub README and start the emulator:

renode -e "set zephyr_elf @./build/zephyr/zephyr.elf; s @./samples/modules/tflite-micro/magic_wand/renode/litex-vexriscv-tflite.resc"

Sample Output

The Renode-emulated LiteX/VexRiscv board is fed data that the application recognizes as a series of alternating ring and slope gestures.

Got accelerometer, label: accel-0

RING:
          *
       *     *
     *         *
    *           *
     *         *
       *     *
          *

SLOPE:
        *
       *
      *
     *
    *
   *
  *
 * * * * * * * *

RING:
          *
       *     *
     *         *
    *           *
     *         *
       *     *
          *

SLOPE:
        *
       *
      *
     *
    *
   *
  *
 * * * * * * * *

Modifying Sample for Your Own Project

It is recommended that you copy and modify one of the two TensorFlow samples when creating your own TensorFlow project. To build with TensorFlow, you must enable the below Kconfig options in your prj.conf:

CONFIG_CPP=y
CONFIG_REQUIRES_FULL_LIBC=y
CONFIG_TENSORFLOW_LITE_MICRO=y

Training

Follow the instructions in the train/ directory to train your own model for use in the sample.