gluoncv.data.transforms

此文件包含对视觉任务至关重要的各种变换。

边界框变换

crop (裁剪)

根据切片区域裁剪边界框。

flip (翻转)

根据图像翻转方向翻转边界框。

resize (调整大小)

根据图像调整大小操作调整边界框的大小。

translate (平移)

按偏移量平移边界框。

experimental.bbox.random_crop_with_constraints

在具有边界框约束的情况下随机裁剪图像。

图像变换

imresize (调整图像大小)

使用 OpenCV 调整图像大小。

resize_long (按长边调整大小)

将长边调整为指定大小。

resize_short_within (按短边调整大小,限制最大长边)

将短边调整为指定大小,但确保长边限制在最大尺寸。

random_pca_lighting (随机 PCA 光照)

对输入图像应用随机 PCA 光照噪声。

random_expand (随机扩展)

随机扩展原始图像并添加边界,这等同于将原始图像放置在更大的画布上。

random_flip (随机翻转)

按概率随机沿水平和垂直方向翻转图像。

resize_contain (按包含调整大小)

调整图像大小以适应给定区域并保持宽高比。

ten_crop (十区域裁剪)

从数组中裁剪 10 个区域。

实例分割掩码变换

flip (翻转)

根据图像翻转方向翻转多边形。

resize (调整大小)

根据图像调整大小操作调整多边形的大小。

to_mask (转换为掩码)

将多边形列表转换为全尺寸二值掩码

fill (填充)

将掩码填充到完整图像大小

预设变换

我们包含了用于重现不同论文中描述的 SOTA 性能的预设。这是一个补充部分,API 可能会发生变化。

Single Shot Multibox 目标检测器

load_test (加载测试)

一个加载所有图像,并通过应用归一化将其转换为张量的实用函数。

transform_test (转换测试)

一个将所有图像通过应用归一化转换为网络输入的张量的实用函数。

SSDDefaultTrainTransform (默认 SSD 训练变换)

默认 SSD 训练变换,包含大量的图像增强。

SSDDefaultValTransform (默认 SSD 验证变换)

默认 SSD 验证变换。

Faster RCNN

load_test (加载测试)

一个加载所有图像,并通过应用归一化将其转换为张量的实用函数。

transform_test (转换测试)

一个将所有图像通过应用归一化转换为网络输入的张量的实用函数。

FasterRCNNDefaultTrainTransform (默认 Faster-RCNN 训练变换)

默认 Faster-RCNN 训练变换。

FasterRCNNDefaultValTransform (默认 Faster-RCNN 验证变换)

默认 Faster-RCNN 验证变换。

Mask RCNN

load_test (加载测试)

一个加载所有图像,并通过应用归一化将其转换为张量的实用函数。

transform_test (转换测试)

一个将所有图像通过应用归一化转换为网络输入的张量的实用函数。

MaskRCNNDefaultTrainTransform (默认 Mask RCNN 训练变换)

默认 Mask RCNN 训练变换。

MaskRCNNDefaultValTransform (默认 Mask RCNN 验证变换)

默认 Mask RCNN 验证变换。

YOLO

load_test (加载测试)

一个加载所有图像,并通过应用归一化将其转换为张量的实用函数。

transform_test (转换测试)

一个将所有图像通过应用归一化转换为网络输入的张量的实用函数。

YOLO3DefaultTrainTransform (默认 YOLO 训练变换)

默认 YOLO 训练变换,包含大量的图像增强。

YOLO3DefaultValTransform (默认 YOLO 验证变换)

默认 YOLO 验证变换。

API 参考

边界框变换函数。

gluoncv.data.transforms.bbox.affine_transform(pt, t)[source]

对给定变换矩阵 t 的边界框应用仿射变换。

参数
返回值

形状为 (1, 2) 的新边界框。

返回类型

numpy.ndarray

gluoncv.data.transforms.bbox.crop(bbox, crop_box=None, allow_outside_center=True)[source]

根据切片区域裁剪边界框。

此方法主要与图像裁剪一起使用,以确保边界框适合裁剪后的图像。

参数
  • bbox (numpy.ndarray) – 形状为 (N, 4+) 的 Numpy.ndarray,其中 N 是边界框的数量。第二个轴表示边界框的属性。具体来说,这些是 \((x_{min}, y_{min}, x_{max}, y_{max})\),我们允许坐标之外的其他属性,这些属性在边界框变换期间保持不变。

  • crop_box (tuple) – 长度为 4 的元组。\((x_{min}, y_{min}, width, height)\)

  • allow_outside_center (bool) – 如果为 False,则移除中心位于裁剪区域之外的边界框。

返回值

形状为 (M, 4+) 的裁剪后的边界框,其中 M <= N。

返回类型

numpy.ndarray

gluoncv.data.transforms.bbox.flip(bbox, size, flip_x=False, flip_y=False)[source]

根据图像翻转方向翻转边界框。

参数
  • bbox (numpy.ndarray) – 形状为 (N, 4+) 的 Numpy.ndarray,其中 N 是边界框的数量。第二个轴表示边界框的属性。具体来说,这些是 \((x_{min}, y_{min}, x_{max}, y_{max})\),我们允许坐标之外的其他属性,这些属性在边界框变换期间保持不变。

  • size (tuple) – 长度为 2 的元组:(宽度, 高度)。

  • flip_x (bool) – 是否水平翻转。

  • flip_y (bool) – 是否垂直翻转。

返回值

翻转后的边界框(保持原始形状)。

返回类型

numpy.ndarray

gluoncv.data.transforms.bbox.get_affine_transform(center, scale, rot, output_size, shift=array([0.0, 0.0], dtype=float32), inv=0)[source]

根据中心点、缩放因子和旋转角度获取仿射变换矩阵。

参数
  • center (tuple of float) – 中心点。

  • scale (float) – 缩放因子。

  • rot (float) – 旋转角度(度)。

  • output_size (tuple of int) – 输出尺寸(宽度,高度)。

  • shift (float) – 偏移因子。

  • inv (bool) – 是否反向计算。

返回值

仿射矩阵。

返回类型

numpy.ndarray

gluoncv.data.transforms.bbox.resize(bbox, in_size, out_size)[source]

根据图像调整大小操作调整边界框的大小。

参数
  • bbox (numpy.ndarray) – 形状为 (N, 4+) 的 Numpy.ndarray,其中 N 是边界框的数量。第二个轴表示边界框的属性。具体来说,这些是 \((x_{min}, y_{min}, x_{max}, y_{max})\),我们允许坐标之外的其他属性,这些属性在边界框变换期间保持不变。

  • in_size (tuple) – 长度为2的元组:输入尺寸(宽度,高度)。

  • out_size (tuple) – 长度为2的元组:输出尺寸(宽度,高度)。

返回值

调整大小后的边界框,保持原始形状。

返回类型

numpy.ndarray

gluoncv.data.transforms.bbox.translate(bbox, x_offset=0, y_offset=0)[source]

按偏移量平移边界框。

参数
  • bbox (numpy.ndarray) – 形状为 (N, 4+) 的 Numpy.ndarray,其中 N 是边界框的数量。第二个轴表示边界框的属性。具体来说,这些是 \((x_{min}, y_{min}, x_{max}, y_{max})\),我们允许坐标之外的其他属性,这些属性在边界框变换期间保持不变。

  • x_offset (int or float) – 沿 x 轴的偏移量。

  • y_offset (int or float) – 沿 y 轴的偏移量。

返回值

平移后的边界框,保持原始形状。

返回类型

numpy.ndarray

额外的图像变换。

class gluoncv.data.transforms.block.RandomCrop(size, pad=None, interpolation=2)[source]

随机裁剪 srcsize (宽度, 高度)。填充是可选的。如果 src 小于 size,则对结果进行上采样。

参数
  • size (int or tuple of (W, H)) – 最终输出的尺寸。

  • pad (int or tuple) –

    如果是整数,表示零填充的大小。如果是元组,表示每个轴边缘填充的值的数量。

    ((before_1, after_1), … (before_N, after_N)) 为每个轴的唯一填充宽度。((before, after),) 为每个轴提供相同的 before 和 after 填充。(pad,) 或整数是所有轴的 before = after = pad 宽度的快捷方式。

  • interpolation (int) – 调整大小的插值方法。默认为双线性插值。有关可用选项,请参阅 OpenCV 的 resize 函数。

输入
  • data: 形状为 (Hi x Wi x C) 的输入张量。

输出
  • out: 形状为 (size[0] x size[1] x C) 或 (size x size x C) 的输出张量。

forward(x)[source]

重写以使用 NDArray 实现前向计算。只接受位置参数。

参数

*args (list of NDArray) – 输入张量。

class gluoncv.data.transforms.block.RandomErasing(probability=0.5, s_min=0.02, s_max=0.4, ratio=0.3, mean=(125.31, 122.96, 113.86))[source]

probability 的概率,随机擦除 src 中面积在 s_mins_max 之间的区域。ratio 控制宽度和高度的比例。mean 表示擦除区域的值。

参数
  • probability (float) – 擦除的概率。

  • s_min (float) – 最小擦除面积与总面积之比。

  • s_max (float) – 最大擦除面积与总面积之比。

  • ratio (float) – 宽度和高度之间的比例。

  • mean (int or tuple of (R, G, B)) – 擦除区域的值。

输入
  • data: 形状为 (Hi x Wi x C) 的输入张量。

输出
  • out: 形状为 (Hi x Wi x C) 的输出张量。

forward(x)[source]

重写以使用 NDArray 实现前向计算。只接受位置参数。

参数

*args (list of NDArray) – 输入张量。

mxnet.image 的扩展图像变换。

gluoncv.data.transforms.image.imresize(src, w, h, interp=1)[source]

使用 OpenCV 调整图像大小。

这是 mxnet.image.imresize 的重复函数,以保持命名空间一致性。

参数
  • src (mxnet.nd.NDArray) – 源图像

  • w (int, required) – 调整大小后的图像宽度。

  • h (int, required) – 调整大小后的图像高度。

  • interp (int, optional, default='1') – 插值方法(默认为 cv2.INTER_LINEAR)。

  • out (NDArray, optional) – 用于保存结果的输出 NDArray。

返回值

out – 此函数的输出。

返回类型

NDArray 或 NDArray 列表

示例

>>> import mxnet as mx
>>> from gluoncv import data as gdata
>>> img = mx.random.uniform(0, 255, (300, 300, 3)).astype('uint8')
>>> print(img.shape)
(300, 300, 3)
>>> img = gdata.transforms.image.imresize(img, 200, 200)
>>> print(img.shape)
(200, 200, 3)
gluoncv.data.transforms.image.random_expand(src, max_ratio=4, fill=0, keep_ratio=True)[source]

随机扩展原始图像并添加边界,这等同于将原始图像放置在更大的画布上。

参数
  • src (mxnet.nd.NDArray) – 原始图像,格式为 HWC。

  • max_ratio (int or float) – 输出图像在垂直和水平方向上的最大比例

  • fill (int or float or array-like) – 用于填充边界的值。如果 fill 是数字类型,则 RGB 通道将用单个值填充。否则 fill 必须与图像通道数长度相同,导致按通道值填充。

  • keep_ratio (bool) – 如果为 True,将保持输出图像与输入具有相同的宽高比。

返回值

  • mxnet.nd.NDArray – 增强后的图像。

  • tuple – 元组,包含 (offset_x, offset_y, new_width, new_height)

gluoncv.data.transforms.image.random_flip(src, px=0, py=0, copy=False)[source]

按概率随机沿水平和垂直方向翻转图像。

参数
  • src (mxnet.nd.NDArray) – 输入图像,格式为 HWC。

  • px (float) – 水平翻转概率 [0, 1]。

  • py (float) – 垂直翻转概率 [0, 1]。

  • copy (bool) – 如果为 True,返回输入的副本

返回值

  • mxnet.nd.NDArray – 增强后的图像。

  • tuple – 元组,包含 (flip_x, flip_y),记录是否应用了翻转。

gluoncv.data.transforms.image.random_pca_lighting(src, alphastd, eigval=None, eigvec=None)[source]

对输入图像应用随机 PCA 光照噪声。

参数
  • img (mxnet.nd.NDArray) – 输入图像,格式为 HWC。

  • alphastd (float) – 范围在 [0, 255] 的图像的噪声水平 [0, 1)。

  • eigval (list of floats.) – 特征值,默认为 [55.46, 4.794, 1.148]。

  • eigvec (nested lists of floats) –

    形状为 (3, 3) 的特征向量,默认为 [[-0.5675, 0.7192, 0.4009],

    [-0.5808, -0.0045, -0.8140], [-0.5836, -0.6948, 0.4203]].

返回值

增强后的图像。

返回类型

mxnet.nd.NDArray

gluoncv.data.transforms.image.resize_contain(src, size, fill=0)[source]

调整图像大小以适应给定区域并保持宽高比。

如果 size 中的高度和宽度都大于输入图像的高度和宽度,则图像将居中放置并进行适当的填充以匹配 size。否则,输入图像将被缩放以适应大小为 size 的画布,同时保持宽高比。

参数
  • src (mxnet.nd.NDArray) – 原始图像,格式为 HWC。

  • size (tuple) – 长度为2的元组:(宽度, 高度)。

  • fill (int or float or array-like) – 用于填充边界的值。如果 fill 是数字类型,则 RGB 通道将用单个值填充。否则 fill 必须与图像通道数长度相同,导致按通道值填充。

返回值

  • mxnet.nd.NDArray – 增强后的图像。

  • tuple – 元组,包含 (offset_x, offset_y, scaled_x, scaled_y)

gluoncv.data.transforms.image.resize_long(src, size, interp=2)[source]

将较长边调整到指定大小。注意:resize_long 使用 OpenCV(非 CV2 Python 库)。必须使用 OpenCV 构建 MXNet 才能使 resize_long 工作。通过将原始图像的较长边设置为指定大小并相应地设置较短边来调整图像大小。这将确保新图像符合指定的 size。调整大小函数调用自 OpenCV。

参数
  • src (NDArray) – 原始图像。

  • size (int) – 较长边要设置的长度。

  • interp (int, optional, default=2) – 用于调整图像大小的插值方法。可能的值:0: 最近邻插值。1: 双线性插值。2: 基于区域的插值(使用像素区域关系进行重采样)。这可能是图像缩小的首选方法,因为它能获得无摩尔纹的结果。但在放大图像时,它类似于最近邻方法。(默认使用)。3: 4x4 像素邻域上的双三次插值。4: 8x8 像素邻域上的 Lanczos 插值。9: 放大使用三次插值,缩小使用区域插值,其他情况使用双线性插值 10: 从上面提到的插值方法中随机选择。注意:在缩小图像时,基于区域的插值通常效果最好;而在放大图像时,双三次插值(慢)或双线性插值(较快且效果尚可)通常效果最好。更多详情请参阅 OpenCV 文档,请参考 https://docs.opencv.ac.cn/master/da/d54/group__imgproc__transform.html

返回值

包含调整大小后图像的 ‘NDArray’。

返回类型

NDArray

示例

>>> with open("flower.jpeg", 'rb') as fp:
...     str_image = fp.read()
...
>>> image = mx.img.imdecode(str_image)
>>> image
<NDArray 2321x3482x3 @cpu(0)>
>>> size = 640
>>> new_image = mx.img.resize_long(image, size)
>>> new_image
<NDArray 386x640x3 @cpu(0)>
gluoncv.data.transforms.image.resize_short_within(src, short, max_size=1024, mult_base=1, interp=2)[source]

将较短边调整到指定大小,但确保最长边不超过最大大小。注意:resize_short_within 使用 OpenCV(非 CV2 Python 库)。必须使用 OpenCV 构建 MXNet 才能使 resize_short_within 工作。通过将原始图像的较短边设置为指定大小并相应地设置较长边来调整图像大小。此函数还会确保新图像即使在较长边也不会超过 max_size。调整大小函数调用自 OpenCV。

参数
  • src (NDArray) – 原始图像。

  • short (int) – 将较短边调整到 short

  • max_size (int) – 确保新图像的较长边小于 max_size

  • mult_base (int, default is 1) – 宽度和高度将四舍五入到 mult_base 的倍数。

  • interp (int, optional, default=2) – 用于调整图像大小的插值方法。可能的值:0: 最近邻插值。1: 双线性插值。2: 基于区域的插值(使用像素区域关系进行重采样)。这可能是图像缩小的首选方法,因为它能获得无摩尔纹的结果。但在放大图像时,它类似于最近邻方法。(默认使用)。3: 4x4 像素邻域上的双三次插值。4: 8x8 像素邻域上的 Lanczos 插值。9: 放大使用三次插值,缩小使用区域插值,其他情况使用双线性插值 10: 从上面提到的插值方法中随机选择。注意:在缩小图像时,基于区域的插值通常效果最好;而在放大图像时,双三次插值(慢)或双线性插值(较快且效果尚可)通常效果最好。更多详情请参阅 OpenCV 文档,请参考 https://docs.opencv.ac.cn/master/da/d54/group__imgproc__transform.html

返回值

包含调整大小后图像的 ‘NDArray’。

返回类型

NDArray

示例

>>> with open("flower.jpeg", 'rb') as fp:
...     str_image = fp.read()
...
>>> image = mx.img.imdecode(str_image)
>>> image
<NDArray 2321x3482x3 @cpu(0)>
>>> new_image = resize_short_within(image, short=800, max_size=1000)
>>> new_image
<NDArray 667x1000x3 @cpu(0)>
>>> new_image = resize_short_within(image, short=800, max_size=1200)
>>> new_image
<NDArray 800x1200x3 @cpu(0)>
>>> new_image = resize_short_within(image, short=800, max_size=1200, mult_base=32)
>>> new_image
<NDArray 800x1184x3 @cpu(0)>
gluoncv.data.transforms.image.ten_crop(src, size)[source]

从数组中裁剪 10 个区域。这与以下操作相同:http://chainercv.readthedocs.io/en/stable/reference/transforms.html#ten-crop

此方法裁剪 10 个区域。所有区域的形状都为 :obj`size`。这些区域包括 1 个中心裁剪、4 个角部裁剪及其水平翻转版本。裁剪的顺序如下:* 中心裁剪 * 左上角裁剪 * 左下角裁剪 * 右上角裁剪 * 右下角裁剪 * 中心裁剪(水平翻转) * 左上角裁剪(水平翻转) * 左下角裁剪(水平翻转) * 右上角裁剪(水平翻转) * 右下角裁剪(水平翻转)

参数
  • src (mxnet.nd.NDArray) – 输入图像。

  • size (tuple) – 长度为2的元组,表示裁剪区域的尺寸(宽度,高度)。

返回值

裁剪后的图像,形状为 (10, size[1], size[0], C)

返回类型

mxnet.nd.NDArray

实验性边界框变换。

gluoncv.data.transforms.experimental.bbox.bbox_crop(bbox, crop_box=None, allow_outside_center=True)

根据切片区域裁剪边界框。

此方法主要与图像裁剪一起使用,以确保边界框适合裁剪后的图像。

参数
  • bbox (numpy.ndarray) – 形状为 (N, 4+) 的 Numpy.ndarray,其中 N 是边界框的数量。第二个轴表示边界框的属性。具体来说,这些是 \((x_{min}, y_{min}, x_{max}, y_{max})\),我们允许坐标之外的其他属性,这些属性在边界框变换期间保持不变。

  • crop_box (tuple) – 长度为 4 的元组。\((x_{min}, y_{min}, width, height)\)

  • allow_outside_center (bool) – 如果为 False,则移除中心位于裁剪区域之外的边界框。

返回值

形状为 (M, 4+) 的裁剪后的边界框,其中 M <= N。

返回类型

numpy.ndarray

gluoncv.data.transforms.experimental.bbox.bbox_iou(bbox_a, bbox_b, offset=0)[source]

计算两个边界框的交并比(IOU)。

参数
  • bbox_a (numpy.ndarray) – 形状为 \((N, 4)\) 的 ndarray。

  • bbox_b (numpy.ndarray) – 形状为 \((M, 4)\) 的 ndarray。

  • offset (float or int, default is 0) – offset 用于控制宽度(或高度)是否计算为 (right - left + offset)。注意,对于范围在 [0, 1] 的归一化边界框,偏移量必须为 0。

返回值

形状为 \((N, M)\) 的 ndarray,表示 bbox_abbox_b 中每对边界框之间的 IOU。

返回类型

numpy.ndarray

gluoncv.data.transforms.experimental.bbox.random_crop_with_constraints(bbox, size, min_scale=0.3, max_scale=1, max_aspect_ratio=2, constraints=None, max_trial=50)[source]

在具有边界框约束的情况下随机裁剪图像。

此数据增强用于训练单次多框检测器 (Single Shot Multibox Detector) [#]_。更多详情请参阅原始论文的数据增强部分。.. [#] Wei Liu, Dragomir Anguelov, Dumitru Erhan, Christian Szegedy,

Scott Reed, Cheng-Yang Fu, Alexander C. Berg. SSD: Single Shot MultiBox Detector. ECCV 2016.

参数
  • bbox (numpy.ndarray) – 形状为 (N, 4+) 的 Numpy.ndarray,其中 N 是边界框的数量。第二个轴表示边界框的属性。具体来说,这些是 \((x_{min}, y_{min}, x_{max}, y_{max})\),我们允许坐标之外的其他属性,这些属性在边界框变换期间保持不变。

  • size (tuple) – 长度为2的元组,表示图像形状(宽度,高度)。

  • min_scale (float) – 裁剪区域与原始图像之间的最小比例。默认值为 0.3

  • max_scale (float) – 裁剪区域与原始图像之间的最大比例。默认值为 1

  • max_aspect_ratio (float) – 裁剪区域的最大宽高比。默认值为 2

  • constraints (iterable of tuples) – 约束条件的迭代器。每个约束条件应为 (min_iou, max_iou) 格式。如果将 min_ioumax_iou 设置为 None,则表示没有该方向上的约束。如果此参数默认为 None,则将使用 ((0.1, None), (0.3, None), (0.5, None), (0.7, None), (0.9, None), (None, 1))

  • max_trial (int) – 在无论如何退出之前,对每个约束条件进行的最大尝试次数。

返回值

  • numpy.ndarray – 裁剪后的边界框,形状为 (M, 4+),其中 M <= N。

  • tuple – 长度为4的元组,表示 (x_offset, y_offset, new_width, new_height)。

实验性图像变换。

gluoncv.data.transforms.experimental.image.np_random_color_distort(image, data_rng=None, eig_val=None, eig_vec=None, var=0.4, alphastd=0.1)[source]

随机颜色抖动的 Numpy 版本。

参数
  • image (numpy.ndarray) – 原始图像。

  • data_rng (numpy.random.rng) – Numpy 随机数生成器。

  • eig_val (numpy.ndarray) – 特征值。

  • eig_vec (numpy.ndarray) – 特征向量。

  • var (float) – 颜色抖动的方差。

  • alphastd (type) – 亮度的抖动程度。

返回值

抖动后的图像

返回类型

numpy.ndarray

gluoncv.data.transforms.experimental.image.random_color_distort(src, brightness_delta=32, contrast_low=0.5, contrast_high=1.5, saturation_low=0.5, saturation_high=1.5, hue_delta=18)[source]

随机扭曲图像颜色空间。注意输入图像应在原始范围 [0, 255] 内。

参数
  • src (mxnet.nd.NDArray) – 输入图像,格式为 HWC。

  • brightness_delta (int) – 最大亮度变化。默认为 32。

  • contrast_low (float) – 最低对比度。默认为 0.5。

  • contrast_high (float) – 最高对比度。默认为 1.5。

  • saturation_low (float) – 最低饱和度。默认为 0.5。

  • saturation_high (float) – 最高饱和度。默认为 1.5。

  • hue_delta (int) – 最大色相变化。默认为 18。

返回值

扭曲后的图像,格式为 HWC。

返回类型

mxnet.nd.NDArray

https://arxiv.org/abs/1512.02325 中描述的变换。

class gluoncv.data.transforms.presets.ssd.SSDDALIPipeline(num_workers, device_id, batch_size, data_shape, anchors, dataset_reader, seed=- 1)[source]

带有 SSD 训练变换的 DALI Pipeline。

参数
  • device_id (int) – DALI pipeline 参数 - 设备 ID。

  • num_workers – DALI pipeline 参数 - CPU worker 数量。

  • batch_size – 批量大小。

  • data_shape (int) – 高度和宽度。(在 SSD 中高度等于宽度)

  • anchors (float list) – 从 SSD 网络生成的归一化 [ltrb] 锚框。形状长度为 N*4,因为它是一个包含 N 个锚框的列表,每个锚框都有 4 个浮点元素。

  • dataset_reader (float) – 部分 pipeline 对象,其 __call__ 函数必须返回 (images, bboxes, labels) DALI EdgeReference 元组。

  • seed (int) – 随机种子。默认值为 -1,表示不设置种子。

define_graph()[source]

定义 DALI 计算图。

class gluoncv.data.transforms.presets.ssd.SSDDefaultTrainTransform(width, height, anchors=None, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225), iou_thresh=0.5, box_norm=(0.1, 0.1, 0.2, 0.2), **kwargs)[source]

默认 SSD 训练变换,包含大量的图像增强。

参数
  • width (int) – 图像宽度。

  • height (int) – 图像高度。

  • anchors (mxnet.nd.NDArray, optional) –

    从 SSD 网络生成的锚框,形状必须为 (1, N, 4)。由于锚框在整个批次中共享,因此第一维为 1N 是每张图像的锚框数量。

    提示

    如果 anchors 为 None,则变换不会生成训练目标。否则,它将生成训练目标以加速训练阶段,因为我们将一些工作负载推送到 CPU workers 而非 GPU。

  • mean (array-like of size 3) – 要从图像张量中减去的平均像素值。默认为 [0.485, 0.456, 0.406]。

  • std (array-like of size 3) – 要从图像中除以的标准差。默认为 [0.229, 0.224, 0.225]。

  • iou_thresh (float) – 用于最大匹配的 IOU 重叠阈值,默认为 0.5。

  • box_norm (array-like of size 4, default is (0.1, 0.1, 0.2, 0.2)) – 要从编码值中除以的标准差值。

class gluoncv.data.transforms.presets.ssd.SSDDefaultValTransform(width, height, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

默认 SSD 验证变换。

参数
  • width (int) – 图像宽度。

  • height (int) – 图像高度。

  • mean (array-like of size 3) – 要从图像张量中减去的平均像素值。默认为 [0.485, 0.456, 0.406]。

  • std (array-like of size 3) – 要从图像中除以的标准差。默认为 [0.229, 0.224, 0.225]。

gluoncv.data.transforms.presets.ssd.load_test(filenames, short, max_size=1024, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

加载所有图像并应用归一化将其转换为张量的实用函数。此函数支持单个文件名或文件名迭代器。

参数
  • filenames (str or list of str) – 要加载的图像文件名。

  • short (int) – 将图像的较短边调整到 short 并保持宽高比。

  • max_size (int, optional) – 图像的最大较长边长度。这用于限制输入图像的形状。由于我们的 SSD 实现支持任意输入尺寸,因此宽高比保持不变。

  • mean (iterable of float) – 平均像素值。

  • std (iterable of float) – 像素值的标准差。

返回值

形状为 (1, 3, H, W) 的 mxnet NDArray 作为网络输入,以及一个 numpy ndarray 作为用于显示的原始未归一化彩色图像。如果提供了多个图像名称,则返回两个列表。您可以使用 zip()` 将其组合。

返回类型

(mxnet.NDArray, numpy.ndarray) 或此类元组的列表

gluoncv.data.transforms.presets.ssd.transform_test(imgs, short=416, max_size=1024, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

将所有图像转换为张量作为网络输入并应用归一化的实用函数。此函数支持单个 NDArray 或 NDArray 迭代器。

参数
  • imgs (NDArray or iterable of NDArray) – 要变换的图像。

  • short (int) – 将图像的较短边调整到 short 并保持宽高比。

  • max_size (int, optional) – 图像的最大较长边长度。这用于限制输入图像的形状。由于我们的 SSD 实现支持任意输入尺寸,因此宽高比保持不变。

  • mean (iterable of float) – 平均像素值。

  • std (iterable of float) – 像素值的标准差。

返回值

形状为 (1, 3, H, W) 的 mxnet NDArray 作为网络输入,以及一个 numpy ndarray 作为用于显示的原始未归一化彩色图像。如果提供了多个图像名称,则返回两个列表。您可以使用 zip()` 将其组合。

返回类型

(mxnet.NDArray, numpy.ndarray) 或此类元组的列表

RCNN 系列的变换。

class gluoncv.data.transforms.presets.rcnn.FasterRCNNDefaultTrainTransform(short=600, max_size=1000, net=None, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225), box_norm=(1.0, 1.0, 1.0, 1.0), num_sample=256, pos_iou_thresh=0.7, neg_iou_thresh=0.3, pos_ratio=0.5, flip_p=0.5, ashape=128, multi_stage=False, **kwargs)[source]

默认 Faster-RCNN 训练变换。

参数
  • short (int/tuple, default is 600) – 将图像的较短边调整到 short。如果是一个元组,则在给定范围内随机调整图像的较短边。

  • max_size (int, default is 1000) – 确保图像的较长边小于 max_size

  • net (mxnet.gluon.HybridBlock, optional) –

    faster-rcnn 网络。

    提示

    如果 net 为 None,则变换不会生成训练目标。否则,它将生成训练目标以加速训练阶段,因为我们将一些工作负载推送到 CPU workers 而非 GPU。

  • mean (array-like of size 3) – 要从图像张量中减去的平均像素值。默认为 [0.485, 0.456, 0.406]。

  • std (array-like of size 3) – 要从图像中除以的标准差。默认为 [0.229, 0.224, 0.225]。

  • box_norm (array-like of size 4, default is (1., 1., 1., 1.)) – 要从编码值中除以的标准差值。

  • num_sample (int, default is 256) – RPN 目标的样本数量。

  • pos_iou_thresh (float, default is 0.7) – 大于 pos_iou_thresh 的锚框被视为正样本。

  • neg_iou_thresh (float, default is 0.3) – 小于 neg_iou_thresh 的锚框被视为负样本。IOU 在 pos_iou_threshneg_iou_thresh 之间的锚框被忽略。

  • pos_ratio (float, default is 0.5) – pos_ratio 定义了要采样的正样本数量(pos_ratio * num_sample)。

  • flip_p (float, default is 0.5) – 水平翻转的概率,默认为 0.5 表示随机水平翻转。您可以将其设置为 0 以禁用随机翻转,或设置为 1 以强制翻转。

  • ashape (int, default is 128) – 定义用于目标生成的预生成锚框的形状

  • multi_stage (boolean, default is False) – 网络是否输出多阶段特征。

class gluoncv.data.transforms.presets.rcnn.FasterRCNNDefaultValTransform(short=600, max_size=1000, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

默认 Faster-RCNN 验证变换。

参数
  • short (int, default is 600) – 将图像的较短边调整到 short

  • max_size (int, default is 1000) – 确保图像的较长边小于 max_size

  • mean (array-like of size 3) – 要从图像张量中减去的平均像素值。默认为 [0.485, 0.456, 0.406]。

  • std (array-like of size 3) – 要从图像中除以的标准差。默认为 [0.229, 0.224, 0.225]。

class gluoncv.data.transforms.presets.rcnn.MaskRCNNDefaultTrainTransform(short=600, max_size=1000, net=None, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225), box_norm=(1.0, 1.0, 1.0, 1.0), num_sample=256, pos_iou_thresh=0.7, neg_iou_thresh=0.3, pos_ratio=0.5, ashape=128, multi_stage=False, **kwargs)[source]

默认 Mask RCNN 训练变换。

参数
  • short (int/tuple, default is 600) – 将图像的较短边调整到 short。如果是一个元组,则在给定范围内随机调整图像的较短边。

  • max_size (int, default is 1000) – 确保图像的较长边小于 max_size

  • net (mxnet.gluon.HybridBlock, optional) –

    Mask R-CNN 网络。

    提示

    如果 net 为 None,则变换不会生成训练目标。否则,它将生成训练目标以加速训练阶段,因为我们将一些工作负载推送到 CPU workers 而非 GPU。

  • mean (array-like of size 3) – 要从图像张量中减去的平均像素值。默认为 [0.485, 0.456, 0.406]。

  • std (array-like of size 3) – 要从图像中除以的标准差。默认为 [0.229, 0.224, 0.225]。

  • box_norm (array-like of size 4, default is (1., 1., 1., 1.)) – 要从编码值中除以的标准差值。

  • num_sample (int, default is 256) – RPN 目标的样本数量。

  • pos_iou_thresh (float, default is 0.7) – 大于 pos_iou_thresh 的锚框被视为正样本。

  • neg_iou_thresh (float, default is 0.3) – 小于 neg_iou_thresh 的锚框被视为负样本。IOU 在 pos_iou_threshneg_iou_thresh 之间的锚框被忽略。

  • pos_ratio (float, default is 0.5) – pos_ratio 定义了要采样的正样本数量(pos_ratio * num_sample)。

  • ashape (int, default is 128) – 定义用于目标生成的预生成锚框的形状

  • multi_stage (boolean, default is False) – 网络是否输出多阶段特征。

class gluoncv.data.transforms.presets.rcnn.MaskRCNNDefaultValTransform(short=600, max_size=1000, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

默认 Mask RCNN 验证变换。

参数
  • short (int, default is 600) – 将图像的较短边调整到 short

  • max_size (int, default is 1000) – 确保图像的较长边小于 max_size

  • mean (array-like of size 3) – 要从图像张量中减去的平均像素值。默认为 [0.485, 0.456, 0.406]。

  • std (array-like of size 3) – 要从图像中除以的标准差。默认为 [0.229, 0.224, 0.225]。

gluoncv.data.transforms.presets.rcnn.load_test(filenames, short=600, max_size=1000, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

加载所有图像并应用归一化将其转换为张量的实用函数。此函数支持单个文件名或文件名列表。

参数
  • filenames (str or list of str) – 要加载的图像文件名。

  • short (int, optional, default is 600) – 将图像的较短边调整到 short 并保持宽高比。

  • max_size (int, optional, default is 1000) – 图像的最大较长边长度。这用于限制输入图像的形状,避免处理过大的图像。

  • mean (iterable of float) – 平均像素值。

  • std (iterable of float) – 像素值的标准差。

返回值

形状为 (1, 3, H, W) 的 mxnet NDArray 作为网络输入,以及一个 numpy ndarray 作为用于显示的原始未归一化彩色图像。如果提供了多个图像名称,则返回两个列表。您可以使用 zip()` 将其组合。

返回类型

(mxnet.NDArray, numpy.ndarray) 或此类元组的列表

gluoncv.data.transforms.presets.rcnn.transform_test(imgs, short=600, max_size=1000, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

将所有图像转换为张量作为网络输入并应用归一化的实用函数。此函数支持单个 NDArray 或 NDArray 迭代器。

参数
  • imgs (NDArray or iterable of NDArray) – 要变换的图像。

  • short (int, optional, default is 600) – 将图像的较短边调整到 short 并保持宽高比。

  • max_size (int, optional, default is 1000) – 图像的最大较长边长度。这用于限制输入图像的形状,避免处理过大的图像。

  • mean (iterable of float) – 平均像素值。

  • std (iterable of float) – 像素值的标准差。

返回值

形状为 (1, 3, H, W) 的 mxnet NDArray 作为网络输入,以及一个 numpy ndarray 作为用于显示的原始未归一化彩色图像。如果提供了多个图像名称,则返回两个列表。您可以使用 zip()` 将其组合。

返回类型

(mxnet.NDArray, numpy.ndarray) 或此类元组的列表

YOLO 系列的变换。

class gluoncv.data.transforms.presets.yolo.YOLO3DefaultTrainTransform(width, height, net=None, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225), mixup=False, **kwargs)[source]

默认 YOLO 训练变换,包含大量的图像增强。

参数
  • width (int) – 图像宽度。

  • height (int) – 图像高度。

  • net (mxnet.gluon.HybridBlock, optional) –

    yolo 网络。

    提示

    如果 net 为 None,则变换不会生成训练目标。否则,它将生成训练目标以加速训练阶段,因为我们将一些工作负载推送到 CPU workers 而非 GPU。

  • mean (array-like of size 3) – 要从图像张量中减去的平均像素值。默认为 [0.485, 0.456, 0.406]。

  • std (array-like of size 3) – 要从图像中除以的标准差。默认为 [0.229, 0.224, 0.225]。

  • iou_thresh (float) – 用于最大匹配的 IOU 重叠阈值,默认为 0.5。

  • box_norm (array-like of size 4, default is (0.1, 0.1, 0.2, 0.2)) – 要从编码值中除以的标准差值。

class gluoncv.data.transforms.presets.yolo.YOLO3DefaultValTransform(width, height, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

默认 YOLO 验证变换。

参数
  • width (int) – 图像宽度。

  • height (int) – 图像高度。

  • mean (array-like of size 3) – 要从图像张量中减去的平均像素值。默认为 [0.485, 0.456, 0.406]。

  • std (array-like of size 3) – 要从图像中除以的标准差。默认为 [0.229, 0.224, 0.225]。

gluoncv.data.transforms.presets.yolo.load_test(filenames, short=416, max_size=1024, stride=1, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

加载所有图像并应用归一化将其转换为张量的实用函数。此函数支持单个文件名或文件名列表。

参数
  • filenames (str or list of str) – 要加载的图像文件名。

  • 短边 (int, 默认值=416) – 将图像短边缩放到该 short 值并保持纵横比。注意 YOLO 网络

  • 最大尺寸 (int, 可选) – 图像适配后的最大长边长度。用于限制输入图像的形状。由于我们的 YOLO 实现支持任意输入尺寸,因此纵横比保持不变。

  • 步幅 (int, 可选, 默认值为 1) – 由于边界框预测模块的精确对齐而导致的步幅约束。图像的宽度和高度必须是 stride 的倍数。使用 stride = 1 可以放宽此约束。

  • mean (iterable of float) – 平均像素值。

  • std (iterable of float) – 像素值的标准差。

返回值

形状为 (1, 3, H, W) 的 mxnet NDArray 作为网络输入,以及一个 numpy ndarray 作为用于显示的原始未归一化彩色图像。如果提供了多个图像名称,则返回两个列表。您可以使用 zip()` 将其组合。

返回类型

(mxnet.NDArray, numpy.ndarray) 或此类元组的列表

gluoncv.data.transforms.presets.yolo.transform_test(imgs, short=416, max_size=1024, stride=1, mean=(0.485, 0.456, 0.406), std=(0.229, 0.224, 0.225))[source]

将所有图像转换为张量作为网络输入并应用归一化的实用函数。此函数支持单个 NDArray 或 NDArray 迭代器。

参数
  • imgs (NDArray or iterable of NDArray) – 要变换的图像。

  • 短边 (int, 默认值=416) – 将图像短边缩放到该 short 值并保持纵横比。注意 YOLO 网络

  • 最大尺寸 (int, 可选) – 图像适配后的最大长边长度。用于限制输入图像的形状。由于我们的 YOLO 实现支持任意输入尺寸,因此纵横比保持不变。

  • 步幅 (int, 可选, 默认值为 1) – 由于边界框预测模块的精确对齐而导致的步幅约束。图像的宽度和高度必须是 stride 的倍数。使用 stride = 1 可以放宽此约束。

  • mean (iterable of float) – 平均像素值。

  • std (iterable of float) – 像素值的标准差。

返回值

形状为 (1, 3, H, W) 的 mxnet NDArray 作为网络输入,以及一个 numpy ndarray 作为用于显示的原始未归一化彩色图像。如果提供了多个图像名称,则返回两个列表。您可以使用 zip()` 将其组合。

返回类型

(mxnet.NDArray, numpy.ndarray) 或此类元组的列表