ネットワーク変換ツールへの入力ファイル - DigitalMediaProfessionals/dv-sdk GitHub Wiki

設定ファイル

ネットワークの変換処理は入力された .ini ファイルにより変わります。ここでは .ini ファイルをCaffeMobileNet を例にして説明します。

[INPUT]
name = CaffeMobileNet
definition = mobilenet_deploy.prototxt
data = mobilenet.caffemodel
origin = CAFFE

[OUTPUT]
output_folder = ../		;Output folder root. Actual output is in output_folder/name	
generate_source = 1		;If enabled, generate the .cpp and .h class for the network
generate_doxy 	= 1		;If enabled, generate the doxygen documentation for the generate code 
generate_dot 	= 1		;If enabled, add the resulting network graph to documentation using dot format

[OPTIONAL]
verbose = 1 ;	; Disable/Enable output to the console when the network convertor is working 
graphviz_path = C:/graphviz-2.38/release/bin ;	Path to graphwiz executable for generating graph. Must be set if generate_dot is enabled

INPUT

フィールド 説明
origin ネットワークのエクスポート元のAPI (Caffe, Keras) を指定します。
name ネットワーク名です(hdf5/prototxt ファイルで定義された名前とは異なる名前も指定できます)。
definition ネットワークの定義を含むファイル名です。Keras ではhdf5 ファイルを、Caffe ではprototxt ファイルを指定してください。
data ネットワークの重みを含むファイルの名前です。Caffe のネットワークでは .caffemodel か .protobuf ファイルです。Keras のネットワークではネットワークの定義と重みが同じファイルに保存されるので、このフィールドは省略できます。
custom_layer 必要であれば、カスタムレイヤの定義を与えるPython スクリプトを指定してください。このフィールドは省略できます。カスタムレイヤのサポート方法についてはカスタムレイヤ をご参照ください。
width_override width_override とheight_override が指定されたとき、ネットワークの入力の次元を上書きします。このフィールドは省略できます。
height_override width_override の説明をご覧ください。

OUTPUT

フィールド デフォルト 説明
output_folder 出力ディレクトリを指定してください。相対パスはINI ファイルの存在するディレクトリからの相対パスとなります。
generate_source 0 1 が指定されたとき、ネットワークの設定のための、後でコンパイルする .cpp ファイルと .h ファイルが生成されます。
generate_doxy 0 1 が指定されたとき、Doxygen の設定を生成します。
generate_dot 0 1 が指定されたとき、ネットワークのdot ファイルを生成します。
quantization 1 1 が指定されたとき、重みを量子化して生成します。
transpose_weight 1 1 が指定されたとき、重みが転置され、モデルの入出力データの転置が不要になります。詳細はネットワークの入出力レイアウトをご覧ください。
python_module Python ラッパーのモジュール名を指定してください。このフィールドが指定されないとき、Python ラッパーのソースコードは生成されません。

quantization が有効にされたとき、ネットワーク変換ツールはk-平均法により255 の近い値に圧縮され、各重みはそれらの値のインデックスで置き換えられます。量子化により、推論性能と交換で、実行時のメモリバンド幅を減らすことができます。 もしこれが望ましくなければ、quantization オプションを無効にしなくてはなりません。 そのときネットワーク変換ツールは重みから16 ビットの浮動小数点数への変換のみをします。

実際の出力ディレクトリはoutput_folder/name と定義されます。ここでname はInput セクションで定義された値です。

同様に、ドキュメンテーションはoutput_folder/name/doc に生成されます。Dot はグラフを定義する標準ファイルフォーマットです。詳細はDot言語-Wikipedia をご覧ください。 ドキュメンテーションの中でdot ファイルを見るためにはgraphviz のインストールと設定が重要なことに注意してください。graphvic へのパスは Optional セクションで指定できます。

OPTIONAL

フィールド 説明
verbose 有効になった場合、追加の情報がコンソールに出力されます。
graphviz_path graphviz の実行ファイルへのパスです。

ネットワークファイルのエクスポート

ここでは各フレームワークからネットワークを変換ツール用にエクスポートする方法を説明します。

Keras

Keras のネットワークを変換ツール向けにエクスポートする際には、公式ドキュメント に従ってmodel.save() で単一のHDF5 ファイルに保存してください。

Caffe

.prototxt ファイル

Caffe で用いたネットワークを記述した.prototxt ファイルを用意してください。

.caffemodel ファイル

snapshot_format: BINARYPROTO を設定して実行したコマンドcaffe train で生成された.caffemodel ファイルをご利用できます。 Matlab やPython でCaffe を利用しているならば、net.save().caffemodel ファイルをエクスポートしてください。