目次
Table of Contents | ||||
---|---|---|---|---|
|
環境構築
...
環境構築手順はこちらをご参照ください。
Setting.conf仕様
サンプルモデルの変換
...
ディレクトリを移動します。
Code Block |
---|
$ cd /home/cvtool/conversion/caffe |
サンプルモデルをダウンロードします。
Code Block |
---|
$ wget https://github.com/shicai/MobileNet-Caffe/raw/master/mobilenet.caffemodel
$ mv mobilenet.caffemodel sample/mobilenet_v1/models |
モデル変換を実行します。
Code Block |
---|
$ ./caffe_conversion.sh setting.conf |
変換後のモデルは以下のディレクトリに出力されます。
ambaCV2Xカメラ用のモデル
${OUTPUT_DIR}/${NET_NAME}/${PARSER_OPTION}/[モデル名]
ambaCV5Xカメラ用のモデル
${OUTPUT_DIR}/${NET_NAME}_ambaCV5X/${PARSER_OPTION}/[モデル名]
モデルを変換する
...
/home/cvtool/conversion/caffe
をコピーしてください。
Code Block |
---|
$ cd /home/cvtool/conversion
$ cp -r caffe foo
$ cd foo |
setting.conf を、変換するモデルに合わせて変更してください。
モデル変換を実行します。
Code Block |
---|
$ ./caffe_conversion.sh setting.conf |
setting.conf仕様
...
Note |
---|
v1.19 まで setting.conf にあった CAVALRY_VERを、v1.20 から削除しています。 |
Code Block |
---|
# 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:ネットワーク名
任意の名前を設定できます。
DEPLOY_PROTOTXT:deploy用prototxtファイルへのパス
MODEL_DIR:caffemodelが格納されたディレクトリ
ディレクトリ下の全てのモデルに対して、変換処理を実行します。
DRA_IMAGE_DIR:量子化の最適化処理で使用する、画像ファイルが格納されたディレクトリ
学習に使った画像を格納してください。100~200枚が推奨枚数です。
画像フォーマットはJPEGやPNGなど、OpenCVで対応しているものです。
任意サイズの画像を使用可能です。
OUTPUT_DIR:変換後のデータ出力先ディレクトリ
PARSER_OPTION:量子化モード
FIX8/FIX16/MIX(FIX8/FIX16混合)から選択します。
IN_DATA_CHANNEL:モデルの入力画像チャネル数
N_DATA_WIDTH:モデルの入力画像サイズ(幅)
IN_DATA_HEIGHT:モデルの入力画像サイズ(高さ)
IN_MEAN:入力画像の正規化パラメータ(平均値)
数値またはbinaryprotoファイルでの設定が可能です。
数値で設定する場合には、以下のように”,”の間に空白を入れないようにしてください。
IN_MEAN=127.5,127.5,127.5binaryprotoファイルで設定する場合には、以下のようにファイルへのパスを設定してください。
IN_MEAN=./model/mean.binaryproto
IN_SCALE:入力画像の正規化パラメータ(スケール)
チャネルごとに異なる設定値にする場合は、”,”で値を区切ってください。”,”の間には空白を入れないようにしてください。
IS_BGR:入力画像のフォーマット(RGB or BGR)
IN_LAYER:ネットワークの入力レイヤ名
変換後のモデルでは入力レイヤ名が “${IN_LAYER}_0” に変わります。
したがって追加アプリ上で変換後のモデルを動かす際も、モデルの入力レイヤとして “_0” を付ける必要があります。以下の記号が入力レイヤ名に含まれている場合、正常に変換できない可能性があります。
: | ; , ‘
OUT_LAYER:ネットワークの出力レイヤ名
複数指定する場合は”,”で区切ってください
以下の記号が出力レイヤ名に含まれている場合、正常に変換できない可能性があります。
: | ; , ‘
CAVALRY_VER:使用するcavalryバージョン
PREPRO:前処理スクリプトパス(python)
スクリプトの作り方は“/home/cvtool/common/prepro.py”を参照してください。
PREPRO_ARG:前処理スクリプトの引数
IN_DATA_FILEFORMAT:入力データのフォーマット
例:uint8-> 0>0,0,0,0, float32-> 1>1,2,0,7, float16-> 1>1,1,0,4)
NIN_DATA_FILEFORMAT を”0,0,0,0”から変更した場合はPREPROの設定が必要になります0”から変更した場合はPREPROの設定が必要になります。
NIN_DATA_TRANSPOSE:入力データに対してTRANSPOSE を行う場合指定する
deploy用のprototxtでinputレイヤが定義されていない場合は、以下のようにレイヤを追加してください。
...
Info |
---|
・ |
モデルを変換する
モデル変換を行います。
引数の「setting.conf」は変換するモデルに合わせてパラメータを変更してください。
変換後のモデルは以下のディレクトリに出力されます。
${OUTPUT_DIR}/${NET_NAME}/${PARSER_OPTION}/[モデル名]
サンプルモデルの変換
ディレクトリを移動します。
Code Block |
---|
$ cd /home/cvtool/conversion/caffe |
サンプルモデルをダウンロードします。
Code Block |
---|
$ wget https://github.com/shicai/MobileNet-Caffe/raw/master/mobilenet.caffemodel
$ mv mobilenet.caffemodel sample/mobilenet_v1/models |
モデル変換を実行します。
...