文章目录
Compose类参数
1. RandomCrop类 随机裁剪参数
2. RandomHorizontalFlip类 随机水平翻转参数
3. RandomVerticalFlip类 随机垂直翻转参数
4. Normalize类 对图像进行标准化参数
5. ResizeByShort类 根据图像的短边调整图像大小参数
6. CenterCrop类 以图像中心点扩散裁剪正方形参数
7. RandomRotate类 以一定的概率对图像进行旋转参数
8. RandomDistort类 以一定的概率对图像进行随机像素内容变换参数
9. ComposedClsTransforms类参数添加数据增强方式使用示例
对图像分类任务的数据进行操作。可以利用
Compose类将图像预处理/增强操作进行组合。
Compose类
paddlex
.cls
.transforms
.Compose
(transforms
)
根据数据预处理/增强算子对输入数据进行操作。 使用示例
参数
transforms (list): 数据预处理/数据增强列表。
1. RandomCrop类 随机裁剪
paddlex
.cls
.transforms
.RandomCrop
(crop_size
=224, lower_scale
=0.08, lower_ratio
=3. / 4, upper_ratio
=4. / 3)
对图像进行随机剪裁,模型训练时的数据增强操作。
根据lower_scale、lower_ratio、upper_ratio计算随机剪裁的高、宽。根据随机剪裁的高、宽随机选取剪裁的起始点。剪裁图像。调整剪裁后的图像的大小到crop_size*crop_size。
参数
crop_size (int): 随机裁剪后重新调整的目标边长。默认为224。lower_scale (float): 裁剪面积相对原面积比例的最小限制。默认为0.08。lower_ratio(float): 宽变换比例的最小限制。默认为3. / 4。upper_ratio (float): 宽变换比例的最大限制。默认为4. / 3。
2. RandomHorizontalFlip类 随机水平翻转
paddlex
.cls
.transforms
.RandomHorizontalFlip
(prob
=0.5)
以一定的概率对图像进行随机水平翻转,模型训练时的数据增强操作。
参数
prob (float): 随机水平翻转的概率。默认为0.5。
3. RandomVerticalFlip类 随机垂直翻转
paddlex
.cls
.transforms
.RandomVerticalFlip
(prob
=0.5)
以一定的概率对图像进行随机垂直翻转,模型训练时的数据增强操作。
参数
prob (float): 随机垂直翻转的概率。默认为0.5。
4. Normalize类 对图像进行标准化
paddlex
.cls
.transforms
.Normalize
(mean
=[0.485, 0.456, 0.406], std
=[0.229, 0.224, 0.225])
对图像进行标准化。
对图像进行归一化到区间[0.0, 1.0]。对图像进行减均值除以标准差操作。
参数
mean (list): 图像数据集的均值。默认为[0.485, 0.456, 0.406]。std (list): 图像数据集的标准差。默认为[0.229, 0.224, 0.225]。
5. ResizeByShort类 根据图像的短边调整图像大小
paddlex
.cls
.transforms
.ResizeByShort
(short_size
=256, max_size
=-1)
根据图像的短边调整图像大小(resize)。
获取图像的长边和短边长度。根据短边与short_size的比例,计算长边的目标长度,此时高、宽的resize比例为short_size/原图短边长度。如果max_size>0,调整resize比例: 如果长边的目标长度>max_size,则高、宽的resize比例为max_size/原图长边长度。根据调整大小的比例对图像进行resize。
参数
short_size (int): 调整大小后的图像目标短边长度。默认为256。max_size (int): 长边目标长度的最大限制。默认为-1。
6. CenterCrop类 以图像中心点扩散裁剪正方形
paddlex
.cls
.transforms
.CenterCrop
(crop_size
=224)
以图像中心点扩散裁剪长宽为crop_size的正方形
计算剪裁的起始点。剪裁图像。
参数
crop_size (int): 裁剪的目标边长。默认为224。
7. RandomRotate类 以一定的概率对图像进行旋转
paddlex
.cls
.transforms
.RandomRotate
(rotate_range
=30, prob
=0.5)
以一定的概率对图像在[-rotate_range, rotate_range]角度范围内进行旋转,模型训练时的数据增强操作。
参数
rotate_range (int): 旋转度数的范围。默认为30。prob(float): 随机旋转的概率。默认为0.5。
8. RandomDistort类 以一定的概率对图像进行随机像素内容变换
paddlex
.cls
.transforms
.RandomDistort
(brightness_range
=0.9, brightness_prob
=0.5, contrast_range
=0.9, contrast_prob
=0.5, saturation_range
=0.9, saturation_prob
=0.5, hue_range
=18, hue_prob
=0.5)
以一定的概率对图像进行随机像素内容变换,模型训练时的数据增强操作。
对变换的操作顺序进行随机化操作。按照1中的顺序以一定的概率对图像在范围[-range, range]内进行随机像素内容变换。
【注意】该数据增强必须在数据增强Normalize之前使用。
参数
brightness_range (float): 明亮度因子的范围。默认为0.9。brightness_prob (float): 随机调整明亮度的概率。默认为0.5。contrast_range (float): 对比度因子的范围。默认为0.9。contrast_prob (float): 随机调整对比度的概率。默认为0.5。saturation_range (float): 饱和度因子的范围。默认为0.9。saturation_prob (float): 随机调整饱和度的概率。默认为0.5。hue_range (int): 色调因子的范围。默认为18。hue_prob (float): 随机调整色调的概率。默认为0.5。
9. ComposedClsTransforms类
paddlex
.cls
.transforms
.ComposedClsTransforms
(mode
, crop_size
=[224, 224], mean
=[0.485, 0.456, 0.406], std
=[0.229, 0.224, 0.225])
分类模型中已经组合好的数据处理流程,开发者可以直接使用ComposedClsTransforms,简化手动组合transforms的过程, 该类中已经包含了RandomCrop和RandomHorizontalFlip两种数据增强方式,你仍可以通过add_augmenters函数接口添加新的数据增强方式。ComposedClsTransforms共包括以下几个步骤:
训练阶段:
随机从图像中crop一块子图,并resize成crop_size大小
将1的输出按0.5的概率随机进行水平翻转
将图像进行归一化
验证/预测阶段:
将图像按比例Resize,使得最小边长度为crop_size[0] * 1.14
从图像中心crop出一个大小为crop_size的图像
将图像进行归一化
参数
mode (str): Transforms所处的阶段,包括‘train’,‘eval’或’test’crop_size (int|list): 输入到模型里的图像大小,默认为[224, 224](与原图大小无关,根据上述几个步骤,会将原图处理成该图大小输入给模型训练)mean (list): 图像均值, 默认为[0.485, 0.456, 0.406]。std (list): 图像方差,默认为[0.229, 0.224, 0.225]。
添加数据增强方式
ComposedClsTransforms
.add_augmenters
(augmenters
)
参数
augmenters(list): 数据增强方式列表
使用示例
import paddlex
as pdx
from paddlex
.cls
import transforms
train_transforms
= transforms
.ComposedClsTransforms
(mode
='train', crop_size
=[320, 320])
eval_transforms
= transforms
.ComposedClsTransforms
(mode
='eval', crop_size
=[320, 320])
import imgaug
.augmenters
as iaa
train_transforms
.add_augmenters
([
transforms
.RandomDistort
(),
iaa
.blur
.GaussianBlur
(sigma
=(0.0, 3.0))
])
上面代码等价于
import paddlex
as pdx
from paddlex
.cls
import transforms
train_transforms
= transforms
.Composed
([
transforms
.RandomDistort
(),
iaa
.blur
.GaussianBlur
(sigma
=(0.0, 3.0)),
transforms
.RandomCrop
(crop_size
=320),
transforms
.RandomHorizontalFlip
(prob
=0.5),
transforms
.Normalize
()
])
eval_transforms
= transforms
.Composed
([
transforms
.ResizeByShort
(short_size
=int(320*1.14)),
transforms
.CenterCrop
(crop_size
=320),
transforms
.Normalize
()
])