ArmNN test example apply in SP7021
ArmNN ENV variable set:
export BASEDIR=~/armnn-pi |
export PATH=$BASEDIR/boost.build/bin:$PATH |
export PATH=$BASEDIR/protobuf-host/bin:$PATH |
export LD_LIBRARY_PATH=$BASEDIR/protobuf-host/lib:$LD_LIBRARY_PATH |
export LD_LIBRARY_PATH=$BASEDIR/armnn/build:$LD_LIBRARY_PATH |
export ARMNN_INCLUDE=$BASEDIR/armnn/include |
export ARMNN_LIB=$BASEDIR/armnn/build |
Arm Compute Library
It is in $BASEDIR/ComputeLibrary
It's library built is in $BASEDIR/ComputeLibrary/build
Running a DNN with random weights and inputs
Arm compute library comes with examples for most common DNN architectures like: AlexNet, MobileNet, ResNet, Inception v3, Inception v4, Squeezenet, etc.
All available examples source code can be found in this example location: $BASEDIR/ComputeLibrary/example .
All available examples can be found in this example build location:
$BASEDIR/ComputeLibrary/build/example
Each model architecture can be tested with graph_[dnn_model] application. For example, to run the MobileNet v2 DNN model with random weights, run the example application without any argument:
Export LD_LIBRARY_PATH=$BASEDIR/ComputeLibrary/build:$LD_LIBRARY_PATH | ||
./graph_mobilenet_v2
| grep "Caff"
| |
name: "AlexNet" |
|
|
layer { |
|
|
name: "data" |
|
|
type: "Input" |
|
|
top: "data" |
|
|
input_param { shape: { dim: 1 dim: 3 dim: 227 dim: 227 } } |
|
|
|
|
|
|
|
|
name: "AlexNet" |
|
|
layer { |
|
|
name: "data" |
|
|
type: "Input" |
|
|
top: "data" |
|
|
input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } } |
|
|
|
|
|
|
|
|
change the batch size to 1
Run the following python script to transform the network
python3
import caffe
net = caffe.Net('deploy.prototxt', 'bvlc_alexnet.caffemodel', caffe.TEST)
new_net = caffe.Net('bvlc_alexnet_1.prototxt', 'bvlc_alexnet.caffemodel', caffe.TEST)
new_net.save('bvlc_alexnet_1.caffemodel')
Copy bvlc_alexnet_1.caffemodel from linux host to ~/ArmnnTests/models in SP7021
Find a .jpg file containing a shark (great white shark). Rename it to shark.jpg and copy it to the data folder on the device.
Run the test
CaffeAlexNet-Armnn --data-dir=data --model-dir=models
CaffeInception_BN-Armnn
Use A linux host with py-caffe installed
Download the model files:
cd ~/ArmnnTests
curl -L -o deploy.prototxt https://raw.githubusercontent.com/pertusa/InceptionBN-21K-for-Caffe/master/deploy.prototxt
curl -L -o Inception21k.caffemodel http://www.dlsi.ua.es/~pertusa/deep/Inception21k.caffemodel
cp deploy.prototxt Inception-BN-batchsize1.prototxt
nano Inception-BN-batchsize1.prototxt
change the batch size to 1
Run the following python script to transform the network
import caffe
net = caffe.Net('deploy.prototxt', 'Inception21k.caffemodel', caffe.TEST)
new_net = caffe.Net('Inception-BN-batchsize1.prototxt', 'Inception21k.caffemodel', caffe.TEST)
new_net.save(' Inception-BN-batchsize1.caffemodel')python3
Copy Inception-BN-batchsize1.caffemodel to ~/ArmnnTests/models in SP7021Find a .jpg file containing a shark (great white shark). Rename it to shark.jpg and copy it to the data folder on the SP7021.
Run the test
CaffeInception_BN-Armnn --data-dir=data --model-dir=models
2.1.3 CaffeMnist-ArmnnUse A linux host with py-caffe installed
Download the model files:
cd ~/ArmnnTests
curl -L -o lenet.prototxt https://raw.githubusercontent.com/BVLC/caffe/master/examples/mnist/lenet.prototxt
curl -L -o lenet_iter_9000_ori.caffemodel https://github.com/ARM-software/ML-examples/blob/master/armnn-mnist/model/lenet_iter_9000.caffemodel
cp lenet.prototxt lenet_iter_9000.prototxt
nano lenet_iter_9000.prototxt
change the batch size to 1
Run the following python script to transform the network
python3
import caffe
net = caffe.Net(lenet.prototxt', lenet_iter_9000_ori.caffemodel', caffe.TEST)
new_net = caffe.Net(' lenet_iter_9000.prototxt', lenet_iter_9000_ori.caffemodel', caffe.TEST)
new_net.save(' lenet_iter_9000.caffemodel')
|
Copy lenet_iter_9000.caffemodel to ~/ArmnnTests/models in SP7021Find a .jpg file containing a shark (great white shark). Rename it to shark.jpg and copy it to the data folder on SP7021.
Download the two archives below and unpack them:
curl -L -o t10k-images-idx3-ubyte.gz http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
curl -L -o t10k-labels-idx1-ubyte.gz http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
gzip -d t10k-images-idx3-ubyte.gz
gzip -d t10k-labels-idx1-ubyte.gz
Rename two files to be t10k-images.idx3-ubyte and t10k-labels.idx1-ubyte and copy files to the data folder on the device.
mv t10k-images-idx3-ubyte t10k-images.idx3-ubyte
mv t10k-labels-idx1-ubyte t10k-labels.idx1-ubyte
cp t10k-images-idx3-ubyte ./data/
cp t10k-labels-idx1-ubyte ./data/
Run the test
CaffeMnist-Armnn --data-dir=data --model-dir=models
2.2 TensorFlow tests
Arm NN SDK provides the following set of tests for TensorFlow models:
pi@raspberrypi:~/armnn-pi/armnn/build/tests$ ls -l | grep "Tf"
-rwxr-xr-x 1 pi pi 725444 Sep 2 05:51 TfCifar10-Armnn
-rwxr-xr-x 1 pi pi 920116 Sep 2 05:58 TfInceptionV3-Armnn
-rwxr-xr-x 1 pi pi 729696 Sep 2 05:49 TfMnist-Armnn
-rwxr-xr-x 1 pi pi 920116 Sep 2 05:56 TfMobileNet-Armnn
-rwxr-xr-x 1 pi pi 914928 Sep 2 05:58 TfResNext-Armnn
2.2.1 TfInceptionV3-Armnn
1. Download the model files. Unzip and move file to action folder :
cd ~/ArmnnTests
curl -L -o inception_v3_2016_08_28_frozen.pb.tar.gz https://storage.googleapis.com/download.tensorflow.org/models/inception_v3_2016_08_28_frozen.pb.tar.gz
tar zxvf inception_v3_2016_08_28_frozen.pb.tar.gz
mv inception_v3_2016_08_28_frozen.pb ./models/
Find a .jpg file containing a shark (great white shark). Rename it to shark.jpg and copy it to the data folder on the SP7021.
Find a .jpg file containing a dog (labrador retriever). Rename it to Dog.jpg and copy it to the data folder on the SP7021.
Find a .jpg file containing a cat (tiger cat). Rename it to Cat.jpg and copy it to the data folder on the SP7021.
Run the test:
TfInceptionV3-Armnn --data-dir=data --model-dir=models
This is not an execution error. This occurs because the TfInceptionV3-Armnn test expects a specific type of dog, cat and shark to be found so if a different type/breed of these animals is passed to the test, it returns a case failed.
The expected inputs for this test are:
ID | Label | File name |
208 | Golden Retriever | Dog.jpg |
283 | Tiger Cat | Cat.jpg |
3 | White Shark | shark.jpg |
The complete list of supported objects can be found in https://github.com/ARM-software/armnn/blob/branches/armnn_18_11/tests/TfLiteMobilenetQuantized-Armnn/labels.txt
TfMnist-Armnn
Download the model files and copy file to action folder :
cd ~/ArmnnTests
curl -L -o simple_mnist_tf.prototxt https://raw.githubusercontent.com/ARM-software/ML-examples/master/armnn-mnist/model/simple_mnist_tf.prototxt
cp simple_mnist_tf.prototxt ./models/
Download the two archives below and unpack them:
curl -L -o t10k-images-idx3-ubyte.gz http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz
curl -L -o t10k-labels-idx1-ubyte.gz http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz
gzip -d t10k-images-idx3-ubyte.gz
gzip -d t10k-labels-idx1-ubyte.gz
Rename two files to be t10k-images.idx3-ubyte and t10k-labels.idx1-ubyte and copy files to the data folder on the SP7021.
mv t10k-images-idx3-ubyte t10k-images.idx3-ubyte
mv t10k-labels-idx1-ubyte t10k-labels.idx1-ubyte
cp t10k-images-idx3-ubyte ./data/
cp t10k-labels-idx1-ubyte ./data/
Run the test:
TfMobileNet-Armnn
Download and unpack the model file:
cd ~/ArmnnTests
curl -L -o mobilenet_v1_1.0_224.tgz http://download.tensorflow.org/models/mobilenet_v1_2018_08_02/mobilenet_v1_1.0_224.tgz
tar zxvf mobilenet_v1_1.0_224.tgz
Copy mobilenet_v1_1.0_224_frozen.pb to the models folder on the SP7021.
cp mobilenet_v1_1.0_224_frozen.pb ./models/
Find a .jpg file containing a shark (great white shark). Rename it to shark.jpg and copy it to the data folder on the SP7021.
Find a .jpg file containing a dog (labrador retriever). Rename it to Dog.jpg and copy it to the data folder on the SP7021.
Find a .jpg file containing a cat (tiger cat). Rename it to Cat.jpg and copy it to the data folder on the SP7021.
Run the test:
TfMobileNet-Armnn --data-dir=data --model-dir=models
TensorFlow Lite tests
Arm NN SDK provides the following test for TensorFlow Lite models:
pi@raspberrypi:~/ArmnnTests$ ls -l ~/armnn-pi/armnn/build/tests/ | grep "TfL"
-rwxr-xr-x 1 pi pi 919808 Sep 2 05:08 TfLiteInceptionV3Quantized-Armnn
-rwxr-xr-x 1 pi pi 919808 Sep 2 05:28 TfLiteInceptionV4Quantized-Armnn
-rwxr-xr-x 1 pi pi 919656 Sep 2 05:42 TfLiteMnasNet-Armnn
-rwxr-xr-x 1 pi pi 921120 Sep 2 05:29 TfLiteMobilenetQuantized-Armnn
-rwxr-xr-x 1 pi pi 919812 Sep 2 05:14 TfLiteMobileNetQuantizedSoftmax-Armnn
-rwxr-xr-x 1 pi pi 915588 Sep 2 05:20 TfLiteMobileNetSsd-Armnn
-rwxr-xr-x 1 pi pi 919808 Sep 2 05:15 TfLiteMobilenetV2Quantized-Armnn
-rwxr-xr-x 1 pi pi 919808 Sep 2 05:02 TfLiteResNetV2-50-Quantized-Armnn
-rwxr-xr-x 1 pi pi 919656 Sep 2 05:06 TfLiteResNetV2-Armnn
-rwxr-xr-x 1 pi pi 919800 Sep 2 05:42 TfLiteVGG16Quantized-Armnn
-rwxr-xr-x 1 pi pi 666068 Sep 2 05:23 TfLiteYoloV3Big-Armnn
2.3.1 TfLiteInceptionV3Quantized-Armn
Download and unpack the model file:
cd ~/ArmnnTests
curl -L -o inception_v3_quant.tgz http://download.tensorflow.org/models/tflite_11_05_08/inception_v3_quant.tgz
tar zxvf inception_v3_quant.tgz
Copy inception_v3_quant.tflite to the models folder on the SP7021
cp inception_v3_quant.tflite ./models/