diff mbox series

[FFmpeg-devel,2/2] dnn/openvino: add input/output name info

Message ID 20200909015219.5690-2-ting.fu@intel.com
State Accepted
Commit dc16aeb3904654c95d613d6277c27a9461ef1991
Headers show
Series [FFmpeg-devel,1/2] dnn/openvino: support run inference via GPU | expand

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Fu, Ting Sept. 9, 2020, 1:52 a.m. UTC
show all input/output names when the input or output name not correct

Signed-off-by: Ting Fu <ting.fu@intel.com>
---
 libavfilter/dnn/dnn_backend_openvino.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

Comments

Guo, Yejun Sept. 12, 2020, 8:05 a.m. UTC | #1
> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of Ting Fu
> Sent: 2020年9月9日 9:52
> To: ffmpeg-devel@ffmpeg.org
> Subject: [FFmpeg-devel] [PATCH 2/2] dnn/openvino: add input/output name info
> 
> show all input/output names when the input or output name not correct
> 
> Signed-off-by: Ting Fu <ting.fu@intel.com>
> ---
>  libavfilter/dnn/dnn_backend_openvino.c | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/libavfilter/dnn/dnn_backend_openvino.c
> b/libavfilter/dnn/dnn_backend_openvino.c
> index 2f0998046a..e5842906d1 100644

LGTM, will push soon, thanks.
diff mbox series

Patch

diff --git a/libavfilter/dnn/dnn_backend_openvino.c b/libavfilter/dnn/dnn_backend_openvino.c
index 2f0998046a..e5842906d1 100644
--- a/libavfilter/dnn/dnn_backend_openvino.c
+++ b/libavfilter/dnn/dnn_backend_openvino.c
@@ -79,6 +79,7 @@  static DNNReturnType get_input_ov(void *model, DNNData *input, const char *input
     OVModel *ov_model = (OVModel *)model;
     OVContext *ctx = &ov_model->ctx;
     char *model_input_name = NULL;
+    char *all_input_names = NULL;
     IEStatusCode status;
     size_t model_input_count = 0;
     dimensions_t dims;
@@ -118,12 +119,15 @@  static DNNReturnType get_input_ov(void *model, DNNData *input, const char *input
             input->width    = dims.dims[3];
             input->dt       = precision_to_datatype(precision);
             return DNN_SUCCESS;
+        } else {
+            //incorrect input name
+            APPEND_STRING(all_input_names, model_input_name)
         }
 
         ie_network_name_free(&model_input_name);
     }
 
-    av_log(ctx, AV_LOG_ERROR, "Could not find \"%s\" in model\n", model_input_name);
+    av_log(ctx, AV_LOG_ERROR, "Could not find \"%s\" in model, all input(s) are: \"%s\"\n", input_name, all_input_names);
     return DNN_ERROR;
 }
 
@@ -246,12 +250,15 @@  err:
 
 DNNReturnType ff_dnn_execute_model_ov(const DNNModel *model, DNNData *outputs, const char **output_names, uint32_t nb_output)
 {
+    char *model_output_name = NULL;
+    char *all_output_names = NULL;
     dimensions_t dims;
     precision_e precision;
     ie_blob_buffer_t blob_buffer;
     OVModel *ov_model = (OVModel *)model->model;
     OVContext *ctx = &ov_model->ctx;
     IEStatusCode status = ie_infer_request_infer(ov_model->infer_request);
+    size_t model_output_count = 0;
     if (status != OK) {
         av_log(ctx, AV_LOG_ERROR, "Failed to start synchronous model inference\n");
         return DNN_ERROR;
@@ -262,7 +269,16 @@  DNNReturnType ff_dnn_execute_model_ov(const DNNModel *model, DNNData *outputs, c
         ie_blob_t *output_blob = NULL;
         status = ie_infer_request_get_blob(ov_model->infer_request, output_name, &output_blob);
         if (status != OK) {
+            //incorrect output name
             av_log(ctx, AV_LOG_ERROR, "Failed to get model output data\n");
+            status = ie_network_get_outputs_number(ov_model->network, &model_output_count);
+            for (size_t i = 0; i < model_output_count; i++) {
+                status = ie_network_get_output_name(ov_model->network, i, &model_output_name);
+                APPEND_STRING(all_output_names, model_output_name)
+            }
+            av_log(ctx, AV_LOG_ERROR,
+                   "output \"%s\" may not correct, all output(s) are: \"%s\"\n",
+                   output_name, all_output_names);
             return DNN_ERROR;
         }