paddle.fluid.layers.detection. matrix_nms ( bboxes, scores, score_threshold, post_threshold, nms_top_k, keep_top_k, use_gaussian=False, gaussian_sigma=2.0, background_label=0, normalized=True, return_index=False, name=None ) [source]

Matrix NMS

This operator does matrix non maximum suppression (NMS).

First selects a subset of candidate bounding boxes that have higher scores than score_threshold (if provided), then the top k candidate is selected if nms_top_k is larger than -1. Score of the remaining candidate are then decayed according to the Matrix NMS scheme. Aftern NMS step, at most keep_top_k number of total bboxes are to be kept per image if keep_top_k is larger than -1.

  • bboxes (Variable) – A 3-D Tensor with shape [N, M, 4] represents the predicted locations of M bounding bboxes, N is the batch size. Each bounding box has four coordinate values and the layout is [xmin, ymin, xmax, ymax], when box size equals to 4. The data type is float32 or float64.

  • scores (Variable) – A 3-D Tensor with shape [N, C, M] represents the predicted confidence predictions. N is the batch size, C is the class number, M is number of bounding boxes. For each category there are total M scores which corresponding M bounding boxes. Please note, M is equal to the 2nd dimension of BBoxes. The data type is float32 or float64.

  • score_threshold (float) – Threshold to filter out bounding boxes with low confidence score.

  • post_threshold (float) – Threshold to filter out bounding boxes with low confidence score AFTER decaying.

  • nms_top_k (int) – Maximum number of detections to be kept according to the confidences after the filtering detections based on score_threshold.

  • keep_top_k (int) – Number of total bboxes to be kept per image after NMS step. -1 means keeping all bboxes after NMS step.

  • use_gaussian (bool) – Use Gaussian as the decay function. Default: False

  • gaussian_sigma (float) – Sigma for Gaussian decay function. Default: 2.0

  • background_label (int) – The index of background label, the background label will be ignored. If set to -1, then all categories will be considered. Default: 0

  • normalized (bool) – Whether detections are normalized. Default: True

  • return_index (bool) – Whether return selected index. Default: False

  • name (str) – Name of the matrix nms op. Default: None.


(Out, Index) if return_index is True, otherwise, one Variable(Out) is returned.

Out (Variable): A 2-D LoDTensor with shape [No, 6] containing the

detection results. Each row has 6 values: [label, confidence, xmin, ymin, xmax, ymax] (After version 1.3, when no boxes detected, the lod is changed from {0} to {1})

Index (Variable): A 2-D LoDTensor with shape [No, 1] containing the

selected indices, which are absolute values cross batches.

Return type

A tuple with two Variables


import paddle.fluid as fluid
boxes ='bboxes', shape=[None,81, 4],
                          dtype='float32', lod_level=1)
scores ='scores', shape=[None,81],
                          dtype='float32', lod_level=1)
out = fluid.layers.matrix_nms(bboxes=boxes,