[従来] モデル・オプティマイザーに関する FAQ

重要

以下の問題はすべて従来の機能に関するものです。

質問が以下のトピックに含まれていない場合は、OpenVINO サポートページから無料のフォーラム・ディスカッションに参加してください。

警告

Apache MXNet、Caffe、Kaldi に対する OpenVINO のサポートは廃止されたことに注意してください。

Q1. メッセージ「[ ERROR ]: Current caffe.proto does not contain field」の意味は?

A: 内部的にモデル・オプティマイザーは、protobuf ライブラリーを使用して Caffe モデルを解析してロードします。このライブラリーには、ファイル文法と生成されたパーサーが必要です。Caffe フォールバックの場合、モデル・オプティマイザーは Caffe 固有の .proto ファイル (通常は src/caffe/proto ディレクトリーにあります) に対して Caffe で生成されたパーサーを使用します。モデルの作成に使用したものと同じバージョンの Caffe (Python インターフェースを含む) をインストールしていることを確認してください。

Caffe を構築せずにモデル・オプティマイザーを試して、カスタムレイヤーを操作する Python 拡張機能をテストするだけの場合、レイヤーの説明を caffe.proto ファイルに追加してそのパーサーを生成します。

例えば、いずれの caffe.proto ファイルにも存在しない人工レイヤーである CustomReshape レイヤーの説明を追加するには、次のようにします。

  1. 次の行を caffe.proto ファイルに追加します。

    package mo_caffe; // To avoid conflict with Caffe system, it is highly recommended to specify different package name.
    ...
    message LayerParameter {
      // Other layers parameters description.
      ...
      optional CustomReshapeParameter custom_reshape_param = 546; // 546 - ID is any number not present in caffe.proto.
    }
    // The lines from here to the end of the file are describing contents of this parameter.
    message CustomReshapeParameter {
      optional BlobShape shape = 1; // Just use the same parameter type as some other Caffe layers.
    }
    
  2. 新しいパーサーを生成します。

    cd <SITE_PACKAGES_WITH_INSTALLED_OPENVINO>/openvino/tools/mo/front/caffe/proto
    python3 generate_caffe_pb2.py --input_proto <PATH_TO_CUSTOM_CAFFE>/src/caffe/proto/caffe.proto
    

    ここで、``PATH_TO_CUSTOM_CAFFE` は、カスタム Caffe のルート・ディレクトリーへのパスです。

  3. これで、モデル・オプティマイザーはモデルをメモリーにロードし、拡張機能がある場合はその操作を開始できるようになります。

    ただし、モデルにはカスタムレイヤーがあるため、それらをカスタムとして登録する必要があります。詳細については、[従来] モデル・オプティマイザーのカスタムレイヤーを参照してください。

Q2. prototxt しかない場合、caffemodel を作成するにはどうすればよいですか?

A: Caffe Python インターフェイスが必要です。この場合は、次の手順を実行します。

python3
import caffe
net = caffe.Net('<PATH_TO_PROTOTXT>/my_net.prototxt', caffe.TEST)
net.save('<PATH_TO_PROTOTXT>/my_net.caffemodel')

Q3. メッセージ「[ ERROR ]: Unable to create ports for node with id」の意味は?

A: おそらく、モデル・オプティマイザーは、指定されたトポロジー内の一部のレイヤーの出力形状を推測する方法を判断できません。範囲を減らすには、モデル・オプティマイザー用にカスタムされたレイヤーのリストをコンパイルします。これは、トポロジーには存在しますが、ターゲット・フレームワークでサポートされる操作のリストには存在しません。次に、[従来] モデル・オプティマイザーのカスタムレイヤー・ページの対応するセクションで利用可能なオプションを参照してください。

Q7. メッセージ「Invalid proto file: there is neither ‘layer’ nor ‘layers’ top-level messages」の意味は?

A: Caffe トポロジーの構造は、Caffe バージョンの caffe.proto ファイルに記述されています。例えば、モデル・オプティマイザーの次の .proto ファイルは、デフォルトで使用されます: mo/front/caffe/proto/my_caffe.proto。構造は次のとおりです。

message NetParameter {
  // ... some other parameters
  // The layers that make up the net.  Each of their configurations, including
  // connectivity and behavior, is specified as a LayerParameter.
  repeated LayerParameter layer = 100;  // ID 100 so layers are printed last.
  // DEPRECATED: use 'layer' instead.
  repeated V1LayerParameter layers = 2;
}

これは、どのトポロジーにも prototxt のトップレベル構造としてレイヤーが含まれる必要があることを意味します。例えば、LeNet トポロジーを参照してください。

Q8. メッセージ「Old-style inputs (via ‘input_dims’) are not supported. Please specify inputs via ‘input_shape’」の意味は?

A: Caffe トポロジーの構造は、Caffe バージョンの caffe.proto ファイルに記述されています。例えば、モデル・オプティマイザーの次の .proto ファイルは、デフォルトで使用されます: mo/front/caffe/proto/my_caffe.proto。構造は次のとおりです。

message NetParameter {

 optional string name = 1; // consider giving the network a name
  // DEPRECATED. See InputParameter. The input blobs to the network.
  repeated string input = 3;
  // DEPRECATED. See InputParameter. The shape of the input blobs.
  repeated BlobShape input_shape = 8;
  // 4D input dimensions -- deprecated.  Use "input_shape" instead.
  // If specified, for each input blob there should be four
  // values specifying the num, channels, height and width of the input blob.
  // Thus, there should be a total of (4 * #input) numbers.
  repeated int32 input_dim = 4;
  // ... other parameters
}

したがって、提供されたモデルの入力レイヤーは、次のいずれかのスタイルで指定する必要があります。

  • input: "data"
    input_shape
    {
        dim: 1
        dim: 3
        dim: 227
        dim: 227
    }
    
  • input: "data"
    input_shape
    {
        dim: 1
        dim: 3
        dim: 600
        dim: 1000
    }
    input: "im_info"
    input_shape
    {
         dim: 1
         dim: 3
    }
    
  • layer
    {
        name: "data"
        type: "Input"
        top: "data"
        input_param {shape: {dim: 1 dim: 3 dim: 600 dim: 1000}}
    }
    layer
    {
        name: "im_info"
        type: "Input"
        top: "im_info"
        input_param {shape: {dim: 1 dim: 3}}
    }
    
  • input: "data"
    input_dim: 1
    input_dim: 3
    input_dim: 500
    

だし、モデルに複数の入力が含まれている場合、モデル・オプティマイザーは、上記のリストの最初の 3 つの形式のいずれかで指定された入力でモデルを変換できます。4 番目の形式は、複数入力トポロジーではサポートされません。

Q9. メッセージ「Mean file for topologies with multiple inputs is not supported」の意味は?

A: モデル・オプティマイザーは、複数の入力を持つトポロジーの平均ファイル処理をサポートしません。この場合、OpenVINO ランタイムで生成された中間表現の入力を前処理して、複数入力モデルのすべての入力に対して減算を実行する必要があります。詳細は、前処理の概要を参照してください。

Q11. メッセージ「Invalid prototxt file: value error」の意味は?

A: モデル・オプティマイザーが Caffe トポロジーを受け入れない理由は複数あります。FAQ #7#20 を参照してください。

Q12. メッセージ「Error happened while constructing caffe.Net in the Caffe fallback function」の意味は?

A: モデル・オプティマイザーは、Caffe フレームワークを介して指定されたレイヤーを推論しようとしました。ただし、Caffe Python インターフェイスを使用してネットを構築することはできません。caffemodel ファイルと prototxt ファイルが正しいことを確認してください。問題が prototxt ファイルにないことを確認するには、FAQ #2 を参照してください。

Q13. メッセージ「Cannot infer shapes due to exception in Caffe」の意味は?

A: モデル・オプティマイザーは Caffe フレームワーク経由でカスタムレイヤーを推論しようとしましたが、Caffe ではモデルを推論できませんでした。これは、動的形状を持つレイヤーと競合するノイズの重みとバイアスを使用してモデルを変換すると発生する可能性があります。トポロジーに含まれるカスタムレイヤーごとに独自の拡張機能を作成する必要があります。詳細は、[従来] モデル・オプティマイザーの拡張性を参照してください。

Q14. メッセージ「Cannot infer shape for node {} because there is no Caffe available. Please register python infer function for op or use Caffe for shape inference」の意味は?

A: モデルにはカスタムレイヤーが含まれており、それが CustomLayersMapping.xml ファイルに正しく登録されています。これらの手順は、Caffe システムの支援によりカスタムレイヤーの形状推論をオフロードするのに必要です。ただし、モデル・オプティマイザーは Caffe パッケージをインポートできませんでした。pycaffe ターゲットを使用して Caffe をビルドし、それを PYTHONPATH 環境変数に追加したことを確認してください。同時に、Caffe への依存を避け、カスタムレイヤー用に独自のモデル・オプティマイザー拡張機能を作成することを推奨します。詳細については、FAQ #44 を参照してください。

Q15. メッセージ「Framework name can not be deduced from the given options. Use –framework to choose one of Caffe, TensorFlow, MXNet」の意味は?

A: --framework caffe|tf|mxnet フラグを指定せずにモデル・オプティマイザーを実行しました。モデル・オプティマイザーは、入力モデルファイルの拡張子 (TensorFlow の場合は .pb、Caffe の場合は .caffemodel、Apache MXNet の場合は .params) によってフレームワークを推定しようとします。入力モデルが異なる拡張子を持つ可能性があるため、ソース・フレームワークを明示的に設定する必要があります。例えば、--framework caffe を使用します。

Q16. メッセージ「Input shape is required to convert MXNet model. Please provide it with –input_shape」の意味は?

A: 入力形状が提供されていません。MXNet モデルには入力形状に関する情報が含まれていないため、これは MXNet モデルを OpenVINO 中間表現に変換するには必須です。--input_shape フラグで指定します。--input_shape の使用の詳細については、FAQ #56 を参照してください。

Q19. メッセージ「Both –scale and –scale_values are defined. Specify either scale factor or scale values per input channels」の意味は?

A: --scale オプションはすべてのチャネルのスケーリング係数を設定し、--scale_values は各チャネルごとにスケーリング係数を設定します。両方を同時に使用するとあいまいになるため、どちらか 1 つだけを使用する必要があります。詳細については、TensorFlow モデルの変換フレームワークに依存しない変換パラメーターの使用セクションを参照してください。

Q20. メッセージ「Cannot find prototxt file: for Caffe please specify –input_proto - a protobuf file that stores topology and –input_model that stores pre-trained weights」の意味は?

A: モデル・オプティマイザーは、指定されたモデルの .prototxt ファイルを検出できませんでした。デフォルトでは、入力モデルと同じディレクトリーに同じ名前 (拡張子を除く) で配置する必要があります。これらの条件のいずれかが満たされない場合は、--input_proto を使用して .prototxt ファイルへのパスを指定します。

Q22. メッセージ「Failed to create directory ... Permission denied!」の意味は?

A: モデル・オプティマイザーは、--output_dir で指定されたディレクトリーを作成できません。ディレクトリーを作成する十分な権限があることを確認してください。

Q23. メッセージ「Discovered data node without inputs and value」の意味は?

A: 指定されたトポロジー内のレイヤーの 1 つに入力または値がない可能性があります。提供された caffemodel ファイルと protobuf ファイルが正しいことを確認してください。

Q24. メッセージ「Part of the nodes was not translated to IE.Stopped」の意味は?

A: 一部の操作は OpenVINO ランタイムでサポートされていないため、OpenVINO 中間表現に変換できません。新しいタイプの操作を生成できるようモデル・オプティマイザーを拡張し、これらの操作を専用の OpenVINO プラグインに実装できます。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。

Q25. メッセージ「While creating an edge from .. to ..: node name is undefined in the graph. Check correctness of the input model」の意味は?

A: モデル・オプティマイザーは、指定されたモデルからグラフを構築できません。おそらく間違いがあります。

Q26. メッセージ「Node does not exist in the graph」の意味は?

A: --output フラグで、モデルに存在しない出力ノードを指定した可能性があります。指定された出力が正しいこと、およびこのノードが現在のモデルに存在することを確認してください。

Q27. メッセージ「–input parameter was provided. Other inputs are needed for output computation. Provide more inputs or choose another place to cut the net」の意味は?

A: モデル・オプティマイザーが指定された入力によってモデルをカットしようとしました。他の入力が必要です。

Q28. メッセージ「Placeholder node does not have an input port, but input port was provided」の意味は?

A: プレースホルダー・ノードがモデル内にないにもかかわらず、入力ノードを使用してプレースホルダー・ノードを指定した可能性があります。

Q29. メッセージ「Port index is out of number of available input ports for node」の意味は?

A: このエラーは、--input コマンドライン引数で不正な入力ポートが指定された場合に発生します。--input を使用する場合、オプションで入力ポートを X:node_name の形式で指定できます。X は 0 から始まる入力ポートの整数インデックス、node_name はモデル内のノードの名前です。このエラーは、指定された入力ポート X が 0..(n-1) の範囲にない場合に発生します (n はノードの入力ポートの数です)。正しいポート・インデックスを指定するか、必要がない場合は使用しないでください。

Q30. メッセージ「Node has more than 1 input and input shapes were provided. Try not to provide input shapes or specify input port with PORT:NODE notation, where PORT is an integer」の意味は?

A: このエラーは、--input および --input_shape コマンドライン・オプションの誤った組み合わせで発生します。--input--input_shape の両方を使用し、--inputPlaceholder ノードを指している場合、入力ポートが 1 つあるノード、または --input の形式が PORT:NODE である場合にのみ有効です。ここで、PORT はノード NODE の入力の整数ポート・インデックスです。それ以外の --input--input_shape の組み合わせは正しくありません。

Q31. メッセージ「Input port > 0 in –input is not supported if –input_shape is not provided. Node: NAME_OF_THE_NODE. Omit port index and all input ports will be replaced by placeholders. Or provide –input_shape」の意味は?

A: --input コマンドライン引数と PORT > 0 に PORT:NODE を使用する場合は、この入力に --input_shape を指定する必要があります。これは、モデル・オプティマイザー実装の現在の制限です。

モデル切り捨ての入力ポート・インデックスの制限が解決されたため、このメッセージは意味を持つようになりました。

Q32. メッセージ「No or multiple placeholders in the model, but only one shape is provided, cannot set it」の意味は?

A: モデルに入力がないか、複数の入力が存在するにもかかわらず、プレースホルダーに 1 つの形状のみを指定した可能性があります。プレースホルダー・ノードに正しいデータを指定している確認してください。

Q33. メッセージ「The amount of input nodes for port is not equal to 1」の意味は?

A: このエラーは、サブグラフ内の複数のノードを供給する入力ポートに SubgraphMatch.single_input_node 関数が使用されている場合に発生します。single_input_node 関数は、一致するサブグラフ内で単一のコンシューマーを持つポートにのみ使用できます。複数のノードがポートに接続されている場合は、single_input_node の代わりに input_nodes 関数または node_by_pattern 関数を使用します。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。

Q34. メッセージ「Output node for port has already been specified」の意味は?

A: このエラーは、SubgraphMatch._add_output_node 関数がユーザーの拡張コードから手動で呼び出されたときに発生します。これは内部関数であるため、直接呼び出さないでください。

Q35. メッセージ「Unsupported match kind…. Match kinds “points” or “scope” are supported only」の意味は?

A: 設定ファイルを使用して TensorFlow フロント置換拡張機能を実装するときに、誤った一致の種類が使用されました。points または scope の一致種類のみがサポートされます。詳細は、[従来] モデル・オプティマイザーの拡張性を参照してください。

Q36. メッセージ「Cannot write an event file for the TensorBoard to directory」の意味は?

A: モデル・オプティマイザーは、指定されたディレクトリーにイベントファイルを書き込もうとしましたが、失敗しました。これは、指定されたディレクトリーが存在しないか、ディレクトリーへの書き込み権限がない場合に発生する可能性があります。

Q37. メッセージ「There is no registered ‘infer’ function for node with op = ... Please implement this function in the extensions」の意味は?

A 新しいプリミティブを使用してモデル・オプティマイザーを拡張しようとしましたが、推論関数を指定しませんでした。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。

Q38. メッセージ「Stopped shape/value propagation at node」の意味は?

A: モデル・オプティマイザーは、指定されたノードの形状または値を推測できません。これは次の理由で発生する可能性があります: カスタム形状推論関数にバグが存在するか、ノード入力の値/形状が正しくない、または入力形状が正しくありません。

Q39. メッセージ「The input with shape .. does not have the batch dimension」の意味は?

A: バッチ次元は形状内の最初の次元であり、1 または未定義でなければいけません。この質問の場合、それは 1 でも未定義でもありません。そのため、-b ショートカットは未定義および未指定の動作となります。この問題を解決するには、--input_shape オプションを使用して各入力の完全な形状を指定します。--help オプションを指定してモデル・オプティマイザーを起動すると、入力形状の表記法について詳しいヘルプが得られます。

Q40. メッセージ「Not all output shapes were inferred or fully defined for node」の意味は?

A: おそらく、指定されたノードの形状が (部分的または完全に) 定義されていません。--input_shape を正の整数とともに使用すると、モデルの入力形状をオーバーライドできます。

Q41. メッセージ「Shape for tensor is not defined. Can not proceed」の意味は?

A: このエラーは、--input コマンドライン・オプションを使用してモデルをカットし、--input_shape オプションでノードの形状をオーバーライドしない場合に発生します。そのため、ノードの形状をモデル・オプティマイザーで推論できません。--input コマンドライン・オプションで指定された各ノードに対して --input_shape で形状を指定することにより、モデル・オプティマイザーを支援する必要があります。

Q42. メッセージ「Module TensorFlow was not found. Please install TensorFlow 1.2 or higher」の意味は?

A: モデル・オプティマイザーを使用して TensorFlow モデルを変換するには、TensorFlow 1.2 以降がインストールされている必要があります。前提条件の詳細については、モデル・オプティマイザーの構成ガイドを参照してください。

Q43. メッセージ「Cannot read the model file: it is incorrect TensorFlow model file or missing」の意味は?

A: モデルファイルには、テキストまたはバイナリー形式で凍結された TensorFlow グラフが含まれている必要があります。--input_model_is_text がテキスト形式でモデルに提供されていることを確認してください。デフォルトでは、モデルはバイナリーファイルとして解釈されます。

Q44. メッセージ「Cannot pre-process TensorFlow graph after reading from model file. File is corrupt or has unsupported format」の意味は?

A: おそらく、モデルに指定されたファイルに問題があります。ファイルは存在しますが、形式が無効であるか破損しています。

Q45. メッセージ「Found custom layer. Model Optimizer does not support this layer. Please, register it in CustomLayersMapping.xml or implement extension」の意味は?

A: これは、レイヤー {layer_name} がモデル・オプティマイザーでサポートされていないことを意味します。サポートされていないレイヤーのリストは、対応するセクションにあります。このレイヤーの拡張機能を実装する必要があります。詳細は、OpenVINO 拡張メカニズムのセクションを参照してください。

Q46. メッセージ「Custom replacement configuration file does not exist」の意味は?

A: カスタム置換構成ファイルへのパスが --transformations_config フラグで指定されましたが、ファイルが見つかりませんでした。指定したパスが正しく、ファイルが存在することを確認してください。

Q47. メッセージ「Extractors collection have case insensitive duplicates」の意味は?

A: 新しいプリミティブを使用してモデル・オプティマイザーを拡張する場合、それらの名前は大文字と小文字が区別されないことに注意してください。おそらく、同じ名前の別の操作がすでに定義されています。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。

Q48. メッセージ「Input model name is not in an expected format, cannot extract iteration number」の意味は?

A: モデル・オプティマイザーは、指定されたファイル形式で MXNet モデルをロードできません。.json または .param 形式を使用してください。

Q49. メッセージ「Cannot convert type of placeholder because not all of its outputs are ‘Cast’ to float operations」の意味は?

A: Placeholder が UINT8 タイプで、その後の最初の操作が入力を FP32 にキャストするモデルがあります。モデル・オプティマイザーは、Placeholder が UINT8 型であることを検出しましたが、次の操作は浮動小数点数への ‘キャスト’ ではありません。モデル・オプティマイザーはそのようなケースをサポートしません。FP32 の Placeholder が含まれるようにモデルを変更してください。

Q50. メッセージ「Data type is unsupported」の意味は?

A: モデル・オプティマイザーは、指定されたデータタイプの値を読み取ることができません。現在、次のタイプがサポートされています: bool、float16、float32、double、int8、int16、int32、int64、uint8、uint16、uint32、uint64、str。

Q51. メッセージ「No node with name …」の意味は?

A: モデル・オプティマイザーが存在しないノードにアクセスしようとしました。これは、プレースホルダー、入力ノード名、または出力ノード名を誤って指定すると発生する可能性があります。

Q52. メッセージ「Module MXNet was not found. Please install MXNet 1.0.0」の意味は?

A: モデル・オプティマイザーを使用して MXNet モデルを変換するには、Apache MXNet 1.0.0 がインストールされている必要があります。前提条件の詳細については、モデル・オプティマイザーの構成ガイドを参照してください。

Q53. メッセージ「The following error happened while loading MXNet model ..」の意味は?

A: おそらく、MXNet モデルの読み込みに問題があります。指定されたパスが正しいこと、モデルが存在し破損していないこと、およびモデルを操作する十分な権限があることを確認してください。

Q54. メッセージ「The following error happened while processing input shapes: ..」の意味は?

A: 入力が定義されており、正しい形状であることを確認してください。--input_shape を正の整数とともに使用すると、モデルの入力形状をオーバーライドできます。

Q55. メッセージ「Attempt to register of custom name for the second time as class. Note that custom names are case-insensitive」の意味は?

A: 新しいプリミティブを使用してモデル・オプティマイザーを拡張する場合、それらの名前は大文字と小文字が区別されないことに注意してください。おそらく、同じ名前の別の操作がすでに定義されています。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。

Q56. メッセージ「Both –input_shape and –batch were provided. Please, provide only one of them」の意味は?

A: バッチと入力形状の同時指定はサポートされていません。入力形状の最初の値として目的のバッチを指定する必要があります。

Q57. メッセージ「Input shape .. cannot be parsed」の意味は?

A: 指定された入力形状を解析できません。次のいずれかの方法で定義します。

  • mo --input_model <INPUT_MODEL>.caffemodel --input_shape (1,3,227,227)
    
  • mo --input_model <INPUT_MODEL>.caffemodel --input_shape [1,3,227,227]
    
  • 複数の入力トポロジーがある場合は、入力も指定する必要があります。

    mo --input_model /path-to/your-model.caffemodel --input data,rois --input_shape (1,3,227,227),(1,6,1,1)
    

入力形状には、括弧の間や括弧内にスペースが存在しないことに注意してください。

Q58. メッセージ「Please provide input layer names for input layer shapes」の意味は?

A: 複数のレイヤーの入力形状を指定する場合、入力の名前を指定する必要があります。入力形状は上書きされます。--input_shape の追加情報は FAQ #56 にあります。

Q59. メッセージ「Values cannot be parsed」の意味は?

A: 指定されたパラメーターの平均値を解析できません。平均値のリストを含む文字列を指定する必要があります。例えば、‘(1,2,3)’ では、1 は赤チャネル、2 は緑チャネル、3 は青チャネルを表します。

Q60. メッセージ「.. channels are expected for given values」の意味は?

A: 指定されたチャネル数と平均値の数が一致しません。形状は ‘(R,G,B)’ または ‘[R,G,B]’ として定義する必要があります。形状には未定義の次元 (? または -1) が含まれていてはなりません。値の順序は次のとおりです: (RED チャネルの値、GREEN チャネルの値、BLUE チャネルの値)。

Q61. メッセージ「You should specify input for each mean value」の意味は?

A: --mean_values を使用して入力を指定しなかった可能性があります。--input フラグを使用して入力を指定します。詳細については、FAQ #62 を参照してください。

Q62. メッセージ「You should specify input for each scale value」の意味は?

A: --scale_values を使用して入力を指定しなかった可能性があります。--input フラグを使用して入力を指定します。詳細については、FAQ #63 を参照してください。

Q63. メッセージ「Number of inputs and mean values does not match」の意味は?

A: 指定される平均値の数と入力の数は等しくなければなりません。

Q64. メッセージ「Number of inputs and scale values does not match」の意味は?

A: 指定されるスケール値の数と入力の数は等しくなければなりません。

Q65. メッセージ「No class registered for match kind … Supported match kinds are ..」の意味は?

A: ノード名パターンまたは開始/終了ノードを使用して、サブグラフ置換用の構成ファイルで定義された置換には、match_kind 属性があります。属性には、scope または points のいずれかの値のみを含めることができます。異なる値を指定すると、このエラーが表示されます。

Q66. メッセージ「No instance(s) is(are) defined for the custom replacement」の意味は?

A: ノード名パターンまたは開始/終了ノードを使用して、サブグラフ置換用の構成ファイルで定義された置換には、instances 属性があります。この属性は必須です。このエラーは、属性が欠落している場合に発生します。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。

Q67. メッセージ「The instance must be a single dictionary for the custom replacement with id ..」の意味は?

A: 開始/終了ノードを使用してサブグラフ置換用の構成ファイルに定義された置換には、instances 属性があります。このタイプの置換では、start_pointsend_points という 2 つのキーを持つ辞書を使用してインスタンスを定義する必要があります。これらのキーの値は、それぞれ開始ノード名と終了ノード名を含むリストです。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。

Q68. メッセージ「No instances are defined for replacement with id ..」の意味は?

A: 指定された ID の代替が構成ファイルで定義されていません。詳細については、FAQ #65 を参照してください。

Q69. メッセージ「Custom replacements configuration file .. does not exist」の意味は?

A: カスタム置換構成ファイルへのパスが --transformations_config フラグで指定されましたが、見つかりません。指定したパスが正しく、ファイルが存在することを確認してください。

Q70. メッセージ「Failed to parse custom replacements configuration file ..」の意味は?

A: --transformations_config フラグで提供されたカスタム置換構成のファイルを解析できません。有効な JSON 構造が必要です。詳細は、JSON スキームのリファレンスを参照してください。

Q71. メッセージ「One of the custom replacements in the configuration file .. does not contain attribute ‘id’」の意味は?

A: すべてのカスタム置換では、一連の必須属性とその値を宣言する必要があります。詳細については、FAQ #71 を参照してください。

Q72. メッセージ「File .. validation failed」の意味は?

A: --transformations_config フラグで提供されたカスタム置換構成のファイルでは検証に合格できません。すべてのパターンに対して idinstances、および match_kind を指定していることを確認してください。

Q73. メッセージ「Cannot update the file .. because it is broken」の意味は?

A: --tensorflow_custom_operations_config_update で提供されるカスタム置換構成ファイルは解析できません。ファイルが正しいことを確認し、FAQ #68#69#70、および #71 を参照してください。

Q74. メッセージ「End node .. is not reachable from start nodes: ..」の意味は?

A: このエラーは、サブグラフの一致を試みたときに発生します。検索するサブグラフの入力/出力として指定された開始ノードと終了ノードの間に、出力としてマークされたノードがありますが、入力ノードへのパスが存在しないことが検出されました。一致させるサブグラフに、指定したすべての出力ノードが実際に含まれていることを確認してください。

Q75. メッセージ「Sub-graph contains network input node ..」の意味は?

A: 開始/終了ノードを使用したサブグラフ置換の開始ノードまたは終了ノードの指定が正しくありません。モデル・オプティマイザーは、厳密に開始ノードと終了ノードの “間” でサブグラフの内部ノードを検索し、これらの “内部” ノードのすべての入力ノード (入力の入力なども) をサブグラフに追加します。このエラーは、モデル・オプティマイザーがこのフェーズ中に入力ノードに到達したことを報告します。これは、構成ファイル内で開始点と終了点が正しく指定されていないことを意味します。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。

Q76. メッセージ「… elements of … were clipped to infinity while converting a blob for node […] to …」の意味は?

A: このメッセージは、--compress_to_fp16 コマンドライン・オプションで表示されることがあります。このオプションは、すべてのモデルの重み、バイアス、およびその他の定数値を FP16 に圧縮することを意味します。定数値が有効な FP16 値の範囲外にある場合、その値は正または負の無限大に変換されます。モデルによっては、誤った推論結果が得られる場合もあれば、問題にならない場合もあります。このような要素の数と定数値内の要素の合計数が、この値が使用されるノードの名前とともに出力されます。

Q77. メッセージ「… elements of … were clipped to zero while converting a blob for node […] to …」の意味は?

A: このメッセージは、--compress_to_fp16 コマンドライン・オプションで表示されることがあります。このオプションは、モード内のすべてのブロブを FP16 に変換することを意味します。ブロブ内の値がゼロに近すぎて有効な FP16 値を表現できない場合、その値は真のゼロの FP16 値に変換されます。モデルによっては、誤った推論結果が得られる場合や、問題にならない場合があります。このような要素の数とブロブ内の要素の合計数が、このブロブが使用されるノードの名前とともに出力されます。

Q78. メッセージ「The amount of nodes matched pattern … is not equal to 1」の意味は?

A: このエラーは、サブグラフ内の単一ノードを一意に識別しないパターンで SubgraphMatch.node_by_pattern 関数が使用された場合に発生します。パターン文字列を拡張して、単一のサブグラフノードに一致するようにしてください。詳細については、[従来] モデル・オプティマイザーの拡張性ガイドのグラフ変換拡張機能セクションを参照してください。

Q79. メッセージ「The topology contains no “input” layers」の意味は?

A: Caffe トポロジー .prototxt ファイルはトレーニング用です。モデル・オプティマイザーは、すぐにデプロイできる .prototxt ファイルを期待します。この問題を解決するには、デプロイ可能な .prototxt ファイルを準備します。デプロイの準備ができたトポロジーを準備すると、通常、data レイヤーの削除、input レイヤーの追加、損失レイヤーが削除されます。

Q80. メッセージ「Warning: please expect that Model Optimizer conversion might be slow」の意味は?

A: サポートされていない Python バージョンを使用しています。OpenVINO ツールキットで提供される C++ protobuf 実装には、バージョン 3.4 ~ 3.6 のみを使用してください。ソースから protobuf ライブラリーをビルドすることで、変換速度を向上させることができます。ソースから protobuf をビルドする詳細な手順については、モデルを中間表現に変換するガイドを参照してください。

Q81. メッセージ「Arguments –nd_prefix_name, –pretrained_model_name and –input_symbol should be provided. Please provide all or do not use any.」の意味は?

A: このエラーは、--nd_prefix_name--pretrained_model_name、および --input_symbol パラメーターを指定しなかった場合に発生します。モデル・オプティマイザーでは、結果ファイル (.params) にマージするため .params.nd モデルファイルの両方が必要です。トポロジー記述 (.json ファイル) を事前に準備 (マージ) し、--input_symbol パラメーターを指定する必要があります。

.nd ファイル内の追加レイヤーと重みをモデルに追加すると、モデル・オプティマイザーは 1 つの .params ファイルと 2 つの追加の .nd ファイル (*_args.nd*_auxs.nd) からモデルをビルドできます。これを行うには、両方の CLI オプションを指定するか、追加の重みを付けずに MXNet モデルを変換するにはそれらを渡しません。

Q82. メッセージ「You should specify input for mean/scale values」の意味は?

A: モデルに複数の入力があり、平均/スケール値を提供する場合、各入力にそれらの値を渡す必要があります。具体的には、渡される値の数はモデルの入力の数と同じである必要があります。詳細については、モデルを中間表現に変換ガイドを参照してください。

Q83. メッセージ「Input with name … not found!」の意味は?

A: 平均/スケール値を渡し、モデルの入力レイヤーの名前を指定したときに、どの入力レイヤーにも対応しない名前を使用した可能性があります。--input オプションを使用して値を渡すときは、モデルの入力レイヤーの名前のみをリストするようにしてください。詳細については、モデルを中間表現に変換ガイドを参照してください。

Q84. メッセージ「Specified input json … does not exist」の意味は?

A: おそらく、.json ファイルが存在しないか、Apache MXNet の表記と一致しない名前が付けられています。ファイルが存在し、名前が正しいことを確認してください。

Q85. メッセージ「Unsupported Input model file type … Model Optimizer support only .params and .nd files format」の意味は?

A: Apache MXNet 向けのモデル・オプティマイザーは、.params および .nd ファイル形式のみをサポートします。おそらく、--input_model でサポートされていないファイル形式を指定したと考えられます。

Q86. メッセージ「Operation … not supported. Please register it as custom op」の意味は?

A: モデル・オプティマイザーは、サポートされていない操作を含むモデルをロードしようとしました。サポートされていない操作を含むモデルを変換する場合、そのようなすべての操作に対応する拡張機能を準備する必要があります。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。

Q87. メッセージ「Can not register Op … Please, call function ‘register_caffe_python_extractor’ with parameter ‘name’」の意味は?

A: このエラーは、Python Caffe 向けの Op レイヤーの実装クラスがモデル・オプティマイザーで使用できない場合に表示されます。Python レイヤーは、通常の Caffe レイヤーとは異なる方法で処理する必要があります。

関数 register_caffe_python_extractor を呼び出し、関数の 2 番目の引数として name を渡す必要があります。名前は、レイヤー名とモジュール名をドットで区切って組み合わせる必要があります。

例えば、トポロジーには Python タイプの次のレイヤーが含まれています。

layer {
  name: 'proposal'
  type: 'Python'
  ...
  python_param {
    module: 'rpn.proposal_layer'
    layer: 'ProposalLayer'
    param_str: "'feat_stride': 16"
  }
}

最初のステップは、モデル・オプティマイザーでこのレイヤーの拡張機能を Op クラスの祖先として実装することです。

class ProposalPythonExampleOp(Op):
       op = 'Proposal'

       def __init__(self, graph: nx.MultiDiGraph, attrs: dict):
           ...

クラスの実装直後に 2 つの関数を呼び出すことが必須です。

class ProposalPythonExampleOp(Op):
      ...

register_caffe_python_extractor(ProposalPythonExampleOp, 'rpn.proposal_layer.ProposalLayer')
Op.excluded_classes.append(ProposalPythonExampleOp)

最初の呼び出し register_caffe_python_extractor(ProposalPythonExampleOp, 'rpn.proposal_layer.ProposalLayer') は、モデル・オプティマイザーにレイヤーの拡張機能を登録することに注意してください。これは、特定の名前 (モジュール名とレイヤー名を結合することが必須): rpn.proposal_layer.ProposalLayer にあります。

2 番目の呼び出しにより、モデル・オプティマイザーがこの拡張機能を、タイプ Proposal のレイヤーの拡張機能として使用できなくなります。それ以外の場合、このレイヤーは潜在的な問題を引き起こす拡張機能の実装として選択される可能性があります。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。

Q88. メッセージ「Model Optimizer is unable to calculate output shape of Memory node ..」の意味は?

A: モデル・オプティマイザーは、input_memoryScaleShift または FullyConnected レイヤーの前に配置される Memory レイヤーのみをサポートします。このエラーメッセージは、モデル内で入力メモリーの後のレイヤーが ScaleShift または FullyConnected タイプではないことを意味します。これは既知の制限です。

Q89. メッセージ「File … does not appear to be a Kaldi file (magic number does not match)」、「Kaldi model should start with <Nnet> tag」の意味は?

A: これらのエラーメッセージは、モデルの checksum が 16896 ではない (モデルはこの数値で始まるはず) か、モデルファイルに開始タグとして <Net> タグが含まれていないため、モデル・オプティマイザーが Kaldi モデルをサポートしていないことを意味します。真の Kaldi モデルへのパスを指定していることを確認して、もう一度お試しください。

Q90. メッセージ「Expect counts file to be one-line file.」または「Expect counts file to contain list of integers」の意味は?

A: これらのメッセージは、渡したファイル数に 1 行も含まれていないことを意味します。count ファイルは [ で始まり ] で終わる必要があり、整数値は括弧間のスペースで区切る必要があります。

Q91. メッセージ「Model Optimizer is not able to read Kaldi model ..」の意味は?

A: モデル・オプティマイザーが Kaldi トポロジーを受け入れない理由は次のとおりです: ファイルが利用できないか、存在しません。FAQ #88 を参照してください。

Q92. メッセージ「Model Optimizer is not able to read counts file ..」の意味は?

A: モデル・オプティマイザーがカウントファイルを受け入れない理由は次のとおりです: ファイルが利用できないか、存在しません。FAQ #89 を参照してください。

Q93. メッセージ「For legacy MXNet models Model Optimizer does not support conversion of old MXNet models (trained with 1.0.0 version of MXNet and lower) with custom layers.」の意味は?

A: このメッセージは、カスタムレイヤーを含むモデルがあり、その JSON ファイルが 1.0.0 より前の Apache MXNet バージョンで生成されている場合、モデル・オプティマイザーがそのようなトポロジーをサポートしないことを意味します。変換したい場合は、サポートされていないレイヤーを使用して MXNet を再構築するか、Apache MXNet バージョン 1.0.0 以降で新しい JSON ファイルを生成する必要があります。カスタムレイヤーを使用するには、OpenVINO 拡張機能を実装する必要もあります。詳細については、OpenVINO 拡張メカニズムガイドを参照してください。

Q94. メッセージ「Expected token </ParallelComponent>, has ...」の意味は?

A: このエラーメッセージは、ネットに </ParallelComponent> タグで終わらない ParallelComponent が含まれているため、モデル・オプティマイザーが Kaldi モデルをサポートしないことを意味します。真の Kaldi モデルへのパスを指定していることを確認して、もう一度お試しください。

Q97. メッセージ「Graph contains a cycle. Can not proceed ..」の意味は?

A: モデル・オプティマイザーは、サイクルのない単純なモデルのみをサポートします。

サイクルを回避するには複数の方法があります。

Tensorflow の場合:

すべてのフレームワークの場合:

  1. モデル・オプティマイザーのサブグラフを含むサイクルを置換する [従来のソリューション]

  2. OpenVINO 拡張性メカニズム を参照してください

または

  • 元のフレームワークでモデルを編集してサイクルを除外します。

Q100. メッセージ「Interp layer shape inference function may be wrong, please, try to update layer shape inference function in the file (extensions/ops/interp.op at the line …).」の意味は?

A: Caffe フレームワークにはさまざまな種類があり、それらのほとんどのレイヤーは同じように実装されています。ただし、例外もあります。例えば、レイヤー Interp の出力値は、Deeplab-Caffe と従来の Caffe では異なる方法で計算されます。したがって、モデルにレイヤー Interp が含まれており、モデルの変換が失敗した場合は、extensions/ops/interp.op ファイル内の interp_infer 関数を、ファイル内のコメントに従って変更します。

Q101. メッセージ「Mean/scale values should …」の意味は?

A: これは、平均/スケール値の形式が誤っていることを意味します。平均/スケール値を、layer_name(val1,val2,val3) の形式で指定します。モデルの各入力に値を指定する必要があります。詳細については、モデルを中間表現に変換ガイドを参照してください。

Q102. メッセージ「Operation _contrib_box_nms is not supported …」の意味は?

A: これは、直接サポートされていない _contrib_box_nms 操作を含むトポロジーを変換しようとしていることを意味します。ただし、トポロジーが gluoncv トポロジーの 1 つである場合は、_contrib_box_nms を含む操作のサブグラフを DetectionOutput レイヤーに置き換えることができます。この変換を有効にするには、モデル・オプティマイザーの --enable_ssd_gluoncv コマンドライン・パラメーターを指定します。

Q103. メッセージ「ModelOptimizer is not able to parse *.caffemodel」の意味は?

A: *.caffemodel ファイルが存在し、それが正しい場合は、Python protobuf 実装が原因でエラーが発生した可能性があります。場合によっては、モデルの解析中にエラー メッセージが表示されることがあります。例えば、“utf-8 コーデックは位置 4 のバイト 0xe0 をデコードできません: フィールドの継続バイトが無効です: mo_caffe.SpatialTransformerParameter.transform_type”。新しい Python バージョン (3.8 ~ 3.11) を使用するか、使用している Python バージョンに合わせて protobufcpp 実装を自身で構築することができます。ソースから protobuf を構築する完全な手順については、モデル・オプティマイザーによるモデルの変換ガイドを参照してください。

Q105. メッセージ「The IR preparation was executed by the legacy MO path.…」の意味は?

A: ONNX 形式のモデルの場合、IR 変換の利用可能なパスが 2 つあります。古いものは古い Python 実装によって処理されますが、新しいものは新しい C++ フロントエンドを使用します。2022.1 バージョン以降、ONNX モデルのデフォルトの IR 変換パスは、新しい ONNX フロントエンドを使用して処理されます。--extensions--transformations_config などの特定の機能は、新しいフロントエンドではまだ完全にはサポートされていません。新しいフロントエンドは、--extensions の共有ライブラリー (.dll および .so) のパスのみをサポートします。--transformations_config に定義されたライブラリー・ フィールドを使用した JSON 構成をサポートします。入力のフリーズ (--freeze_placeholder_with_value または --input 引数によって有効になる) は、新しいフロントエンドではサポートされていません。ユーザーが予期される変換パスを明示的に選択せず (--use_new_frontend または --use_legacy_frontend MO 引数を使用)、サポートされていない事前定義シナリオが新しいフロントエンド・パスで検出された場合、IR 変換は古いパスにフォールバックします。