Class ov::preprocess::PostProcessSteps#

class PostProcessSteps#

Postprocessing steps. Each step typically intends adding of some operation to output parameter User application can specify sequence of postprocessing steps in a builder-like manner.

auto proc = PrePostProcessor(function);
proc.output().postprocess().convert_element_type(element::u8);
function = proc.build();

Public Types

using CustomPostprocessOp = std::function<ov::Output<ov::Node>(const ov::Output<ov::Node> &node)>#

Signature for custom postprocessing operation. Custom postprocessing operation takes one output node and produces one output node. For more advanced cases, client’s code can use transformation passes over ov::Model directly.

Param node:

Output node for custom post-processing operation

Return:

New node after applying custom post-processing operation

Public Functions

~PostProcessSteps()#

Default destructor.

PostProcessSteps &convert_element_type(const ov::element::Type &type = {})#

Add convert element type post-process operation.

Parameters:

type – Desired type of output. If not specified, type will be obtained from ‘tensor’ output information

Returns:

Reference to ‘this’ to allow chaining with other calls in a builder-like manner

PostProcessSteps &convert_layout(const Layout &dst_layout = {})#

Add ‘convert layout’ operation to specified layout.

Adds appropriate ‘transpose’ operation between model layout and user’s desired layout. Current implementation requires source and destination layout to have same number of dimensions

Example: when model data has output in ‘NCHW’ layout ([1, 3, 224, 224]) but user needs interleaved output image (‘NHWC’, [1, 224, 224, 3]). Post-processing may look like this:

auto proc = PrePostProcessor(function);
proc.output().model(OutputTensorInfo().set_layout("NCHW"); // model output is NCHW
proc.output().postprocess().convert_layout("NHWC"); // User needs output as NHWC
Parameters:

dst_layout – New layout after conversion. If not specified - destination layout is obtained from appropriate tensor output properties.

Returns:

Reference to ‘this’ to allow chaining with other calls in a builder-like manner.

PostProcessSteps &convert_layout(const std::vector<uint64_t> &dims)#

Add convert layout operation by direct specification of transposed dimensions.

Example: model produces output with shape [1, 3, 480, 640] and user’s needs interleaved output image [1, 480, 640, 3]. Post-processing may look like this:

 auto proc = PrePostProcessor(function);
proc.output().postprocess().convert_layout({0, 2, 3, 1});
function = proc.build();
Parameters:

dims – Dimensions array specifying places for new axis. If not empty, array size (N) must match to input shape rank. Array values shall contain all values from 0 to N-1. If empty, no actual conversion will be added.

Returns:

Reference to ‘this’ to allow chaining with other calls in a builder-like manner.

PostProcessSteps &custom(const CustomPostprocessOp &postprocess_cb)#

Add custom post-process operation. Client application can specify callback function for custom action.

Parameters:

postprocess_cb – Client’s custom postprocess operation.

Returns:

Reference to ‘this’ to allow chaining with other calls in a builder-like manner

PostProcessSteps &convert_color(const ov::preprocess::ColorFormat &dst_format)#

Converts color format for user’s output tensor. Requires destinantion color format to be specified by OutputTensorInfo::set_color_format.

Parameters:

dst_format – Destination color format of input image

Returns:

Reference to ‘this’ to allow chaining with other calls in a builder-like manner