Ошибка неверного аргумента при попытке добавить шум к изображению с помощью функции предварительной обработки Keras - PullRequest
1 голос
/ 17 апреля 2019

Для выполнения предварительной обработки изображений я пытался использовать класс ImageDataGenerator от Keras. Вот как это использовалось:

    data_generator = keras.preprocessing.image.ImageDataGenerator(
        rotation_range = 60,
        width_shift_range = 0.1,
        height_shift_range = 0.1,
        brightness_range = [0.5, 1.5],
        shear_range = 0.01,
        zoom_range = [0, 1],
        horizontal_flip = True,
        vertical_flip = True,
        preprocessing_function = preprocess_other
   )

Атрибуту preprocessing_function была назначена функция с именем preprocess_other, как определено ниже:

    def preprocess_other(image):
        flip = np.random.random()
        if flip > 0.5:
            # Add noise
            blank_image = np.zeros(image.shape, np.uint8)
            cv2.randn(blank_image, 0, 5)
            noisy_image = cv2.add(image, blank_image)
            return noisy_image
        else:
            # Return the original image
            return image

Роль этой функции - добавить шум к изображению с вероятностью 0,5.

Когда я начинаю тренировочный процесс (тренировка CNN), он работает в течение нескольких секунд, но происходит сбой из-за некоторой ошибки с функцией preprocess_other с ошибкой, говорящей:

error: OpenCV(3.4.3) /io/opencv/modules/core/src/arithm.cpp:683:
error: (-5:Bad argument) When the input arrays in 
add/subtract/multiply/divide functions have different types,
the output array type must be explicitly specified in function 
'arithm_op'

Я отлаживал, но не мог понять причину этого. Я пытаюсь добавить шум неправильным способом? Как я могу исправить эту ошибку?

1 Ответ

1 голос
/ 17 апреля 2019

Проблема в том, что image и blank_image имеют разные типы.

Вы можете изменить:

blank_image = np.zeros(image.shape, np.uint8)

на:

blank_image = np.zeros(image.shape, image.dtype)

или на:

blank_image = np.zeros_like(image)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...