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

📅  最后修改于: 2022-05-13 01:56:40.941000             🧑  作者: Mango

Tensorflow.js tf.image.nonMaxSuppressionPaddedAsync()函数

Tensorflow.js 是谷歌开发的一个开源库,用于在浏览器或节点环境中运行机器学习模型以及深度学习神经网络。

.image.nonMaxSuppressionPaddedAsync()函数用于在 iou 的基础上异步执行限制框的非最大抑制,即在联合上的交集以及填充结果的机会。

句法:

tf.image.nonMaxSuppressionPaddedAsync(boxes, scores, maxOutputSize, 
    iouThreshold?, scoreThreshold?, padToMaxOutputSize?)

参数:

  • 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。
  • padToMaxOutputSize:它是布尔类型的可选参数。默认值为false 。如果是这样,则将结果selectedIndices的维度填充到maxOutputSize

返回值:它返回 {[name: 字符串]: tf.Tensor} 的承诺。

示例 1:在此示例中,我们将使用 2d 张量、分数和 maxOutputSize 参数。

Javascript
// Importing the tensorflow.js library
import * as tf from "@tensorflow/tfjs";
  
// Calling image.nonMaxSuppressionPaddedAsync() method
const output = await tf.image.nonMaxSuppressionPaddedAsync(
  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.nonMaxSuppressionPaddedAsync() method
const res = await tf.image.nonMaxSuppressionPaddedAsync(
  arr, [2.1, 0], 100, 0.5, 1, true);
  
// Printing output
console.log(res);


输出:

{
  "selectedIndices": {
    "kept": false,
    "isDisposedInternal": false,
    "shape": [2],
    "dtype": "int32",
    "size": 2,
    "strides": [],
    "dataId": {
      "id": 54
    },
    "id": 54,
    "rankType": "1",
    "scopeId": 27
  },
  "validOutputs": {
    "kept": false,
    "isDisposedInternal": false,
    "shape": [],
    "dtype": "int32",
    "size": 1,
    "strides": [],
    "dataId": {
      "id": 55
    },
    "id": 55,
    "rankType": "0",
    "scopeId": 27
  }
}

示例 2:在此示例中,我们将使用浮点数组、iouThreshold、scoreThreshold 以及 padToMaxOutputSize。

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.nonMaxSuppressionPaddedAsync() method
const res = await tf.image.nonMaxSuppressionPaddedAsync(
  arr, [2.1, 0], 100, 0.5, 1, true);
  
// Printing output
console.log(res);

输出:

{
  "selectedIndices": {
    "kept": false,
    "isDisposedInternal": false,
    "shape": [2],
    "dtype": "int32",
    "size": 2,
    "strides": [],
    "dataId": {
      "id": 62
    },
    "id": 62,
    "rankType": "1",
    "scopeId": 29
  },
  "validOutputs": {
    "kept": false,
    "isDisposedInternal": false,
    "shape": [],
    "dtype": "int32",
    "size": 1,
    "strides": [],
    "dataId": {
      "id": 63
    },
    "id": 63,
    "rankType": "0",
    "scopeId": 29
  }
}

参考: https://js.tensorflow.org/api/latest/#image.nonMaxSuppressionPaddedAsync