async function nonMaxSuppressionWithScoreAsync_(boxes, scores, maxOutputSize, iouThreshold = 0.5, scoreThreshold = Number.NEGATIVE_INFINITY, softNmsSigma = 0.0) {
    const $boxes = (0, _tensorUtilEnv.convertToTensor)(boxes, "boxes", "nonMaxSuppressionAsync");
    const $scores = (0, _tensorUtilEnv.convertToTensor)(scores, "scores", "nonMaxSuppressionAsync");
    const params = (0, _nonmaxUtil.nonMaxSuppSanityCheck)($boxes, $scores, maxOutputSize, iouThreshold, scoreThreshold, softNmsSigma);
    maxOutputSize = params.maxOutputSize;
    iouThreshold = params.iouThreshold;
    scoreThreshold = params.scoreThreshold;
    softNmsSigma = params.softNmsSigma;
    const boxesAndScores = await Promise.all([
        $boxes.data(),
        $scores.data()
    ]);
    const boxesVals = boxesAndScores[0];
    const scoresVals = boxesAndScores[1];
    // We call a cpu based impl directly with the typedarray data  here rather
    // than a kernel because all kernels are synchronous (and thus cannot await
    // .data()).
    const { selectedIndices, selectedScores } = (0, _nonMaxSuppressionImpl.nonMaxSuppressionV5Impl)(boxesVals, scoresVals, maxOutputSize, iouThreshold, scoreThreshold, softNmsSigma);
    if ($boxes !== boxes) $boxes.dispose();
    if ($scores !== scores) $scores.dispose();
    return {
        selectedIndices: (0, _tensor1D.tensor1d)(selectedIndices, "int32"),
        selectedScores: (0, _tensor1D.tensor1d)(selectedScores)
    };
}
Asynchronously performs non maximum suppression of bounding boxes based on
iou (intersection over union).

This op also supports a Soft-NMS mode (cf.
Bodla et al, https://arxiv.org/abs/1704.04503) where boxes reduce the score
of other overlapping boxes, therefore favoring different regions of the image
with high scores. To enable this Soft-NMS mode, set the `softNmsSigma`
parameter to be larger than 0.

@param boxes a 2d tensor of shape `[numBoxes, 4]`. Each entry is
    `[y1, x1, y2, x2]`, where `(y1, x1)` and `(y2, x2)` are the corners of
    the bounding box.
@param scores a 1d tensor providing the box scores of shape `[numBoxes]`.
@param maxOutputSize The maximum number of boxes to be selected.
@param iouThreshold A float representing the threshold for deciding whether
    boxes overlap too much with respect to IOU. Must be between [0, 1].
    Defaults to 0.5 (50% box overlap).
@param scoreThreshold A threshold for deciding when to remove boxes based
    on score. Defaults to -inf, which means any score is accepted.
@param softNmsSigma A float representing the sigma parameter for Soft NMS.
    When sigma is 0, it falls back to nonMaxSuppression.
@return A map with the following properties:
    - selectedIndices: A 1D tensor with the selected box indices.
    - selectedScores: A 1D tensor with the corresponding scores for each
      selected box.

@doc {heading: 'Operations', subheading: 'Images', namespace: 'image'}