Tensorflow.js tf.image.nonMaxSuppressionWithScore()函数
Tensorflow.js 是谷歌开发的一个开源库,用于在浏览器或节点环境中运行机器学习模型以及深度学习神经网络。
.image.nonMaxSuppressionWithScore()函数用于执行基于iou 的限制框的非最大抑制,即交集超过并集。此外,该操作还支持 Soft-NMS 模式,其中框会降低不同相交框的规定分数,从而支持图像中除高分之外的各个区域。为了启用上述 Soft-NMS 模式,我们需要将softNmsSigma参数设置为大于零。
句法:
tf.image.nonMaxSuppressionWithScore(boxes, scores, maxOutputSize,
iouThreshold?, scoreThreshold?, softNmsSigma?)
参数:
- box:指定的 2d 张量,其配置为 [numBoxes, 4]。并且每次访问都是 [y1, x1, y2, x2],允许 (y1, x1) 和 (y2, x2) 是限制框的边缘。它可以是 tf.Tensor2D、TypedArray 或 Array 类型。
- 分数:规定的一维张量,前提是盒子分数是配置 [numBoxes]。它的类型为 tf.Tensor2D、TypedArray 或 Array。
- maxOutputSize:这是要选择的指定框的最大计数。它是数字类型。
- iouThreshold:它是表示阈值的规定浮点数,以确定规定的框是否与 IOU 相交太多。它应该在 [0, 1] 的中间。默认值为 0.5,即 50% 的框相交。它是可选的,类型为 number。
- scoreThreshold:它是规定的阈值,以便根据规定的分数决定在哪些时间删除框。默认值为-inf,即允许每个分数。它是可选的,类型为 number。
- softNmsSigma:它是类型 number 的可选参数。它是指定的浮点数,表示支持Soft NMS的 sigma 参数。此外,如果 sigma 为零,则返回到nonMaxSuppression 。
返回值:返回 {[name: 字符串]: tf.Tensor}。
示例 1:在此示例中,我们将使用 二维张量、分数和 maxOutputSize 参数。
Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
// Calling image.nonMaxSuppressionWithScore() method
const output = tf.image.nonMaxSuppressionWithScore(
tf.tensor2d([1, 2, 3, 4, 2, 4, 6, 7],
[2, 4]), [1, 1], 4
);
// Printing output
console.log(output);
Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
// Defining an array of floats
const arr = [[11.1, 2.3, 7.3, 6.4], [3, 6]]
// Calling image.nonMaxSuppressionWithScore() method
const res = tf.image.nonMaxSuppressionWithScore(
arr, [2.1, 0], 100, 0.5, 1, 0.5);
// Printing output
console.log(res);
输出:
{
"selectedIndices": {
"kept": false,
"isDisposedInternal": false,
"shape": [
2
],
"dtype": "int32",
"size": 2,
"strides": [],
"dataId": {
"id": 74
},
"id": 74,
"rankType": "1",
"scopeId": 35
},
"selectedScores": {
"kept": false,
"isDisposedInternal": false,
"shape": [
2
],
"dtype": "float32",
"size": 2,
"strides": [],
"dataId": {
"id": 75
},
"id": 75,
"rankType": "1",
"scopeId": 35
}
}
示例 2:在此示例中,我们将使用浮点数组、iouThreshold、scoreThreshold 以及 softNmsSigma。
Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs"
// Defining an array of floats
const arr = [[11.1, 2.3, 7.3, 6.4], [3, 6]]
// Calling image.nonMaxSuppressionWithScore() method
const res = tf.image.nonMaxSuppressionWithScore(
arr, [2.1, 0], 100, 0.5, 1, 0.5);
// Printing output
console.log(res);
输出:
{
"selectedIndices": {
"kept": false,
"isDisposedInternal": false,
"shape": [
1
],
"dtype": "int32",
"size": 1,
"strides": [],
"dataId": {
"id": 84
},
"id": 84,
"rankType": "1",
"scopeId": 42
},
"selectedScores": {
"kept": false,
"isDisposedInternal": false,
"shape": [
1
],
"dtype": "float32",
"size": 1,
"strides": [],
"dataId": {
"id": 85
},
"id": 85,
"rankType": "1",
"scopeId": 42
}
}
参考: https://js.tensorflow.org/api/latest/#image.nonMaxSuppressionWithScore