относительно помещения нескольких исправлений для одного изображения в один мини-пакет

Что касается обучения с использованием патчей для классификации или сегментации изображений, мне нужно поместить несколько патчей, соответствующих одному изображению, в один мини-пакет во время процесса обучения. Как это сделать в Керасе? Или как я могу гарантировать, что несколько тренировочных патчей в одном мини-пакете принадлежат одному и тому же тренировочному образу?


person user785099    schedule 11.03.2017    source источник


Ответы (1)


Я предлагаю вам реализовать свой собственный генератор для этого. Это не должно быть сложным. Ваш код будет примерно таким

class PatchGenerator():
    def __init__(self, batch_size, X, y):
        self.batch_size = batch_size
        # self.X is a list of input images
        self.X = X
        # self.y is a list of target classes
        self.y = y
        self.index = 0

    def __iter__(self):
        return self

    def next(self):
        # Get next image
        image = self.X[self.index]
        target = self.Y[self.target]
        self.index += 1
        if self.index > len(self.X):
            self.index = 0

        batch = []
        for i in range(self.batch_size):
            # Generate a new random patch for the image
            patch = get_random_patch(image) # Implement this yourself
            batch.append((patch, target))
        return np.array(batch)

# Create the new generator
patch_generator = PathGenerator(32, X, y)

# Fit your model with the generator
model.fit_generator(patch_generator, samples_per_epoch=len(X))

Приведенный выше класс PatchGenerator гарантирует, что каждый пакет будет содержать только патчи из одного и того же входного изображения. Надеюсь, это даст вам представление о том, как вы можете это реализовать.

Взгляните на исходный код keras.preprocessing для различных функций, которые вы можете использовать для создания исправлений (https://github.com/fchollet/keras/blob/master/keras/preprocessing/image.py).

Кроме того, прочитайте это, если вам нужно узнать больше о генераторах Python https://wiki.python.org/moin/Generators.

person oscfri    schedule 11.03.2017