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