image_dataset_from_directory
函式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,
pad_to_aspect_ratio=False,
data_format=None,
verbose=True,
)
從目錄中的圖片檔案產生一個 tf.data.Dataset
。
如果您的目錄結構是
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
、.jpg
、.png
、.bmp
、.gif
。 動畫 GIF 會被截斷到第一幀。
參數
labels
為 "inferred"
,則它應包含子目錄,每個子目錄都包含一個類別的圖片。否則,目錄結構將被忽略。"inferred"
(標籤從目錄結構產生)、None
(無標籤),或是與目錄中找到的圖片檔案數量相同大小的整數標籤列表/元組。標籤應根據圖片檔案路徑的字母數字順序排序 (透過 Python 中的 os.walk(directory)
取得)。labels
編碼的字串。選項為:"int"
:表示標籤編碼為整數 (例如,用於 sparse_categorical_crossentropy
損失)。"categorical"
表示標籤編碼為類別向量 (例如,用於 categorical_crossentropy
損失)。"binary"
表示標籤 (只能有 2 個) 編碼為值為 0 或 1 的 float32
純量 (例如,用於 binary_crossentropy
)。None
(無標籤)。labels
為 "inferred"
時有效。這是類別名稱的明確列表 (必須與子目錄名稱相符)。用於控制類別的順序 (否則使用字母數字順序)。"grayscale"
、"rgb"
、"rgba"
其中之一。圖片是否將轉換為具有 1、3 或 4 個通道。預設為 "rgb"
。None
,則資料不會分批 (資料集將產生個別的樣本)。(height, width)
。由於管線處理的圖片批次必須都具有相同的大小,因此必須提供此參數。預設為 (256, 256)
。True
。如果設定為 False
,則會按字母數字順序排序資料。"training"
、"validation"
或 "both"
其中之一。僅在設定 validation_split
時使用。當 subset="both"
時,該工具會回傳一個包含兩個資料集的元組 (分別為訓練和驗證資料集)。"bilinear"
、"nearest"
、"bicubic"
、"area"
、"lanczos3"
、"lanczos5"
、"gaussian"
、"mitchellcubic"
。預設為 "bilinear"
。False
。True
,則在不失真長寬比的情況下調整圖片大小。當原始長寬比與目標長寬比不同時,將裁剪輸出圖片,以便回傳圖片中符合目標長寬比的最大可能視窗 (大小為 image_size
)。預設情況下 (crop_to_aspect_ratio=False
),長寬比可能不會被保留。True
,則在不失真長寬比的情況下調整圖片大小。當原始長寬比與目標長寬比不同時,將填充輸出圖片,以便回傳圖片中符合目標長寬比的最大可能視窗 (大小為 image_size
)。預設情況下 (pad_to_aspect_ratio=False
),長寬比可能不會被保留。True
。回傳
一個 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
則遵循以下描述的格式。關於標籤格式的規則
label_mode
為 "int"
,則標籤是形狀為 (batch_size,)
的 int32
張量。label_mode
為 "binary"
,則標籤是形狀為 (batch_size, 1)
的 1 和 0 的 float32
張量。label_mode
為 "categorical"
,則標籤是形狀為 (batch_size, num_classes)
的 float32
張量,表示類別索引的 one-hot 編碼。關於產生的圖片中通道數量的規則
color_mode
為 "grayscale"
,則圖片張量中有 1 個通道。color_mode
為 "rgb"
,則圖片張量中有 3 個通道。color_mode
為 "rgba"
,則圖片張量中有 4 個通道。load_img
函式keras.utils.load_img(
path,
color_mode="rgb",
target_size=None,
interpolation="nearest",
keep_aspect_ratio=False,
)
將圖片載入為 PIL 格式。
範例
image = keras.utils.load_img(image_path)
input_arr = keras.utils.img_to_array(image)
input_arr = np.array([input_arr]) # Convert single image to a batch.
predictions = model.predict(input_arr)
參數
"grayscale"
、"rgb"
、"rgba"
其中之一。預設值:"rgb"
。所需的圖片格式。None
(預設為原始大小) 或整數元組 (img_height, img_width)
。"nearest"
、"bilinear"
和 "bicubic"
。如果安裝了 PIL 1.1.3 或更新版本,也支援 "lanczos"
。如果安裝了 PIL 3.4.0 或更新版本,也支援 "box"
和 "hamming"
。預設情況下,使用 "nearest"
。回傳
一個 PIL 圖片實例。
img_to_array
函式keras.utils.img_to_array(img, data_format=None, dtype=None)
將 PIL 圖片實例轉換為 NumPy 陣列。
範例
from PIL import Image
img_data = np.random.random(size=(100, 100, 3))
img = keras.utils.array_to_img(img_data)
array = keras.utils.image.img_to_array(img)
參數
"channels_first"
或 "channels_last"
。預設為 None
,在這種情況下,使用全域設定 keras.backend.image_data_format()
(除非您已更改它,否則它預設為 "channels_last"
)。None
表示使用全域設定 keras.backend.floatx()
(除非您已更改它,否則它預設為 "float32"
)。回傳
一個 3D NumPy 陣列。
save_img
函式keras.utils.save_img(
path, x, data_format=None, file_format=None, scale=True, **kwargs
)
將儲存為 NumPy 陣列的圖片儲存到路徑或檔案物件。
參數
"channels_first"
或 "channels_last"
其中之一。[0, 255]
範圍內。PIL.Image.save()
的額外關鍵字參數。array_to_img
函式keras.utils.array_to_img(x, data_format=None, scale=True, dtype=None)
將 3D NumPy 陣列轉換為 PIL 圖片實例。
範例
from PIL import Image
img = np.random.random(size=(100, 100, 3))
pil_img = keras.utils.array_to_img(img)
參數
"channels_first"
或 "channels_last"
。預設為 None
,在這種情況下,使用全域設定 keras.backend.image_data_format()
(除非您已更改它,否則它預設為 "channels_last"
)。True
。None
表示使用全域設定 keras.backend.floatx()
(除非您已更改它,否則它預設為 "float32"
)。預設為 None
。回傳
一個 PIL 圖片實例。