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:
- 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_wandbox_hare width and height of box, respectively:
box_w = x1 - x0 + 1.0
box_h = y1 - y0 + 1.0
ctr_xandctr_yare center location of a box:
ctr_x = x0 + 0.5f * box_w
ctr_y = y0 + 0.5f * box_h
dx,dy,d_log_wandd_log_hare deltas calculated according to the formulas below, anddeltas_tensoris 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]
- If class_agnostic_box_regression is
trueremoves predictions for background classes. - Clips boxes to the image.
- Applies score_threshold on detection scores.
- Applies non-maximum suppression class-wise with nms_threshold and returns post_nms_count or less detections per class.
- 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:
truemeans background classes should be deletedfalsemeans 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:
int64orint32.
Example
.. code-block:: cpp
<layer ... type="ExperimentalDetectronDetectionOutput" version="opset6"> 1000 4 1000 324 1000 81 1 3 100 4 100 100 100
@endsphinxdirective