GenerateProposals#
Versioned name: GenerateProposals-9
Category: Object detection
Short description: The GenerateProposals operation proposes ROIs and their scores based on input data for each image in the batch.
Detailed description: The operation performs the following steps for each image:
Transposes and reshapes predicted bounding boxes deltas and scores to get them into the same dimension order as the anchors.
Transforms anchors and deltas into proposal bboxes and clips proposal bboxes to an image. The attribute normalized indicates whether the proposal bboxes are normalized or not.
Sorts all
(proposal, score)
pairs by score from highest to lowest; order of pairs with equal scores is undefined.Takes top pre_nms_count proposals, if total number of proposals is less than pre_nms_count takes all proposals.
Removes predicted boxes with either height or width < min_size.
Applies non-maximum suppression with adaptive_nms_threshold. The initial value of adaptive_nms_threshold is nms_threshold. If
nms_eta < 1
andadaptive_threshold > 0.5
, updateadaptive_threshold *= nms_eta
.Takes and returns top proposals after nms operation. The number of returned proposals in each image is dynamic and is specified by output port 3
rpnroisnum
. And the max number of proposals in each image is specified by attribute post_nms_count.
All proposals of the whole batch are concatenated image by image, and distinguishable through outputs.
Attributes:
min_size
Description: The min_size attribute specifies minimum box width and height.
Range of values: non-negative floating-point number
Type: float
Required: yes
nms_threshold
Description: The nms_threshold attribute specifies threshold to be used in the NMS stage.
Range of values: non-negative floating-point number
Type: float
Required: yes
pre_nms_count
Description: The pre_nms_count attribute specifies number of top-n proposals before NMS.
Range of values: non-negative integer number
Type: int
Required: yes
post_nms_count
Description: The post_nms_count attribute specifies number of top-n proposals after NMS.
Range of values: non-negative integer number
Type: int
Required: yes
normalized
Description: normalized is a flag that indicates whether proposal bboxes are normalized or not.
Range of values: true or false * true - the bbox coordinates are normalized. * false - the bbox coordinates are not normalized.
Type: boolean
Default value: True
Required: no
nms_eta
Description: eta parameter for adaptive NMS.
Range of values: a floating-point number in closed range
[0, 1.0]
.Type: float
Default value:
1.0
Required: no
roi_num_type
Description: the type of element of output 3
rpnroisnum
.Range of values: i32, i64
Type: string
Default value:
i64
Required: no
Inputs
1:
im_info
- tensor of type T and shape[num_batches, 3]
or[num_batches, 4]
providing input image info. The image info is layout as[image_height, image_width, scale_height_and_width]
or as[image_height, image_width, scale_height, scale_width]
. Required.2:
anchors
- tensor of type T with shape[height, width, number_of_anchors, 4]
providing anchors. Each anchor is layouted as[xmin, ymin, xmax, ymax]
. Required.3:
boxesdeltas
- tensor of type T with shape[num_batches, number_of_anchors * 4, height, width]
providing deltas for anchors. The delta consists of 4 element tuples with layout[dx, dy, log(dw), log(dh)]
. Required.4:
scores
- tensor of type T with shape[num_batches, number_of_anchors, height, width]
providing proposals scores. Required.
The height
and width
from inputs anchors
, boxesdeltas
and scores
are the height and width of feature maps.
Outputs
1:
rpnrois
- tensor of type T with shape[num_rois, 4]
providing proposed ROIs. The proposals are layouted as[xmin, ymin, xmax, ymax]
. Thenum_rois
means the total proposals number of all the images in one batch.num_rois
is a dynamic dimension.2:
rpnscores
- tensor of type T with shape[num_rois]
providing proposed ROIs scores.3:
rpnroisnum
- tensor of type roi_num_type with shape[num_batches]
providing the number of proposed ROIs in each image.
Types
T: any supported floating-point type.
Example
<layer ... type="GenerateProposals" version="opset9">
<data min_size="0.0" nms_threshold="0.699999988079071" post_nms_count="1000" pre_nms_count="1000" roi_num_type="i32"/>
<input>
<port id="0">
<dim>8</dim>
<dim>3</dim>
</port>
<port id="1">
<dim>50</dim>
<dim>84</dim>
<dim>3</dim>
<dim>4</dim>
</port>
<port id="2">
<dim>8</dim>
<dim>12</dim>
<dim>50</dim>
<dim>84</dim>
</port>
<port id="3">
<dim>8</dim>
<dim>3</dim>
<dim>50</dim>
<dim>84</dim>
</port>
</input>
<output>
<port id="4" precision="FP32">
<dim>-1</dim>
<dim>4</dim>
</port>
<port id="5" precision="FP32">
<dim>-1</dim>
</port>
<port id="6" precision="I32">
<dim>8</dim>
</port>
</output>
</layer>