Intel® Distribution of OpenVINO™ Toolkit
Community assistance about the Intel® Distribution of OpenVINO™ toolkit, OpenCV, and all aspects of computer vision-related on Intel® platforms.
6392 Discussions

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

idata
Employee
1,069 Views

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!

0 Kudos
10 Replies
idata
Employee
803 Views

I've attached imgs of the situation

 

0 Kudos
idata
Employee
803 Views

@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.

0 Kudos
idata
Employee
803 Views

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!

0 Kudos
idata
Employee
803 Views

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
0 Kudos
idata
Employee
803 Views

@jokilokis how did you solve?

0 Kudos
idata
Employee
803 Views

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

0 Kudos
idata
Employee
803 Views

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

0 Kudos
idata
Employee
803 Views

Is this issue solved now?

0 Kudos
idata
Employee
803 Views

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.

0 Kudos
idata
Employee
803 Views

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

0 Kudos
Reply