Files
openvino/docs/ops/detection/ExperimentalDetectronDetectionOutput_6.md
2023-05-05 10:16:49 +02:00

6.7 KiB

ExperimentalDetectronDetectionOutput

@sphinxdirective

Versioned name: ExperimentalDetectronDetectionOutput-6

Category: Object detection

Short description: The ExperimentalDetectronDetectionOutput operation performs non-maximum suppression to generate the detection output using information on location and score predictions.

Detailed description: The operation performs the following steps:

  1. Applies deltas to boxes sizes [x 1, y 1, x 2, y 2] and takes coordinates of refined boxes according to the formulas:

x1_new = ctr_x + (dx - 0.5 * exp(min(d_log_w, max_delta_log_wh))) * box_w

y0_new = ctr_y + (dy - 0.5 * exp(min(d_log_h, max_delta_log_wh))) * box_h

x1_new = ctr_x + (dx + 0.5 * exp(min(d_log_w, max_delta_log_wh))) * box_w - 1.0

y1_new = ctr_y + (dy + 0.5 * exp(min(d_log_h, max_delta_log_wh))) * box_h - 1.0

  • box_w and box_h are width and height of box, respectively:

box_w = x1 - x0 + 1.0

box_h = y1 - y0 + 1.0

  • ctr_x and ctr_y are center location of a box:

ctr_x = x0 + 0.5f * box_w

ctr_y = y0 + 0.5f * box_h

  • dx, dy, d_log_w and d_log_h are deltas calculated according to the formulas below, and deltas_tensor is a second input:

dx = deltas_tensor[roi_idx, 4 * class_idx + 0] / deltas_weights[0]

dy = deltas_tensor[roi_idx, 4 * class_idx + 1] / deltas_weights[1]

d_log_w = deltas_tensor[roi_idx, 4 * class_idx + 2] / deltas_weights[2]

d_log_h = deltas_tensor[roi_idx, 4 * class_idx + 3] / deltas_weights[3]

  1. If class_agnostic_box_regression is true removes predictions for background classes.
  2. Clips boxes to the image.
  3. Applies score_threshold on detection scores.
  4. Applies non-maximum suppression class-wise with nms_threshold and returns post_nms_count or less detections per class.
  5. Returns max_detections_per_image detections if total number of detections is more than max_detections_per_image; otherwise, returns total number of detections and the output tensor is filled with undefined values for rest output tensor elements.

Attributes:

  • score_threshold

    • Description: The score_threshold attribute specifies a threshold to consider only detections whose score are larger than the threshold.
    • Range of values: non-negative floating-point number
    • Type: float
    • Default value: None
    • Required: yes
  • nms_threshold

    • Description: The nms_threshold attribute specifies a threshold to be used in the NMS stage.
    • Range of values: non-negative floating-point number
    • Type: float
    • Default value: None
    • Required: yes
  • num_classes

    • Description: The num_classes attribute specifies the number of detected classes.
    • Range of values: non-negative integer number
    • Type: int
    • Default value: None
    • Required: yes
  • post_nms_count

    • Description: The post_nms_count attribute specifies the maximal number of detections per class.
    • Range of values: non-negative integer number
    • Type: int
    • Default value: None
    • Required: yes
  • max_detections_per_image

    • Description: The max_detections_per_image attribute specifies maximal number of detections per image.
    • Range of values: non-negative integer number
    • Type: int
    • Default value: None
    • Required: yes
  • class_agnostic_box_regression

    • Description: class_agnostic_box_regression attribute is a flag that specifies whether to delete background classes or not.

    • Range of values:

      • true means background classes should be deleted
      • false means background classes should not be deleted
    • Type: boolean

    • Default value: false

    • Required: no

  • max_delta_log_wh

    • Description: The max_delta_log_wh attribute specifies maximal delta of logarithms for width and height.
    • Range of values: floating-point number
    • Type: float
    • Default value: None
    • Required: yes
  • deltas_weights

    • Description: The deltas_weights attribute specifies weights for bounding boxes sizes deltas.
    • Range of values: a list of non-negative floating-point numbers
    • Type: float[]
    • Default value: None
    • Required: yes

Inputs

  • 1: A 2D tensor of type T with input ROIs, with shape [number_of_ROIs, 4] providing the ROIs as 4-tuples: [x 1, y 1, x 2, y 2]. The batch dimension of first, second, and third inputs should be the same. Required.
  • 2: A 2D tensor of type T with shape [number_of_ROIs, num_classes * 4] providing deltas for input boxes. Required.
  • 3: A 2D tensor of type T with shape [number_of_ROIs, num_classes] providing detections scores. Required.
  • 4: A 2D tensor of type T with shape [1, 3] contains three elements [image_height, image_width, scale_height_and_width] providing input image size info. Required.

Outputs

  • 1: A 2D tensor of type T with shape [max_detections_per_image, 4] providing boxes indices.
  • 2: A 1D tensor of type T_IND with shape [max_detections_per_image] providing classes indices.
  • 3: A 1D tensor of type T with shape [max_detections_per_image] providing scores indices.

Types

  • T: any supported floating-point type.
  • T_IND: int64 or int32.

Example

.. code-block:: cpp

<layer ... type="ExperimentalDetectronDetectionOutput" version="opset6"> 1000 4 1000 324 1000 81 1 3 100 4 100 100 100

@endsphinxdirective