簡體   English   中英

使用flow_from_directory()使用keras(TensforFlow后端)進行語義圖像分割的輸入管道(3個標簽)

[英]Input pipeline for semantic image segmentation (3 labels) with keras (TensforFlow backend) using flow_from_directory()

我正在使用keras(TensorFlow后端),並且試圖了解如何使用flow_from_directory引入用於圖像分割的標簽/遮罩(3個標簽)。

train_images的尺寸為(144、144、144)-灰度,uint8。 相應的label_images具有相同的尺寸,但此處的值1表示標簽1,值2 =標簽2,值3 =標簽3,值0顯示未標簽的像素。

由於這是語義分割,因此對圖像中的每個像素進行分類需要使用逐像素交叉熵損失函數。 正如我在某些帖子中所讀到的那樣,keras(或TensorFlow)要求我的label_image / mask是一個熱門代碼。 因此,我希望我的label_images是具有3個通道的圖像,其中每個像素將由一個二進制矢量組成。 示例:[0,1,0]。

如何處理存儲為0的未標記像素? 是否應該將它們編碼為[0,0,0]?

但是,我在哪里找不到答案的問題是:如何正確整形/熱編碼label_images? keras中有一個方便的函數可以讓我轉換image_labels嗎?

from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale=1. / 255)
label_datagen = ImageDataGenerator(rescale=1. / 255)

train_image_generator = train_datagen.flow_from_directory(
    directory='/train_images',
    target_size=(144, 144, 144),
    color_mode='grayscale',
    classes=None,
    class_mode=None,
    batch_size=4)

train_label_generator = label_datagen.flow_from_directory(
    directory='/label_images',
    target_size=(144, 144, 144),
    color_mode='grayscale',
    classes=None,
    class_mode=None,
    batch_size=4)

train_generator = zip(train_image_generator, train_label_generator)

目前正在從事非常相似的工作,但有10個課程。 尚不完全存在,但是對於您關於keras內置函數的問題,請結帳:

one_hot_array = keras.utils.to_categorical(array_of_label_data, nb_classes)

這將創建您的遮罩/標簽數據的一站式矢量。 因此,對於您的情況,假設100個蒙版的預期輸出為(100,H,W,3),其中3等於您正在使用的類的數量。 我不確定的是您的蒙版是否有背景,以及如何為數據構建文件夾。 希望能有所幫助。

同樣,您的target_size處於關閉狀態,這是指圖像的尺寸(例如,高度和寬度)。 不應有第三個值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM