Table of contents
Preparation
Please refer here for the environment construction procedure.
Conversion
Convert the model.
Please change the parameter "setting.conf" of the argument according to the model to be converted.
$ cd /home/cvtool/conversion/caffe $ ./caffe_conversion.sh setting.conf
The model after conversion is output to the following directory.
${OUTPUT_DIR}/${NET_NAME}/${PARSER_OPTION}/[model name]
Setting.conf
# Network Name NET_NAME=mobilenetv1 # Path to Deploy Prototxt DEPLOY_PROTOTXT=./sample/mobilenet_v1/mobilenet_deploy.prototxt # Path to Directory for (Deploy) Caffe Models MODEL_DIR=./sample/mobilenet_v1/models # Path to Directory for DRA Images DRA_IMAGE_DIR=../dra_img # Path to Directory for Output Data OUTPUT_DIR=./out # Quantization Mode # FIX8 : Fixed-point 8bit # FIX16 : Fixed-point 16bit # MIX : FIX8/FIX16 mixed PARSER_OPTION=FIX8 # Input Data Format (0:NHWC, 1:NCHW) IN_DATA_FORMAT=1 # Input Data Channel IN_DATA_CHANNEL=3 # Input Data Width IN_DATA_WIDTH=224 # Input Data Height IN_DATA_HEIGHT=224 # Input Data Mean Vector or Name of .binaryproto IN_MEAN=103.94,116.78,123.68 # Input Data Scale # IN_SCALE=1/Scale IN_SCALE=58.823529411 # RGB or BGR (0:RGB, 1:BGR) IS_BGR=1 # Input Layer Name IN_LAYER=data # Output Layers Name OUT_LAYER=mbox_loc,mbox_conf_flatten #cavalry version #if not specified -> "" CAVALRY_VER="2.1.7" # Unique preprocess # if use im2bin -> NONE # if use unique preprocess -> script path PREPRO=NONE PREPRO_ARG="" # Input file data format IN_DATA_FILEFORMAT=0,0,0,0 # Transpose indices(NONE:without transpose , 0,3,1,2:transpose (EX)) IN_DATA_TRANSPOSE=NONE
NET_NAME: The name of network.
Any name can be set.
DEPLOY_PROTOTXT: Path to deploy prototxt file
MODEL_DIR: Path to directory which includes caffemodel
All caffemodels under the converted directory
DRA_IMAGE_DIR: Path to directory which includes image files for optimizing quantization
Please put the directory image files for training. Recommended number of image files is 100 to 200.
Image file format should be the format that are supported by OpenCV (Ex. JPEG, PNG and etc…).
Any resolution is supported.
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_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
It can be set by numerical value or .binaryproto file
Please refrain from using space between “,” as shown below if using numerical value.
IN_MEAN=127.5,127.5,127.5Please set a path to the file as shown below when setting by .binaryproto file.
IN_MEAN=./model/mean.binaryproto
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_LAYER: The name of input layer for target network
In the converted model, the name of input layer changes to “${IN_LAYER}_0” .
Therefore, “_0” needs to be added to the name of input layer, when the converted model executes AdamApp.
OUT_LAYER: The name of output layer for target network
If two or more layers exists, separate layers by “,”.
CAVALRY_VER: Version of cavalry to use
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)
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.
N_DATA_TRANSPOSE: Specify when performing TRANSPOSE on the input data
If input layer is not defined in deployed prototxt file, add the layer as shown below.
Convert sample model
Download sample model.
$ wget https://github.com/shicai/MobileNet-Caffe/blob/master/mobilenet.caffemodel $ mv mobilenet.caffemodel sample/mobilenet_v1/models
Conver the model.
$ ./caffe_conversion.sh setting.conf