繁体   English   中英

如何使用 tf.data 创建图像序列样本?

[英]How do I create image sequence samples using tf.data?

我想使用 tf.data API 创建图像序列样本。 但截至目前,似乎没有简单的方法可以连接多个图像以形成单个样本。 我尝试使用 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:图像通道)。

您可以使用批处理来创建大小为 N 的批次。

iterations = # 
batched_dataset = dataset.batch(N) 
for batch in batched_dataset.take(iterations):
    # process your batch

这里的iterations数是您要生成的批次数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM