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#

标准的增强集(TrivialAugment Wide)可以通过在 pipeline 定义中调用 trivial_augment_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, 可选) – 用于划分幅度范围的箱数。

  • fill_value (int, 可选) – 用作通过 warp_affine 操作(平移、剪切和旋转)变换的图像/帧的填充值。如果指定 None,则图像/帧将用重复(钳制)的边框值填充。

  • interp_type (DALIInterpType, 可选) – warp_affine 操作(平移、剪切和旋转)使用的插值方法。支持的值为 types.INTERP_LINEAR(默认)和 types.INTERP_NN

  • max_translate_abs (int(int, int), 可选) – 仅当未提供 shapes 时有效。指定平移增强中的最大位移(以像素为单位)。如果指定了元组,则第一个分量限制高度,第二个分量限制宽度。默认为 32,这意味着最大幅度将图像移动 32 像素。

  • max_translate_rel (float(float, float), 可选) – 仅当提供了 shapes 参数时有效。指定平移增强中的最大位移,以图像形状的分数表示。如果指定了元组,则第一个分量限制高度,第二个分量限制宽度。默认为 1,这意味着最大幅度将图像完全移出画布。

  • seed (int, 可选) – 用于随机采样操作(以及否定幅度)的种子。

  • excluded (List[str], 可选) – 要从默认增强套件中排除的操作名称列表。如果除了限制操作集之外,您还需要包含一些自定义操作或微调现有操作,则可以直接使用 apply_trivial_augment(),它接受增强列表。

返回:

一批变换后的样本。

返回类型:

DataNode

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 方式采样和应用的增强列表。

  • data (DataNode) – 要处理的样本批次。

  • num_magnitude_bins (int, 可选) – 用于划分幅度范围的箱数。

  • seed (int, 可选) – 用于随机采样操作(以及否定幅度)的种子。

  • kwargs – 调用 augmentations 时要传递的任何额外参数。检查每个增强的签名是否有任何额外的参数,如果参数的名称与 kwargs 中的参数名称匹配,则将该值作为参数传递。例如,默认 TrivialAugment 套件中的某些增强接受 shapesfill_valueinterp_type

返回:

一批变换后的样本。

返回类型:

DataNode

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(int, int), 可选) – 仅在 use_shape=False 时有效,指定平移增强中的最大位移(以像素为单位)。如果指定了元组,则第一个分量限制高度,第二个分量限制宽度。默认为 32。

  • max_translate_rel (float(float, float), 可选) – 仅在 use_shape=True 时有效,指定平移增强中的最大位移,以图像/帧形状的分数表示。如果指定了元组,则第一个分量限制高度,第二个分量限制宽度。默认为 1。