我使用将 onnx 模型转换为 IR
python3 mo_onnx.py --input_model SSD_nms.onnx --input inputs,top_k_per_class,nms_iou,nms_score --input_shape [1,3,224,224],[1],[1],[1]
这一步工作正常,但是当我尝试加载网络时,它给了我以下错误。
ie = IECore()
net = ie.read_network(model=model_path, weights=weights_path)
print (net.layers)
File "ie_api.pyx", line 1170, in openvino.inference_engine.ie_api.IENetwork.layers.__get__ ValueError: get_shape was called on a descriptor::Tensor with dynamic shape
我能够成功运行相同的模型减去最后一个 NMS 层。不知道为什么这会失败。在 netron 上查看 IR xml 文件并没有显示任何内容。
导致麻烦的整个层描述:
<layer id="351" name="selected_indices" type="NonMaxSuppression" version="opset1">
<data box_encoding="center" sort_result_descending="0"/>
<input>
<port id="0">
<dim>1</dim>
<dim>10000</dim>
<dim>4</dim>
</port>
<port id="1">
<dim>1</dim>
<dim>2</dim>
<dim>10000</dim>
</port>
<port id="2"/>
<port id="3"/>
<port id="4"/>
</input>
<output>
<port id="5" precision="I64">
<dim>10000</dim>
<dim>3</dim>
</port>
</output>
</layer>
从 IR 中移除输出层会使事情正常工作。