zl程序教程

您现在的位置是:首页 >  工具

当前栏目

深度学习14 基于ImageDataGenerator的语义分割数据扩充

学习数据 基于 深度 14 分割 语义 扩充
2023-09-14 09:15:04 时间

各种参数设置下的扩充效果可见:https://blog.csdn.net/a486259/article/details/120225202

扩充后的某些数据必然是不符合原先的语义标签的,扩充后应该人工对数据进行筛选 

from PIL import Image
import numpy as np
from keras.preprocessing import image
import os
# 生成图片地址和对应标签
file_dir1 = r"语义分割\img"
save_path1="数据-kc\img"
file_dir2 = r"语义分割\label"
save_path2="数据-kc\label"
if not os.path.exists(save_path1):
    os.makedirs(save_path1)
if not os.path.exists(save_path2):
    os.makedirs(save_path2)
shape=(200,200)
seed = 1
# 设置生成器参数
datagen = image.ImageDataGenerator(
                    fill_mode='nearest',   #操作导致图像缺失时填充方式。constant,nearest,eflect,wrap
                                       rotation_range=90	,  # 指定旋转角度范围
                                       zca_whitening=True,#图像白噪音
                                       brightness_range=[0.3,1.5],#添加随机光照
                                       width_shift_range=0.2,  # 水平位置平移
                                       height_shift_range=0.2,  # 上下位置平移
                                       zoom_range=[0.9,1],
                                       horizontal_flip=True,   # 随机对图片执行水平翻转操作
                                       vertical_flip=True,  # 对图片执行上下翻转操作
                                       shear_range=20,
                                       rescale=1./255,  # 缩放
                                       data_format='channels_last')
gen1=datagen.flow_from_directory(file_dir1,
                               target_size=shape,
                               batch_size=15,
                               save_to_dir=save_path1,
                               save_prefix='xx',
                               seed=seed,
                               save_format='jpg')
gen2=datagen.flow_from_directory(file_dir2,
                               target_size=shape,
                               batch_size=15,
                               save_to_dir=save_path2,
                               save_prefix='xx',
                               seed=seed,
                               save_format='jpg')
import math
step=math.ceil(len(gen1.classes)/gen1.batch_size)
#把数据扩充50倍
for i in range(50*step):
    gen1.next()
    gen2.next()