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

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

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

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

.image.cropAndResize()函数用于从指定的输入图像张量中取出输出,并通过双线性采样或最近邻采样将它们重新缩放到由裁剪长度表示的正常输出尺寸。

句法:

tf.image.cropAndResize(image, boxes, boxInd, cropSize, 
method?, extrapolationValue?)

参数:此方法接受以下参数:

  • images:指定的 4d 张量,其配置为 [batch, imageHeight, imageWidth, depth]。其中, imageHeightimageWidth应该是正数,定义要从中进行裁剪的图像组。它可以是 tf.Tensor4D、TypedArray 或 Array 类型。
  • box:指定的 2d float32 张量,其配置为 [numBoxes, 4]。并且每次访问都是[y1, x1, y2, x2],使得(y1, x1) 和(y2, x2) 是该组中boxInd[i] 图像中框的标准化坐标。它可以是 tf.Tensor2D、TypedArray 或 Array 类型。
  • boxInd:规定的 1d int32 张量,其配置为 [numBoxes] 以及范围 [0, batch) 中的值,定义第 i 个框指示的图像。它的类型为 tf.Tensor1D、TypedArray 或 Array。
  • cropSize:它是规定的 1d int32 张量,它有两个元素,并且配置为 [cropHeigh,cropWidth],定义了每个作物重新缩放到的长度。它的类型是 [number, number]。
  • method:它是一个可选参数,定义了重新缩放的采样方法。默认值为双线性。它可以是“双线性”或“最近”类型。
  • extrapolationValue:它是规定的阈值,用于根据规定的分数得出何时删除框的结论。默认值为零。它是可选的,类型为 number。

返回值:返回 tf.Tensor4D 对象。

示例 1:使用 4d 张量、boxes、boxInd 和cropSize 参数。

Javascript
// Importing the tensorflow.js library
const tf = require("@tensorflow/tfjs")
  
// Calling image.cropAndResize() method and
// Printing output
tf.image.cropAndResize(tf.tensor4d([[
  [[1, 7], [21, 9]],
  [[8, 9], [1, 33]]
]]), tf.tensor2d([1, 2, 3, 4], [1, 4]), [2], [1, 1]).print();


Javascript
// Importing the tensorflow.js library
const tf = require("@tensorflow/tfjs")
  
// Defining an array of floats
const arr = [[
  [[1.1, 1.7, 1.5, 1.1], 
  [1.7, 1.9, 8.1, 6.3]],
  [[3.3, 3.4, 3.7, 4.0], 
  [5.1, 5.2, 5.3, 5.9]]
]];
  
// Defining boxes with an array of floats
const boxes = [[11.1, 2.3, 7.3, 6.4], [1, 4]];
  
// Calling image.cropAndResize() method and
// Printing output
tf.image.cropAndResize(arr, boxes, [2, 4], [2, 1], 'nearest', 0.4).print();


输出:

Tensor
     [ [ [[0, 0],]]]

示例 2:使用浮点数组、方法以及外插值。

Javascript

// Importing the tensorflow.js library
const tf = require("@tensorflow/tfjs")
  
// Defining an array of floats
const arr = [[
  [[1.1, 1.7, 1.5, 1.1], 
  [1.7, 1.9, 8.1, 6.3]],
  [[3.3, 3.4, 3.7, 4.0], 
  [5.1, 5.2, 5.3, 5.9]]
]];
  
// Defining boxes with an array of floats
const boxes = [[11.1, 2.3, 7.3, 6.4], [1, 4]];
  
// Calling image.cropAndResize() method and
// Printing output
tf.image.cropAndResize(arr, boxes, [2, 4], [2, 1], 'nearest', 0.4).print();

输出:

Tensor
    [[ [[0, 0, 0, 0],],

       [[0, 0, 0, 0],]],


     [ [[0, 0, 0, 0],],

       [[0, 0, 0, 0],]]]

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