AI model convert tool: Tensorflow
Preparation
Please refer here for the environment construction procedure.
Convert sample model
inception_v4
Download sample model.
$ cd /home/cvtool/conversion/tensorflow/inception_v4
$ wget https://storage.googleapis.com/download.tensorflow.org/models/tflite/model_zoo/upload_20180427/inception_v4_2018_04_27.tgz
$ tar -xvf inception_v4_2018_04_27.tgz
$ mv inception_v4.pb sample/model
$ rm inception_v4_2018_04_27.tgz
Convert the model.
$ ./tf_conversion.sh setting.conf
mobilenetv2ssd
Download sample model.
$ cd /home/cvtool/conversion/tensorflow/mobilenetv2ssd
$ wget http://download.tensorflow.org/models/object_detection/ssd_mobilenet_v2_coco_2018_03_29.tar.gz
$ tar -xvzf ssd_mobilenet_v2_coco_2018_03_29.tar.gz
$ mv ssd_mobilenet_v2_coco_2018_03_29/frozen_inference_graph.pb sample/model
$ rm ssd_mobilenet_v2_coco_2018_03_29.tar.gz
Convert the model.
The model after conversion is output to the following directory.
For ambaCV2X camera
${OUTPUT_DIR}/${NET_NAME}/${PARSER_OPTION}/[model name]
For ambaCV5X camera
${OUTPUT_DIR}/${NET_NAME}_ambaCV5X/${PARSER_OPTION}/[model name]
For models that use SSD, another binary is output to the following directory.
Models with SSD use two binary files in the application.
${OUTPUT_DIR}/${NET_NAME}/
Conversion
The model of tensorflow v2.x needs to be converted to tflite in advance.
Copy either directory under
/home/cvtool/conversion/tensorflow
.
Change the parameter of "setting.conf" according to the model to be converted.
Convert the model.
setting.conf
From v1.20, parameter "CAVALRY_VER" is removed that existed in setting.conf until v1.19.
If you use setting.conf from v1.19 or earlier, please remove "CAVALRY_VER" from it.
NET_NAME: The name of network
Any name can be set.
IS_SSD: Set 1, if target model uses SSD
PB_DIR: Path to directory which includes frozen .pb files
All .pb files under the directory are converted.
IMAGE_DIR: Path to directory that includes image files for optimizing quantization
Please put the directory image files for training. Recommended number of image files is 100 to 200.
Available image file format is what OpenCV can handle, for example, JPEG, PNG and so on.
Any resolution is available.
OUTPUT_DIR: Path to directory to which the converted data is placed
PARSER_OPTION: Quantization mode
Select from FIX8/FIX16/MIX (FIX8/FIX16 mixed).
IN_DATA_FORMAT: Format of input data for target model (NHWC or NCHW)
IN_DATA_CHANNEL: Number of input image channel for target model
N_DATA_WIDTH: Width of input image for target model
IN_DATA_HEIGHT: Height of input image for target model
IN_MEAN: Normalization parameter (mean) of input image
Please refrain from using space between “,” as shown below if using numerical value.
IN_MEAN=127.5,127.5,127.5
IN_SCALE: Normalization parameter (scale) of input image
Please refrain from using space between “,” and only use “,” to separate values when setting different values for each channel.
IS_BGR: Format of input image (RGB or BGR)
IN_NODE: The name of input node for target network
When the following symbols are contained in the name of input node, conversion may not be successful.
: | ; , ‘
OUT_NODE: The name of output node for target network
If two or more nodes exists, separate layers by “,”.
When the following symbols are contained in the name of output node, conversion may not be successful.
: | ; , ‘
PRIORBOX_NODE: Node equivalent to “priorbox”
Need to set when IS_SSD=1
PREPRO: Path of preprocessing script (python script)
Refer to “/home/cvtool/ common/prepro.py” for how to create a script
PREPRO_ARG: Argument of preprocessing script (python script)
PARSER_IN_DATA_FORMAT: Format of input data for target model (when tfparser run) (NHWC or NCHW)
IN_DATA_FILEFORMAT: Input data format
Examples : uint8->0,0,0,0, float32->1,2,0,7, float16->1,1,0,4
When the value of IN_DATA_FILEFORMAT changes from “0,0,0,0”, setting PREPRO is needed.
IN_DATA_TRANSPOSE: Specify when performing TRANSPOSE on the input data