Я хочу создать образцы последовательности изображений с помощью API tf.data. Но на данный момент, кажется, что нет простого способа объединить несколько изображений в один образец. Я попытался использовать функцию dataset.window, которая правильно группирует мои изображения. Но я не знаю, как их объединить.
import tensorflow as tf
from glob import glob
IMG_WIDTH = 256
IMG_HEIGHT = 256
def load_and_process_image(path):
img = tf.io.read_file(path)
img = tf.image.decode_jpeg(img, channels=3)
img = tf.image.resize(img, [IMG_WIDTH, IMG_HEIGHT])
img = tf.reshape(img, shape=(IMG_WIDTH, IMG_HEIGHT, 1, 3))
return img
def create_dataset(files, time_distance=8, frame_step=1):
dataset = tf.data.Dataset.from_tensor_slices(files)
dataset = dataset.map(load_and_process_image)
dataset = dataset.window(time_distance, 1, frame_step, True)
# TODO: Concatenate elements from dataset.window
return dataset
files = sorted(glob('some/path/*.jpg'))
images = create_dataset(images)
Я знаю, что могу сохранить свои последовательности изображений как TFRecords, но это сделало бы мой конвейер данных гораздо более гибким и стоило бы тонны памяти.
Мои входные пакеты должны иметь форму N x W x H x T x C (N: количество выборок W: ширина изображения H: высота изображения T: длина последовательности изображений C: каналы изображения).