class ov::preprocess::PreProcessSteps

Overview

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. More…

#include <preprocess_steps.hpp>

class PreProcessSteps
{
public:
    // typedefs

    typedef std::function<Output<Node>(const Output<Node>&node)> CustomPreprocessOp;

    // methods

    PreProcessSteps& convert_element_type(const ov::element::Type& type = {});
    PreProcessSteps& convert_color(const ov::preprocess::ColorFormat& dst_format);
    PreProcessSteps& scale(float value);
    PreProcessSteps& scale(const std::vector<float>& values);
    PreProcessSteps& mean(float value);
    PreProcessSteps& mean(const std::vector<float>& values);
    PreProcessSteps& custom(const CustomPreprocessOp& preprocess_cb);

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

    PreProcessSteps& resize(ResizeAlgorithm alg);

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

    PreProcessSteps& convert_layout(const Layout& dst_layout = {});
    PreProcessSteps& convert_layout(const std::vector<uint64_t>& dims);
    PreProcessSteps& reverse_channels();
};

Detailed Documentation

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

Typedefs

typedef std::function<Output<Node>(const Output<Node>&node)> CustomPreprocessOp

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.

Parameters:

node

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

Returns:

New node after applying custom preprocessing operation

Methods

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& 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.