summaryrefslogtreecommitdiff
path: root/libavfilter/dnn
diff options
context:
space:
mode:
authorWenbin Chen <wenbin.chen@intel.com>2023-12-12 10:33:32 +0800
committerGuo Yejun <yejun.guo@intel.com>2023-12-16 21:50:37 +0800
commitda02836b9d204ca002d973ef7b1e6f60a2316cb1 (patch)
tree06d6ef515f417ecd0c9c7527b64fc4a01776111a /libavfilter/dnn
parent22652b576c2a0670d341648c68ca469ebe08f1a1 (diff)
libavfilter/vf_dnn_detect: Add input pad
Add input pad to get model input resolution. Detection models always have fixed input size. And the output coordinators are based on the input resolution, so we need to get input size to map coordinators to our real output frames. Signed-off-by: Wenbin Chen <wenbin.chen@intel.com> Reviewed-by: Guo Yejun <yejun.guo@intel.com>
Diffstat (limited to 'libavfilter/dnn')
-rw-r--r--libavfilter/dnn/dnn_backend_openvino.c24
1 files changed, 18 insertions, 6 deletions
diff --git a/libavfilter/dnn/dnn_backend_openvino.c b/libavfilter/dnn/dnn_backend_openvino.c
index 089e028818..671a995c70 100644
--- a/libavfilter/dnn/dnn_backend_openvino.c
+++ b/libavfilter/dnn/dnn_backend_openvino.c
@@ -1073,9 +1073,15 @@ static int get_input_ov(void *model, DNNData *input, const char *input_name)
return AVERROR(ENOSYS);
}
- input->channels = dims[1];
- input->height = input_resizable ? -1 : dims[2];
- input->width = input_resizable ? -1 : dims[3];
+ if (dims[1] <= 3) { // NCHW
+ input->channels = dims[1];
+ input->height = input_resizable ? -1 : dims[2];
+ input->width = input_resizable ? -1 : dims[3];
+ } else { // NHWC
+ input->height = input_resizable ? -1 : dims[1];
+ input->width = input_resizable ? -1 : dims[2];
+ input->channels = dims[3];
+ }
input->dt = precision_to_datatype(precision);
return 0;
@@ -1105,9 +1111,15 @@ static int get_input_ov(void *model, DNNData *input, const char *input_name)
return DNN_GENERIC_ERROR;
}
- input->channels = dims.dims[1];
- input->height = input_resizable ? -1 : dims.dims[2];
- input->width = input_resizable ? -1 : dims.dims[3];
+ if (dims[1] <= 3) { // NCHW
+ input->channels = dims[1];
+ input->height = input_resizable ? -1 : dims[2];
+ input->width = input_resizable ? -1 : dims[3];
+ } else { // NHWC
+ input->height = input_resizable ? -1 : dims[1];
+ input->width = input_resizable ? -1 : dims[2];
+ input->channels = dims[3];
+ }
input->dt = precision_to_datatype(precision);
return 0;
}