离线数据增强
离线数据增强目前仅设计用于使用 KITTI 或 COCO 格式的目标检测数据集。
训练深度神经网络可能是一项艰巨的任务,而训练模型最重要的组成部分是数据。获取经过整理和标注的数据集通常是一个手动过程,需要数千人时进行细致的标注。即使数据经过仔细收集和规划,也很难估计网络可能遇到的所有极端情况,而重复收集缺失数据并对其进行标注的过程非常昂贵且周转时间长。
使用训练数据加载器的在线增强是增加数据集中变异性的一个好方法。但是,增强数据是根据数据加载器在采样数据时遵循的分布随机生成的。为了获得高水平的准确率,模型可能需要训练很长时间。
为了规避这些限制,生成一个具有所需增强的数据集,并将控制权交给用户,TAO 数据服务提供了一个离线数据增强服务。当收集和标注数据成本高昂或不可能时,离线增强可以显著增加数据集的大小。增强服务提供多种自定义 GPU 加速的增强例程
空间增强
色彩空间增强
图像模糊
空间增强
空间增强包括在空间中增强数据的例程。支持以下空间增强操作
旋转(可选,带有 AI 辅助的边界框优化)
调整大小
平移
剪切
翻转
色彩空间增强
色彩空间增强包括在色彩空间中增强图像数据的例程。支持以下操作符
色调旋转
亮度偏移
对比度偏移
图像模糊
除了上述增强操作外,增强服务还支持图像模糊或锐化,这在FilterKernel 配置中进一步描述。
空间增强例程应用于图像以及真实标签,而颜色增强例程和通道式模糊运算符仅应用于图像。示例工作流程如下

增强实验的配置 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 配置 | 配置旋转增强操作符。定义此值将激活旋转。 |
|
flip | Dict 配置 | 配置翻转增强操作符。定义此值将激活沿水平和/或垂直轴的翻转。 |
|
translation | Dict 配置 | 配置平移增强操作符。定义此值将激活沿 x 和/或 y 轴平移图像。 |
|
shear | Dict 配置 | 配置剪切增强操作符。定义此值将激活沿 x 和/或 y 轴对图像进行剪切。 |
|
旋转配置
旋转操作以一定角度旋转图像。剪切操作的变换矩阵计算如下
[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 文件的路径
可选参数
-h, --help
:显示此帮助消息并退出。spatial_aug.<spatial_aug_option>
:空间增强选项。color_aug.<color_aug_option>
:颜色增强选项。blur_aug.<blur_aug_option>
:模糊增强选项。data.<data_option>
:数据选项。
生成数据集后,您可以使用代码:dataset-convert 工具将其转换为 TFRecords,以便 train
子任务可以摄取它。有关将数据转换为 TFRecords 的详细信息,请参阅对象检测的数据输入部分,以及使用此数据集训练模型在数据标注格式部分中描述。
以下是一些示例渲染的增强图像

输入图像旋转 5 度

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