Files
openvino/docs/ops/detection/ExperimentalDetectronDetectionOutput_6.md
T
Anton Chetverikov 6b62f67d44 Add specifications for ExperimentalDetectron* operations (#4584)
* Add specification for ExperimentalDetectronROIFeatureExtractor-6 operation

* Add specification for ExperimentalDetectronROIFeatureExtractor-6 operation

* Delete template added by mistake

* Add specification for ExperimentalDetectronTopKROIs_6 operation

* Update specification

* Update specification

* Add specification for ExperimentalDetectronDetectionOutput_6 operation

* Add specifaication for ExperimentalDetectronGenerateProposalsSingleImage_6 operation

* Add specification for ExperimentalDetectronPriorGridGenerator_6 operation

* Allign attr? add more detailed information

* Provide detailed description for ExperimentalDetectronTopKROIs_6 operation

* Minor style updates

* Update specifications

* Add more details to operation specification

* Update operations categories

* Move operations specifications to detection folder

* Update specifications

* Add operations to appopriate lists

* Update specs

* Update operations list

* Add more detailed decsriptions to operations specification

* Add more details to operations descriptions

* Apply review comments

* Apply review comments

* Update specifications

* Delete outdated comments in experimental operations headers

* Update specifications

* Apply review feedback

* Move back comments in operations headers

* Apply review comments

* Fix typo

* Fix codestyle

* Fix typo
2021-03-26 06:49:37 +03:00

6.6 KiB

ExperimentalDetectronDetectionOutput

Versioned name: ExperimentalDetectronDetectionOutput-6

Category: Object detection

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

Detailed description: Operation doing next steps:

  1. Applies deltas to boxes sizes [x1, y1, x2, y2] and takes coordinates of refined boxes according to 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:

box_w = x1 - x0 + 1.0

box_h = y1 - y0 + 1.0

  • ctr_x and ctr_y are center location of 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 next formulas and deltas_tensor is 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 then operation removes predictions for background classes;
  2. Clips boxes to 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. Operation returns max_detections_per_image detections if total number of detections is more than it, otherwise returns total number of detections and the output tensor is filled with undefined values for rest output tensor elements.

Attributes:

  • score_threshold

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

    • Description: nms_threshold attribute specifies 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: num_classes attribute specifies number of detected classes.
    • Range of values: non-negative integer number
    • Type: int
    • Default value: None
    • Required: yes
  • post_nms_count

    • Description: 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: 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 ia a flag specifies whether to delete background classes or not.
    • Range of values:
      • true means background classes should be deleted
      • false means background classes shouldn't be deleted
    • Type: boolean
    • Default value: false
    • Required: no
  • max_delta_log_wh

    • Description: 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: 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] describing the ROIs as 4-tuples: [x1, y1, x2, y2]. 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] describing deltas for input boxes. Required.

  • 3: A 2D tensor of type T with shape [number_of_ROIs, num_classes] describing detections scores. Required.

  • 4: A 2D tensor of type T with shape [1, 3] contains 3 elements [image_height, image_width, scale_height_and_width] describing input image size info. Required.

Outputs

  • 1: A 2D tensor of type T with shape [max_detections_per_image, 4] describing boxes indices.

  • 2: A 1D tensor of type T_IND with shape [max_detections_per_image] describing classes indices.

  • 3: A 1D tensor of type T with shape [max_detections_per_image] describing scores indices.

  • 4: A 1D tensor of type T_IND with shape [max_detections_per_image] describing batches indices.

Types

  • T: any supported floating point type.

  • T_IND: int64 or int32.

Example

<layer ... type="ExperimentalDetectronDetectionOutput" version="opset6">
    <data class_agnostic_box_regression="false" deltas_weights="10.0,10.0,5.0,5.0" max_delta_log_wh="4.135166645050049" max_detections_per_image="100" nms_threshold="0.5" num_classes="81" post_nms_count="2000" score_threshold="0.05000000074505806"/>
    <input>
        <port id="0">
            <dim>1000</dim>
            <dim>4</dim>
        </port>
        <port id="1">
            <dim>1000</dim>
            <dim>324</dim>
        </port>
        <port id="2">
            <dim>1000</dim>
            <dim>81</dim>
        </port>
        <port id="3">
            <dim>1</dim>
            <dim>3</dim>
        </port>
    </input>
    <output>
        <port id="4" precision="FP32">
            <dim>100</dim>
            <dim>4</dim>
        </port>
        <port id="5" precision="I32">
            <dim>100</dim>
        </port>
        <port id="6" precision="FP32">
            <dim>100</dim>
        </port>
        <port id="7" precision="I32">
            <dim>100</dim>
        </port>
    </output>
</layer>