OpenVINO API 2.0 changed how images are preprocessed.
Documentation describes an overload used to construct a region of interest tensor from another tensor.
Tensor(const Tensor& other, const Coordinate& begin, const Coordinate& end)
I found a brief example but did not find it clear enough to translate my use case.
/** input_tensor points to input of a previous network and
cropROI contains coordinates of output bounding box **/
ov::Tensor input_tensor(ov::element::f32, ov::Shape({1, 3, 20, 20}));
ov::Coordinate begin({0, 0, 0, 0});
ov::Coordinate end({1, 2, 3, 3});
//...
My goal is to take an image (cv::Mat) and bounding box (cv::Rect) and execute inference on the ROI without having to copy the ROI memory before calling set_input_tensor (replacement for SetBlob). I have not been able to find sufficient examples or documentation for how to achieve this. I am currently unsure how to translate a cv::Rect into ov::Coordinates.
Previously I was able to do this with API 1.0 using the following example:
const InferenceEngine::ROI roi(0, bounding_box.x, bounding_box.y, bounding_box.width, bounding_box.height);
const InferenceEngine::TensorDesc tensor_desc(InferenceEngine::Precision::U8, { 1, channels, image_height, image_width }, InferenceEngine::Layout::NHWC);
const InferenceEngine::TensorDesc roi_tensor_desc = InferenceEngine::make_roi_desc(tensor_desc, roi, true);
const InferenceEngine::Blob::Ptr image_blob = InferenceEngine::make_shared_blob<uint8_t>(roi_tensor_desc, image.data);
request.SetBlob(input_name, image_blob);
OpenVINO API 2.0 changed layout work for models with
NHWC. If your model has input{ 1, channels, image_height, image_width }withNHWClayout, after conversion to IR with cmd'--layout=input_1(NHWC)' '--input_shape=[1, image_height, image_width, channels]', you have the input shape[1, image_height, image_width, channels]. Thus, you need to make ROI relative to this size.For example, to make ROI tensor, you need:
ov::Coordinateis class to represent coordinates on shapes. In this case these coordinates are of the bounding box.