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

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

TensorFlow.js tf.image.nonMaxSuppressionPadded()函数

简介

tf.image.nonMaxSuppressionPadded() 是 TensorFlow.js 中的一个非最大值抑制算法函数,用于对检测边界框进行过滤,以去重重叠的边界框,得到最终的检测结果。

语法
tf.image.nonMaxSuppressionPadded(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold)
参数
  • boxes:形状为[numBoxes, 4]的张量,表示边界框坐标(左上角和右下角),支持多个目标同时进行计算
  • scores:形状为[numBoxes]的张量,表示每个目标的置信度(得分)
  • maxOutputSize:输出目标数量的最大值,为整数类型
  • iouThreshold:重叠度阈值(0-1之间的实数),表示两个边界框之间的重叠度必须大于该阈值才能被处理,否则忽略,推荐值为0.5
  • scoreThreshold:置信度阈值,只保留满足该阈值的目标,必须是正实数,通常设置为0.0
返回值
  • selectedIndices:形状为[M]的张量,表示选中的目标索引,其中M <= maxOutputSize
  • validOutputs:形状为[]的标量张量,表示选中的目标数量,为整数类型
示例
const tf = require('@tensorflow/tfjs-node-gpu')
const boxes = tf.tensor2d([[0,0,1,1], [0.5,0.5,1,1]])
const scores = tf.tensor1d([0.9, 0.8])
const maxOutputSize = 1
const iouThreshold = 0.5
const scoreThreshold = 0.0
const result = tf.image.nonMaxSuppressionPadded(boxes, scores, maxOutputSize, iouThreshold, scoreThreshold)
result.selectedIndices.print()
result.validOutputs.print()

输出结果:

Tensor
  [[0]]  
  dtype: int32
Tensor
  1
  dtype: int32
注意事项
  • 本函数只支持CPU和GPU,在浏览器端需要使用tf.setBackend('cpu')tf.setBackend('webgl')指定后端,服务器端需要使用tensorflow-gpu或tensorflow-cpu
  • 本函数对于同一目标的多个边界框,只保留置信度最高的那个边界框
  • 本函数返回的selectedIndices是有序的从大到小排列的,即与scores对应的下标
  • 本函数中的边界框坐标格式必须为[y1, x1, y2, x2],以下同
  • 本函数会自动进行边界框坐标的规范化,即将坐标值缩放为[0,1]之间的实数
  • 本函数针对边界框进行非最大值抑制,不适用于其他形状
  • 本函数的处理结果是不确定的,与硬件、操作系统、TensorFlow版本、随机数种子等有关。建议多次运行以得到稳定结果