frame

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Sign In

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

[TF] Could not build graph. Missing link ... (but the node is presented)

Hello!
Thank you for your product!
Im trying to transfer the TF network based on mobilenet 0.75 (https://github.com/ildoonet/tf-pose-estimation) to ncsdk.

The command to compile is the following (v. 1.12.00):
mvNCCompile model-1.meta -in=image -on=Openpose/concat_stage7 -s12

(I've attached .pb text representation of the graph as well as checkpoint at https://drive.google.com/file/d/12W4uiGBHmKjMG_O5hPd_a9vmS0asB22U/view?usp=sharing)

input is:

node {
      name: "image"
      op: "Placeholder"
      attr {
        key: "dtype"
        value {
          type: DT_FLOAT
        }
      }
      attr {
        key: "shape"
        value {
          shape {
            dim {
              size: 1
            }
            dim {
              size: 432
            }
            dim {
              size: 368
            }
            dim {
              size: 3
            }
          }
        }
      }
    }

The compile process starts well, but on one stage it gives the error that it can not be able to find node named 'Openpose/MConv_Stage1_L1_1_pointwise/Relu':
mvNCCompile v02.00, Copyright @ Movidius Ltd 2016

/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/ops.py:766: DeprecationWarning: builtin type EagerTensor has no __module__ attribute
  EagerTensor = c_api.TFE_Py_InitEagerTensor(_EagerTensorBase)
/usr/local/lib/python3.5/dist-packages/tensorflow/python/util/tf_inspect.py:45: DeprecationWarning: inspect.getargspec() is deprecated, use inspect.signature() instead
  if d.decorator_argspec is not None), _inspect.getargspec(target))
Fusing depthconv and conv in MobilenetV1/Conv2d_1_depthwise/depthwise and MobilenetV1/Conv2d_1_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_2_depthwise/depthwise and MobilenetV1/Conv2d_2_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_3_depthwise/depthwise and MobilenetV1/Conv2d_3_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_4_depthwise/depthwise and MobilenetV1/Conv2d_4_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_5_depthwise/depthwise and MobilenetV1/Conv2d_5_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_6_depthwise/depthwise and MobilenetV1/Conv2d_6_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_7_depthwise/depthwise and MobilenetV1/Conv2d_7_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_8_depthwise/depthwise and MobilenetV1/Conv2d_8_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_9_depthwise/depthwise and MobilenetV1/Conv2d_9_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_10_depthwise/depthwise and MobilenetV1/Conv2d_10_pointwise/Conv2D
Fusing depthconv and conv in MobilenetV1/Conv2d_11_depthwise/depthwise and MobilenetV1/Conv2d_11_pointwise/Conv2D
Fusing depthconv and conv in Openpose/MConv_Stage1_L1_1_depthwise/depthwise and Openpose/MConv_Stage1_L1_1_pointwise/Conv2D
[Error 17] Toolkit Error: Internal Error: Could not build graph. Missing link: Openpose/MConv_Stage1_L1_1_pointwise/Relu

But if you take a look at graph.pb you can see the definition of this node:

node {
  name: "Openpose/MConv_Stage1_L1_1_pointwise/Relu"
  op: "Relu"
  input: "Openpose/MConv_Stage1_L1_1_pointwise/BatchNorm/FusedBatchNorm"
  attr {
    key: "T"
    value {
      type: DT_FLOAT
    }
  }
}

ane the only reference to it is:

node {
  name: "Openpose/MConv_Stage1_L1_2_depthwise/depthwise"
  op: "DepthwiseConv2dNative"
  input: "Openpose/MConv_Stage1_L1_1_pointwise/Relu"
  input: "Openpose/MConv_Stage1_L1_2_depthwise/depthwise_weights/read"
  attr {
    key: "T"
    value {
      type: DT_FLOAT
    }
  }
  attr {
    key: "data_format"
    value {
      s: "NHWC"
    }
  }
  attr {
    key: "dilations"
    value {
      list {
        i: 1
        i: 1
        i: 1
        i: 1
      }
    }
  }
  attr {
    key: "padding"
    value {
      s: "SAME"
    }
  }
  attr {
    key: "strides"
    value {
      list {
        i: 1
        i: 1
        i: 1
        i: 1
      }
    }
  }
}

So is it a consequence of some inner node renaming or aliasing?
How can I debug to find out why it can not find existing node by name?

Thank you in advance for your help!

Comments

  • 10 Comments sorted by Votes Date Added
  • I've attached imgs of the situation

  • @jokilokis I just want to let you know that I was able to reproduce your issue. I don't see anything obviously wrong so far.

  • Thank you Tome!
    Can I do something to clarify the problem for your team (simplify the example for example) ?

    Is there a chance that it will be fixed in the future releases?

    Thank you!

  • update:
    I've set explicit = True in TensorFlowParser.py after
    elif (node.type == "Concat" or node.type == "ConcatV2") and not node.inputs[0].dtype.is_integer:
    (it was error related to ConcatV2)
    and the error is gone (IDK if it's correct compilation) but I got new compile errors, I'll post here after some trials

  • Any update on this issue? I have met the same problem.

  • @hzc @jokilokis I don't have any updates on this issue yet.

  • Is this issue solved now?

  • I just managed to compile the tf-openpose mobilenet_tiny model for movidius using the ncsdk v2.0.
    I had to fix two bugs in the ncsdk in order to succeed. The two main points for improvement of ncsdk (specificaly the mvNCCompile.py) are:
    - when checking if need to apply image size parameter depending on the input tensor shape being not defined, include the case when it's shape has been defined with values -1, -1 for the input tensor height and width dimensions. (TensorFlowParser.py, parse_tensor, "if shape.dims is None:")
    - when checking if a NetworkStage instance to attach has multiple inputs, check if the first element of top is longer than one instead of checking if top has more than one elements (in the Network.py, attach, "elif len(stage.top) > 1:" -> "elif len(stage.top[0]) > 1:")

    With those two fixes, the model successfully compiles.

  • I already found the problem with "shape.dims is None" myself (I beleive), but I'm stuck with this same issue (trying to make idoonet's mobilenet_thin openpose on mvnc)...
    Please @aharon.haravon could you explain a little more the solution, o maybe share your new modified version of the code?

    Thanks in advance

Sign In or Register to comment.