Doc for version ddk-3.4.7.7
VGG16 is a convolution neural net architecture that’s used for image recognition. It utilizes 16 layers with weights and is considered one of the best vision model architectures to date.
$ git clone https://github.com/Daipuwei/Mini-VGG-CIFAR10
Follow Docker official documentation to install Docker: Install Docker Engine on Ubuntu.
Follow the script below to get Docker image:
docker pull numbqq/npu-vim4
Download Tool from khadas/vim4_npu_sdk.
$ git lfs install $ git lfs clone https://gitlab.com/khadas/vim4_npu_sdk.git $ cd vim4_npu_sdk $ ls adla-toolkit-binary adla-toolkit-binary-1.2.0.9 convert-in-docker.sh Dockerfile docs README.md
adla-toolkit-binary/docs
- SDK documentationsadla-toolkit-binary/bin
- SDK tools required for model conversionadla-toolkit-binary/demo
- Conversion examplesIf your kernel is older than 241129, please use version before tag ddk-3.4.7.7.
We first need to convert the Keras model(.h5
) into a TensorFlow model (.pb
). We use this tool to convert amir-abdi/keras_to_tensorflow
$ git clone https://github.com/amir-abdi/keras_to_tensorflow
Then we need to convert the TensorFlow model to an ADLA model (.adla
)
Enter vim4_npu_sdk/demo
and overwrite convert_adla.sh
as follows.
#!/bin/bash ACUITY_PATH=../bin/ #ACUITY_PATH=../python/tvm/ adla_convert=${ACUITY_PATH}adla_convert if [ ! -e "$adla_convert" ]; then adla_convert=${ACUITY_PATH}adla_convert.py fi $adla_convert --model-type tensorflow \ --model ./model_source/vgg16/vgg16.pb \ --inputs image_input --input-shapes 32,32,3 \ --outputs dense_2/Softmax \ --inference-input-type float32 \ --inference-output-type float32 \ --quantize-dtype int8 --outdir tensorflow_output \ --channel-mean-value "0,0,0,255" \ --inference-input-type "float32" \ --inference-output-type "float32" \ --source-file vgg16_dataset.txt \ --iterations 500 \ --batch-size 1 \ --target-platform PRODUCT_PID0XA003
Run convert_adla.sh
to generate the VIM4 model. The converted model is xxx.adla
in tensorflow_output
.
$ bash convert_adla.sh
Clone the source code from our khadas/vim4_npu_applications.
$ git clone https://github.com/khadas/vim4_npu_applications
If your kernel is older than 241129, please use version before tag ddk-3.4.7.7.
$ sudo apt update $ sudo apt install libopencv-dev python3-opencv cmake
Put vgg16_int8.adla
in vim4_npu_applications/vgg16/data/
.
# Compile $ cd vim4_npu_applications/vgg16 $ mkdir build $ cd build $ cmake .. $ make # Run $ ./vgg16 -m ../data/vgg16_int8.adla -p ../data/airplane.jpeg
If your VGG16 model classes are not the same as CIFAR10, please change data/vgg16_class.txt
and the OBJ_CLASS_NUM
in include/postprocess.h
.