未验证 提交 5858c87f 编写于 作者: saxon_zh's avatar saxon_zh 提交者: GitHub

add paddle.vision.transforms.* api cn doc (#2577)

* add paddle.vision.transforms.* api cn doc

* add alias for paddle.vision.transforms

* delete invalid file
上级 810ba40d
......@@ -502,3 +502,29 @@ paddle.fluid.layers.center_loss paddle.nn.functional.center_loss,paddle.nn.funct
paddle.nn.functional.input.one_hot paddle.nn.functional.one_hot
paddle.tensor.creation.full paddle.full,paddle.tensor.full
paddle.fluid.layers.soft_relu paddle.nn.functional.soft_relu,paddle.nn.functional.activation.soft_relu
paddle.vision.transforms.transforms.Compose paddle.vision.transforms.Compose
paddle.vision.transforms.transforms.BatchCompose paddle.vision.transforms.BatchCompose
paddle.vision.transforms.transforms.Resize paddle.vision.transforms.Resize
paddle.vision.transforms.transforms.RandomResizedCrop paddle.vision.transforms.RandomResizedCrop
paddle.vision.transforms.transforms.CenterCropResize paddle.vision.transforms.CenterCropResize
paddle.vision.transforms.transforms.CenterCrop paddle.vision.transforms.CenterCrop
paddle.vision.transforms.transforms.RandomHorizontalFlip paddle.vision.transforms.RandomHorizontalFlip
paddle.vision.transforms.transforms.RandomVerticalFlip paddle.vision.transforms.RandomVerticalFlip
paddle.vision.transforms.transforms.Permute paddle.vision.transforms.Permute
paddle.vision.transforms.transforms.Normalize paddle.vision.transforms.Normalize
paddle.vision.transforms.transforms.GaussianNoise paddle.vision.transforms.GaussianNoise
paddle.vision.transforms.transforms.BrightnessTransform paddle.vision.transforms.BrightnessTransform
paddle.vision.transforms.transforms.SaturationTransform paddle.vision.transforms.SaturationTransform
paddle.vision.transforms.transforms.ContrastTransform paddle.vision.transforms.ContrastTransform
paddle.vision.transforms.transforms.HueTransform paddle.vision.transforms.HueTransform
paddle.vision.transforms.transforms.ColorJitter paddle.vision.transforms.ColorJitter
paddle.vision.transforms.transforms.RandomCrop paddle.vision.transforms.RandomCrop
paddle.vision.transforms.transforms.RandomErasing paddle.vision.transforms.RandomErasing
paddle.vision.transforms.transforms.Pad paddle.vision.transforms.Pad
paddle.vision.transforms.transforms.RandomRotate paddle.vision.transforms.RandomRotate
paddle.vision.transforms.transforms.Grayscale paddle.vision.transforms.Grayscale
paddle.vision.transforms.functional.flip paddle.vision.transforms.flip
paddle.vision.transforms.functional.resize paddle.vision.transforms.resize
paddle.vision.transforms.functional.pad paddle.vision.transforms.pad
paddle.vision.transforms.functional.rotate paddle.vision.transforms.rotate
paddle.vision.transforms.functional.to_grayscale paddle.vision.transforms.to_grayscale
\ No newline at end of file
.. _cn_api_tensor_flip:
flip
-------------------------------
.. py:function:: paddle.flip(x, axis, name=None):
:alias_main: paddle.flip
:alias: paddle.flip, paddle.tensor.flip, paddle.tensor.manipulation.flip
该OP沿指定轴反转n维tensor.
参数:
- **x** (Variable) - 输入张量。维度为多维,数据类型为bool, int32, int64, float32或float64。
- **axis** (list) - 需要翻转的轴。当 ``axis[i] < 0`` 时,实际的计算维度为 ndim(x) + axis[i],其中i为axis的索引。
- **name** (str|None) - 该参数供开发人员打印调试信息时使用,具体用法请参见 :ref:`api_guide_Name` 。默认值为None。
返回:在指定axis上翻转后的张量,与输入x数据类型相同。
返回类型:Variable,与输入x数据类型相同。
抛出异常:
- ``TypeError`` - 当输出 ``out`` 和输入 ``x`` 数据类型不一致时候。
- ``ValueError`` - 当参数 ``axis`` 不合法时。
**代码示例1**:
.. code-block:: python
import paddle
import numpy as np
paddle.enable_imperative()
image_shape=(3, 2, 2)
x = np.arange(image_shape[0] * image_shape[1] * image_shape[2]).reshape(image_shape)
x = x.astype('float32')
img = paddle.imperative.to_variable(x)
out = paddle.flip(img, [0,1])
print(out) # [[[10,11][8, 9]],[[6, 7],[4, 5]] [[2, 3],[0, 1]]]
.. _cn_api_vision_transforms_flip:
flip
-------------------------------
.. py:function:: paddle.vision.transforms.flip(image, code)
根据翻转的类型对输入图像进行翻转。
参数
:::::::::
- image (numpy.ndarray) - 输入的图像数据,形状为(H, W, C)。
- code (int) - 支持的翻转类型,-1: 水平和垂直翻转,0: 垂直翻转,1: 水平翻转。
返回
:::::::::
``numpy.ndarray``,翻转后的图像数据。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import functional as F
np.random.seed(5)
fake_img = np.random.rand(224, 224, 3)
# flip horizontally and vertically
flip_img_1 = F.flip(fake_img, -1)
# flip vertically
flip_img_2 = F.flip(fake_img, 0)
# flip horizontally
flip_img_3 = F.flip(fake_img, 1)
\ No newline at end of file
.. _cn_api_vision_transforms_pad:
pad
-------------------------------
.. py:function:: paddle.vision.transforms.pad(img, padding, fill=(0, 0, 0), padding_mode='constant')
使用特定的填充模式和填充值来对输入图像进行填充。
参数
:::::::::
- img (np.ndarray) - 被填充的图像。
- padding (int|tuple) - 在图像每个边框上填充。
如果提供单个int值,则用于填充图像所有边。
如果提供长度为2的元组,则分别为图像左/右和顶部/底部进行填充。
如果提供了长度为4的元组,则分别按照左,上,右和下的顺序为图像填充。
- fill (int|tuple) - 用于填充的像素值,仅当padding_mode为constant时传递此参数,默认使用0来进行每个像素的填充。
如果参数值是一个长度为3的元组,则会分别用于填充R,G,B通道。
- padding_mode (string) - 填充模式,支持:constant, edge, reflect 或 symmetric,默认值:constant,使用fill参数值填充。
``constant`` 表示使用fill参数来指定一个值进行填充。
``edge`` 表示在图像边缘填充最后一个值。
``reflect`` 表示用原图像的反向图片填充(不重复使用边缘上的值)。比如使用这个模式对 ``[1, 2, 3, 4]``的两端分别填充2个值,最后结果是 ``[3, 2, 1, 2, 3, 4, 3, 2]``。
``symmetric`` 表示用原图像的反向图片填充(重复使用边缘上的值)。比如使用这个模式对 ``[1, 2, 3, 4]``的两端分别填充2个值,最后结果是 ``[2, 1, 1, 2, 3, 4, 4, 3]``。
返回
:::::::::
``numpy.ndarray``,填充后的图像数据。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms.functional import pad
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = pad(fake_img, 2)
print(fake_img.shape)
# (504, 504, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_resize:
resize
-------------------------------
.. py:function:: paddle.vision.transforms.resize(img, size, interpolation=cv2.INTER_LINEAR)
将输入数据调整为指定大小。
参数
:::::::::
- img (numpy.ndarray) - 输入数据,可以是(H, W, C)形状的图像或遮罩。
- size (int|tuple) - 输出图像大小。
如果size是一个序列,例如(h,w),输出大小将与此匹配。
如果size为int,图像的较小边缘将与此数字匹配,即如果 height > width,则图像将重新缩放为(size * height / width, size)。
- interpolation (int,可选) - 调整图片大小时使用的插值模式。默认值: cv2.INTER_LINEAR。
返回
:::::::::
``numpy.ndarray``,调整大小后的图像数据。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import functional as F
fake_img = np.random.rand(256, 256, 3)
fake_img_1 = F.resize(fake_img, 224)
print(fake_img_1.shape)
# (224, 224, 3)
fake_img_2 = F.resize(fake_img, (200, 150))
print(fake_img_2.shape)
# (200, 150, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_rotate:
rotate
-------------------------------
.. py:function:: paddle.vision.transforms.rotate(img, angle, interpolation=cv2.INTER_LINEAR, expand=False, center=None)
按角度旋转图像。
参数
:::::::::
- img (numpy.ndarray) - 输入图像。
- angle (float|int) - 旋转角度,顺时针。
- interpolation (int,可选) - 调整图片大小时使用的插值模式。默认值: cv2.INTER_LINEAR。
- expand (bool,可选) - 是否要对旋转后的图片进行大小扩展,默认值: False,不进行扩展。
当参数值为True时,会对图像大小进行扩展,让其能够足以容纳整个旋转后的图像。
当参数值为False时,会按照原图像大小保留旋转后的图像。
**这个扩展操作的前提是围绕中心旋转且没有平移。**
- center (2-tuple,可选) - 旋转的中心点坐标,原点是图片左上角,默认值是图像的中心点。
返回
:::::::::
``numpy ndarray``,旋转后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms.functional import rotate
fake_img = np.random.rand(3, 3, 3).astype('float32')
print('before rotate:')
print(fake_img)
fake_img = rotate(fake_img, 90)
print('after rotate:')
print(fake_img)
"""
before rotate:
[[[0.9320921 0.311002 0.22388814]
[0.9551999 0.10015319 0.7481808 ]
[0.4619514 0.29591113 0.12210595]]
[[0.77222216 0.3235876 0.5718483 ]
[0.8797754 0.35876957 0.9330844 ]
[0.65897316 0.11888863 0.31214228]]
[[0.7627513 0.05149421 0.41464522]
[0.2620253 0.7800404 0.990831 ]
[0.7814754 0.21640824 0.4333755 ]]]
after rotate:
[[[0. 0. 0. ]
[0.7627513 0.05149421 0.41464522]
[0.77222216 0.3235876 0.5718483 ]]
[[0. 0. 0. ]
[0.2620253 0.7800404 0.990831 ]
[0.8797754 0.35876957 0.9330844 ]]
[[0. 0. 0. ]
[0.7814754 0.21640824 0.4333755 ]
[0.65897316 0.11888863 0.31214228]]]
"""
\ No newline at end of file
.. _cn_api_vision_transforms_to_grayscale:
to_grayscale
-------------------------------
.. py:function:: paddle.vision.transforms.to_grayscale(img, num_output_channels=1)
将图像转换为灰度。
参数
:::::::::
- img (numpy.ndarray) - 输入图像
- num_output_channels (int,可选) - 输出图像的通道数,默认值为1,单通道。
返回
:::::::::
``numpy.ndarray``,输入图像的灰度版本。
- 如果 output_channels == 1 : 返回一个单通道图像。
- 如果 output_channels == 3 : 返回一个RBG格式的3通道图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms.functional import to_grayscale
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = to_grayscale(fake_img)
print(fake_img.shape)
# (500, 500, 1)
\ No newline at end of file
.. _cn_api_vision_transforms_BatchCompose:
BatchCompose
-------------------------------
.. py:class:: paddle.vision.transforms.BatchCompose(transforms=[])
用于处理批数据的预处理接口组合。
参数
:::::::::
- transforms (list): - 用于组合的数据预处理接口实例。这些预处理接口所处理的是一批数据。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.io import DataLoader
from paddle import set_device
from paddle.vision.datasets import Flowers
from paddle.vision.transforms import Compose, BatchCompose, Resize
class NormalizeBatch(object):
def __init__(self,
mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225],
scale=True,
channel_first=True):
self.mean = mean
self.std = std
self.scale = scale
self.channel_first = channel_first
if not (isinstance(self.mean, list) and isinstance(self.std, list) and
isinstance(self.scale, bool)):
raise TypeError("{}: input type is invalid.".format(self))
from functools import reduce
if reduce(lambda x, y: x * y, self.std) == 0:
raise ValueError('{}: std is invalid!'.format(self))
def __call__(self, samples):
for i in range(len(samples)):
samples[i] = list(samples[i])
im = samples[i][0]
im = im.astype(np.float32, copy=False)
mean = np.array(self.mean)[np.newaxis, np.newaxis, :]
std = np.array(self.std)[np.newaxis, np.newaxis, :]
if self.scale:
im = im / 255.0
im -= mean
im /= std
if self.channel_first:
im = im.transpose((2, 0, 1))
samples[i][0] = im
return samples
transform = Compose([Resize((500, 500))])
flowers_dataset = Flowers(mode='test', transform=transform)
device = set_device('cpu')
collate_fn = BatchCompose([NormalizeBatch()])
loader = DataLoader(
flowers_dataset,
batch_size=4,
places=device,
return_list=True,
collate_fn=collate_fn)
for data in loader:
# do something
break
\ No newline at end of file
.. _cn_api_vision_transforms_BrightnessTransform:
BrightnessTransform
-------------------------------
.. py:class:: paddle.vision.transforms.BrightnessTransform(value)
调整图像的亮度。
参数
:::::::::
- value (float) - 亮度调整范围大小,会从给定参数后的均匀分布[max(0,1 - brightness), 1 + brightness]中随机选择进行实际调整,可以是任何非负数。参数等于0时输出原始图像。
返回
:::::::::
``numpy ndarray``,调整亮度后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import BrightnessTransform
transform = BrightnessTransform(0.4)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (500, 500, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_CenterCropResize:
CenterCropResize
-------------------------------
.. py:class:: paddle.vision.transforms.CenterCropResize(size, crop_padding=32, interpolation=cv2.INTER_LINEAR)
通过填充将图像裁剪到图像中心,然后缩放尺寸。
参数
:::::::::
- size (int|list|tuple) - 输出图像的形状大小。
- crop_padding (int) - 中心裁剪时进行padding的大小。默认值: 32。
- interpolation (int) - 调整图片大小时使用的插值模式。默认值: cv2.INTER_LINEAR。
返回
:::::::::
``numpy ndarray``,裁剪并调整尺寸后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import CenterCropResize
transform = CenterCropResize(224)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (224, 224, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_CenterCrop:
CenterCrop
-------------------------------
.. py:class:: paddle.vision.transforms.CenterCrop(output_size)
对输入图像进行裁剪,保持图片中心点不变。
参数
:::::::::
- output_size (int|tuple) - 输出图像的形状大小。
返回
:::::::::
``numpy ndarray``,裁剪后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import CenterCrop
transform = CenterCrop(224)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (224, 224, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_ColorJitter:
ColorJitter
-------------------------------
.. py:class:: paddle.vision.transforms.ColorJitter(brightness=0, contrast=0, saturation=0, hue=0)
随机调整图像的亮度,对比度,饱和度和色调。
参数
:::::::::
- brightness(float) - 亮度调整范围大小,会从给定参数后的均匀分布[max(0,1 - brightness), 1 + brightness]中随机选择进行实际调整,不能是负数。
- contrast(float) - 对比度调整范围大小,,会从给定参数后的均匀分布[max(0,1 - contrast), 1 + contrast]中随机选择进行实际调整,不能是负数。
- saturation(float) - 饱和度调整范围大小,,会从给定参数后的均匀分布[max(0,1 - saturation), 1 + saturation]中随机选择进行实际调整,不能是负数。
- hue(float) - 色调调整范围大小,,会从给定参数后的均匀分布[-hue, hue]中随机选择进行实际调整,参数值需要在0到0.5之间。
返回
:::::::::
``numpy ndarray``,调整亮度、对比度、饱和度和色调后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import ColorJitter
transform = ColorJitter(0.4)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (500, 500, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_Compose:
Compose
-------------------------------
.. py:class:: paddle.vision.transforms.Compose(transforms)
将用于数据集预处理的接口以列表的方式进行组合。
参数
:::::::::
- transforms (list) - 用于组合的数据预处理接口实例列表。
返回
:::::::::
一个可调用的Compose对象,它将依次调用每个给定的 :attr:`transforms`。
代码示例
:::::::::
.. code-block:: python
from paddle.vision.datasets import Flowers
from paddle.vision.transforms import Compose, ColorJitter, Resize
transform = Compose([ColorJitter(), Resize(size=608)])
flowers = Flowers(mode='test', transform=transform)
for i in range(10):
sample = flowers[i]
print(sample[0].shape, sample[1])
\ No newline at end of file
.. _cn_api_vision_transforms_ContrastTransform:
ContrastTransform
-------------------------------
.. py:class:: paddle.vision.transforms.ContrastTransform(value)
调整图像对比度。
参数
:::::::::
- value (float) - 对比度调整范围大小,会从给定参数后的均匀分布[max(0,1 - contrast), 1 + contrast]中随机选择进行实际调整,不能是负数。参数值为0时返回原图像。
返回
:::::::::
``numpy ndarray``,调整对比度后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import ContrastTransform
transform = ContrastTransform(0.4)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (500, 500, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_GaussianNoise:
GaussianNoise
-------------------------------
.. py:class:: paddle.vision.transforms.GaussianNoise(mean=0.0, std=1.0)
基于给定的均值和标准差来产生高斯噪声,并将随机高斯噪声添加到输入数据。
参数
:::::::::
- mean (float) - 用于产生噪声的高斯平均值。
- std (float) - 用于产生噪声的高斯标准偏差。
返回
:::::::::
``numpy ndarray``,增加高斯噪声后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import GaussianNoise
transform = GaussianNoise()
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (500, 500, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_Grayscale:
Grayscale
-------------------------------
.. py:class:: paddle.vision.transforms.Grayscale(output_channels=1)
将图像转换为灰度。
参数
:::::::::
- output_channels (int) - 输出图像的通道数,参数值为1或3。
返回
:::::::::
``numpy.ndarray``,输入图像的灰度版本。
- 如果 output_channels == 1 : 返回一个单通道图像。
- 如果 output_channels == 3 : 返回一个RBG格式的3通道图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import Grayscale
transform = Grayscale()
fake_img = np.random.rand(500, 400, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (500, 400, 1)
\ No newline at end of file
.. _cn_api_vision_transforms_HueTransform:
HueTransform
-------------------------------
.. py:class:: paddle.vision.transforms.HueTransform(value)
调整图像的色调。
参数
:::::::::
- value (float) - 色调调整范围大小,,会从给定参数后的均匀分布[-hue, hue]中随机选择进行实际调整,参数值需要在0到0.5之间, 参数值为0时返回原始图像。
返回
:::::::::
``numpy ndarray``,调整色调后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import HueTransform
transform = HueTransform(0.4)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (500, 500, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_Normalize:
Normalize
-------------------------------
.. py:class:: paddle.vision.transforms.Normalize(mean=0.0, std=1.0)
图像归一化处理,支持两种方式:
1. 用统一的均值和标准差值对图像的每个通道进行归一化处理;
2. 对每个通道指定不同的均值和标准差值进行归一化处理。
计算过程:
``output[channel] = (input[channel] - mean[channel]) / std[channel]``
参数
:::::::::
- mean (int|float|list) - 用于每个通道归一化的均值。
- std (int|float|list) - 用于每个通道归一化的标准差值。
返回
:::::::::
``numpy ndarray``,归一化后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import Normalize
normalize = Normalize(mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5])
fake_img = np.random.rand(3, 500, 500).astype('float32')
fake_img = normalize(fake_img)
print(fake_img.shape)
# (3, 500, 500)
\ No newline at end of file
.. _cn_api_vision_transforms_Pad:
Pad
-------------------------------
.. py:class:: paddle.vision.transforms.Pad(padding, fill=0, padding_mode='constant')
使用特定的填充模式和填充值来对输入图像进行填充。
参数
:::::::::
- padding (int|tuple) - 在图像每个边框上填充。
如果提供单个int值,则用于填充图像所有边。
如果提供长度为2的元组,则分别为图像左/右和顶部/底部进行填充。
如果提供了长度为4的元组,则分别按照左,上,右和下的顺序为图像填充。
- fill (int|tuple) - 用于填充的像素值,仅当padding_mode为constant时传递此参数,默认使用0来进行每个像素的填充。
如果参数值是一个长度为3的元组,则会分别用于填充R,G,B通道。
- padding_mode (string) - 填充模式,支持:constant, edge, reflect 或 symmetric,默认值:constant,使用fill参数值填充。
``constant`` 表示使用fill参数来指定一个值进行填充。
``edge`` 表示在图像边缘填充最后一个值。
``reflect`` 表示用原图像的反向图片填充(不重复使用边缘上的值)。比如使用这个模式对 ``[1, 2, 3, 4]``的两端分别填充2个值,最后结果是 ``[3, 2, 1, 2, 3, 4, 3, 2]``。
``symmetric`` 表示用原图像的反向图片填充(重复使用边缘上的值)。比如使用这个模式对 ``[1, 2, 3, 4]``的两端分别填充2个值,最后结果是 ``[2, 1, 1, 2, 3, 4, 4, 3]``。
返回
:::::::::
``numpy ndarray``,填充后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import Pad
transform = Pad(2)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (504, 504, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_Permute:
Permute
-------------------------------
.. py:class:: paddle.vision.transforms.Permute(mode="CHW", to_rgb=True)
将输入的图像数据更改为目标格式。例如,大多数数据预处理是使用HWC格式的图片,而神经网络可能使用CHW模式输入张量。
.. note::
输入图像应为HWC格式的numpy.ndarray。
参数
:::::::::
- mode (str) - 输出图像的格式,默认值为CHW(图像通道-图像高度-图像宽度)。
- to_rgb (bool) - 将BGR格式图像转换为RGB格式,默认值为True,启用此项转换。
返回
:::::::::
``numpy ndarray``,更改格式后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import Permute
transform = Permute()
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (3, 500, 500)
\ No newline at end of file
.. _cn_api_vision_transforms_RandomCrop:
RandomCrop
-------------------------------
.. py:class:: paddle.vision.transforms.RandomCrop(size, padding=0, pad_if_needed=False)
在随机位置裁剪输入的图像。
参数
:::::::::
- size (sequence|int) - 裁剪后的图片大小。如果size是一个int值,而不是(h, w)这样的序列,那么会做一个方形的裁剪(size, size)。
- padding (int|sequence,可选) - 对图像四周外边进行填充,如果提供了长度为4的序列,则将其分别用于填充左边界,上边界,右边界和下边界。 默认值:0,不填充。
- pad_if_needed (boolean,可选) - 如果裁剪后的图像小于期望的大小时,是否对裁剪后的图像进行填充,以避免引发异常,默认值:False,保持初次裁剪后的大小,不填充。
返回
:::::::::
``numpy ndarray``,随机裁剪后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import RandomCrop
transform = RandomCrop(224)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (224, 224, 3)
.. _cn_api_vision_transforms_RandomErasing:
RandomErasing
-------------------------------
.. py:class:: paddle.vision.transforms.RandomErasing(prob=0.5, scale=(0.02, 0.4), ratio=0.3, value=[0., 0., 0.])
随机选择图像中的一个矩形区域并将其像素删除。
具体可参见``Random Erasing Data Augmentation``这篇论文,链接:https://arxiv.org/pdf/1708.04896.pdf。
参数
:::::::::
- prob (float) - 随机擦除操作被执行的概率。
- scale (tuple) - 擦除区域相对于输入图像的比例范围,参数格式:(min,max)。
- ratio (float) - 擦除区域的宽高比范围。
- value (float|list|tuple) - 擦除操作使用的像素值。如果为单个float值,则用于擦除所有像素。
如果是长度为3的元组或数组,则分别用于擦除R,G,B通道。默认值:0.,使用0.来擦除矩形区域。
返回
:::::::::
``numpy ndarray``,随机擦除后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import RandomErasing
transform = RandomErasing()
np.random.seed(5)
fake_img = np.random.rand(5, 5, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img)
"""
因函数会随机擦除,以下是其中一种结果示例,0.的位置就是被做了擦除。
[[[0.22199318 0.8707323 0.20671916]
[0.91861093 0.4884112 0.61174387]
[0.7659079 0.518418 0.2968005 ]
[0.18772122 0.08074127 0.7384403 ]
[0.4413092 0.15830986 0.87993705]]
[[0. 0. 0. ]
[0. 0. 0. ]
[0.26581913 0.28468588 0.2535882 ]
[0.32756394 0.1441643 0.16561286]
[0.96393055 0.9602267 0.18841465]]
[[0. 0. 0. ]
[0. 0. 0. ]
[0.00164217 0.5154726 0.6397952 ]
[0.98562443 0.2590976 0.8024969 ]
[0.8704831 0.92274964 0.00221421]]
[[0.46948838 0.98146874 0.3989448 ]
[0.8137325 0.5464565 0.7708541 ]
[0.48493108 0.02911156 0.08652569]
[0.11145381 0.2512451 0.9649153 ]
[0.6317661 0.8166602 0.566082 ]]
[[0.6353562 0.8119024 0.9266826 ]
[0.91262674 0.82481074 0.09420273]
[0.36104843 0.03550903 0.54635835]
[0.7961427 0.0511428 0.18866773]
[0.36547777 0.24429087 0.79508746]]]
"""
\ No newline at end of file
.. _cn_api_vision_transforms_RandomHorizontalFlip:
RandomHorizontalFlip
-------------------------------
.. py:class:: paddle.vision.transforms.RandomHorizontalFlip(prob=0.5)
基于概率来执行图片的水平翻转。
参数
:::::::::
- prob (float) - 图片执行水平翻转的概率,默认值为0.5。
返回
:::::::::
``numpy ndarray``,概率执行水平翻转后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import RandomHorizontalFlip
transform = RandomHorizontalFlip(1)
np.random.seed(5)
fake_img = np.random.rand(3, 3, 3).astype('float32')
print('翻转前的图片')
print(fake_img)
fake_img = transform(fake_img)
print('翻转后的图片')
print(fake_img)
"""
翻转前的图片
[[[0.22199318 0.8707323 0.20671916]
[0.91861093 0.4884112 0.61174387]
[0.7659079 0.518418 0.2968005 ]]
[[0.18772122 0.08074127 0.7384403 ]
[0.4413092 0.15830986 0.87993705]
[0.27408648 0.41423503 0.29607993]]
[[0.62878793 0.5798378 0.5999292 ]
[0.26581913 0.28468588 0.2535882 ]
[0.32756394 0.1441643 0.16561286]]]
翻转后的图片
[[[0.7659079 0.518418 0.2968005 ]
[0.91861093 0.4884112 0.61174387]
[0.22199318 0.8707323 0.20671916]]
[[0.27408648 0.41423503 0.29607993]
[0.4413092 0.15830986 0.87993705]
[0.18772122 0.08074127 0.7384403 ]]
[[0.32756394 0.1441643 0.16561286]
[0.26581913 0.28468588 0.2535882 ]
[0.62878793 0.5798378 0.5999292 ]]]
"""
\ No newline at end of file
.. _cn_api_vision_transforms_RandomResizedCrop:
RandomResizedCrop
-------------------------------
.. py:class:: paddle.vision.transforms.RandomResizedCrop(output_size, scale=(0.08, 1.0), ratio=(3. / 4, 4. / 3), interpolation=cv2.INTER_LINEAR)
将输入图像按照随机大小和长宽比进行裁剪。
会根据参数生成基于原图像的随机比例(默认值:0.08至1.0)和随机宽高比(默认值:3./4至4./3)。
经过此接口操作后,输入图像将调整为参数指定大小。
参数
:::::::::
- output_size (int|list|tuple) - 输出图像大小,当为单个int值时,生成output_size大小的方形图片,为(height,width)格式的数组或元组时按照参数大小输出。
- scale (list|tuple) - 基于原图选定的需要进行裁剪的范围,默认值:(0.08,1.0)。
- ratio (list|tuple) - 裁剪后的目标图像宽高比范围,默认值: (0.75, 1.33)。
返回
:::::::::
``numpy ndarray``,随机裁剪和改变大小后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import RandomResizedCrop
transform = RandomResizedCrop(3)
fake_img = np.random.rand(5, 5, 3).astype('float32')
print('original image:')
print(fake_img)
fake_img = transform(fake_img)
print('output image:')
print(fake_img)
"""
original image:
[[[0.22199318 0.8707323 0.20671916]
[0.91861093 0.4884112 0.61174387]
[0.7659079 0.518418 0.2968005 ]
[0.18772122 0.08074127 0.7384403 ]
[0.4413092 0.15830986 0.87993705]]
[[0.27408648 0.41423503 0.29607993]
[0.62878793 0.5798378 0.5999292 ]
[0.26581913 0.28468588 0.2535882 ]
[0.32756394 0.1441643 0.16561286]
[0.96393055 0.9602267 0.18841465]]
[[0.02430656 0.20455554 0.6998436 ]
[0.7795146 0.02293309 0.5776629 ]
[0.00164217 0.5154726 0.6397952 ]
[0.98562443 0.2590976 0.8024969 ]
[0.8704831 0.92274964 0.00221421]]
[[0.46948838 0.98146874 0.3989448 ]
[0.8137325 0.5464565 0.7708541 ]
[0.48493108 0.02911156 0.08652569]
[0.11145381 0.2512451 0.9649153 ]
[0.6317661 0.8166602 0.566082 ]]
[[0.6353562 0.8119024 0.9266826 ]
[0.91262674 0.82481074 0.09420273]
[0.36104843 0.03550903 0.54635835]
[0.7961427 0.0511428 0.18866773]
[0.36547777 0.24429087 0.79508746]]]
output image:
[[[0.7659079 0.518418 0.2968005 ]
[0.18772122 0.08074127 0.7384403 ]
[0.4413092 0.15830986 0.87993705]]
[[0.26581913 0.28468588 0.2535882 ]
[0.32756394 0.1441643 0.16561286]
[0.96393055 0.9602267 0.18841465]]
[[0.00164217 0.5154726 0.6397952 ]
[0.98562443 0.2590976 0.8024969 ]
[0.8704831 0.92274964 0.00221421]]]
"""
.. _cn_api_vision_transforms_RandomRotate:
RandomRotate
-------------------------------
.. py:class:: paddle.vision.transforms.RandomRotate(degrees, interpolation=cv2.INTER_LINEAR, expand=False, center=None)
按角度旋转图像。
参数
:::::::::
- degrees (sequence|float|int) - 旋转的角度度数范围。如果度数是数字而不是像(min,max)这样的序列,则会根据degrees参数值生成度数范围(-degrees,+degrees)。
- interpolation (int,可选) - 调整图片大小时使用的插值模式。默认值: cv2.INTER_LINEAR。
- expand (bool,可选): 是否要对旋转后的图片进行大小扩展,默认值: False,不进行扩展。
当参数值为True时,会对图像大小进行扩展,让其能够足以容纳整个旋转后的图像。
当参数值为False时,会按照原图像大小保留旋转后的图像。
**这个扩展操作的前提是围绕中心旋转且没有平移。**
- center (2-tuple,可选) - 旋转的中心点坐标,原点是图片左上角,默认值是图像的中心点。
返回
:::::::::
``numpy ndarray``,随机旋转一定角度后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import RandomRotate
transform = RandomRotate(90)
np.random.seed(5)
fake_img = np.random.rand(500, 400, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (500, 400, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_RandomVerticalFlip:
RandomVerticalFlip
-------------------------------
.. py:class:: paddle.vision.transforms.RandomVerticalFlip(prob=0.5)
基于概率来执行图片的垂直翻转。
参数
:::::::::
- prob (float) - 执行图片垂直翻转的概率,默认值为0.5。
返回
:::::::::
``numpy ndarray``,概率执行垂直翻转后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import RandomVerticalFlip
transform = RandomVerticalFlip()
np.random.seed(5)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (500, 500, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_Resize:
Resize
-------------------------------
.. py:class:: paddle.vision.transforms.Resize(size, interpolation=cv2.INTER_LINEAR)
将输入数据调整为指定大小。
参数
:::::::::
- size (int|list|tuple) - 输出图像大小。
如果size是一个序列,例如(h,w),输出大小将与此匹配。
如果size为int,图像的较小边缘将与此数字匹配,即如果 height > width,则图像将重新缩放为(size * height / width, size)。
- interpolation (int,可选) - 调整图片大小时使用的插值模式。默认值: cv2.INTER_LINEAR。
返回
:::::::::
``numpy ndarray``,调整大小后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import Resize
transform = Resize(size=224)
np.random.seed(5)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (224, 224, 3)
\ No newline at end of file
.. _cn_api_vision_transforms_SaturationTransform:
SaturationTransform
-------------------------------
.. py:class:: paddle.vision.transforms.SaturationTransform(value)
调整图像的饱和度
参数
:::::::::
- value (float) - 饱和度的调整数值,非负数,当参数值为0时返回原始图像。
返回
:::::::::
``numpy ndarray``,调整饱和度后的图像。
代码示例
:::::::::
.. code-block:: python
import numpy as np
from paddle.vision.transforms import SaturationTransform
transform = SaturationTransform(0.4)
np.random.seed(5)
fake_img = np.random.rand(500, 500, 3).astype('float32')
fake_img = transform(fake_img)
print(fake_img.shape)
# (500, 500, 3)
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册