Увеличение Keras в реальном времени с добавлением SaltandPepper и Gaussian Noise - PullRequest
0 голосов
/ 28 апреля 2020

У меня проблемы с пользовательским изменением ImageDataGenerator Keras таким образом, чтобы я мог выполнить, скажем, SaltAndPepper Noise и Gaussian Blur (которые они не предлагают). Я знаю, что этот тип вопросов задавался много раз прежде, и я прочитал почти каждую возможную ссылку ниже:

Но из-за моей неспособности понять полный исходный код или его отсутствия python знаний; Я изо всех сил пытаюсь реализовать эти два дополнительных типа дополнения в ImageDataGenerator как пользовательский. Я очень sh кто-то мог бы указать мне в правильном направлении, как изменить исходный код, или любым другим способом.

Использовать генератор для Keras model.fit_generator

Пользовательский генератор данных Keras с выходом

Увеличение в реальном времени с добавлением шумов и контрастов

Увеличение данных Генератор данных изображения Keras Семанти c Сегментация

https://stanford.edu/~shervine/blog/keras-how-to-generate-data-on-the-fly

https://github.com/keras-team/keras/issues/3338

https://towardsdatascience.com/image-augmentation-14a0aafd0498

https://towardsdatascience.com/image-augmentation-for-deep-learning-using-keras-and-histogram-equalization-9329f6ae5085

Пример шума SaltAndPepper выглядит следующим образом, и я sh добавлю дополнительные типы дополнений в ImageDataGenerator:

class SaltAndPepperNoise:
    def __init__(self, replace_probs=0.1, pepper=0, salt=255, noise_type="RGB"):
        """
        It is important to know that the replace_probs here is the
        Probability of replacing a "pixel" to salt and pepper noise.
        """

        self.replace_probs = replace_probs
        self.pepper = pepper
        self.salt = salt
        self.noise_type = noise_type


    def get_aug(self, img, bboxes):
        if self.noise_type == "SnP":
            random_matrix = np.random.rand(img.shape[0], img.shape[1])
            img[random_matrix >= (1 - self.replace_probs)] = self.salt
            img[random_matrix <= self.replace_probs] = self.pepper
        elif self.noise_type == "RGB":
            random_matrix = np.random.rand(img.shape[0], img.shape[1], img.shape[2])
            img[random_matrix >= (1 - self.replace_probs)] = self.salt
            img[random_matrix <= self.replace_probs] = self.pepper
        return img, bboxes
...