View Source Evision.DNN (Evision v1.0.0-rc.0)

Summary

Types

t()

Type that represents an DNN struct.

Functions

Creates 4-dimensional blob from image. Optionally resizes and crops @p image from center, subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels.

Creates 4-dimensional blob from image. Optionally resizes and crops @p image from center, subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels.

Creates 4-dimensional blob from series of images. Optionally resizes and crops @p images from center, subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels.

Creates 4-dimensional blob from series of images. Optionally resizes and crops @p images from center, subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels.

blobFromImagesWithParams

blobFromImagesWithParams

blobFromImageWithParams

blobFromImageWithParams

getAvailableTargets

Returns Inference Engine internal backend API.

Returns Inference Engine CPU type.

Returns Inference Engine VPU type.

Parse a 4D blob and output the images it contains as 2D arrays through a simpler data structure (std::vector<cv::Mat>).

Parse a 4D blob and output the images it contains as 2D arrays through a simpler data structure (std::vector<cv::Mat>).

Performs non maximum suppression given boxes and corresponding scores.

Performs non maximum suppression given boxes and corresponding scores.

Performs batched non maximum suppression on given boxes and corresponding scores across different classes.

Performs batched non maximum suppression on given boxes and corresponding scores across different classes.

Read deep learning network represented in one of the supported formats.

Variant 1:

Read deep learning network represented in one of the supported formats.

Read deep learning network represented in one of the supported formats.

Load a network from Intel's Model Optimizer intermediate representation.

Load a network from Intel's Model Optimizer intermediate representation.

Load a network from Intel's Model Optimizer intermediate representation.

Reads a network model <a href="https://onnx.ai/">ONNX</a>.

Reads a network model <a href="https://onnx.ai/">ONNX</a>.

Reads a network model from <a href="https://onnx.ai/">ONNX</a> in-memory buffer.

Reads a network model from <a href="https://onnx.ai/">ONNX</a> in-memory buffer.

Reads a network model stored in <a href="https://www.tensorflow.org/">TensorFlow</a> framework's format.

Reads a network model stored in <a href="https://www.tensorflow.org/">TensorFlow</a> framework's format.

Reads a network model stored in <a href="https://www.tensorflow.org/">TensorFlow</a> framework's format.

Reads a network model stored in <a href="https://www.tensorflow.org/">TensorFlow</a> framework's format.

Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.

Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.

Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.

Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.

Creates blob from .pb file.

Release a HDDL plugin.

Release a Myriad device (binded by OpenCV).

Specify Inference Engine internal backend API.

Performs soft non maximum suppression given boxes and corresponding scores. Reference: https://arxiv.org/abs/1704.04503

Performs soft non maximum suppression given boxes and corresponding scores. Reference: https://arxiv.org/abs/1704.04503

Create a text representation for a binary network stored in protocol buffer format.

Types

@type t() :: %Evision.DNN{ref: reference()}

Type that represents an DNN struct.

  • ref. reference()

    The underlying erlang resource variable.

Functions

Link to this function

blobFromImage(named_args)

View Source
@spec blobFromImage(Keyword.t()) :: any() | {:error, String.t()}
@spec blobFromImage(Evision.Mat.maybe_mat_in()) ::
  Evision.Mat.t() | {:error, String.t()}

Creates 4-dimensional blob from image. Optionally resizes and crops @p image from center, subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels.

Positional Arguments
  • image: Evision.Mat.

    input image (with 1-, 3- or 4-channels).

Keyword Arguments
  • scalefactor: double.

    multiplier for @p images values.

  • size: Size.

    spatial size for output image

  • mean: Evision.scalar().

    scalar with mean values which are subtracted from channels. Values are intended to be in (mean-R, mean-G, mean-B) order if @p image has BGR ordering and @p swapRB is true.

  • swapRB: bool.

    flag which indicates that swap first and last channels in 3-channel image is necessary.

  • crop: bool.

    flag which indicates whether image will be cropped after resize or not

  • ddepth: integer().

    Depth of output blob. Choose CV_32F or CV_8U.

Return
  • retval: Evision.Mat.t()

@details if @p crop is true, input image is resized so one side after resize is equal to corresponding dimension in @p size and another one is equal or larger. Then, crop from the center is performed. If @p crop is false, direct resize without cropping and preserving aspect ratio is performed. @returns 4-dimensional Mat with NCHW dimensions order. Note: The order and usage of scalefactor and mean are (input - mean) * scalefactor.

Python prototype (for reference only):

blobFromImage(image[, scalefactor[, size[, mean[, swapRB[, crop[, ddepth]]]]]]) -> retval
Link to this function

blobFromImage(image, opts)

View Source
@spec blobFromImage(
  Evision.Mat.maybe_mat_in(),
  [
    crop: term(),
    ddepth: term(),
    mean: term(),
    scalefactor: term(),
    size: term(),
    swapRB: term()
  ]
  | nil
) :: Evision.Mat.t() | {:error, String.t()}

Creates 4-dimensional blob from image. Optionally resizes and crops @p image from center, subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels.

Positional Arguments
  • image: Evision.Mat.

    input image (with 1-, 3- or 4-channels).

Keyword Arguments
  • scalefactor: double.

    multiplier for @p images values.

  • size: Size.

    spatial size for output image

  • mean: Evision.scalar().

    scalar with mean values which are subtracted from channels. Values are intended to be in (mean-R, mean-G, mean-B) order if @p image has BGR ordering and @p swapRB is true.

  • swapRB: bool.

    flag which indicates that swap first and last channels in 3-channel image is necessary.

  • crop: bool.

    flag which indicates whether image will be cropped after resize or not

  • ddepth: integer().

    Depth of output blob. Choose CV_32F or CV_8U.

Return
  • retval: Evision.Mat.t()

@details if @p crop is true, input image is resized so one side after resize is equal to corresponding dimension in @p size and another one is equal or larger. Then, crop from the center is performed. If @p crop is false, direct resize without cropping and preserving aspect ratio is performed. @returns 4-dimensional Mat with NCHW dimensions order. Note: The order and usage of scalefactor and mean are (input - mean) * scalefactor.

Python prototype (for reference only):

blobFromImage(image[, scalefactor[, size[, mean[, swapRB[, crop[, ddepth]]]]]]) -> retval
Link to this function

blobFromImages(named_args)

View Source
@spec blobFromImages(Keyword.t()) :: any() | {:error, String.t()}
@spec blobFromImages([Evision.Mat.maybe_mat_in()]) ::
  Evision.Mat.t() | {:error, String.t()}

Creates 4-dimensional blob from series of images. Optionally resizes and crops @p images from center, subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels.

Positional Arguments
  • images: [Evision.Mat].

    input images (all with 1-, 3- or 4-channels).

Keyword Arguments
  • scalefactor: double.

    multiplier for @p images values.

  • size: Size.

    spatial size for output image

  • mean: Evision.scalar().

    scalar with mean values which are subtracted from channels. Values are intended to be in (mean-R, mean-G, mean-B) order if @p image has BGR ordering and @p swapRB is true.

  • swapRB: bool.

    flag which indicates that swap first and last channels in 3-channel image is necessary.

  • crop: bool.

    flag which indicates whether image will be cropped after resize or not

  • ddepth: integer().

    Depth of output blob. Choose CV_32F or CV_8U.

Return
  • retval: Evision.Mat.t()

@details if @p crop is true, input image is resized so one side after resize is equal to corresponding dimension in @p size and another one is equal or larger. Then, crop from the center is performed. If @p crop is false, direct resize without cropping and preserving aspect ratio is performed. @returns 4-dimensional Mat with NCHW dimensions order. Note: The order and usage of scalefactor and mean are (input - mean) * scalefactor.

Python prototype (for reference only):

blobFromImages(images[, scalefactor[, size[, mean[, swapRB[, crop[, ddepth]]]]]]) -> retval
Link to this function

blobFromImages(images, opts)

View Source
@spec blobFromImages(
  [Evision.Mat.maybe_mat_in()],
  [
    crop: term(),
    ddepth: term(),
    mean: term(),
    scalefactor: term(),
    size: term(),
    swapRB: term()
  ]
  | nil
) :: Evision.Mat.t() | {:error, String.t()}

Creates 4-dimensional blob from series of images. Optionally resizes and crops @p images from center, subtract @p mean values, scales values by @p scalefactor, swap Blue and Red channels.

Positional Arguments
  • images: [Evision.Mat].

    input images (all with 1-, 3- or 4-channels).

Keyword Arguments
  • scalefactor: double.

    multiplier for @p images values.

  • size: Size.

    spatial size for output image

  • mean: Evision.scalar().

    scalar with mean values which are subtracted from channels. Values are intended to be in (mean-R, mean-G, mean-B) order if @p image has BGR ordering and @p swapRB is true.

  • swapRB: bool.

    flag which indicates that swap first and last channels in 3-channel image is necessary.

  • crop: bool.

    flag which indicates whether image will be cropped after resize or not

  • ddepth: integer().

    Depth of output blob. Choose CV_32F or CV_8U.

Return
  • retval: Evision.Mat.t()

@details if @p crop is true, input image is resized so one side after resize is equal to corresponding dimension in @p size and another one is equal or larger. Then, crop from the center is performed. If @p crop is false, direct resize without cropping and preserving aspect ratio is performed. @returns 4-dimensional Mat with NCHW dimensions order. Note: The order and usage of scalefactor and mean are (input - mean) * scalefactor.

Python prototype (for reference only):

blobFromImages(images[, scalefactor[, size[, mean[, swapRB[, crop[, ddepth]]]]]]) -> retval
Link to this function

blobFromImagesWithParams(named_args)

View Source
@spec blobFromImagesWithParams(Keyword.t()) :: any() | {:error, String.t()}
@spec blobFromImagesWithParams([Evision.Mat.maybe_mat_in()]) ::
  Evision.Mat.t() | {:error, String.t()}

blobFromImagesWithParams

Positional Arguments
  • images: [Evision.Mat]
Keyword Arguments
  • param: Image2BlobParams.
Return
  • blob: Evision.Mat.t().

Has overloading in C++

Python prototype (for reference only):

blobFromImagesWithParams(images[, blob[, param]]) -> blob
Link to this function

blobFromImagesWithParams(images, opts)

View Source
@spec blobFromImagesWithParams([Evision.Mat.maybe_mat_in()], [{:param, term()}] | nil) ::
  Evision.Mat.t() | {:error, String.t()}

blobFromImagesWithParams

Positional Arguments
  • images: [Evision.Mat]
Keyword Arguments
  • param: Image2BlobParams.
Return
  • blob: Evision.Mat.t().

Has overloading in C++

Python prototype (for reference only):

blobFromImagesWithParams(images[, blob[, param]]) -> blob
Link to this function

blobFromImageWithParams(named_args)

View Source
@spec blobFromImageWithParams(Keyword.t()) :: any() | {:error, String.t()}
@spec blobFromImageWithParams(Evision.Mat.maybe_mat_in()) ::
  Evision.Mat.t() | {:error, String.t()}

blobFromImageWithParams

Positional Arguments
Keyword Arguments
  • param: Image2BlobParams.
Return
  • blob: Evision.Mat.t().

Has overloading in C++

Python prototype (for reference only):

blobFromImageWithParams(image[, blob[, param]]) -> blob
Link to this function

blobFromImageWithParams(image, opts)

View Source
@spec blobFromImageWithParams(Evision.Mat.maybe_mat_in(), [{:param, term()}] | nil) ::
  Evision.Mat.t() | {:error, String.t()}

blobFromImageWithParams

Positional Arguments
Keyword Arguments
  • param: Image2BlobParams.
Return
  • blob: Evision.Mat.t().

Has overloading in C++

Python prototype (for reference only):

blobFromImageWithParams(image[, blob[, param]]) -> blob
Link to this function

getAvailableTargets(named_args)

View Source
@spec getAvailableTargets(Keyword.t()) :: any() | {:error, String.t()}
@spec getAvailableTargets(Evision.DNN.Backend.enum()) ::
  [Evision.DNN.Target.enum()] | {:error, String.t()}

getAvailableTargets

Positional Arguments
  • be: dnn_Backend
Return
  • retval: [Target]

Python prototype (for reference only):

getAvailableTargets(be) -> retval
Link to this function

getInferenceEngineBackendType()

View Source
@spec getInferenceEngineBackendType() :: binary() | {:error, String.t()}

Returns Inference Engine internal backend API.

Return

See values of CV_DNN_BACKEND_INFERENCE_ENGINE_* macros. OPENCV_DNN_BACKEND_INFERENCE_ENGINE_TYPE runtime parameter (environment variable) is ignored since 4.6.0. @deprecated

Python prototype (for reference only):

getInferenceEngineBackendType() -> retval
Link to this function

getInferenceEngineBackendType(named_args)

View Source
@spec getInferenceEngineBackendType(Keyword.t()) :: any() | {:error, String.t()}
Link to this function

getInferenceEngineCPUType()

View Source
@spec getInferenceEngineCPUType() :: binary() | {:error, String.t()}

Returns Inference Engine CPU type.

Return

Specify OpenVINO plugin: CPU or ARM.

Python prototype (for reference only):

getInferenceEngineCPUType() -> retval
Link to this function

getInferenceEngineCPUType(named_args)

View Source
@spec getInferenceEngineCPUType(Keyword.t()) :: any() | {:error, String.t()}
Link to this function

getInferenceEngineVPUType()

View Source
@spec getInferenceEngineVPUType() :: binary() | {:error, String.t()}

Returns Inference Engine VPU type.

Return

See values of CV_DNN_INFERENCE_ENGINE_VPU_TYPE_* macros.

Python prototype (for reference only):

getInferenceEngineVPUType() -> retval
Link to this function

getInferenceEngineVPUType(named_args)

View Source
@spec getInferenceEngineVPUType(Keyword.t()) :: any() | {:error, String.t()}
Link to this function

imagesFromBlob(named_args)

View Source
@spec imagesFromBlob(Keyword.t()) :: any() | {:error, String.t()}
@spec imagesFromBlob(Evision.Mat.maybe_mat_in()) ::
  [Evision.Mat.t()] | {:error, String.t()}

Parse a 4D blob and output the images it contains as 2D arrays through a simpler data structure (std::vector<cv::Mat>).

Positional Arguments
  • blob_: Evision.Mat.

    4 dimensional array (images, channels, height, width) in floating point precision (CV_32F) from which you would like to extract the images.

Return
  • images_: [Evision.Mat].

    array of 2D Mat containing the images extracted from the blob in floating point precision (CV_32F). They are non normalized neither mean added. The number of returned images equals the first dimension of the blob (batch size). Every image has a number of channels equals to the second dimension of the blob (depth).

Python prototype (for reference only):

imagesFromBlob(blob_[, images_]) -> images_
Link to this function

imagesFromBlob(blob_, opts)

View Source
@spec imagesFromBlob(Evision.Mat.maybe_mat_in(), [{atom(), term()}, ...] | nil) ::
  [Evision.Mat.t()] | {:error, String.t()}

Parse a 4D blob and output the images it contains as 2D arrays through a simpler data structure (std::vector<cv::Mat>).

Positional Arguments
  • blob_: Evision.Mat.

    4 dimensional array (images, channels, height, width) in floating point precision (CV_32F) from which you would like to extract the images.

Return
  • images_: [Evision.Mat].

    array of 2D Mat containing the images extracted from the blob in floating point precision (CV_32F). They are non normalized neither mean added. The number of returned images equals the first dimension of the blob (batch size). Every image has a number of channels equals to the second dimension of the blob (depth).

Python prototype (for reference only):

imagesFromBlob(blob_[, images_]) -> images_
Link to this function

nmsBoxes(bboxes, scores, score_threshold, nms_threshold)

View Source
@spec nmsBoxes(
  [{number(), number(), number(), number()}] | Evision.Mat.t() | Nx.Tensor.t(),
  [number()],
  number(),
  number()
) :: [integer()] | {:error, String.t()}

Performs non maximum suppression given boxes and corresponding scores.

Positional Arguments
  • bboxes: [Rect2d], Nx.Tensor.t(), Evision.Mat.t()..

    a set of bounding boxes to apply NMS.

  • scores: [float].

    a set of corresponding confidences.

  • score_threshold: float.

    a threshold used to filter boxes by score.

  • nms_threshold: float.

    a threshold used in non maximum suppression.

Keyword Arguments
  • eta: float.

    a coefficient in adaptive threshold formula: $nmsthreshold{i+1}=etacdot nms_threshold_i $.

  • top_k: int.

    if >0, keep at most @p top_k picked indices.

Return
  • indices: [int].

    the kept indices of bboxes after NMS.

Python prototype (for reference only):

NMSBoxes(bboxes, scores, score_threshold, nms_threshold[, eta[, top_k]]) -> indices
Link to this function

nmsBoxes(bboxes, scores, score_threshold, nms_threshold, opts)

View Source
@spec nmsBoxes(
  [{number(), number(), number(), number()}] | Evision.Mat.t() | Nx.Tensor.t(),
  [number()],
  number(),
  number(),
  [eta: term(), top_k: term()] | nil
) :: [integer()] | {:error, String.t()}

Performs non maximum suppression given boxes and corresponding scores.

Positional Arguments
  • bboxes: [Rect2d], Nx.Tensor.t(), Evision.Mat.t().

    a set of bounding boxes to apply NMS.

  • scores: [float].

    a set of corresponding confidences.

  • score_threshold: float.

    a threshold used to filter boxes by score.

  • nms_threshold: float.

    a threshold used in non maximum suppression.

Keyword Arguments
  • eta: float.

    a coefficient in adaptive threshold formula: $nmsthreshold{i+1}=etacdot nms_threshold_i $.

  • top_k: int.

    if >0, keep at most @p top_k picked indices.

Return
  • indices: [int].

    the kept indices of bboxes after NMS.

Python prototype (for reference only):

NMSBoxes(bboxes, scores, score_threshold, nms_threshold[, eta[, top_k]]) -> indices
Link to this function

nmsBoxesBatched(bboxes, scores, class_ids, score_threshold, nms_threshold)

View Source
@spec nmsBoxesBatched(
  [{number(), number(), number(), number()}],
  [number()],
  [integer()],
  number(),
  number()
) :: [integer()] | {:error, String.t()}

Performs batched non maximum suppression on given boxes and corresponding scores across different classes.

Positional Arguments
  • bboxes: [Rect2d], Nx.Tensor.t(), Evision.Mat.t().

    a set of bounding boxes to apply NMS.

  • scores: [float].

    a set of corresponding confidences.

  • class_ids: [int].

    a set of corresponding class ids. Ids are integer and usually start from 0.

  • score_threshold: float.

    a threshold used to filter boxes by score.

  • nms_threshold: float.

    a threshold used in non maximum suppression.

Keyword Arguments
  • eta: float.

    a coefficient in adaptive threshold formula: $nmsthreshold{i+1}=etacdot nms_threshold_i $.

  • top_k: int.

    if >0, keep at most @p top_k picked indices.

Return
  • indices: [int].

    the kept indices of bboxes after NMS.

Python prototype (for reference only):

NMSBoxesBatched(bboxes, scores, class_ids, score_threshold, nms_threshold[, eta[, top_k]]) -> indices
Link to this function

nmsBoxesBatched(bboxes, scores, class_ids, score_threshold, nms_threshold, opts)

View Source
@spec nmsBoxesBatched(
  [{number(), number(), number(), number()}],
  [number()],
  [integer()],
  number(),
  number(),
  [eta: term(), top_k: term()] | nil
) :: [integer()] | {:error, String.t()}

Performs batched non maximum suppression on given boxes and corresponding scores across different classes.

Positional Arguments
  • bboxes: [Rect2d], Nx.Tensor.t(), Evision.Mat.t().

    a set of bounding boxes to apply NMS.

  • scores: [float].

    a set of corresponding confidences.

  • class_ids: [int].

    a set of corresponding class ids. Ids are integer and usually start from 0.

  • score_threshold: float.

    a threshold used to filter boxes by score.

  • nms_threshold: float.

    a threshold used in non maximum suppression.

Keyword Arguments
  • eta: float.

    a coefficient in adaptive threshold formula: $nmsthreshold{i+1}=etacdot nms_threshold_i $.

  • top_k: int.

    if >0, keep at most @p top_k picked indices.

Return
  • indices: [int].

    the kept indices of bboxes after NMS.

Python prototype (for reference only):

NMSBoxesBatched(bboxes, scores, class_ids, score_threshold, nms_threshold[, eta[, top_k]]) -> indices
Link to this function

nmsBoxesRotated(named_args)

View Source
@spec nmsBoxesRotated(Keyword.t()) :: any() | {:error, String.t()}
Link to this function

nmsBoxesRotated(bboxes, scores, score_threshold, nms_threshold)

View Source
@spec nmsBoxesRotated(
  [{{number(), number()}, {number(), number()}, number()}],
  [number()],
  number(),
  number()
) :: [integer()] | {:error, String.t()}

NMSBoxesRotated

Positional Arguments
  • bboxes: [{centre={x, y}, size={s1, s2}, angle}]
  • scores: [float]
  • score_threshold: float
  • nms_threshold: float
Keyword Arguments
  • eta: float.
  • top_k: integer().
Return
  • indices: [integer()]

Python prototype (for reference only):

NMSBoxesRotated(bboxes, scores, score_threshold, nms_threshold[, eta[, top_k]]) -> indices
Link to this function

nmsBoxesRotated(bboxes, scores, score_threshold, nms_threshold, opts)

View Source
@spec nmsBoxesRotated(
  [{{number(), number()}, {number(), number()}, number()}],
  [number()],
  number(),
  number(),
  [eta: term(), top_k: term()] | nil
) :: [integer()] | {:error, String.t()}

NMSBoxesRotated

Positional Arguments
  • bboxes: [{centre={x, y}, size={s1, s2}, angle}]
  • scores: [float]
  • score_threshold: float
  • nms_threshold: float
Keyword Arguments
  • eta: float.
  • top_k: integer().
Return
  • indices: [integer()]

Python prototype (for reference only):

NMSBoxesRotated(bboxes, scores, score_threshold, nms_threshold[, eta[, top_k]]) -> indices
@spec readNet(Keyword.t()) :: any() | {:error, String.t()}
@spec readNet(binary()) :: Evision.DNN.Net.t() | {:error, String.t()}

Read deep learning network represented in one of the supported formats.

Positional Arguments
Keyword Arguments
  • config: String.

    Text file contains network configuration. It could be a file with the following extensions:

  • framework: String.

    Explicit framework name tag to determine a format.

  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now. Use ENGINE_CLASSIC if you want to use other back-ends.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object. This function automatically detects an origin framework of trained model and calls an appropriate function such @ref readNetFromTensorflow, @ref readNetFromONNX. An order of @p model and @p config arguments does not matter.

Python prototype (for reference only):

readNet(model[, config[, framework[, engine]]]) -> retval
@spec readNet(binary(), [config: term(), engine: term(), framework: term()] | nil) ::
  Evision.DNN.Net.t() | {:error, String.t()}
@spec readNet(binary(), binary()) :: Evision.DNN.Net.t() | {:error, String.t()}

Variant 1:

Read deep learning network represented in one of the supported formats.

Positional Arguments
  • framework: String.

    Name of origin framework.

  • bufferModel: [uchar].

    A buffer with a content of binary file with weights

Keyword Arguments
  • bufferConfig: [uchar].

    A buffer with a content of text file contains network configuration.

  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now. Use ENGINE_CLASSIC if you want to use other back-ends.

Return
  • retval: Evision.DNN.Net.t()

@details This is an overloaded member function, provided for convenience.

      It differs from the above function only in what argument(s) it accepts.

@returns Net object.

Python prototype (for reference only):

readNet(framework, bufferModel[, bufferConfig[, engine]]) -> retval

Variant 2:

Read deep learning network represented in one of the supported formats.

Positional Arguments
Keyword Arguments
  • config: String.

    Text file contains network configuration. It could be a file with the following extensions:

  • framework: String.

    Explicit framework name tag to determine a format.

  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now. Use ENGINE_CLASSIC if you want to use other back-ends.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object. This function automatically detects an origin framework of trained model and calls an appropriate function such @ref readNetFromTensorflow, @ref readNetFromONNX. An order of @p model and @p config arguments does not matter.

Python prototype (for reference only):

readNet(model[, config[, framework[, engine]]]) -> retval
Link to this function

readNet(framework, bufferModel, opts)

View Source
@spec readNet(binary(), binary(), [bufferConfig: term(), engine: term()] | nil) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Read deep learning network represented in one of the supported formats.

Positional Arguments
  • framework: String.

    Name of origin framework.

  • bufferModel: [uchar].

    A buffer with a content of binary file with weights

Keyword Arguments
  • bufferConfig: [uchar].

    A buffer with a content of text file contains network configuration.

  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now. Use ENGINE_CLASSIC if you want to use other back-ends.

Return
  • retval: Evision.DNN.Net.t()

@details This is an overloaded member function, provided for convenience.

      It differs from the above function only in what argument(s) it accepts.

@returns Net object.

Python prototype (for reference only):

readNet(framework, bufferModel[, bufferConfig[, engine]]) -> retval
Link to this function

readNetFromModelOptimizer(xml)

View Source
@spec readNetFromModelOptimizer(binary()) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Load a network from Intel's Model Optimizer intermediate representation.

Positional Arguments
  • xml: String.

    XML configuration file with network's topology.

Keyword Arguments
  • bin: String.

    Binary file with trained weights.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object. Networks imported from Intel's Model Optimizer are launched in Intel's Inference Engine backend.

Python prototype (for reference only):

readNetFromModelOptimizer(xml[, bin]) -> retval
Link to this function

readNetFromModelOptimizer(xml, opts)

View Source
@spec readNetFromModelOptimizer(binary(), [{:bin, term()}] | nil) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Load a network from Intel's Model Optimizer intermediate representation.

Positional Arguments
  • xml: String.

    XML configuration file with network's topology.

Keyword Arguments
  • bin: String.

    Binary file with trained weights.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object. Networks imported from Intel's Model Optimizer are launched in Intel's Inference Engine backend.

Python prototype (for reference only):

readNetFromModelOptimizer(xml[, bin]) -> retval
Link to this function

readNetFromModelOptimizerBuffer(named_args)

View Source
@spec readNetFromModelOptimizerBuffer(Keyword.t()) :: any() | {:error, String.t()}
Link to this function

readNetFromModelOptimizerBuffer(bufferModelConfig, bufferWeights)

View Source
@spec readNetFromModelOptimizerBuffer(binary(), binary()) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Load a network from Intel's Model Optimizer intermediate representation.

Positional Arguments
  • bufferModelConfig: [uchar].

    Buffer contains XML configuration with network's topology.

  • bufferWeights: [uchar].

    Buffer contains binary data with trained weights.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object. Networks imported from Intel's Model Optimizer are launched in Intel's Inference Engine backend.

Python prototype (for reference only):

readNetFromModelOptimizer(bufferModelConfig, bufferWeights) -> retval
Link to this function

readNetFromONNX(onnxFile)

View Source
@spec readNetFromONNX(binary()) :: Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model <a href="https://onnx.ai/">ONNX</a>.

Positional Arguments
  • onnxFile: String.

    path to the .onnx file with text description of the network architecture.

Keyword Arguments
  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Network object that ready to do forward, throw an exception in failure cases.

Python prototype (for reference only):

readNetFromONNX(onnxFile[, engine]) -> retval
Link to this function

readNetFromONNX(onnxFile, opts)

View Source
@spec readNetFromONNX(binary(), [{:engine, term()}] | nil) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model <a href="https://onnx.ai/">ONNX</a>.

Positional Arguments
  • onnxFile: String.

    path to the .onnx file with text description of the network architecture.

Keyword Arguments
  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Network object that ready to do forward, throw an exception in failure cases.

Python prototype (for reference only):

readNetFromONNX(onnxFile[, engine]) -> retval
Link to this function

readNetFromONNXBuffer(named_args)

View Source
@spec readNetFromONNXBuffer(Keyword.t()) :: any() | {:error, String.t()}
@spec readNetFromONNXBuffer(binary()) :: Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model from <a href="https://onnx.ai/">ONNX</a> in-memory buffer.

Positional Arguments
  • buffer: [uchar].

    in-memory buffer that stores the ONNX model bytes.

Keyword Arguments
  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Network object that ready to do forward, throw an exception

    in failure cases.

Python prototype (for reference only):

readNetFromONNX(buffer[, engine]) -> retval
Link to this function

readNetFromONNXBuffer(buffer, opts)

View Source
@spec readNetFromONNXBuffer(binary(), [{:engine, term()}] | nil) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model from <a href="https://onnx.ai/">ONNX</a> in-memory buffer.

Positional Arguments
  • buffer: [uchar].

    in-memory buffer that stores the ONNX model bytes.

Keyword Arguments
  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Network object that ready to do forward, throw an exception

    in failure cases.

Python prototype (for reference only):

readNetFromONNX(buffer[, engine]) -> retval
Link to this function

readNetFromTensorflow(model)

View Source
@spec readNetFromTensorflow(binary()) :: Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model stored in <a href="https://www.tensorflow.org/">TensorFlow</a> framework's format.

Positional Arguments
  • model: String.

    path to the .pb file with binary protobuf description of the network architecture

Keyword Arguments
  • config: String.

    path to the .pbtxt file that contains text graph definition in protobuf format. Resulting Net object is built by text graph using weights from a binary one that let us make it more flexible.

  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used.

  • extraOutputs: [String].

    specify model outputs explicitly, in addition to the outputs the graph analyzer finds. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object.

Python prototype (for reference only):

readNetFromTensorflow(model[, config[, engine[, extraOutputs]]]) -> retval
Link to this function

readNetFromTensorflow(model, opts)

View Source
@spec readNetFromTensorflow(
  binary(),
  [config: term(), engine: term(), extraOutputs: term()] | nil
) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model stored in <a href="https://www.tensorflow.org/">TensorFlow</a> framework's format.

Positional Arguments
  • model: String.

    path to the .pb file with binary protobuf description of the network architecture

Keyword Arguments
  • config: String.

    path to the .pbtxt file that contains text graph definition in protobuf format. Resulting Net object is built by text graph using weights from a binary one that let us make it more flexible.

  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used.

  • extraOutputs: [String].

    specify model outputs explicitly, in addition to the outputs the graph analyzer finds. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object.

Python prototype (for reference only):

readNetFromTensorflow(model[, config[, engine[, extraOutputs]]]) -> retval
Link to this function

readNetFromTensorflowBuffer(named_args)

View Source
@spec readNetFromTensorflowBuffer(Keyword.t()) :: any() | {:error, String.t()}
@spec readNetFromTensorflowBuffer(binary()) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model stored in <a href="https://www.tensorflow.org/">TensorFlow</a> framework's format.

Positional Arguments
  • bufferModel: [uchar].

    buffer containing the content of the pb file

Keyword Arguments
  • bufferConfig: [uchar].

    buffer containing the content of the pbtxt file

  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used.

  • extraOutputs: [String].

    specify model outputs explicitly, in addition to the outputs the graph analyzer finds. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object.

Python prototype (for reference only):

readNetFromTensorflow(bufferModel[, bufferConfig[, engine[, extraOutputs]]]) -> retval
Link to this function

readNetFromTensorflowBuffer(bufferModel, opts)

View Source
@spec readNetFromTensorflowBuffer(
  binary(),
  [bufferConfig: term(), engine: term(), extraOutputs: term()] | nil
) :: Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model stored in <a href="https://www.tensorflow.org/">TensorFlow</a> framework's format.

Positional Arguments
  • bufferModel: [uchar].

    buffer containing the content of the pb file

Keyword Arguments
  • bufferConfig: [uchar].

    buffer containing the content of the pbtxt file

  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used.

  • extraOutputs: [String].

    specify model outputs explicitly, in addition to the outputs the graph analyzer finds. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object.

Python prototype (for reference only):

readNetFromTensorflow(bufferModel[, bufferConfig[, engine[, extraOutputs]]]) -> retval
Link to this function

readNetFromTFLite(model)

View Source
@spec readNetFromTFLite(binary()) :: Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.

Positional Arguments
  • model: String.

    path to the .tflite file with binary flatbuffers description of the network architecture

Keyword Arguments
  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object.

Python prototype (for reference only):

readNetFromTFLite(model[, engine]) -> retval
Link to this function

readNetFromTFLite(model, opts)

View Source
@spec readNetFromTFLite(binary(), [{:engine, term()}] | nil) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.

Positional Arguments
  • model: String.

    path to the .tflite file with binary flatbuffers description of the network architecture

Keyword Arguments
  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object.

Python prototype (for reference only):

readNetFromTFLite(model[, engine]) -> retval
Link to this function

readNetFromTFLiteBuffer(named_args)

View Source
@spec readNetFromTFLiteBuffer(Keyword.t()) :: any() | {:error, String.t()}
@spec readNetFromTFLiteBuffer(binary()) :: Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.

Positional Arguments
  • bufferModel: [uchar].

    buffer containing the content of the tflite file

Keyword Arguments
  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object.

Python prototype (for reference only):

readNetFromTFLite(bufferModel[, engine]) -> retval
Link to this function

readNetFromTFLiteBuffer(bufferModel, opts)

View Source
@spec readNetFromTFLiteBuffer(binary(), [{:engine, term()}] | nil) ::
  Evision.DNN.Net.t() | {:error, String.t()}

Reads a network model stored in <a href="https://www.tensorflow.org/lite">TFLite</a> framework's format.

Positional Arguments
  • bufferModel: [uchar].

    buffer containing the content of the tflite file

Keyword Arguments
  • engine: integer().

    select DNN engine to be used. With auto selection the new engine is used first and falls back to classic. Please pay attention that the new DNN does not support non-CPU back-ends for now.

Return
  • retval: Evision.DNN.Net.t()

@returns Net object.

Python prototype (for reference only):

readNetFromTFLite(bufferModel[, engine]) -> retval
Link to this function

readTensorFromONNX(named_args)

View Source
@spec readTensorFromONNX(Keyword.t()) :: any() | {:error, String.t()}
@spec readTensorFromONNX(binary()) :: Evision.Mat.t() | {:error, String.t()}

Creates blob from .pb file.

Positional Arguments
  • path: String.

    to the .pb file with input tensor.

Return
  • retval: Evision.Mat.t()

@returns Mat.

Python prototype (for reference only):

readTensorFromONNX(path) -> retval
@spec releaseHDDLPlugin() :: :ok | {:error, String.t()}

Release a HDDL plugin.

Python prototype (for reference only):

releaseHDDLPlugin() -> None
Link to this function

releaseHDDLPlugin(named_args)

View Source
@spec releaseHDDLPlugin(Keyword.t()) :: any() | {:error, String.t()}
@spec resetMyriadDevice() :: :ok | {:error, String.t()}

Release a Myriad device (binded by OpenCV).

Single Myriad device cannot be shared across multiple processes which uses Inference Engine's Myriad plugin.

Python prototype (for reference only):

resetMyriadDevice() -> None
Link to this function

resetMyriadDevice(named_args)

View Source
@spec resetMyriadDevice(Keyword.t()) :: any() | {:error, String.t()}
Link to this function

setInferenceEngineBackendType(named_args)

View Source
@spec setInferenceEngineBackendType(Keyword.t()) :: any() | {:error, String.t()}
@spec setInferenceEngineBackendType(binary()) :: binary() | {:error, String.t()}

Specify Inference Engine internal backend API.

Positional Arguments
Return

See values of CV_DNN_BACKEND_INFERENCE_ENGINE_* macros. @returns previous value of internal backend API @deprecated

Python prototype (for reference only):

setInferenceEngineBackendType(newBackendType) -> retval
Link to this function

softNMSBoxes(bboxes, scores, score_threshold, nms_threshold)

View Source
@spec softNMSBoxes(
  [{number(), number(), number(), number()}],
  [number()],
  number(),
  number()
) ::
  {[number()], [integer()]} | {:error, String.t()}

Performs soft non maximum suppression given boxes and corresponding scores. Reference: https://arxiv.org/abs/1704.04503

Positional Arguments
  • bboxes: [Rect], Nx.Tensor.t(), Evision.Mat.t()..

    a set of bounding boxes to apply Soft NMS.

  • scores: [float].

    a set of corresponding confidences.

  • score_threshold: float.

    a threshold used to filter boxes by score.

  • nms_threshold: float.

    a threshold used in non maximum suppression.

Keyword Arguments
  • top_k: size_t.

    keep at most @p top_k picked indices.

  • sigma: float.

    parameter of Gaussian weighting.

  • method: SoftNMSMethod.

    Gaussian or linear.

Return
  • updated_scores: [float].

    a set of corresponding updated confidences.

  • indices: [int].

    the kept indices of bboxes after NMS.

@see SoftNMSMethod

Python prototype (for reference only):

softNMSBoxes(bboxes, scores, score_threshold, nms_threshold[, top_k[, sigma[, method]]]) -> updated_scores, indices
Link to this function

softNMSBoxes(bboxes, scores, score_threshold, nms_threshold, opts)

View Source
@spec softNMSBoxes(
  [{number(), number(), number(), number()}],
  [number()],
  number(),
  number(),
  [top_k: term(), sigma: term(), method: term()] | nil
) :: {[number()], [integer()]} | {:error, String.t()}

Performs soft non maximum suppression given boxes and corresponding scores. Reference: https://arxiv.org/abs/1704.04503

Positional Arguments
  • bboxes: [Rect], Nx.Tensor.t(), Evision.Mat.t()..

    a set of bounding boxes to apply Soft NMS.

  • scores: [float].

    a set of corresponding confidences.

  • score_threshold: float.

    a threshold used to filter boxes by score.

  • nms_threshold: float.

    a threshold used in non maximum suppression.

Keyword Arguments
  • top_k: size_t.

    keep at most @p top_k picked indices.

  • sigma: float.

    parameter of Gaussian weighting.

  • method: SoftNMSMethod.

    Gaussian or linear.

Return
  • updated_scores: [float].

    a set of corresponding updated confidences.

  • indices: [int].

    the kept indices of bboxes after NMS.

@see SoftNMSMethod

Python prototype (for reference only):

softNMSBoxes(bboxes, scores, score_threshold, nms_threshold[, top_k[, sigma[, method]]]) -> updated_scores, indices
Link to this function

writeTextGraph(named_args)

View Source
@spec writeTextGraph(Keyword.t()) :: any() | {:error, String.t()}
Link to this function

writeTextGraph(model, output)

View Source
@spec writeTextGraph(binary(), binary()) :: :ok | {:error, String.t()}

Create a text representation for a binary network stored in protocol buffer format.

Positional Arguments
  • model: String.

    A path to binary network.

  • output: String.

    A path to output text file to be created.

Note: To reduce output file size, trained weights are not included.

Python prototype (for reference only):

writeTextGraph(model, output) -> None