我正在尝试创建一个用于训练目的的标签数据集。在这个数据集中,我想用一个描述点位置的特定数字来标记视频帧。
由于视频总长度约为1小时,每秒25帧(fps),因此总帧数超过100,000,仅创建数据集就需要一天多的时间。
我使用tf.keras.image_dataset_from_directory创建数据集,方法是直接阅读文件,然后通过我创建的 *numpy数组 * 为其分配一个标签。我想问一下,是否有更快的方法来创建数据集或以并行方式合并tf.data. dataset。
下面是我的代码。(我使用Jupyter笔记本上的VSCode和Python 3.9.7和tf.版本=2.0):
import numpy as np
import tensorflow as tf
def print_dataset(data_set:tf.data.Dataset):
iterator = data_set.as_numpy_iterator()
# create a numpy array labelled
images = np.empty((0, 108, 192, 1))
labels = np.empty((0))
for element in iterator:
images = np.append(images, element[0], axis=0)
labels = np.append(labels, element[1], axis=0)
print(np.shape(images))
print(np.shape(labels))
plt.imshow(images[0])
print(labels[0])
return images, labels
# creating the frame dataset from directory
image = tf.keras.utils.image_dataset_from_directory(
'frames', labels=labels, label_mode='int', image_size=(108,192), color_mode='grayscale',
batch_size=1) # frames directory contains the frames used for training.
print(image)
plt.show(image)
#generating the labelled dataset and getting the img as well as labels
img, labels= print_dataset(image)
)
1条答案
按热度按时间6ie5vjzr1#
有两种方法可以实现这一点,第一种方法是通过生成器实现,但该过程成本较高,还有另一种方法称为使用tf.data进行更精细的控制。您可以在此链接查看此方法
https://www.tensorflow.org/tutorials/load_data/images
但是,我将向您展示一个简短的演示,说明如何更快地加载图像......所以,让我们开始......
我只上两门“猫”和“狗”的课。你可以上两门以上的课...
输出:
COLAB文件的链接为:
https://colab.research.google.com/drive/1oUNuGVDWDLqwt_YQ80X-CBRL6kJ_YhUX?usp=sharing