uTensor is an extreme light-weight Deep-Learning Inference framework built on mbed and Tensorflow.
This project is under going constant development.
- Mbed CLI
- Tensorflow
- tf-node-viewer (Optional, for graph-weight extraction)
- Mbed-os 5.6+ compatiable boards with at least 256kb of RAM
- SD Card (Must be LESS than 32 GB)
- SD Card reader for the board (Optional if built into the board)
mbed detect
to see which target is connect to the board
mbedls -l
to list all supported targets
See mbed_app.json
- Clone the repository
- Run
mbed deploy
to download all referenced libraries - Insert the prepared SD card to the board (see SD Card Preparation Section)
- Use
mbed compile -t GCC_ARM -m NUCLEO_F767ZI --profile=./build_profile/release.json
to build for ST NUCLEO F767ZI. Or,mbed compile -t GCC_ARM -m NUCLEO_F767ZI --profile=./build_profile/release.json -f
to compile and flash
The test data has to be loaded to the SD card for the default binary to run:
- Install python dependencies
pip install -r requirements.txt
(Note: may have to usepip3
) - Go to the
[project]\TESTS\scripts
folder - Run
python3 compileTestData.py
. This will create[project]\TESTS\scripts\testData
directory. - Copy
[project]\TESTS\scripts\testData
to the root of your SD card.
The quantized weight and input data are stored in the SD. Setting the serial baud rate to 115200, here is what you should see:
Deep MLP on Mbed (Trained with Tensorflow)
running deep-mlp...
PASSED 0.00000000
prediction: 7
Currently, the binary runs the first sample of the MNIST dataset which contains a handwritten digit of number 7. Ths network architecture is a 3-layer Relu based MLP, as shown below:
The related Tensorflow training script please refer to the node-viewer project.