Class ov::preprocess::PreProcessSteps#

class PreProcessSteps#

Preprocessing steps. Each step typically intends adding of some operation to input parameter User application can specify sequence of preprocessing steps in a builder-like manner.

auto proc = PrePostProcessor(function);
proc.input().preprocess()
                       .mean(0.2f)     // Subtract 0.2 from each element
                       .scale(2.3f));   // then divide each element to 2.3

Public Types

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

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

Param node:

Input node for custom preprocessing operation (output of previous preprocessing operation)

Return:

New node after applying custom preprocessing operation

Public Functions

~PreProcessSteps()#

Default destructor.

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

Add convert element type preprocess operation.

Parameters:

type – Desired type of input.

Returns:

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

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

Converts color format for user’s input tensor. Requires source color format to be specified by InputTensorInfo::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

PreProcessSteps &scale(float value)#

Add scale preprocess operation Divide each element of input by specified value.

Parameters:

value – Scaling value.

Returns:

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

PreProcessSteps &scale(const std::vector<float> &values)#

Add scale preprocess operation by specified array of scale values for each channel.

Parameters:

values – Scaling values. Layout runtime info with channels dimension must be specified for input tensor

Returns:

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

PreProcessSteps &mean(float value)#

Add mean preprocess operation Subtract specified value from each element of input.

Parameters:

value – Value to subtract from each element.

Returns:

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

PreProcessSteps &mean(const std::vector<float> &values)#

Add mean preprocess operation by specified array of mean values for each channel.

Parameters:

values – Mean values. Layout runtime info with channels dimension must be specified for input tensor

Returns:

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

PreProcessSteps &pad(const std::vector<int> &pads_begin, const std::vector<int> &pads_end, float value, PaddingMode mode)#

Add pad preprocess operation Extends an input tensor on edges with constants.

Parameters:
  • pads_begin – Number of padding elements to add at the beginning of each axis.

  • pads_end – Number of padding elements to add at the end of each axis.

  • value – Value to be populated in the padded area

Returns:

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

PreProcessSteps &pad(const std::vector<int> &pads_begin, const std::vector<int> &pads_end, const std::vector<float> &values, PaddingMode mode)#

Add pad preprocess operation Extends an input tensor on edges with constants.

Parameters:
  • pads_begin – Number of padding elements to add at the beginning of each axis.

  • pads_end – Number of padding elements to add at the end of each axis.

  • values – Values to be populated in the padded area

Returns:

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

PreProcessSteps &custom(const CustomPreprocessOp &preprocess_cb)#

Add custom preprocess operation Client application can specify callback function for custom action.

Parameters:

preprocess_cb – Client’s custom preprocess operation.

Returns:

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

PreProcessSteps &resize(ResizeAlgorithm alg, size_t dst_height, size_t dst_width)#

Add resize operation to known dimensions - Lvalue version.

Parameters:
  • alg – Resize algorithm.

  • dst_height – Desired height of resized image.

  • dst_width – Desired width of resized image.

Returns:

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

PreProcessSteps &resize(ResizeAlgorithm alg)#

Add resize operation to model’s dimensions.

Parameters:

alg – Resize algorithm.

Returns:

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

PreProcessSteps &crop(const std::vector<int> &begin, const std::vector<int> &end)#

Crop input tensor between begin and end coordinates. Under the hood, inserts opset8::Slice operation to execution graph. It is recommended to use to together with ov::preprocess::InputTensorInfo::set_shape to set original input shape before cropping.

Parameters:
  • begin – Begin indexes for input tensor cropping. Negative values represent counting elements from the end of input tensor

  • end – End indexes for input tensor cropping. End indexes are exclusive, which means values including end edge are not included in the output slice. Negative values represent counting elements from the end of input tensor

Returns:

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

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

Add ‘convert layout’ operation to specified layout.

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

Example: when user data has ‘NHWC’ layout (example is RGB image, [1, 224, 224, 3]) but model expects planar input image (‘NCHW’, [1, 3, 224, 224]). Preprocessing may look like this:

auto proc = PrePostProcessor(model);
proc.input().tensor().set_layout("NHWC"); // User data is NHWC
proc.input().preprocess().convert_layout("NCHW")) // model expects input as NCHW
Parameters:

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

Returns:

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

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

Add convert layout operation by direct specification of transposed dimensions.

Example: when user data has input RGB image {1x480x640x3} but model expects planar input image (‘NCHW’, [1, 3, 480, 640]). Preprocessing may look like this:

auto proc = PrePostProcessor(function);
proc.input().preprocess().convert_layout({0, 3, 1, 2});
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.

PreProcessSteps &reverse_channels()#

Reverse channels operation.

Adds appropriate operation which reverses channels layout. Operation requires layout having ‘C’ dimension Operation convert_color (RGB<->BGR) does reversing of channels also, but only for NHWC layout

Example: when user data has ‘NCHW’ layout (example is [1, 3, 224, 224] RGB order) but model expects BGR planes order. Preprocessing may look like this:

auto proc = PrePostProcessor(function);
proc.input().tensor().set_layout("NCHW"); // User data is NCHW
proc.input().preprocess().reverse_channels();
Returns:

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