nvidia.dali.fn.crop_mirror_normalize#
- nvidia.dali.fn.crop_mirror_normalize(__input, /, *, bytes_per_sample_hint=[0], crop=None, crop_d=0.0, crop_h=0.0, crop_pos_x=0.5, crop_pos_y=0.5, crop_pos_z=0.5, crop_w=0.0, dtype=DALIDataType.FLOAT, fill_values=[0.0], mean=[0.0], mirror=0, out_of_bounds_policy='error', output_layout='CHW', pad_output=False, preserve=False, rounding='round', scale=1.0, shift=0.0, std=[1.0], device=None, name=None)#
执行融合的裁剪、归一化、格式转换(NHWC 到 NCHW,如果需要)和类型转换。
归一化采用输入图像,并使用以下公式生成输出
output = scale * (input - mean) / std + shift
注意
如果未指定裁剪参数,则只会进行镜像和归一化。
此操作符允许序列输入,并支持体积数据。
- 支持的后端
‘cpu’
‘gpu’
- 参数:
__input¶ (TensorList ('HWC', 'CHW', 'DHWC', 'CDHW', 'FHWC', 'FCHW', 'CFHW', 'FDHWC', 'FCDHW', 'CFDHW')) – 运算符的输入。
- 关键字参数:
bytes_per_sample_hint¶ (int 或 list of int, 可选, 默认 = [0]) –
输出大小提示,以每个样本的字节数为单位。
如果指定,则将预先分配驻留在 GPU 或页锁定主机内存中的运算符输出,以容纳此大小的样本批次。
crop¶ (float 或 list of float 或 TensorList of float, 可选) –
裁剪图像的形状,指定为值列表(例如,2D 裁剪的
(crop_H, crop_W)
和体积裁剪的(crop_D, crop_H, crop_W)
)。crop_d¶ (float 或 TensorList of float, 可选, 默认 = 0.0) –
仅适用于体积输入;裁剪窗口深度(以体素为单位)。
crop_w
、crop_h
和crop_d
必须一起指定。为crop_w
、crop_h
和crop_d
提供值与提供固定裁剪窗口尺寸(参数crop
)不兼容。crop_h¶ (float 或 TensorList of float, 可选, 默认 = 0.0) –
裁剪窗口高度(以像素为单位)。
crop_pos_x¶ (float 或 TensorList of float, 可选, 默认 = 0.5) –
裁剪窗口水平位置的归一化值 (0.0 - 1.0)(左上角)。
实际位置计算为
crop_x = crop_x_norm * (W - crop_W)
,其中 crop_x_norm 是归一化位置,W
是图像宽度,crop_W
是裁剪窗口宽度。有关
crop_x
如何转换为整数值的更多详细信息,请参阅rounding
参数。crop_pos_y¶ (float 或 TensorList of float, 可选, 默认 = 0.5) –
裁剪窗口起始位置(通常为左上角)的归一化垂直位置 (0.0 - 1.0)。
实际位置计算为
crop_y = crop_y_norm * (H - crop_H)
,其中crop_y_norm
是归一化位置,H 是图像高度,crop_H
是裁剪窗口高度。有关
crop_y
如何转换为整数值的更多详细信息,请参阅rounding
参数。crop_pos_z¶ (float 或 TensorList of float, 可选, 默认 = 0.5) –
仅适用于体积输入。
裁剪窗口法线位置的归一化值 (0.0 - 1.0)(前平面)。实际位置计算为
crop_z = crop_z_norm * (D - crop_D)
,其中crop_z_norm
是归一化位置,D
是图像深度,crop_D
是裁剪窗口深度。有关
crop_z
如何转换为整数值的更多详细信息,请参阅rounding
参数。crop_w¶ (float 或 TensorList of float, 可选, 默认 = 0.0) –
裁剪窗口宽度(以像素为单位)。
dtype¶ (
nvidia.dali.types.DALIDataType
, 可选, 默认 = DALIDataType.FLOAT) –输出数据类型。
支持的类型:
FLOAT
、FLOAT16
、INT8
、UINT8
。fill_values¶ (float 或 list of float, 可选, 默认 = [0.0]) –
确定填充值,仅在
out_of_bounds_policy
设置为“pad”时相关。如果提供标量值,它将用于所有通道。如果提供多个值,则值的数量和通道必须相同(输出切片中维度
C
的范围)。image_type¶ (
nvidia.dali.types.DALIImageType
) –警告
参数 image_type 不再使用,将在未来的版本中移除。
mean¶ (float 或 list of float 或 TensorList of float, 可选, 默认 = [0.0]) – 用于图像归一化的平均像素值。
mirror¶ (int 或 TensorList of int, 可选, 默认 = 0) – 如果非零,图像将水平翻转(镜像)。
out_of_bounds_policy¶ (str, 可选, 默认 = ‘error’) –
确定在对输入进行越界区域切片时的策略。
以下是支持值的列表
"error"
(默认): 尝试在输入边界之外进行切片将产生错误。"pad"
: 将根据需要使用零或使用fill_values
参数指定的任何其他值填充输入。"trim_to_shape"
: 切片窗口将裁剪到输入的边界。
output_dtype¶ (
nvidia.dali.types.DALIDataType
) –output_layout¶ (layout str, 可选, 默认 = ‘CHW’) – 输出的张量数据布局。
pad_output¶ (bool, 可选, 默认 = False) –
确定是否填充输出,以便通道数是 2 的幂。
用于填充的值由
fill_values
参数确定。preserve¶ (bool, 可选, 默认 = False) – 阻止操作符从图中移除,即使其输出未使用。
rounding¶ (str, 可选, 默认 = ‘round’) –
确定用于将窗口的起始坐标转换为整数值的舍入函数(请参阅
crop_pos_x
、crop_pos_y
、crop_pos_z
)。可能的值为
"round"
- 四舍五入到最接近的整数值,中间情况四舍五入到远离零的值。"truncate"
- 丢弃数字的小数部分(向零截断)。
scale¶ (float, 可选, 默认 = 1.0) –
结果乘以的值。
当使用整数输出以提高动态范围利用率时,此参数很有用。
shift¶ (float, 可选, 默认 = 0.0) –
添加到(缩放)结果的值。
当使用无符号整数输出以提高动态范围利用率时,此参数很有用。
std¶ (float 或 list of float 或 TensorList of float, 可选, 默认 = [1.0]) – 用于图像归一化的标准差值。