TAO v5.5.0

离线数据增强

注意

离线数据增强目前仅设计用于使用 KITTI 或 COCO 格式的目标检测数据集。

训练深度神经网络可能是一项艰巨的任务,而训练模型最重要的组成部分是数据。获取经过整理和标注的数据集通常是一个手动过程,需要数千人时进行细致的标注。即使数据经过仔细收集和规划,也很难估计网络可能遇到的所有极端情况,而重复收集缺失数据并对其进行标注的过程非常昂贵且周转时间长。

使用训练数据加载器的在线增强是增加数据集中变异性的一个好方法。但是,增强数据是根据数据加载器在采样数据时遵循的分布随机生成的。为了获得高水平的准确率,模型可能需要训练很长时间。

为了规避这些限制,生成一个具有所需增强的数据集,并将控制权交给用户,TAO 数据服务提供了一个离线数据增强服务。当收集和标注数据成本高昂或不可能时,离线增强可以显著增加数据集的大小。增强服务提供多种自定义 GPU 加速的增强例程

  • 空间增强

  • 色彩空间增强

  • 图像模糊

空间增强

空间增强包括在空间中增强数据的例程。支持以下空间增强操作

  • 旋转(可选,带有 AI 辅助的边界框优化)

  • 调整大小

  • 平移

  • 剪切

  • 翻转

色彩空间增强

色彩空间增强包括在色彩空间中增强图像数据的例程。支持以下操作符

  • 色调旋转

  • 亮度偏移

  • 对比度偏移

图像模糊

除了上述增强操作外,增强服务还支持图像模糊或锐化,这在FilterKernel 配置中进一步描述。

空间增强例程应用于图像以及真实标签,而颜色增强例程和通道式模糊运算符仅应用于图像。示例工作流程如下

augmenting1.png

离线数据增强需要一个图像目录和一个包含 KITTI 文本标签或 COCO JSON 文件的目录。

有关数据格式的更多信息,请参阅数据标注格式的 KITTICOCO 部分。

增强实验的配置 YAML 文件包含四个主要组件,以及一些用于启动多 GPU 作业和保存作业日志的全局参数。

  • 空间增强配置

  • 颜色增强配置

  • 模糊配置

  • 数据配置(输出图像尺寸、数据集类型等)

参数 数据类型 描述
spatial_aug Dict 配置 空间增强操作符的配置
color_aug Dict 配置 颜色增强操作符的配置
blur_aug Dict 配置 要应用于图像的高斯模糊操作符的配置。模糊是按通道计算的,然后根据图像通道数进行连接。
data Dict 配置 输入数据类型和输入/输出数据集位置的配置
random_seed int32 随机增强操作的种子
num_gpus int32 用于增强任务的 GPU 数量
gpu_ids List[int] 用于增强任务的 GPU 索引
cuda_blocking bool 用于向命令调用添加 CUDA_LAUNCH_BLOCKING=1 的调试标志
results_dir string 保存实验结果的目录

空间增强配置

空间增强配置包含用于配置空间增强例程的参数。

参数 数据类型 描述 支持的值
rotation Dict 配置 配置旋转增强操作符。定义此值将激活旋转。
复制
已复制!
            

{ angle: 0.5 units: degrees }

请参阅旋转配置
flip Dict 配置 配置翻转增强操作符。定义此值将激活沿水平和/或垂直轴的翻转。
复制
已复制!
            

{ flip_vertical: true flip_horizontal: true }

请参阅翻转配置
translation Dict 配置 配置平移增强操作符。定义此值将激活沿 x 和/或 y 轴平移图像。
复制
已复制!
            

{ translate_x: 8 translate_y: 8 }

请参阅平移配置
shear Dict 配置 配置剪切增强操作符。定义此值将激活沿 x 和/或 y 轴对图像进行剪切。
复制
已复制!
            

{ shear_ratio_x: 0.2 shear_ratio_y: 0.2 }

请参阅剪切配置

旋转配置

旋转操作以一定角度旋转图像。剪切操作的变换矩阵计算如下

复制
已复制!
            

[x_new, y_new, 1] = [x, y, 1] * [[cos(angle) sin(angle) zero] [-sin(angle) cos(angle) zero] [x_t y_t one]] Where x_t, y_t are defined as x_t = height * sin(angle) / 2.0 - width * cos(angle) / 2.0 + width / 2.0 y_t = -1 * height * cos(angle) / 2.0 + height / 2.0 - width * sin_(angle) / 2.0 Here height = height of the output image, width = width of the output image.

参数

数据类型

描述

支持的值

angle float 要应用于图像和坐标的旋转角度 +/- 0 - 360 (度) +/- 0 - 2ℼ (弧度)
units string 测量 angle 参数的单位 “degrees”、“radians”
refine_box Dict 配置 用于启用 AI 辅助边界框优化的参数

参数

数据类型

描述

支持的值

gt_cache string 真实掩码标签或 TAO 自动标注服务生成的伪掩码标签的路径
enabled boolean 一个标志,指定是否启用 AI 辅助边界框优化 True, False

剪切配置

剪切操作沿 x 或 y 维度向对象引入倾斜。剪切操作的变换矩阵计算如下

复制
已复制!
            

[x_new, y_new, 1] = [x, y, 1] * [[1.0 shear_ratio_y, 0], [shear_ratio_x, 1.0, 0], [x_t, y_t, 1.0]] X_t = -height * shear_ratio_x / 2. Y_t = -width * shear_ratio_y / 2. Here height = height of the output image, width = width of the output image.

参数

数据类型

描述

支持的值

shear_ratio_x float32 每 y 行的水平位移量。
shear_ratio_y float32 每 x 列的垂直位移量。

翻转配置

该操作符沿水平轴和垂直轴翻转图像和边界框坐标。

参数

数据类型

描述

支持的值

flip_horizontal bool 用于启用水平翻转图像的标志 true, false
flip_vertical bool 用于启用垂直翻转图像的标志 true, false

平移配置

该操作符沿 x 和/或 y 轴平移图像和多边形坐标。

参数

数据类型

描述

支持的值

translate_x int 沿 x 轴平移图像的像素数 0 - image_width
translate_y int 沿 y 轴平移图像的像素数 0 - image_height

颜色增强配置

颜色增强配置包含用于配置颜色空间增强例程的参数,包括以下内容

参数

数据类型

描述

hue Dict 配置 此增强操作符应用色调旋转增强。
contrast Dict 配置 此增强操作符应用对比度缩放。
brightness Dict 配置 这配置了亮度偏移增强操作符。
saturation Dict 配置 此增强操作符应用颜色饱和度增强。

色调配置

此增强操作符通过将 RGB 图像转换为 HSV,执行色调旋转,然后返回相应的 RGB 图像来应用色彩空间操作。

参数

数据类型

描述

支持的值

hue_rotation_angle float32 色调旋转角度,以度为单位(标量或向量)。值为 0.0(模 360)时,色调保持不变。 0 - 360(角度计算为 angle % 360)

饱和度配置

此增强操作符通过将 RGB 图像转换为 HSV,执行饱和度偏移,然后返回相应的 RGB 图像来应用色彩空间操作。

参数

数据类型

描述

支持的值

saturation_shift float32 饱和度偏移乘数。值为 1.0 时,饱和度保持不变。值为 0 时,会移除图像的所有饱和度,并使所有通道的值相等。 0.0 - 1.0

亮度配置

此增强操作符应用通道式亮度偏移。

参数

数据类型

描述

支持的值

offset float32 每个颜色通道的偏移值 0 - 255

对比度配置

此增强操作符对图像应用跨中心点的对比度缩放。

参数

数据类型

描述

支持的值

contrast float32 对比度缩放值。值为 0 时,对比度保持不变。 0 - 1.0
center float32 图像的中心值。在这种情况下,图像在 0-255 之间缩放(8 位图像),因此设置 127.5 的值很常见。 0.0 - 1.0

KernelFilter 配置

KernelFilter 配置对图像应用高斯模糊操作符。高斯核根据以下参数制定,然后在图像和核之间执行逐通道 2D 卷积。

参数

数据类型

描述

支持的值

size int 卷积核的大小 >0
std float 用于模糊的高斯滤波器的标准差 >0.0

数据配置

数据配置参数配置输入和输出数据维度、类型和位置。

参数

数据类型

描述

dataset_type string 数据集类型。仅支持“coco”和“kitti”值
output_image_width Optional[int] 输出图像宽度。如果未指定此值,则保留输入图像宽度。
output_image_height Optional[int] 输出图像高度。如果未指定此值,则保留输入图像高度。
image_dir string 输入图像目录
ann_path string 标注路径(即 KITTI 数据集的标签目录和 COCO 的标注 JSON)
output_dataset string 用于保存增强图像和标签的目录
batch_size int DALI 数据加载器的批次大小
include_masks boolean 一个标志,指定在读取 COCO JSON 文件时是否加载分割标注

离线增强服务具有简单的命令行界面,定义如下

复制
已复制!
            

tao dataset augmentation generate [-h] -e <experiment spec file> [results_dir=<global_results_dir>] [spatial_aug.<spatial_aug_option>=<spatial_aug_option_value>] [color_aug.<color_aug_option>=<color_aug_option_value>] [blur_aug.<blur_aug_option>=<blur_aug_option_value>] [data.<data_option>=<data_option_value>] [num_gpus=<num_gpus>] [gpu_ids=<gpu_ids>]

  • -e, --experiment_spec_file:YAML spec 文件的路径

可选参数

生成数据集后,您可以使用代码:dataset-convert 工具将其转换为 TFRecords,以便 train 子任务可以摄取它。有关将数据转换为 TFRecords 的详细信息,请参阅对象检测的数据输入部分,以及使用此数据集训练模型在数据标注格式部分中描述。

以下是一些示例渲染的增强图像

rendered_aug_images1.png

输入图像旋转 5 度

rendered_aug_images2.png

图像旋转 5 度,色调旋转 25 度,饱和度偏移 0.0

上一篇 标注
下一篇 自动标注
© 版权所有 2024, NVIDIA。 上次更新时间:2024 年 10 月 15 日。