📌  相关文章
📜  Tensorflow.js tf.image.nonMaxSuppressionAsync()函数(1)

📅  最后修改于: 2023-12-03 14:47:55.084000             🧑  作者: Mango

TensorFlow.js tf.image.nonMaxSuppressionAsync()函数介绍

tf.image.nonMaxSuppressionAsync()函数是TensorFlow.js中用于执行非最大值抑制操作的异步函数。其功能是从一组框框中选择最佳框框,并且会剔除低于阈值的框框。

函数定义
tf.image.nonMaxSuppressionAsync(
    boxes: tf.Tensor2D,
    scores: tf.Tensor1D,
    maxOutputSize: number,
    iouThreshold: number,
    scoreThreshold: number,
    padToMaxOutputSize?: boolean
): Promise<{selectedIndices: tf.Tensor1D, selectedScores: tf.Tensor1D}>

参数说明:

  • boxes: tf.Tensor2D:包含一组框框的坐标,shape为[numBoxes, 4]。
  • scores: tf.Tensor1D:每个框框的得分值,shape为[numBoxes]。
  • maxOutputSize: number:选择的最大框框数量。
  • iouThreshold: number:重叠比例的阈值。
  • scoreThreshold: number:最低得分的阈值。
  • padToMaxOutputSize: boolean:设置为true,表示对输出进行填充以达到最大输出大小。默认值为false。

返回值:一个Promise对象,其中包含两个Tensor对象,selectedIndicesselectedScores,分别表示选择的框框的索引和得分。

代码示例
// 定义一组框框
const boxes = tf.tensor2d([[0, 0.5, 0.1, 0.6], [0.2, 0.3, 0.3, 0.9], [0.6, 0.1, 0.9, 0.5], [0.7, 0.5, 0.9, 0.9]]);

// 定义每个框框的得分
const scores = tf.tensor1d([0.8, 0.6, 0.7, 0.9]);

// 调用nonMaxSuppressionAsync函数
tf.image.nonMaxSuppressionAsync(boxes, scores, 2, 0.3, 0.5).then((result) => {
  console.log(result.selectedIndices.toString()); // 输出选择的框框的索引
  console.log(result.selectedScores.toString());  // 输出选择的框框的得分
});
注意事项
  • 该函数只适用于2D张量,非2D张量需要使用flatten()reshape()进行处理。
  • 在进行非最大值抑制之前,需要对框框进行排序,以便选择具有最高得分的框框。