從目錄中的圖像文件生成tf.data.Dataset
。
用法
tf.keras.utils.image_dataset_from_directory(
directory, labels='inferred', label_mode='int',
class_names=None, color_mode='rgb', batch_size=32, image_size=(256,
256), shuffle=True, seed=None, validation_split=None, subset=None,
interpolation='bilinear', follow_links=False,
crop_to_aspect_ratio=False, **kwargs
)
參數
-
directory
數據所在的目錄。如果labels
是"inferred",它應該包含子目錄,每個子目錄都包含一個類的圖像。否則,目錄結構將被忽略。 -
labels
"inferred"(從目錄結構生成標簽)、None(無標簽)或與目錄中找到的圖像文件數量相同大小的整數標簽列表/元組。標簽應根據圖像文件路徑的字母數字順序排序(通過 Python 中的os.walk(directory)
獲得)。 -
label_mode
- 'int':means that the labels are encoded as integers (e.g. for `sparse_categorical_crossentropy` loss).
- 'categorical' 表示標簽被編碼為分類向量(例如,對於
categorical_crossentropy
損失)。 - 'binary' 表示標簽(隻能有 2 個)被編碼為值為 0 或 1 的
float32
標量(例如,對於binary_crossentropy
)。 - 無(無標簽)。
- 'categorical' 表示標簽被編碼為分類向量(例如,對於
-
class_names
僅當 "labels" 為 "inferred" 時才有效。這是類名的顯式列表(必須與子目錄的名稱匹配)。用於控製類的順序(否則使用字母數字順序)。 -
color_mode
"grayscale"、"rgb"、"rgba" 之一。默認值:"rgb"。圖像是否將轉換為具有 1、3 或 4 個通道。 -
batch_size
數據批次的大小。默認值:32。如果None
,數據將不會被批處理(數據集將產生單個樣本)。 -
image_size
從磁盤讀取圖像後調整圖像大小的大小。默認為(256, 256)
。由於管道處理必須具有相同大小的批量圖像,因此必須提供這一點。 -
shuffle
是否打亂數據。默認值:真。如果設置為 False,則按字母數字順序對數據進行排序。 -
seed
用於洗牌和轉換的可選隨機種子。 -
validation_split
0 到 1 之間的可選浮點數,保留用於驗證的數據的一部分。 -
subset
"training" 或 "validation" 之一。僅在設置validation_split
時使用。 -
interpolation
字符串,調整圖像大小時使用的插值方法。默認為bilinear
。支持bilinear
,nearest
,bicubic
,area
,lanczos3
,lanczos5
,gaussian
,mitchellcubic
。 -
follow_links
是否訪問符號鏈接指向的子目錄。默認為假。 -
crop_to_aspect_ratio
如果為 True,則調整圖像大小而不會出現縱橫比失真。當原始縱橫比與目標縱橫比不同時,將裁剪輸出圖像以返回與目標縱橫比匹配的圖像(大小為image_size
)中最大的可能窗口。默認情況下(crop_to_aspect_ratio=False
),可能不會保留縱橫比。 -
**kwargs
舊版關鍵字參數。
返回
-
A tf.data.Dataset對象。
- 如果
label_mode
為 None,它會產生形狀為(batch_size, image_size[0], image_size[1], num_channels)
的float32
張量,對圖像進行編碼(有關num_channels
的規則,請參見下文)。 - 否則,它會產生一個元組
(images, labels)
,其中images
具有形狀(batch_size, image_size[0], image_size[1], num_channels)
,並且labels
遵循下麵說明的格式。
- 如果
如果你的目錄結構是:
main_directory/
...class_a/
......a_image_1.jpg
......a_image_2.jpg
...class_b/
......b_image_1.jpg
......b_image_2.jpg
然後調用 image_dataset_from_directory(main_directory, labels='inferred')
將返回一個 tf.data.Dataset
,它會從子目錄 class_a
和 class_b
中生成批量圖像,以及標簽 0 和 1(0 對應於 class_a
,1 對應於 class_b
)。
支持的圖片格式:jpeg、png、bmp、gif。動畫 gif 被截斷到第一幀。
關於標簽格式的規則:
- 如果
label_mode
是int
,則標簽是形狀為(batch_size,)
的int32
張量。 - 如果
label_mode
是binary
,則標簽是形狀為(batch_size, 1)
的 1 和 0 的float32
張量。 - 如果
label_mode
是categorial
,則標簽是形狀為(batch_size, num_classes)
的float32
張量,表示類索引的 one-hot 編碼。
關於生成圖像中通道數的規則:
- 如果
color_mode
是grayscale
,則圖像張量中有 1 個通道。 - 如果
color_mode
是rgb
,則圖像張量中有 3 個通道。 - 如果
color_mode
是rgba
,則圖像張量中有 4 個通道。
相關用法
- Python tf.keras.utils.img_to_array用法及代碼示例
- Python tf.keras.utils.custom_object_scope用法及代碼示例
- Python tf.keras.utils.deserialize_keras_object用法及代碼示例
- Python tf.keras.utils.array_to_img用法及代碼示例
- Python tf.keras.utils.get_file用法及代碼示例
- Python tf.keras.utils.experimental.DatasetCreator用法及代碼示例
- Python tf.keras.utils.set_random_seed用法及代碼示例
- Python tf.keras.utils.timeseries_dataset_from_array用法及代碼示例
- Python tf.keras.utils.plot_model用法及代碼示例
- Python tf.keras.utils.get_custom_objects用法及代碼示例
- Python tf.keras.utils.pack_x_y_sample_weight用法及代碼示例
- Python tf.keras.utils.get_registered_object用法及代碼示例
- Python tf.keras.utils.SidecarEvaluator用法及代碼示例
- Python tf.keras.utils.to_categorical用法及代碼示例
- Python tf.keras.utils.load_img用法及代碼示例
- Python tf.keras.utils.text_dataset_from_directory用法及代碼示例
- Python tf.keras.utils.SequenceEnqueuer用法及代碼示例
- Python tf.keras.utils.unpack_x_y_sample_weight用法及代碼示例
- Python tf.keras.applications.inception_resnet_v2.preprocess_input用法及代碼示例
- Python tf.keras.metrics.Mean.merge_state用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.utils.image_dataset_from_directory。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。