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