p y t h o n 使 用 A u g m e n t o r 对 图 像 分 割 数 据 集 中 原 图 和 标 签 m a s k 同 时 进 行 变 换 python使用Augmentor对图像分割数据集中原图和标签mask同时进行变换 python使用Augmentor对图像分割数据集中原图和标签mask同时进行变换
import Augmentor
'''
步骤 1.创建管道Pipeline实例
'''
p = Augmentor.Pipeline("defects")
p.ground_truth("rgb_masks")
'''
步骤 2:向管道添加数据增强(执行概率+参数范围)操作
'''
process_probability = 1
p.rotate_without_crop(probability=process_probability, max_left_rotation=60, max_right_rotation=60)
p.rotate(probability=process_probability, max_left_rotation=25, max_right_rotation=25)
p.rotate_random_90(probability=process_probability)
p.zoom(probability=process_probability, min_factor=0.5, max_factor=2)
p.crop_centre(probability=1,percentage_area=0.8)
p.crop_random(probability=1, percentage_area=0.8, randomise_percentage_area=True)
p.flip_left_right(probability=process_probability)
p.flip_top_bottom(probability=process_probability)
p.flip_random(probability=process_probability)
p.random_brightness(probability=process_probability, min_factor=0.7, max_factor=1.2)
p.random_color(probability=process_probability, min_factor=0.0, max_factor=1.5)
p.random_contrast(probability=process_probability, min_factor=0.7, max_factor=1.2)
p.shear(probability=process_probability,max_shear_left=15,max_shear_right=15)
p.skew_tilt(probability=process_probability, magnitude=1)
p.skew_corner(probability=process_probability, magnitude=0.5)
p.random_distortion(probability=process_probability, grid_height=5, grid_width=16, magnitude=8)
p.random_erasing(probability=process_probability, rectangle_area=0.5)
'''
步骤 3:生成数据增强后的图像和标签mask
'''
p.sample(100)
p.process()
一 使用步骤
步骤 1.创建管道Pipeline实例
import Augmentor
p = Augmentor.Pipeline("./defects")
p.ground_truth("./rgb_masks")
步骤 2:向管道添加数据增强(执行概率+参数范围)操作
'''
步骤 2:向管道添加数据增强(执行概率+参数范围)操作
'''
process_probability = 1
p.rotate_without_crop(probability=process_probability, max_left_rotation=60, max_right_rotation=60)
p.rotate(probability=process_probability, max_left_rotation=25, max_right_rotation=25)
p.rotate_random_90(probability=process_probability)
p.zoom(probability=process_probability, min_factor=0.5, max_factor=2)
p.crop_centre(probability=1,percentage_area=0.8)
p.crop_random(probability=1, percentage_area=0.8, randomise_percentage_area=True)
p.flip_left_right(probability=process_probability)
p.flip_top_bottom(probability=process_probability)
p.flip_random(probability=process_probability)
p.random_brightness(probability=process_probability, min_factor=0.7, max_factor=1.2)
p.random_color(probability=process_probability, min_factor=0.0, max_factor=1.5)
p.random_contrast(probability=process_probability, min_factor=0.7, max_factor=1.2)
p.shear(probability=process_probability,max_shear_left=15,max_shear_right=15)
p.skew_tilt(probability=process_probability, magnitude=1)
p.skew_corner(probability=process_probability, magnitude=0.5)
p.random_distortion(probability=process_probability, grid_height=5, grid_width=16, magnitude=8)
p.random_erasing(probability=process_probability, rectangle_area=0.5)
步骤 3:生成数据增强后的图像和标签mask
p.sample(5)
p.process()
新生成的增强图像和标签mask会保存到图像数据集的目录下名为 output 的目录中
二 Augmentor数据增强详解
1、旋转
2、缩放
3、裁剪
4、翻转
5、亮度增强/减弱
6、颜色增强/减弱
7、对比度增强/减弱
8、错切形变
9、透视形变
10、弹性扭曲
11、随机区域擦除
示例
import Augmentor
'''
步骤 1.创建管道Pipeline实例
'''
p = Augmentor.Pipeline("defects")
p.ground_truth("rgb_masks")
sample_num = 10
'''
设置标志位
'''
is_rotate = True
is_zoom = True
is_crop = False
is_flip = False
is_brightness = True
is_color = True
is_contrast = False
is_sheer = False
is_skew = False
is_distortion = False
is_erasing = False
'''
设置参数范围
'''
rotate_max_left_rotation = 60
rotate_max_right_rotation = 60
zoom_min_factor = 0.5
zoom_max_factor = 2
crop_percentage_area=0.8
brightness_min_factor=0.7
brightness_max_factor=1.2
color_min_factor=0.0
color_max_factor=1.5
contrast_min_factor=0.7
contrast_max_factor=1.2
sheer_max_shear_left=15
sheer_max_shear_right=15
skew_tilt_magnitude = 1
skew_corner_magnitude = 0.5
distortion_grid_height=5
distortion_grid_width=16
distortion_magnitude=8
erasing_rectangle_area = 0.5
'''
步骤 2:向管道添加数据增强(执行概率+参数范围)操作
'''
process_probability = 1
if is_rotate:
p.rotate_without_crop(probability=process_probability, max_left_rotation=rotate_max_left_rotation, max_right_rotation=rotate_max_right_rotation)
if is_zoom:
p.zoom(probability=process_probability, min_factor=zoom_min_factor, max_factor=zoom_max_factor)
if is_crop:
p.crop_random(probability=process_probability, percentage_area=crop_percentage_area, randomise_percentage_area=True)
if is_flip:
p.flip_random(probability=process_probability)
if is_brightness:
p.random_brightness(probability=process_probability, min_factor=brightness_min_factor, max_factor=brightness_max_factor)
if is_color:
p.random_color(probability=process_probability, min_factor=color_min_factor, max_factor=color_max_factor)
if is_contrast:
p.random_contrast(probability=process_probability, min_factor=contrast_min_factor, max_factor=contrast_max_factor)
if is_sheer:
p.shear(probability=process_probability,max_shear_left=sheer_max_shear_left,max_shear_right=sheer_max_shear_right)
if is_skew:
p.skew_tilt(probability=process_probability, magnitude=skew_tilt_magnitude)
p.skew_corner(probability=process_probability, magnitude=skew_corner_magnitude)
if is_distortion:
p.random_distortion(probability=process_probability, grid_height=distortion_grid_height, grid_width=distortion_grid_width, magnitude=distortion_magnitude)
if is_erasing:
p.random_erasing(probability=process_probability, rectangle_area=erasing_rectangle_area)
'''
步骤 3:生成数据增强后的图像和标签mask
'''
p.sample(sample_num)
p.process()