调整大小

调整大小 - 19

版本

  • 名称: Resize (GitHub)

  • 域名: main

  • since_version: 19

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本19起可用。

摘要

调整输入张量的大小。通常,它计算输出张量中的每个值作为输入张量中邻域(也称为采样位置)的加权平均值。 输出张量的每个维度值为:

output_dimension = floor(input_dimension * (roi_end - roi_start) * scale)

如果未指定输入“sizes”。

属性

  • antialias - INT (默认为 '0'):

    如果设置为1,“linear”和“cubic”插值模式在缩小图像时将使用抗锯齿滤波器。抗锯齿是通过将重采样滤波器拉伸一个因子max(1, 1 / scale)来实现的,这意味着在缩小图像时,更多的输入像素会贡献给一个输出像素。

  • axes - INTS :

    如果提供,它指定了“roi”、“scales”和“sizes”所参考的轴子集。如果未提供,则假定所有轴为[0, 1, …, r-1],其中r = rank(data)。未指定的维度被解释为不可调整大小。负值表示从后向前计数维度。接受的范围是[-r, r-1],其中r = rank(data)。如果轴重复,则行为未定义。

  • coordinate_transformation_mode - 字符串 (默认值为 'half_pixel'):

    此属性描述了如何将调整大小后的张量中的坐标转换为原始张量中的坐标。

    每个维度的坐标都是单独转换的。让我们以x轴为例来描述一个情况。 将x_resized表示为调整大小后的张量中x轴的坐标, x_original表示为原始张量中x轴的坐标, length_original表示为原始张量在x轴上的长度, length_resized表示为调整大小后的张量在x轴上的长度, scale = length_resized / length_originaloutput_width表示x轴上的目标长度,当它根据比例因子计算时,可以是一个分数, 而output_width_int表示作为整数的有效输出宽度。

    如果coordinate_transformation_mode是"half_pixel"

    x_original = (x_resized + 0.5) / scale - 0.5
    

    如果coordinate_transformation_mode是"half_pixel_symmetric"

    adjustment = output_width_int / output_width
    center = input_width / 2
    offset = center * (1 - adjustment)
    x_ori = offset + (x + 0.5) / scale - 0.5
    

    如果coordinate_transformation_mode是"pytorch_half_pixel"

    x_original = length_resized > 1 ? (x_resized + 0.5) / scale - 0.5 : 0
    

    如果coordinate_transformation_mode是"align_corners",

    x_original = x_resized * (length_original - 1) / (length_resized - 1)
    

    如果coordinate_transformation_mode是"asymmetric"

    x_original = x_resized / scale
    

    如果coordinate_transformation_mode是"tf_crop_and_resize"

    x_original = length_resized > 1 ? start_x * (length_original - 1) + x_resized * (end_x - start_x) * (length_original - 1) / (length_resized - 1) : 0.5 * (start_x + end_x) * (length_original - 1)
    

    .

  • cubic_coeff_a - FLOAT (默认为 '-0.75'):

    三次插值中使用的系数‘a’。两种常见选择是-0.5(在某些TensorFlow情况下)和-0.75(在PyTorch中)。详情请查看https://ieeexplore.ieee.org/document/1163711中的方程(4)。此属性仅在模式为“cubic”时有效。

  • exclude_outside - INT (默认值为 '0'):

    如果设置为1,张量外部采样位置的权重将被设置为0,并且权重将重新归一化,使其总和为1.0。默认值为0。

  • extrapolation_value - FLOAT (默认值为 '0.0'):

    当coordinate_transformation_mode为“tf_crop_and_resize”且x_original超出范围[0, length_original - 1]时,此值用作相应的输出值。默认值为0.0f。

  • keep_aspect_ratio_policy - STRING (默认为 'stretch'):

    此属性描述了如何解释sizes输入以保持输入的原始宽高比,并且在使用了scales输入时不适用。

    给定一组sizes,与axes的子集相关联(明确提供或默认),并假设d = axes[i],其中i是提供的sizes的索引。

    如果 keep_aspect_ratio_policy"stretch",则忽略原始宽高比,并将输入调整为指定大小: out_size[d] = sizes[i]

    如果 keep_aspect_ratio_policy"not_larger",则调整大小以使输出的任何部分都不大于指定的大小,同时保持原始宽高比:

    scale = Min(sizes[i] / in_size[d])
    out_size[d] = round_int(scale * in_size[i])
    

    如果 keep_aspect_ratio_policy"not_smaller",则调整大小以使输出的任何部分都不小于指定的大小,同时保持原始宽高比:

    scale = Max(sizes[i] / in_size[d])
    out_size[d] = round_int(scale * in_size[i])
    

    对于不可调整大小的轴(未在axes中指定的轴),输出大小将等于输入大小。

    注意:round_int 表示计算最接近的整数值,四舍五入时中间值向上取整。

  • mode - STRING (默认是 'nearest'):

    三种插值模式:“nearest”(默认)、“linear”和“cubic”。“linear”模式包括一维张量的线性插值和N维张量的N线性插值(例如,二维张量的双线性插值)。“cubic”模式包括一维张量的三次插值和N维张量的N三次插值(例如,二维张量的双三次插值)。

  • nearest_mode - 字符串 (默认是 'round_prefer_floor'):

    四种模式:“round_prefer_floor”(默认,也称为向下舍入),“round_prefer_ceil”(也称为向上舍入),“floor”,“ceil”。仅用于最近邻插值。它指示如何从x_original中获取输入张量中的“最近”像素,因此只有在“mode”为“nearest”时,此属性才有效。

输入

介于1到4个输入之间。

  • X (异构) - T1:

    N维张量

  • roi (可选, 异构) - T2:

    一维张量,给定为 [start1, …, startN, end1, …, endN],其中 N 是 X 的秩或 axes 的长度(如果提供)。RoI 的坐标在输入图像的坐标系中归一化。仅当 coordinate_transformation_mode 为 “tf_crop_and_resize” 时生效。

  • scales (可选, 异构) - tensor(float):

    每个维度上的缩放数组。它的值大于0。如果小于1,则表示下采样,否则表示上采样。'scales'的元素数量应与输入'X'的秩或'axes'的长度(如果提供)相同。必须指定'scales'和'sizes'中的一个,如果同时指定两者则是错误的。如果需要'sizes',用户可以在该操作符的输入列表中使用空字符串作为'scales'的名称。

  • sizes(可选,异构) - tensor(int64):

    输出张量的目标大小。其解释取决于‘keep_aspect_ratio_policy’的值。‘sizes’的元素数量应与输入‘X’的秩相同,或者如果提供了‘axes’,则应与‘axes’的长度相同。只能指定‘scales’和‘sizes’中的一个。

输出

  • Y (异构) - T1:

    调整大小后的N维张量

类型约束

  • T1 在 ( tensor(bfloat16), tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ):

    将输入‘X’和输出‘Y’限制为所有张量类型。

  • T2 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将roi类型限制为float或double。

调整大小 - 18

版本

  • 名称: Resize (GitHub)

  • 域名: main

  • since_version: 18

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本18起可用。

摘要

调整输入张量的大小。通常,它将输出张量中的每个值计算为输入张量中邻域(即采样位置)的加权平均值。 输出张量的每个维度值为:
output_dimension = floor(input_dimension * (roi_end - roi_start) * scale)
如果未指定输入“sizes”。

属性

  • antialias - INT (默认为 '0'):

    如果设置为1,“linear”和“cubic”插值模式在缩小图像时将使用抗锯齿滤波器。抗锯齿是通过将重采样滤波器拉伸一个因子max(1, 1 / scale)来实现的,这意味着在缩小图像时,更多的输入像素会贡献给一个输出像素。

  • axes - INTS :

    如果提供,它指定了“roi”、“scales”和“sizes”所参考的轴子集。如果未提供,则假定所有轴为[0, 1, …, r-1],其中r = rank(data)。未指定的维度被解释为不可调整大小。负值表示从后向前计数维度。接受的范围是[-r, r-1],其中r = rank(data)。如果轴重复,则行为未定义。

  • coordinate_transformation_mode - 字符串 (默认值为 'half_pixel'):

    此属性描述了如何将调整大小后的张量中的坐标转换为原始张量中的坐标。

    每个维度的坐标都是单独转换的。让我们以x轴为例描述一个情况。 将x_resized表示为调整大小后的张量中x轴的坐标,x_original表示为原始张量中x轴的坐标,length_original表示为原始张量在x轴上的长度,length_resized表示为调整大小后的张量在x轴上的长度,roi_x = (start_x, end_x) 表示输入“roi”中x轴的起始和结束坐标,scale = length_resized / length_original

    如果coordinate_transformation_mode是"half_pixel"
    x_original = (x_resized + 0.5) / scale - 0.5

    如果coordinate_transformation_mode是"pytorch_half_pixel"
    x_original = length_resized > 1 ? (x_resized + 0.5) / scale - 0.5 : 0

    如果coordinate_transformation_mode是"align_corners"
    x_original = x_resized * (length_original - 1) / (length_resized - 1)

    如果coordinate_transformation_mode是"asymmetric"
    x_original = x_resized / scale

    如果 coordinate_transformation_mode 是 "tf_crop_and_resize",
    x_original = length_resized > 1 ? start_x * (length_original - 1) + x_resized * (end_x - start_x) * (length_original - 1) / (length_resized - 1) : 0.5 * (start_x + end_x) * (length_original - 1) .

  • cubic_coeff_a - FLOAT (默认为 '-0.75'):

    三次插值中使用的系数‘a’。两种常见选择是-0.5(在某些TensorFlow情况下)和-0.75(在PyTorch中)。详情请查看https://ieeexplore.ieee.org/document/1163711中的方程(4)。此属性仅在模式为“cubic”时有效。

  • exclude_outside - INT (默认值为 '0'):

    如果设置为1,张量外部采样位置的权重将被设置为0,并且权重将重新归一化,使其总和为1.0。默认值为0。

  • extrapolation_value - FLOAT (默认值为 '0.0'):

    当coordinate_transformation_mode为“tf_crop_and_resize”且x_original超出范围[0, length_original - 1]时,此值用作相应的输出值。默认值为0.0f。

  • keep_aspect_ratio_policy - STRING (默认为 'stretch'):

    此属性描述了如何解释sizes输入以保持输入的原始宽高比,并且当使用scales输入时不适用。

    给定一组sizes,与axes的子集相关联(明确提供或默认),并假设d = axes[i],其中i是提供的sizes的索引。

    如果 keep_aspect_ratio_policy"stretch",则忽略原始宽高比,并将输入调整为指定大小:
    out_size[d] = sizes[i]

    如果keep_aspect_ratio_policy"not_larger",则调整大小以使输出的任何尺寸都不大于指定的大小,同时保持原始的宽高比:
    scale = Min(sizes[i] / in_size[d])
    out_size[d] = round_int(scale * in_size[i])

    如果 keep_aspect_ratio_policy"not_smaller",则调整大小以使输出的任何部分都不小于指定的大小,同时保持原始宽高比:
    scale = Max(sizes[i] / in_size[d])
    out_size[d] = round_int(scale * in_size[i])

    对于不可调整大小的轴(未在axes中指定的轴),输出大小将等于输入大小。

    注意:round_int 表示计算最接近的整数值,四舍五入时中间值向上取整。

  • mode - STRING (默认是 'nearest'):

    三种插值模式:“nearest”(默认)、“linear”和“cubic”。“linear”模式包括一维张量的线性插值和N维张量的N线性插值(例如,二维张量的双线性插值)。“cubic”模式包括一维张量的三次插值和N维张量的N三次插值(例如,二维张量的双三次插值)。

  • nearest_mode - 字符串 (默认是 'round_prefer_floor'):

    四种模式:“round_prefer_floor”(默认,也称为向下舍入),“round_prefer_ceil”(也称为向上舍入),“floor”,“ceil”。仅用于最近邻插值。它指示如何从x_original中获取输入张量中的“最近”像素,因此只有在“mode”为“nearest”时,此属性才有效。

输入

介于1到4个输入之间。

  • X (异构) - T1:

    N维张量

  • roi (可选, 异构) - T2:

    一维张量,给定为 [start1, …, startN, end1, …, endN],其中 N 是 X 的秩或 axes 的长度(如果提供)。RoI 的坐标在输入图像的坐标系中归一化。仅当 coordinate_transformation_mode 为 “tf_crop_and_resize” 时生效。

  • scales (可选, 异构) - tensor(float):

    每个维度上的缩放数组。它的值大于0。如果小于1,则表示下采样,否则表示上采样。'scales'的元素数量应与输入'X'的秩或'axes'的长度(如果提供)相同。必须指定'scales'和'sizes'中的一个,如果同时指定两者则是错误的。如果需要'sizes',用户可以在该操作符的输入列表中使用空字符串作为'scales'的名称。

  • sizes(可选,异构) - tensor(int64):

    输出张量的目标大小。其解释取决于‘keep_aspect_ratio_policy’的值。‘sizes’的元素数量应与输入‘X’的秩相同,或者如果提供了‘axes’,则应与‘axes’的长度相同。只能指定‘scales’和‘sizes’中的一个。

输出

  • Y (异构) - T1:

    调整大小后的N维张量

类型约束

  • T1 在 ( tensor(bfloat16), tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ):

    将输入‘X’和输出‘Y’限制为所有张量类型。

  • T2 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将roi类型限制为float或double。

调整大小 - 13

版本

  • 名称: Resize (GitHub)

  • 域名: main

  • since_version: 13

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本13起可用。

总结

调整输入张量的大小。通常,它计算输出张量中的每个值作为输入张量中邻域(即采样位置)的加权平均值。 输出张量的每个维度值为: output_dimension = floor(input_dimension * (roi_end - roi_start) * scale) 如果未指定输入“sizes”。

属性

  • coordinate_transformation_mode - 字符串 (默认值为 'half_pixel'):

    此属性描述了如何将调整大小后的张量中的坐标转换为原始张量中的坐标。

    每个维度的坐标都是单独转换的。让我们以x轴为例描述一个情况。 将x_resized表示为调整大小后的张量中x轴的坐标,x_original表示为原始张量中x轴的坐标,length_original表示为原始张量在x轴上的长度,length_resized表示为调整大小后的张量在x轴上的长度,roi_x = (start_x, end_x) 表示输入“roi”中x轴的起始和结束位置,scale = length_resized / length_original,

    如果coordinate_transformation_mode是“half_pixel”,
    x_original = (x_resized + 0.5) / scale - 0.5,

    如果coordinate_transformation_mode是“pytorch_half_pixel”,
    x_original = length_resized > 1 ? (x_resized + 0.5) / scale - 0.5 : 0,

    如果coordinate_transformation_mode是“align_corners”,
    x_original = x_resized * (length_original - 1) / (length_resized - 1),

    如果coordinate_transformation_mode是“asymmetric”,
    x_original = x_resized / scale,

    如果coordinate_transformation_mode是“tf_crop_and_resize”,
    x_original = length_resized > 1 ? start_x * (length_original - 1) + x_resized * (end_x - start_x) * (length_original - 1) / (length_resized - 1) : 0.5 * (start_x + end_x) * (length_original - 1).

  • cubic_coeff_a - FLOAT (默认为 '-0.75'):

    三次插值中使用的系数‘a’。两种常见选择是-0.5(在某些TensorFlow情况下)和-0.75(在PyTorch中)。详情请查看https://ieeexplore.ieee.org/document/1163711中的方程(4)。此属性仅在“mode”为“cubic”时有效。

  • exclude_outside - INT (默认值为 '0'):

    如果设置为1,张量外部采样位置的权重将被设置为0,并且权重将重新归一化,使其总和为1.0。默认值为0。

  • extrapolation_value - FLOAT (默认值为 '0.0'):

    当coordinate_transformation_mode为“tf_crop_and_resize”且x_original超出范围[0, length_original - 1]时,此值用作相应的输出值。默认值为0.0f。

  • mode - STRING (默认是 'nearest'):

    三种插值模式:最近邻(默认)、线性和三次。 “线性”模式包括一维张量的线性插值和N维张量的N线性插值(例如,二维张量的双线性插值)。 “三次”模式包括一维张量的三次插值和N维张量的N三次插值(例如,二维张量的双三次插值)。

  • nearest_mode - 字符串 (默认是 'round_prefer_floor'):

    四种模式:round_prefer_floor(默认,也称为向下取半)、round_prefer_ceil(也称为向上取半)、floor、ceil。仅用于最近邻插值。它指示如何从x_original中获取输入张量中的“最近”像素,因此此属性仅在“mode”为“nearest”时有效。

输入

介于1到4个输入之间。

  • X (异构) - T1:

    N维张量

  • roi (可选, 异构) - T2:

    一维张量,表示为 [start1, …, startN, end1, …, endN],其中 N 是 X 的秩。RoI 的坐标在输入图像的坐标系中归一化。仅当 coordinate_transformation_mode 为 “tf_crop_and_resize” 时生效。

  • scales (可选, 异构) - tensor(float):

    每个维度上的缩放比例数组。它的值必须大于0。如果小于1,则表示下采样,否则表示上采样。'scales'的元素数量应与输入'X'的秩相同。必须指定'scales'和'sizes'中的一个,如果同时指定两者则是错误的。如果需要'sizes',用户可以在该操作符的输入列表中使用空字符串作为'scales'的名称。

  • sizes(可选,异构) - tensor(int64):

    输出张量的大小。'sizes'的元素数量应与输入'X'的秩相同。只能指定'scales'和'sizes'中的一个。

输出

  • Y (异构) - T1:

    调整大小后的N维张量

类型约束

  • T1 在 ( tensor(bfloat16), tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ):

    将输入‘X’和输出‘Y’限制为所有张量类型。

  • T2 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将roi类型限制为float或double。

调整大小 - 11

版本

  • 名称: Resize (GitHub)

  • 域名: main

  • since_version: 11

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本11起可用。

摘要

调整输入张量的大小。通常,它计算输出张量中的每个值作为输入张量中邻域(即采样位置)的加权平均值。 输出张量的每个维度值为: output_dimension = floor(input_dimension * (roi_end - roi_start) * scale) 如果未指定输入“sizes”。

属性

  • coordinate_transformation_mode - 字符串 (默认值为 'half_pixel'):

    此属性描述了如何将调整大小后的张量中的坐标转换为原始张量中的坐标。

    每个维度的坐标都是单独转换的。让我们以x轴为例描述一个情况。 将x_resized表示为调整大小后的张量中x轴的坐标,x_original表示为原始张量中x轴的坐标,length_original表示为原始张量在x轴上的长度,length_resized表示为调整大小后的张量在x轴上的长度,roi_x = (start_x, end_x) 表示输入“roi”中x轴的起始和结束位置,scale = length_resized / length_original,

    如果coordinate_transformation_mode是“half_pixel”,
    x_original = (x_resized + 0.5) / scale - 0.5,

    如果coordinate_transformation_mode是“pytorch_half_pixel”,
    x_original = length_resized > 1 ? (x_resized + 0.5) / scale - 0.5 : 0,

    如果coordinate_transformation_mode是“align_corners”,
    x_original = x_resized * (length_original - 1) / (length_resized - 1),

    如果coordinate_transformation_mode是“asymmetric”,
    x_original = x_resized / scale,

    如果coordinate_transformation_mode是“tf_half_pixel_for_nn”,
    x_original = (x_resized + 0.5) / scale,

    如果coordinate_transformation_mode是“tf_crop_and_resize”,
    x_original = length_resized > 1 ? start_x * (length_original - 1) + x_resized * (end_x - start_x) * (length_original - 1) / (length_resized - 1) : 0.5 * (start_x + end_x) * (length_original - 1)。

  • cubic_coeff_a - FLOAT (默认为 '-0.75'):

    三次插值中使用的系数‘a’。两个常见的选择是-0.5(在某些TensorFlow情况下)和-0.75(在PyTorch中)。查看https://ieeexplore.ieee.org/document/1163711中的方程(4)以获取详细信息。此属性仅在“mode”为“cubic”时有效。

  • exclude_outside - INT (默认值为 '0'):

    如果设置为1,张量外部采样位置的权重将被设置为0,并且权重将重新归一化,使其总和为1.0。默认值为0。

  • extrapolation_value - FLOAT (默认值为 '0.0'):

    当coordinate_transformation_mode为“tf_crop_and_resize”且x_original超出范围[0, length_original - 1]时,此值用作相应的输出值。默认值为0.0f。

  • mode - STRING (默认是 'nearest'):

    三种插值模式:最近邻(默认)、线性和三次。 “线性”模式包括一维张量的线性插值和N维张量的N线性插值(例如,二维张量的双线性插值)。 “三次”模式包括一维张量的三次插值和N维张量的N三次插值(例如,二维张量的双三次插值)。

  • nearest_mode - 字符串 (默认是 'round_prefer_floor'):

    四种模式:round_prefer_floor(默认,也称为向下取半)、round_prefer_ceil(也称为向上取半)、floor、ceil。仅用于最近邻插值。它指示如何从x_original中获取输入张量中的“最近”像素,因此此属性仅在“mode”为“nearest”时有效。

输入

在3到4个输入之间。

  • X (异构) - T1:

    N维张量

  • roi (异质的) - T2:

    一维张量,表示为 [start1, …, startN, end1, …, endN],其中 N 是 X 的秩。RoI 的坐标在输入图像的坐标系中归一化。仅当 coordinate_transformation_mode 为 “tf_crop_and_resize” 时生效。

  • scales (异构) - tensor(float):

    每个维度上的缩放数组。它取值大于0。如果小于1,则为下采样,否则为上采样。'scales'的元素数量应与输入'X'的秩相同。如果需要'size',用户必须将'scales'设置为空张量。

  • sizes(可选,异构) - tensor(int64):

    输出张量的大小。'sizes'的元素数量应与输入'X'的秩相同。只有在'scales'设置为空张量时才能设置。

输出

  • Y (异构) - T1:

    调整大小后的N维张量

类型约束

  • T1 在 ( tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ):

    将输入‘X’和输出‘Y’限制为所有张量类型。

  • T2 在 ( tensor(double), tensor(float), tensor(float16) ) 中:

    将roi类型限制为float或double。

调整大小 - 10

版本

  • 名称: Resize (GitHub)

  • 域名: main

  • since_version: 10

  • 函数: False

  • support_level: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本10起可用。

摘要

调整输入张量的大小。 输出张量的每个维度值为: output_dimension = floor(input_dimension * scale)。

属性

  • mode - STRING (默认是 'nearest'):

    两种插值模式:最近邻(默认)和线性(包括双线性、三线性等)

输入

  • X (异构) - T:

    N维张量

  • scales (异构) - tensor(float):

    每个维度上的缩放数组。它的值大于0。如果小于1,则表示下采样,否则表示上采样。'scales'的元素数量应与输入'X'的秩相同。

输出

  • Y (异构) - T:

    调整大小后的N维张量

类型约束

  • T 在 ( tensor(bool), tensor(complex128), tensor(complex64), tensor(double), tensor(float), tensor(float16), tensor(int16), tensor(int32), tensor(int64), tensor(int8), tensor(string), tensor(uint16), tensor(uint32), tensor(uint64), tensor(uint8) ):

    将输入‘X’和输出‘Y’限制为所有张量类型。