TrivialAugment#
TrivialAugment,如 https://arxiv.org/abs/2103.10158 中所述,是一种自动增强方案,无需参数 - 可以直接使用,无需搜索最佳元参数。
每个样本仅使用一个随机选择的增强进行处理。每个增强的幅度箱是随机选择的。
要使用 TrivialAugment,请导入并在 pipeline 定义中调用 trivial_augment_wide()
,例如
from nvidia.dali import pipeline_def, fn, types
from nvidia.dali.auto_aug import trivial_augment
@pipeline_def(enable_conditionals=True)
def training_pipe(data_dir, image_size):
jpegs, labels = fn.readers.file(file_root=data_dir, ...)
shapes = fn.peek_image_shape(jpegs)
images = fn.decoders.image(jpegs, device="mixed", output_type=types.RGB)
augmented_images = trivial_augment.trivial_augment_wide(images, shape=shapes)
resized_images = fn.resize(augmented_images, size=[image_size, image_size])
return resized_images, labels
trivial_augment_wide()
使用论文中描述的标准增强集。要使用 TrivialAugment 的自定义版本,请参阅 TrivialAugment API 部分。
警告
您需要使用 @pipeline_def
装饰器定义 pipeline,并将 enable_conditionals
设置为 True
才能使用自动增强。
TrivialAugment API#
可以通过在 pipeline 定义中调用 trivial_augment_wide()
来使用标准增强集(TrivialAugment Wide)。
TrivialAugment 策略是增强的列表。要获取 TrivialAugment Wide 的列表,请使用 get_trivial_augment_wide_suite()
。
要使用自定义的增强列表,请将其作为第一个参数传递给在 pipeline 定义中调用的 apply_trivial_augment()
。
- nvidia.dali.auto_aug.trivial_augment.trivial_augment_wide(data, num_magnitude_bins=31, shape=None, fill_value=128, interp_type=None, max_translate_abs=None, max_translate_rel=None, seed=None, excluded=None)#
将 TrivialAugment Wide (https://arxiv.org/abs/2103.10158) 增强方案应用于提供的样本批次。
- 参数:
data¶ (DataNode) – 要处理的样本批次。支持的样本是 HWC 布局的图像和 FHWC 布局的视频,支持的数据类型为 uint8。
num_magnitude_bins¶ (int, optional) – 用于划分幅度范围的箱数。
fill_value¶ (int, optional) – 用作使用 warp_affine 操作(平移、剪切和旋转)变换的图像/帧的填充值。如果指定 None,则图像/帧将使用重复的边框值(钳位)进行填充。
interp_type¶ (DALIInterpType, optional) – warp_affine 操作(平移、剪切和旋转)使用的插值方法。支持的值为 types.INTERP_LINEAR(默认)和 types.INTERP_NN。
max_translate_abs¶ (int or (int, int), optional) – 仅当未提供
shapes
时有效。指定平移增强中的最大位移(以像素为单位)。如果指定了元组,则第一个分量限制高度,第二个分量限制宽度。默认为 32,这意味着最大幅度将图像移动 32 个像素。max_translate_rel¶ (float or (float, float), optional) – 仅当提供
shapes
参数时有效。指定平移增强中相对于图像形状的最大位移比例。如果指定了元组,则第一个分量限制高度,第二个分量限制宽度。默认为 1,这意味着最大幅度会将图像完全移出画布。seed¶ (int, optional) – 用于随机采样操作(以及否定幅度)的种子。
excluded¶ (List[str], optional) – 要从默认增强套件中排除的操作名称列表。如果,您不仅需要限制操作集,还需要包含一些自定义操作或微调现有操作,则可以直接使用
apply_trivial_augment()
,它接受增强列表。
- 返回值:
转换后的样本批次。
- 返回类型:
- nvidia.dali.auto_aug.trivial_augment.apply_trivial_augment(augmentations, data, num_magnitude_bins=31, seed=None, **kwargs)#
以 TrivialAugment (https://arxiv.org/abs/2103.10158) 方式应用
augmentations
列表中的增强。每个样本都使用从augmentations
列表中随机选择的变换进行处理。每个变换的幅度箱都是从 [0, num_magnitude_bins - 1] 中随机选择的。- 参数:
augmentations¶ (List[core._Augmentation]) – 要以 TrivialAugment 方式采样和应用的增强列表。
num_magnitude_bins¶ (int, optional) – 用于划分幅度范围的箱数。
seed¶ (int, optional) – 用于随机采样操作(以及否定幅度)的种子。
kwargs¶ – 调用
augmentations
时要传递的任何额外参数。检查每个增强的签名中是否有任何额外的参数,如果参数的名称与kwargs
中的名称匹配,则该值将作为参数传递。例如,来自默认 TrivialAugment 套件的一些增强接受shapes
、fill_value
和interp_type
。
- 返回值:
转换后的样本批次。
- 返回类型:
- nvidia.dali.auto_aug.trivial_augment.get_trivial_augment_wide_suite(use_shape=False, max_translate_abs=None, max_translate_rel=None)#
创建 TrivialAugment 论文 (https://arxiv.org/abs/2103.10158) 中称为宽增强空间的 14 个增强的列表。
- 参数:
use_shape¶ (bool) – 如果为 true,则平移偏移量计算为图像/帧形状的百分比。如果使用自动增强处理的样本具有不同的形状,则很有用。如果为 false,则偏移范围受常数 (
max_translate_abs
) 限制。max_translate_abs¶ (int or (int, int), optional) – 仅在 use_shape=False 时有效,指定平移增强中的最大位移(以像素为单位)。如果指定了元组,则第一个分量限制高度,第二个分量限制宽度。默认为 32。
max_translate_rel¶ (float or (float, float), optional) – 仅在 use_shape=True 时有效,指定平移增强中相对于图像/帧形状的最大位移比例。如果指定了元组,则第一个分量限制高度,第二个分量限制宽度。默认为 1。