ネットワーク変換ツールへの入力ファイル - 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
ファイルをエクスポートしてください。