我想向ImageDataGenerator Keras类添加高斯噪声和椒盐噪声作为数据增强策略。我认为默认情况下不包含这些内容。因此,我在MyDataGenerator对象中添加了以下内容:
import numpy as np
from tensorflow import keras
from skimage.util import random_noise
class MyDataGenerator(keras.preprocessing.image.ImageDataGenerator):
def __init__(self, img_files, mask_files, patch_dim, batch_size,
n_channels, shuffle=True, previous_info = 0,
noise_level_g = 0.1, noise_level_sp = 0.2):
self.img_files = img_files
self.mask_files = mask_files
self.noise_level_g = noise_level_g
self.noise_level_sp = noise_level_sp
def AugGaussian(self, img):
mu = 0; std = 1;
noise_layer = np.random.normal(mu, std, img.shape)
return img + self.noise_level_g*noise_layer
def AugSaltnPepper(self, img):
img_noise = random_noise(img, 's&p', self.noise_level_sp)
return img_noise
Ps:我有一种特殊的方法来加载文件和蒙版,并将它们放入4D张量(图像,宽度,长度,通道)。
1。那行得通吗?如果是,我怎么称呼它?例如:
MyDataGenerator(
# Standard ones:
rotation_range=15,
width_shift_range=0.2,
height_shift_range=0.2,
# New ones:
noise_level_g = 0.3
noise_level_sp = 0.3)
2。我认为对于其他增强方法,我需要播种并将其应用于我的蒙版(https://keras.io/api/preprocessing/image/;“将图像和蒙版一起转换的示例。”)。因为不需要将增噪方法应用于蒙版(噪声不会更改体素位置),在这里如何控制呢?
3。有没有更好的方法?
谢谢!