mindspore.dataset.vision

此模块用于图像数据增强,其中有一部分增强是基于C++ OpenCV实现的,具有较好的性能,而另一部分是基于Python Pillow实现的。

API样例中常用的导入模块如下:

import mindspore.dataset as ds
import mindspore.dataset.vision as vision
import mindspore.dataset.vision.utils as utils

注意:旧的API导入方式已经过时且会逐步废弃,因此推荐使用上面的方式,但目前仍可按以下方式导入:

import mindspore.dataset.vision.c_transforms as c_vision
import mindspore.dataset.vision.py_transforms as py_vision
from mindspore.dataset.transforms import c_transforms

更多详情请参考 视觉数据变换

常用数据处理术语说明如下:

  • TensorOperation,所有C++实现的数据处理操作的基类。

  • PyTensorOperation,所有Python实现的数据处理操作的基类。

数据增强算子可以放入数据处理Pipeline中执行,也可以Eager模式执行:

  • Pipeline模式一般用于处理数据集,示例可参考 数据处理Pipeline介绍

  • Eager模式一般用于零散样本,图像预处理举例如下:

    import numpy as np
    import mindspore.dataset.vision as vision
    from PIL import Image,ImageFont,ImageDraw
    
    # 画圆形
    img = Image.new("RGB", (300, 300), (255, 255, 255))
    draw = ImageDraw.Draw(img)
    draw.ellipse(((0, 0), (100, 100)), fill=(255, 0, 0), outline=(255, 0, 0), width=5)
    img.save("./1.jpg")
    with open("./1.jpg", "rb") as f:
        data = f.read()
    
    data_decoded = vision.Decode()(data)
    data_croped = vision.RandomCrop(size=(250, 250))(data_decoded)
    data_resized = vision.Resize(size=(224, 224))(data_croped)
    data_normalized = vision.Normalize(mean=[0.485 * 255, 0.456 * 255, 0.406 * 255],
                                       std=[0.229 * 255, 0.224 * 255, 0.225 * 255])(data_resized)
    data_hwc2chw = vision.HWC2CHW()(data_normalized)
    print("data: {}, shape: {}".format(data_hwc2chw, data_hwc2chw.shape), flush=True)
    

变换

mindspore.dataset.vision.AdjustGamma

Apply gamma correction on input image.

mindspore.dataset.vision.AutoAugment

Apply AutoAugment data augmentation method based on AutoAugment: Learning Augmentation Strategies from Data.

mindspore.dataset.vision.AutoContrast

在输入图像上应用自动对比度。

mindspore.dataset.vision.BoundingBoxAugment

对图像的随机标注边界框区域,应用给定的图像变换处理。

mindspore.dataset.vision.CenterCrop

对输入图像应用中心区域裁剪。

mindspore.dataset.vision.ConvertColor

更改图像的色彩空间。

mindspore.dataset.vision.Crop

在输入图像上裁剪出指定区域。

mindspore.dataset.vision.CutMixBatch

对输入批次的图像和标注应用剪切混合转换。

mindspore.dataset.vision.CutOut

从输入图像数组中随机裁剪出给定数量的正方形区域。

mindspore.dataset.vision.Decode

将输入的压缩图像解码为RGB格式。

mindspore.dataset.vision.Equalize

对输入图像进行直方图均衡化。

mindspore.dataset.vision.FiveCrop

在输入PIL图像的中心与四个角处分别裁剪指定尺寸大小的子图。

mindspore.dataset.vision.GaussianBlur

使用指定的高斯核对输入图像进行模糊处理。

mindspore.dataset.vision.Grayscale

将输入PIL图像转换为灰度图。

mindspore.dataset.vision.HorizontalFlip

水平翻转输入图像。

mindspore.dataset.vision.HsvToRgb

将输入的HSV格式numpy.ndarray图像转换为RGB格式。

mindspore.dataset.vision.HWC2CHW

将输入图像的shape从 <H, W, C> 转换为 <C, H, W>。

mindspore.dataset.vision.Invert

在 RGB 模式下对输入图像应用像素反转。

mindspore.dataset.vision.LinearTransformation

使用指定的变换方阵和均值向量对输入numpy.ndarray图像进行线性变换。

mindspore.dataset.vision.MixUp

随机混合一批输入的numpy.ndarray图像及其标签。

mindspore.dataset.vision.MixUpBatch

对输入批次的图像和标注应用混合转换。

mindspore.dataset.vision.Normalize

根据均值和标准差对输入图像进行归一化。

mindspore.dataset.vision.NormalizePad

根据均值和标准差对输入图像进行归一化,然后填充一个全零的额外通道。

mindspore.dataset.vision.Pad

填充图像。

mindspore.dataset.vision.PadToSize

Pad the image to a fixed size.

mindspore.dataset.vision.RandomAdjustSharpness

Randomly adjust the sharpness of the input image with a given probability.

mindspore.dataset.vision.RandomAffine

对输入图像应用随机仿射变换。

mindspore.dataset.vision.RandomAutoContrast

Automatically adjust the contrast of the image with a given probability.

mindspore.dataset.vision.RandomColor

随机调整输入图像的颜色。

mindspore.dataset.vision.RandomColorAdjust

随机调整输入图像的亮度、对比度、饱和度和色调。

mindspore.dataset.vision.RandomCrop

对输入图像进行随机区域的裁剪。

mindspore.dataset.vision.RandomCropDecodeResize

"裁剪"、"解码"和"调整尺寸大小"的组合处理。

mindspore.dataset.vision.RandomCropWithBBox

在输入图像的随机位置进行裁剪并相应地调整边界框。

mindspore.dataset.vision.RandomEqualize

Apply histogram equalization on the input image with a given probability.

mindspore.dataset.vision.RandomErasing

按照指定的概率擦除输入numpy.ndarray图像上随机矩形区域内的像素。

mindspore.dataset.vision.RandomGrayscale

按照指定的概率将输入PIL图像转换为灰度图。

mindspore.dataset.vision.RandomHorizontalFlip

对输入图像按给定的概率进行水平随机翻转。

mindspore.dataset.vision.RandomHorizontalFlipWithBBox

对输入图像按给定的概率进行水平随机翻转并相应地调整边界框。

mindspore.dataset.vision.RandomInvert

Randomly invert the colors of image with a given probability.

mindspore.dataset.vision.RandomLighting

Add AlexNet-style PCA-based noise to an image.

mindspore.dataset.vision.RandomPerspective

按照指定的概率对输入PIL图像进行透视变换。

mindspore.dataset.vision.RandomPosterize

随机减少输入图像每个颜色通道的位数。

mindspore.dataset.vision.RandomResizedCrop

对输入图像进行随机裁剪,并使用指定的 mindspore.dataset.vision.Inter 插值方式去调整为指定的尺寸大小。

mindspore.dataset.vision.RandomResizedCropWithBBox

对输入图像进行随机裁剪且随机调整纵横比,并将处理后的图像调整为指定的尺寸大小,并相应地调整边界框。

mindspore.dataset.vision.RandomResize

对输入图像使用随机选择的 mindspore.dataset.vision.Inter 插值方式去调整它的尺寸大小。

mindspore.dataset.vision.RandomResizeWithBBox

对输入图像使用随机选择的 mindspore.dataset.vision.Inter 插值方式去调整它的尺寸大小,并相应地调整边界框的尺寸大小。

mindspore.dataset.vision.RandomRotation

在指定的角度范围内,随机旋转输入图像。

mindspore.dataset.vision.RandomSelectSubpolicy

从策略列表中随机选择一个子策略以应用于输入图像。

mindspore.dataset.vision.RandomSharpness

在固定或随机的范围调整输入图像的锐度。

mindspore.dataset.vision.RandomSolarize

从给定阈值范围内随机选择一个子范围,对位于给定子范围内的像素,将其像素值设置为(255 - 原本像素值)。

mindspore.dataset.vision.RandomVerticalFlip

以给定的概率对输入图像在垂直方向进行随机翻转。

mindspore.dataset.vision.RandomVerticalFlipWithBBox

以给定的概率对输入图像和边界框在垂直方向进行随机翻转。

mindspore.dataset.vision.Rescale

基于给定的缩放和平移因子调整图像的像素大小。

mindspore.dataset.vision.Resize

对输入图像使用给定的 mindspore.dataset.vision.Inter 插值方式去调整为给定的尺寸大小。

mindspore.dataset.vision.ResizeWithBBox

将输入图像调整为给定的尺寸大小并相应地调整边界框的大小。

mindspore.dataset.vision.RgbToHsv

将输入的RGB格式numpy.ndarray图像转换为HSV格式。

mindspore.dataset.vision.Rotate

将输入图像旋转指定的度数。

mindspore.dataset.vision.SlicePatches

在水平和垂直方向上将Tensor切片为多个块。

mindspore.dataset.vision.TenCrop

在输入PIL图像的中心与四个角处分别裁剪指定尺寸大小的子图,并将其翻转图一并返回。

mindspore.dataset.vision.ToNumpy

将输入PIL图像转换为numpy.ndarray图像。

mindspore.dataset.vision.ToPIL

将已解码的numpy.ndarray图像转换为PIL图像。

mindspore.dataset.vision.ToTensor

将输入PIL图像或numpy.ndarray图像转换为指定类型的numpy.ndarray图像,图像的像素值范围将从[0, 255]放缩为[0.0, 1.0],shape将从(H, W, C)调整为(C, H, W)。

mindspore.dataset.vision.ToType

将输入转换为指定的MindSpore数据类型或NumPy数据类型。

mindspore.dataset.vision.UniformAugment

从指定序列中均匀采样一批数据处理操作,并按顺序随机执行,即采样出的操作也可能不被执行。

mindspore.dataset.vision.VerticalFlip

对输入图像进行垂直翻转。

工具

mindspore.dataset.vision.AutoAugmentPolicy

AutoAugment policy for different datasets.

mindspore.dataset.vision.Border

边界填充方式枚举类。

mindspore.dataset.vision.ConvertMode

图像色彩空间转换模式枚举类。

mindspore.dataset.vision.ImageBatchFormat

图像批处理输出格式枚举类。

mindspore.dataset.vision.Inter

图像插值方式枚举类。

mindspore.dataset.vision.SliceMode

Tensor切片方式枚举类。

mindspore.dataset.vision.get_image_num_channels

Get the number of input image channels.

mindspore.dataset.vision.get_image_size

Get the size of input image as [height, width].