2017-08-04 17 views
1

Kerasドキュメントのサンプルコードの変更を使用しようとしましたが、画像マスクが代わりに使用されている場合にimage_datagen.flow_from_directory()を設定する方法を示しています。ラベル(各ピクセルのクラスを予測する画像のセグメンテーション用)セマンティックセグメンテーションのKeras、flow_from_directory()エラー

ところで、私はfeaturewise_center = Trueを、各画像のカラーチャンネルからすべてのトレーニング画像の各カラーチャンネルの平均を差し引くように設定しました。そのため、トレーニングセット全体にわたって、各カラーチャンネル平均は0になります私はこれがこれを達成する方法ではないと思います。

とにかく、ここでエラーが発生した私のコードがあります:何らかの理由で

Found 0 images belonging to 0 classes. 
Found 0 images belonging to 0 classes. 
Traceback (most recent call last): 
    File "FCN_VGG16.py", line 178, in <module> 
    train_generator = zip(image_generator, mask_generator) 
    File "/home/icg/rafa/local/lib/python2.7/site-packages/keras/preprocessing/image.py", line 1026, in next 
    index_array, current_index, current_batch_size = next(self.index_generator) 
    File "/home/icg/rafa/local/lib/python2.7/site-packages/keras/preprocessing/image.py", line 720, in _flow_index 
    current_index = (self.batch_index * batch_size) % n 
ZeroDivisionError: integer division or modulo by zero 

のn = 0これが起こる理由を任意のアイデア:

image_datagen = ImageDataGenerator(featurewise_center = True) 
mask_datagen = ImageDataGenerator() 

image_generator = image_datagen.flow_from_directory(
    '/home/icg/Martin/train_data_graz/images_rect_r640x360', 
    class_mode = None, 
    batch_size = 1, 
    seed = 123) 

mask_generator = mask_datagen.flow_from_directory(
    '/home/icg/Martin/train_data_graz/labels_rect_r640x360', 
    class_mode = None, 
    batch_size = 1, 
    seed = 123) 

# combine generators into one which yields image and masks 
train_generator = zip(image_generator, mask_generator) 

model.fit_generator(
    train_generator, 
    steps_per_epoch = 1000, 
    epochs = 100) 

そして、ここでは、エラーメッセージがですか?

答えて

1

あなたはflow_from_directory()機能のディレクトリに各クラスごとサブフォルダにあなたのイメージを配置する必要があります。あなたのケースでは

/home/icg/Martin/train_data_graz/images_rect_r640x360/images_class01 
/home/icg/Martin/train_data_graz/images_rect_r640x360/images_class02 
… 

編集:

あなたは(コメント&ポストを参照してください)Noneからclass_modeを設定し、セマンティックセグメンテーションを行うしておりますので:

/home/icg/Martin/train_data_graz/images_rect_r640x360/all_images 
+2

私がいることを理解してプロセス、通常は分類を行う方法。しかし、セマンティックセグメンテーションでは、すべてがどのイメージでも発生する可能性がある多数のクラスがあります。だから、猫のためのフォルダと犬のためのフォルダがあるほど単純ではありません。各画素を1つまたは別のクラスに属するものとして分類する必要がある。これを行うには、ラベルの代わりにマスクを使用します。訓練セットの各画像に対して、各ピクセルが属するカテゴリを指定するマスクがあります。そのピクセルが車や猫の一部である場合、または分類しているカテゴリがあればそれです。 –

+3

私は参照してください。しかし、それでもなお、すべてのイメージを 'flow_from_directory'を指すディレクトリのサブディレクトリに置く必要があります。これは 'class_mode = None'にも当てはまります。あなたはそれを試しましたか? – petezurich

+1

ああ、そのトリックをしました。私は画像を含むフォルダへのパスではなく、画像そのものを含むフォルダにパスを入れました。ありがとう! :-) –

関連する問題