>>> from jittor import transform
>>> import numpy as np
>>> from PIL import Image
>>> center_crop = transform.CenterCrop(16)
>>> data = np.random.rand(200, 200, 3)
>>> img = Image.fromarray(data, 'RGB')
>>> center_crop(img).size
(16, 16)
class jittor.transform.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)[源代码]
随机改变图像的亮度、对比度、饱和度和色调。该类用于对图像进行随机的颜色变换,以进行数据增强。这些变换包括亮度、对比度、饱和度和色调的调整。
brightness (float, tuple(min, max)): 要改变的亮度范围。亮度因子从 \([\max(0, 1 - brightness), 1 + brightness]\) 或给定的 \([min, max]\) 中均匀选择。应为非负数。默认值为 0,表示不改变亮度。
contrast (float, tuple(min, max)): 要改变的对比度范围。对比度因子从 \([\max(0, 1 - contrast), 1 + contrast]\) 或给定的 \([min, max]\) 中均匀选择。应为非负数。默认值为 0,表示不改变对比度。
saturation (float, tuple(min, max)): 要改变的饱和度范围。饱和度因子从 \([\max(0, 1 - saturation), 1 + saturation]\) 或给定的 \([min, max]\) 中均匀选择。应为非负数。默认值为 0,表示不改变饱和度。
hue (float, tuple(min, max)): 要改变的色调范围。色调因子从 \([-hue, hue]\) 或给定的 \([min, max]\) 中均匀选择。应满足 \(0\leq hue\leq 0.5\) 或 \(-0.5 \leq min \leq max \leq 0.5\)。默认值为 0,表示不改变色调。
代码示例:>>> from jittor.transform import ColorJitter
>>> from PIL import Image
>>> img = Image.open('''path_to_image.jpg''')
>>> transform = ColorJitter(brightness=0.2, contrast=0.3, saturation=0.4, hue=0.1)
>>> img_transformed = transform(img)
class jittor.transform.Compose(transforms)[源代码]
将多个图像变换组合在一起的类。该类将输入的变换列表依次应用到输入数据上。如果输入数据为单个对象,会依次通过每个变换;如果输入为多个对象(例如图像和对应标签),则每个变换都会接收相同的参数列表,并依次处理。
transforms (list): 需要组合的变换列表。
代码示例:>>> from jittor import transform
>>> compose = transform.Compose([
transform.Resize(224),
transform.Gray(),
transform.ImageNormalize(mean=[0.5], std=[0.5]),
>>> img_ = compose(img)
class jittor.transform.Crop(top, left, height, width)[源代码]
根据指定大小裁剪PIL图像。在初始化时需要指定裁剪区域的边界,之后可以作为一个可调用对象直接应用在图像上。
top (int): 裁剪区域顶部边界的像素索引
left (int): 裁剪区域左侧边界的像素索引
height (int): 裁剪区域高度
width (int): 裁剪区域宽度
代码示例:>>> from jittor import transform
>>> cropper = transform.Crop(top=100, left=100, height=200, width=200)
>>> cropped_img = cropper(img)
>>> import numpy as np
>>> from PIL import Image
>>> data = np.random.rand(200, 200, 3)
>>> img = Image.fromarray(data, 'RGB')
>>> five_crop = transform.FiveCrop(16)
>>> imgs = five_crop(img)
>>> imgs[0].size, imgs[1].size, imgs[2].size, imgs[3].size, imgs[4].size
((16, 16), (16, 16), (16, 16), (16, 16), (16, 16))
class jittor.transform.ImageNormalize(mean, std)[源代码]
对图像进行标准化处理的类。给定n个通道的均值(mean[1], …, mean[n])和标准差(std[1], .., std[n]),此转换将标准化输入张量的每个通道,即:
\[output[channel] = (input[channel] - mean[channel]) / std[channel]\]
mean(list): 标准化使用的平均值列表
std(list): 标准化使用的标准差列表
代码示例:>>> from jittor import transform
>>> img_normalize = transform.ImageNormalize(mean=[0.5], std=[0.5])
>>> img_ = img_normalize(img)
代码示例:>>> from jittor import transform
>>> lambda = transform.Lambda(lambda x: x + 10)
>>> result = lambda(5)
class jittor.transform.RandomAffine(degrees, translate=None, scale=None, shear=None, resample=False, fillcolor=0)[源代码]
随机仿射变换,输入保持中心不变。
degrees (序列或int) : 可供选择的度数范围。如果度数是数字而不是序列(min, max) ,则度数范围将为 (-degrees, +degrees)。
translate (元组, 可选): 例如 translate=(a, b),那么水平平移将在 img_width * a < dx < img_width * a 的范围内随机采样,垂直平移将在 -img_height * b < dy < img_height * b 的范围内随机采样。默认情况下不进行平移。默认值: None
scale (元组, 可选): 缩放因子区间,例如 (a, b),则缩放比例在 a <= scale <= b 的范围内随机采样。默认值: None
shear (序列, float或int, 可选): 从中选取剪切角度的范围。 如果 shear 是一个数字,则将应用范围是 (-shear, +shear) 并且平行于 x 轴的剪切;若是一个元组或列表且包含2个值,则应用范围是 (shear[0], shear[1]) 并且平行于 x 轴的剪切; 若是一个元组或列表且包含4个值,则应用 x 轴剪切范围 (shear[0], shear[1]) 以及y 轴剪切范围 (shear[2], shear[3])。默认情况下不应用剪切。默认值: None
resample ({PIL.Image.NEAREST, PIL.Image.BILINEAR, PIL.Image.BICUBIC}, 可选): 可选的重采样滤波器。请参阅 这里 以获取更多信息。默认值: False
fillcolor (元组或int, 可选): 对输出图像中变换区域外的区域填充的颜色(RGB 图像用元组表示,灰度图像用整数表示)。默认值: 0
代码示例:>>> from jittor import transform
>>> random_affine = transform.RandomAffine(degrees=45)
>>> img_ = random_affine(img)
代码示例:>>> from jittor import transform
>>> transform_list = [transform.RandomHorizontalFlip(), transform.RandomCrop(size=(32, 32))]
>>> random_apply = transform.RandomApply(transform_list, p=0.5)
>>> img_= random_apply(img)
代码示例:>>> from jittor import transform
>>> transform_list = [transform.RandomHorizontalFlip(), transform.RandomCrop(size=(32, 32))]
>>> random_choice = transform.RandomChoice(transform_list)
>>> img_ = random_choice(img)
size (tuple, int): 欲裁剪的目标大小。如果是int,将裁剪出一个正方形;如果是tuple,则按照(tuple_height, tuple_width)的形式给出。
代码示例:>>> from jittor import transform
>>> import numpy as np
>>> from PIL import Image
>>> data = np.random.rand(200, 200, 3)
>>> img = Image.fromarray(data, 'RGB')
>>> random_crop = transform.RandomCrop(128)
>>> random_crop(img).size
(128, 128)
class jittor.transform.RandomCropAndResize(size, scale: tuple = (0.08, 1.0), ratio: tuple = (0.75, 1.3333333333333333), interpolation=2)[源代码]
对给定的PIL图像进行随机裁剪和尺寸调整。
size (int, tuple): 输出图像的[高度,宽度]
scale (tuple): 裁剪区域的面积比例范围。默认值: (0.08, 1.0)
ratio (tuple): 裁剪图像的长宽比范围。默认值: (3.0/4.0, 4.0/3.0)
interpolation (InterpolationMode): 图像大小调整时采用的插值类型。默认使用双线性插值。默认值: PIL.Image.BILINEAR
代码示例:>>> from jittor import transform
>>> import numpy as np
>>> from PIL import Image
>>> data = np.random.rand(200, 200, 3)
>>> img = Image.fromarray(data, 'RGB')
>>> transform = transform.RandomCropAndResize(128)
>>> transform(img).size
(133, 128)
class jittor.transform.RandomGray(p=0.1)[源代码]
随机将图片转换为灰度图。该类用于以给定的概率p随机将输入图像转换为灰度图像,转换后的图像可能保持不变或则转换为灰度图,这取决于一个随机事件。输出灰度图与输入图的通道数保持一致。
p (float): 图像被转换为灰度图的概率。默认值: 0.1
代码示例: >>> from jittor import transform
>>> random_gray = transform.RandomGray()
>>> img_ = random_gray(img)
class jittor.transform.RandomHorizontalFlip(p=0.5)[源代码]
对图像进行随机水平翻转的变换类,以一定的概率水平翻转输入的图像。
p (float): 图像翻转的概率。默认值为0.5。
代码示例:>>> from jittor import transform
>>> random_hflip = transform.RandomHorizontalFlip(0.6)
>>> img_ = random_hflip(img)
代码示例:>>> from jittor import transform
>>> transform_list = [transform.RandomHorizontalFlip(), transform.RandomCrop(size=(32, 32))]
>>> random_order = transform.RandomOrder(transform_list)
>>> img_ = random_order(img)
class jittor.transform.RandomPerspective(distortion_scale=0.5, p=0.5, interpolation=3)[源代码]
对图像以一定的概率进行随机透视变换。
distortion_scale(float, 可选): 控制变形程度的比例系数,值域为 [0, 1]。默认值: 0.5
p (float, 可选): 图片被透视变换的概率。默认值: 0.5
interpolation (PIL.Image.Interpolation method, 可选): 插值方法。默认值: PIL.Image.BICUBIC
代码示例:>>> from jittor import transform
>>> random_perspective = transform.RandomPerspective(distortion_scale=0.5, p=0.5)
>>> img_ = random_perspective(img)
class jittor.transform.RandomResizedCrop(size, scale=(0.08, 1.0), ratio=(0.75, 1.3333333333333333), interpolation=2)[源代码]
对给定的PIL图像执行随机尺寸与宽高比的裁剪并将其调整为给定大小。
同 jittor.transform.RandomSizedCrop
size (int, tuple[int]): 裁剪后每边的期望输出尺寸。若为单一整数,输出将是正方形;若为(int, int)元组,则输出为指定的宽高。
scale (tuple[float], 可选): 原始尺寸裁剪范围。默认值: (0.08, 1.0)。
ratio (tuple[float], 可选): 原始宽高比裁剪范围。默认值: (3/4, 4/3)。
interpolation (PIL.Image.Interpolation method, 可选): 图像插值方法。默认值: PIL.Image.BILINEAR
代码示例:>>> from jittor import transform
>>> random_resized_crop = transform.RandomResizedCrop(size=(224, 224))
>>> img_ = random_resized_crop(img)
class jittor.transform.RandomRotation(degrees, resample=False, expand=False, center=None, fill=None)[源代码]
对图像进行随机旋转。
degrees (sequence, float, int): 选择的角度范围,如果degrees是一个数字而不是像(min, max)这样的序列,角度的范围将为(-degrees, +degrees)。
resample ({PIL.Image.NEAREST, PIL.Image.BILINEAR, PIL.Image.BICUBIC}, 可选):可选的重采样滤波器。请参阅 链接 以获取更多信息。如果省略或图像的模式为1或P,则设置为 PIL.Image.NEAREST 。默认值: False
expand (bool, 可选): 可选的扩展标志。若为真,则扩展输出以使其足够大以容纳整个旋转后的图像;为假或省略,则使输出图像与输入图像的尺寸相同。请注意,扩展标志假定围绕中心旋转且不进行平移。默认值: False
center (2-tuple, 可选): 可选的旋转中心,原点是左上角。默认值: 图像的中心。默认值: None
fill (n-tuple, int, float, 可选): 旋转后图像之外区域的像素填充值。如果是整数或浮点数,分别用于所有通道。默认情况下,所有通道的值都为0。此选项仅在`pillow>=5.2.0`版本中可用。默认值: None
代码示例:>>> from jittor import transform
>>> random_rotation = transform.RandomRotation(degrees=45)
>>> rotated_image = random_rotation(input_image)
class jittor.transform.RandomVerticalFlip(p=0.5)[源代码]
随机垂直翻转图像的类。该类以一定概率沿垂直方向翻转给定的图像。这是数据增强过程中的一个常用技术,旨在提高模型对图像方向变化的鲁棒性。
p (float, 可选): 图像翻转的概率。默认值: 0.5。
代码示例:>>> from jittor.transform import RandomVerticalFlip
>>> from PIL import Image
>>> random_vflip = RandomVerticalFlip(0.6)
>>> img = Image.open('path/to/image.jpg')
>>> img_transformed = random_vflip(img)
class jittor.transform.TenCrop(size, vertical_flip=False)[源代码]
将给定图像裁剪成四个角落和中心部分,以及这些部分的翻转版本(默认为水平翻转,可选择垂直翻转),共十张图片。
size (sequence, int): 裁剪的期望输出大小。如果size是一个整数而不是像(h, w)这样的序列,会进行一个(size, size)的正方形裁剪
vertical_flip (bool, 可选): 若为True,则使用垂直翻转。否则使用水平翻转。默认值: False
代码示例:>>> from jittor import transform
>>> import numpy as np
>>> from PIL import Image
>>> data = np.random.rand(200, 200, 3)
>>> img = Image.fromarray(data, 'RGB')
>>> ten_crop = transform.TenCrop(16)
>>> imgs = ten_crop(img)
>>> imgs[0].size, imgs[1].size, imgs[2].size, imgs[8].size, imgs[9].size
((16, 16), (16, 16), (16, 16), (16, 16), (16, 16))
class jittor.transform.ToPILImage(mode=None)[源代码]
将张量或ndarray转换为PIL图像。该类将一个C x H x W 的张量或者一个H x W x C 型的numpy ndarray转换成 PIL Image ,同时根据mode调整value的范围。
初始化参数: