在 Python 中将图像序列转换为 4D 张量/.npy

Convert image sequences to 4D tensor/ .npy in Python

我有一系列描述单个模拟的 2D 图像(它如何在每个时间步长中传播)。比方说我有 1000 组模拟,每组包含 10 个时间帧的图像。这不是监督学习问题,因为没有 class 标签。该模型必须学习如何随着时间的推移进行模拟。 (我为每个模拟都有一个单独的文件夹,每个文件夹包含 10 个时间帧图像)。

任何人都可以帮助我以 [no_frames_in_each_sample、total_samples、image_height、image_width 的形式创建合适的 4D 张量/.npy)(在我们的示例中,这将是 [10, 1000, 64, 64].

稍后我可以使用它来将其拆分为训练和验证。

如有任何帮助,我们将不胜感激!谢谢。

将图像转换为 4 维数组的示例代码

import tarfile
my_tar = tarfile.open('images.tar.gz')
my_tar.extractall() # specify which folder to extract to
my_tar.close()

import pathlib
data_dir = pathlib.Path('/content/images/')

import tensorflow as tf
batch_size = 32
img_height = 224
img_width = 224

train_ds = tf.keras.preprocessing.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset="training",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)

class_names = train_ds.class_names

val_ds = tf.keras.preprocessing.image_dataset_from_directory(
  data_dir,
  validation_split=0.2,
  subset="validation",
  seed=123,
  image_size=(img_height, img_width),
  batch_size=batch_size)

val_batches = tf.data.experimental.cardinality(val_ds)
test_dataset = val_ds.take(val_batches // 5)

输出

Found 8 files belonging to 2 classes.
Using 7 files for training.
Found 8 files belonging to 2 classes.
Using 1 files for validation.

for image_batch, labels_batch in train_ds:
  print(image_batch.shape)
  print(labels_batch.shape)

输出

(7, 224, 224, 3)
(7,)