~~tag>VIM4 NPU Docker ~~
====== VIM4 NPU Model Convert ======
{{indexmenu_n>2}}
Only **New VIM4** supports NPU, you can [[../configurations/identify-version|check VIM4 the version]]
We provided the Docker container for you to convert the model.
===== Build Docker Environment =====
Follow Docker official docs to install Docker: [[https://docs.docker.com/engine/install/ubuntu/|Install Docker Engine on Ubuntu]].
Follow the script below to get Docker image:
```shell
docker pull numbqq/npu-vim4
```
===== Get Convert Tool =====
```shell
$ 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 documentations
* ''adla-toolkit-binary/bin'' - SDK tools required for model conversion
* ''adla-toolkit-binary/demo'' - Conversion examples
===== Convert Model =====
Convert the demo model in docker:
```shell
bash convert-in-docker.sh normal
```
If everything works well you will find the converted files below.
```shell
~/vim4_npu_sdk$ ls adla-toolkit-binary/demo/
caffe_output darknet_output dataset.txt libstdc++_so mxnet_output paddle_output quantized_tflite_output tflite_output
convert_adla.sh data keras_output model_source onnx_output pytorch_output tensorflow_output
```
Converted model is ''xxxx.adla''.
If you want to convert your own model, just modify script ''adla-toolkit-binary/demo/convert_adla.sh'' and then execute ''./convert-in-docker.sh'' to convert your model.
==== Important parameters ====
* ''model-type'' - Model type used in the conversion.
* ''model(model files)/weights(model weights file)'' - ''model'' parameter must be set. ''weights'' needs to be set when model-type is caffe/darknet/mxnet.
* ''inputs/input-shapes'' - ''inputs'' Input node names. ''input-shapes'' The sizes of input nodes. Need to be set when model-type is pytorch/onnx/mxnet/tensorflow/ tflite/paddle.
* ''outputs'' - Output node names. When model-type is tensorflow, outputs needs to be set.
* ''dtypes'' - Input type, set the type information corresponding to the input (optional).Default ''float32''.
* ''quantize-dtype'' - Quantization type. Currently, it supports ''int8'', ''int16'' and ''uint8'' quantification types.
* ''source-file'' - ''dataset.txt''. The txt file contains paths to the images that need to be quantized. It supports images and npy files.
* ''channel-mean-value'' - The pre-processing parameters are set according to the pre processing methods used during model training. It includes four values, m1, m2, m3, and scale. The first three are mean-value parameters and the last one is the scale parameter. For the input data with three channels (data1, data2, data3), the pre-processing steps are
* Out1 = (data1-m1)/scale
* Out2 = (data2-m2)/scale
* Out3 = (data3-m3)/scale
* ''batch-size'' - Set the batch-size for the adla file after conversion. Currently, the default value is 1.
* ''iterations'' - Optional parameter, if ''dataset.txt'' provides data for multi-groups, and needs to use all data provided for quantization, set ''iterations'' and make sure iterations*batch size = Number of data in the multi-groups.
* ''outdir'' - Directory for the generated. The default value is the current directory.
* ''target-platform'' - Specify the target platform for the adla file, it should be ''PRODUCT_PID0XA003'' for VIM4.
===== See Also =====
For more information, please check ''docs/model_conversion_user_guide_1.2.pdf''.