當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python tf.keras.utils.image_dataset_from_directory用法及代碼示例


從目錄中的圖像文件生成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 )。
    • 無(無標簽)。
  • 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_aclass_b 中生成批量圖像,以及標簽 0 和 1(0 對應於 class_a,1 對應於 class_b)。

支持的圖片格式:jpeg、png、bmp、gif。動畫 gif 被截斷到第一幀。

關於標簽格式的規則:

  • 如果 label_modeint ,則標簽是形狀為 (batch_size,)int32 張量。
  • 如果 label_modebinary ,則標簽是形狀為 (batch_size, 1) 的 1 和 0 的 float32 張量。
  • 如果 label_modecategorial ,則標簽是形狀為 (batch_size, num_classes)float32 張量,表示類索引的 one-hot 編碼。

關於生成圖像中通道數的規則:

  • 如果 color_modegrayscale ,則圖像張量中有 1 個通道。
  • 如果 color_modergb ,則圖像張量中有 3 個通道。
  • 如果 color_modergba ,則圖像張量中有 4 個通道。

相關用法


注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.utils.image_dataset_from_directory。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。