在训练计算机视觉机器学习模型时,数据加载常常会成为性能瓶颈,导致在等待将数据加载到模型中时 GPU 或 TPU 资源的利用率不足。以 TFRecord 格式存储数据集是一个行之有效的方法,然而,创建 TFRecord 通常需要大量的复杂代码。
于是,谷歌近期开源了 TensorFlow Recorder(即 TFRecorder)项目,旨在简化 TFRecord 的创建流程。TFRecord 是一种二进制文件格式,处理数据相对高效,但要将其他数据转为 TFRecord 较为麻烦,通常需要编写一个数据管道来解析结构化数据,从存储中加载图像,然后再将结果序列化为 TFRecord 格式。而此次开源的 TFRecorder 能够直接从 Pandas dataframe 或 CSV 等格式写入 TFRecords,无需再编写复杂的代码。
使用 TFRecorder 创建 TFRecord 只需要几行代码,运行方式如下:
import pandas as pdimport tfrecorderdf = pd.read_csv ...) df.tensorflow.to_tfrecord output_dir="gs://my/bucket")
TFRecorder 期望写入的数据与 Google AutoML Vision 的格式相同,也就是类似 pandas dataframe 或 CSV 的格式,例如:
split | image_uri | label |
TRAIN | gs://my/bucket/image1.jpg | cat |
目前,TFRecorder 支持的数据格式还很有限,将来会进一步扩展,以支持使用任何格式的数据。
对于更庞大的数据集,TFRecorder 还提供了与 Google Cloud Dataflow 的连接性,扩展到 DataFlow 仅需要多几行代码配置。
关于 TFRecorder 的更多信息,可查看谷歌开源博客的介绍:https://opensource.googleblog.com/2020/08/introducing-tensorflow-recorder.html