如何在Keras ImageDataGenerator中添加和使用新的数据增强方法?

如何在Keras ImageDataGenerator中添加和使用新的数据增强方法?,keras,noise,data-augmentation,Keras,Noise,Data Augmentation,我想在ImageDataGenerator Keras类中添加高斯噪声和椒盐噪声作为数据增强策略。我相信默认情况下,它没有包含这些内容。因此,我在MyDataGenerator对象中添加了以下内容: import numpy as np from tensorflow import keras from skimage.util import random_noise class MyDataGenerator(keras.preprocessing.image.ImageDataGenera

我想在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.我认为对于其他增强方法,我需要将它们植入并应用于我的遮罩(“将图像和遮罩转换在一起的示例”)。既然我不需要将噪声增强方法应用于遮罩(噪声不会改变体素位置),那么在这里如何控制呢

3.有没有更好的方法

谢谢大家!