我有一个用于目标检测的自定义的更快的R-CNN网络,其中我定义了一些自定义的运算符:nms和roi_pooling,它们被编译成.so文件。包装了.so文件,它可以被tensorflow框架调用。
在我将tensorflow冻结的图形转换为.pb文件后,我使用以下代码:
trt_graph = trt.create_inference_graph(graph_def, OUTPUT_NAMES,
max_batch_size=cfg.test_batch_per_gpu,
max_workspace_size_bytes=5000000000,
precision_mode="FP16") # Get optimized graph但是它报告了很多警告和错误:
2018-04-25 23:45:54.451261: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:0 due to: "Invalid argument: Failed to create Input layer" SKIPPING......( 30 nodes)
2018-04-25 23:45:54.452898: E tensorflow/contrib/tensorrt/log/trt_logger.cc:38] DefaultLogger Parameter check failed at: ../builder/Network.cpp::addInput::377, condition: isValidDims(dims)
2018-04-25 23:45:54.452914: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:1 due to: "Invalid argument: Failed to create Input layer" SKIPPING......( 23 nodes)
2018-04-25 23:45:54.455730: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:2 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.457270: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:3 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp_1" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.458798: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:4 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp_5" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.460327: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:5 due to: "Unimplemented: Require 4 dimensional input. Got 1 resnet_v1_50_5/strided_slice_60" SKIPPING......( 6 nodes)
2018-04-25 23:45:54.461882: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:6 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp_6" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.463425: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:7 due to: "Unimplemented: Require 4 dimensional input. Got 1 resnet_v1_50_5/strided_slice_6" SKIPPING......( 6 nodes)
2018-04-25 23:45:54.464976: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:8 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/ones_2" SKIPPING......( 4 nodes)
2018-04-25 23:45:54.466543: E tensorflow/contrib/tensorrt/log/trt_logger.cc:38] DefaultLogger Parameter check failed at: ../builder/Network.cpp::addInput::377, condition: isValidDims(dims)
2018-04-25 23:45:54.466571: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:9 due to: "Invalid argument: Failed to create Input layer" SKIPPING......( 33 nodes)
2018-04-25 23:45:54.468105: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:10 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/ones_1" SKIPPING......( 3 nodes)
2018-04-25 23:45:54.469726: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:11 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/Exp_7" SKIPPING......( 9 nodes)
2018-04-25 23:45:54.471356: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:12 due to: "Unimplemented: Require 4 dimensional input. Got 2 resnet_v1_50_5/ones_3" SKIPPING......( 4 nodes)
2018-04-25 23:45:54.473207: E tensorflow/contrib/tensorrt/log/trt_logger.cc:38] DefaultLogger Parameter check failed at: ../builder/Network.cpp::addInput::377, condition: isValidDims(dims)
2018-04-25 23:45:54.473259: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:13 due to: "Invalid argument: Failed to create Input layer" SKIPPING......( 380 nodes)
2018-04-25 23:45:54.475765: W tensorflow/contrib/tensorrt/convert/convert_graph.cc:418] subgraph conversion error for subgraph_index:14 due to: "Unimplemented: Require 4 dimensional input. Got 1 resnet_v1_50_5/strided_slice_8" SKIPPING......( 6 nodes)
...这个错误的原因是什么?如何解决这个问题?谢谢。
发布于 2018-10-01 18:45:11
这可能是因为当调用TensorRT来优化图形时,它要求所有张量的大小都是已知的。一种可能的修复方法是为更快的rcnn模型指定固定的输入图像张量大小,例如,对模型配置文件进行以下修改。
原文:
faster_rcnn {
num_classes: 90
image_resizer {
keep_aspect_ratio_resizer {
min_dimension: 600
max_dimension: 1024
}
}
......修改后:
faster_rcnn {
num_classes: 90
image_resizer {
fixed_shape_resizer {
height: 600
width: 1024
}
}
......参考:https://github.com/NVIDIA-Jetson/tf_trt_models/issues/6#issuecomment-423098067
发布于 2018-06-19 05:44:16
当您的输入节点未正确注册时会发生这种情况,请确保您使用的是正确的输入节点名称,您可以从会话中将tf图中的节点名称打印为print([n.name for n in tf.get_default_graph().as_graph_def().node])。有关详细信息,请参阅nvidia开发人员论坛,https://devtalk.nvidia.com/default/topic/1032314/?comment=5251907
https://stackoverflow.com/questions/50026420
复制相似问题