pytorch 图像语义分割任务、成对图片、图片标签同步同时数据增强并设置成统一尺寸

前言

项目中需要对成对图片进行数据增强,尝试了下torchvision的transformer无法实现,语义分割任务在进行某些数据增强时,需要对数据和标签图片进行同步操作,如旋转、剪裁、翻转等。查阅资料发现Augmentor正好可以。

以下代码中对数据增强后,将输出图片统一尺寸,并重新命名方便后续训练

代码

# 导入数据增强工具
import Augmentor
import glob
from PIL import Image

# 确定原始图像存储路径以及掩码文件存储路径
p = Augmentor.Pipeline("./img/lr")
p.ground_truth("./img/hr")

# 图像旋转: 按照概率0.8执行,最大左旋角度10,最大右旋角度10
p.rotate(probability=0.8, max_left_rotation=25, max_right_rotation=25)

# 随机翻转
p.flip_random(probability=0.8)
# 图像左右互换: 按照概率0.5执行
p.flip_left_right(probability=0.5)
# 上下翻转
p.flip_top_bottom(probability=0.5)

# 图像放大缩小: 按照概率0.8执行,面积为原始图0.85倍
p.zoom_random(probability=0.3, percentage_area=0.85)
# percentage_area表示裁剪面积占原图像面积的比例,centre指定是否从图片中间裁剪,randomise_percentage_area指定是否随机生成裁剪面积比
p.crop_random(probability=0.3, percentage_area=0.8, randomise_percentage_area=True)

# 最终扩充的数据样本数
p.sample(1000)


# 所有图片改成统一尺寸
images = (glob.glob("img/lr/output/*"))

for i, path in enumerate(images):
    img = images[i]
    img = Image.open(img)
    img = img.resize((256, 256))

    # 文件名
    file = path.split('_')[-1].split('.')[0]
    if '_groundtruth_' in path:
        file += '_hr'
    else:
        file += '_lr'
    # 保存PIL图像
    img.save("data/deep1/%s.tif" % file)