2017-03-11 11 views
1

画像分類やセグメンテーションのパッチワイズトレーニングに関しては、トレーニングプロセス中に1つの画像に対応する複数のパッチを1つのミニバッチに入れる必要があります。どのようにKerasでそれを行うには?または、1つのミニバッチ内の複数のトレーニングパッチが同じトレーニングイメージに属していることを確認するにはどうすればよいですか?1つの画像の複数のパッチを1つのミニバッチにまとめることについて

答えて

0

私はこのために独自のジェネレータを実装することをお勧めします。これは複雑である必要はありません。あなたのコードは、上記PatchGeneratorクラスは、各バッチは、同じ入力画像からパッチが含まれていることを確認します。この

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)) 

のようなものになります。うまくいけば、あなたはこれをどのように実装できるのかを知ることができます。

パッチを生成するために使用できるさまざまな機能()については、ソースコードkeras.preprocessingを参照してください。

さらに、Pythonジェネレータの詳細については、https://wiki.python.org/moin/Generatorsを参照してください。

関連する問題