提取属性 Open Vino 时发生意外异常

Unexpected exception happened during extracting attributes Open Vino

我正在尝试使用 mo_caffe.py 脚本转换 Caffe 模型。我总是会收到如下错误,但在随机节点中(所有节点都有共同的 "BatchNorm" 操作)。使用 Nvidia-Digits (https://github.com/NVIDIA/DIGITS)

训练模型
Model Optimizer arguments:
Common parameters:
        - Path to the Input Model:      /home/deploy.caffemodel
        - Path for generated IR:        /dldt/model-optimizer/.
        - IR output name:       deploy
        - Log level:    INFO
        - Batch:        Not specified, inherited from the model
        - Input layers:         Not specified, inherited from the model
        - Output layers:        Not specified, inherited from the model
        - Input shapes:         Not specified, inherited from the model
        - Mean values:  Not specified
        - Scale values:         Not specified
        - Scale factor:         Not specified
        - Precision of IR:      FP32
        - Enable fusing:        True
        - Enable grouped convolutions fusing:   True
        - Move mean values to preprocess section:       False
        - Reverse input channels:       False
Caffe specific parameters:
        - Path to Python Caffe* parser generated from caffe.proto:      mo/front/caffe/proto
        - Enable resnet optimization:   True
        - Path to the Input prototxt:   /home/deploy.prototxt
        - Path to CustomLayersMapping.xml:      Default
        - Path to a mean file:  Not specified
        - Offsets for a mean file:      Not specified
Model Optimizer version:        unknown version
[ INFO ]  Importing extensions from: /dldt/model-optimizer/mo
[ INFO ]  New subclass: <class 'mo.ops.crop.Crop'>
[ INFO ]  Registered a new subclass with key: Crop
[ INFO ]  New subclass: <class 'mo.ops.deformable_convolution.DeformableConvolution'>
[ INFO ]  Registered a new subclass with key: DeformableConvolution
[ INFO ]  New subclass: <class 'mo.ops.concat.Concat'>
[ INFO ]  Registered a new subclass with key: Concat
[ INFO ]  New subclass: <class 'mo.ops.split.Split'>
...
Some log info. I don't think anything interesting here.
...
[ WARNING ]  Skipped <class 'extensions.front.override_batch.OverrideBatch'> registration because it was already registered or it was disabled.
[ WARNING ]  Skipped <class 'extensions.front.TopKNormalize.TopKNormalize'> registration because it was already registered or it was disabled.
[ WARNING ]  Skipped <class 'extensions.front.reshape_dim_normalizer.ReshapeDimNormalizer'> registration because it was already registered or it was
disabled.
[ WARNING ]  Skipped <class 'extensions.front.ArgMaxSqueeze.ArgMaxSqueeze'> registration because it was already registered or it was disabled.
[ WARNING ]  Skipped <class 'extensions.front.standalone_const_eraser.StandaloneConstEraser'> registration because it was already registered or it wa
s disabled.
[ WARNING ]  Skipped <class 'extensions.front.TransposeOrderNormalizer.TransposeOrderNormalizer'> registration because it was already registered or i
t was disabled.
[ WARNING ]  Skipped <class 'mo.front.common.replacement.FrontReplacementOp'> registration because it was already registered or it was disabled.
[ WARNING ]  Skipped <class 'extensions.front.restore_ports.RestorePorts'> registration because it was already registered or it was disabled.
[ WARNING ]  Skipped <class 'extensions.front.softmax.SoftmaxFromKeras'> registration because it was already registered or it was disabled.
[ WARNING ]  Skipped <class 'extensions.front.reduce_axis_normalizer.ReduceAxisNormalizer'> registration because it was already registered or it was
disabled.
[ WARNING ]  Skipped <class 'extensions.front.freeze_placeholder_value.FreezePlaceholderValue'> registration because it was already registered or it
was disabled.
[ WARNING ]  Skipped <class 'extensions.front.no_op_eraser.NoOpEraser'> registration because it was already registered or it was disabled.
[ WARNING ]  Node attributes: {'_in_ports': {}, 'model_pb': name: "conv2_3_sep_bn_left"
type: "BatchNorm"
bottom: "conv2_3_sep_left"
top: "conv2_3_sep_left"
param {
  lr_mult: 0.0
  decay_mult: 0.0
}
param {
  lr_mult: 0.0
  decay_mult: 0.0
}
param {
  lr_mult: 0.0
  decay_mult: 0.0
}
blobs {                                                                                                                                      [0/1963]
  shape {
    dim: 32
  }
}
blobs {
  shape {
    dim: 32
  }
}
blobs {
  shape {
    dim: 1
  }
}
phase: TRAIN
, 'kind': 'op', '_out_ports': {}, 'pb': name: "conv2_3_sep_bn_left"
type: "BatchNorm"
bottom: "conv2_3_sep_left"
top: "conv2_3_sep_left"
param {
  lr_mult: 0.0
  decay_mult: 0.0
}
param {
  lr_mult: 0.0
  decay_mult: 0.0
}
param {
  lr_mult: 0.0
  decay_mult: 0.0
}
, 'type': 'Parameter'}
[ ERROR ]  Unexpected exception happened during extracting attributes for node relu1.
Original exception message: list index (0) out of range

这是我收到的错误消息。我还创建了一个 GitHub issue

Here 是我要从 Caffe 转换到 OpenVino 的模型

问题是 Nvidia-Digits 使用定制的 Caffe 的分支版本。这就是 OpenVino.

无法正确读取模型权重的原因

在使用 OpenVino 转换模型之前,我不得不使用 this 脚本来转换模型。