С помощью h5py вы можете напрямую сохранять изображения и метки в файл hdf5 (без использования pandas). Вот один пример, как это сделать (адаптация от здесь ):
import os
import glob
import cv2
import h5py
import numpy as np
def images_to_hdf5(images_path='/path/to/images',
label=0,
hdf5_path='/path/to/hdf5_file/file.hdf5'):
image_names = glob.glob(os.path.join(images_path, '*.jpg'))
n = len(image_names)
labels = [label]*n
hdf5_file = h5py.File(hdf5_path, mode='w')
hdf5_file.create_dataset("Images", (n, 3, 224, 224), np.int8)
hdf5_file.create_dataset("Labels", (n,), np.int8)
hdf5_file["Labels"][...] = labels
for i, image_name in enumerate(image_names):
img = cv2.imread(image_name)
img = cv2.resize(img, (224, 224)) # shape (224, 224, 3)
img = np.rollaxis(img, 2)[None] # shape (1, 3, 224, 224)
hdf5_file["Images"][i, ...] = img
hdf5_file.close()
Чтобы открыть его:
hdf5_file = h5py.File(hdf5_path, "r")
Для доступа, например, к первому изображению и метке:
hdf5_file["Images"][0]
hdf5_file["Labels"][0]
#hdf5_file.close()