如何使用TensorFlow和文件路径创建花卉数据集的图像-标签对?
创建图像-标签对的方法是:首先将文件路径转换为路径组件列表。然后,将倒数第二个值添加到目录中。然后,将标签编码为整数格式。压缩后的字符串被转换为张量,然后被重塑为所需的大小。
阅读更多: 什么是 TensorFlow 以及 Keras 如何与 TensorFlow 协同工作来创建神经网络?
我们将使用花卉数据集,其中包含数千张花的图像。它包含 5 个子目录,每个类别都有一个子目录。
我们使用 Google Colaboratory 来运行以下代码。Google Colab 或 Colaboratory 帮助在浏览器上运行 Python 代码,无需任何配置,并可免费访问 GPU(图形处理器)。Colaboratory 基于 Jupyter Notebook 构建。
print("Function to convert file path to (image,label) pair") print("First, path is converted to list of path components") print("Then, the second to last value is added to class directory") print("The label is integer encoded") def get_label(file_path): parts = tf.strings.split(file_path, os.path.sep) one_hot = parts[-2] == class_names return tf.argmax(one_hot) print("The compressed string is converted to a 3 dimensional int tensor") print("The image is resized to the required size") def decode_img(img): img = tf.image.decode_jpeg(img, channels=3) return tf.image.resize(img, [img_height, img_width]) print("The raw data is loaded from the file as a string value") def process_path(file_path): label = get_label(file_path) img = tf.io.read_file(file_path) img = decode_img(img) return img, label
代码来源:https://tensorflowcn.cn/tutorials/load_data/images
输出
Function to convert file path to (image,label) pair First, path is converted to list of path components Then, the second to last value is added to class directory The label is integer encoded The compressed string is converted to a 3 dimensional int tensor The image is resized to the required size The raw data is loaded from the file as a string value
解释
- 定义了一个名为 `get_label` 的函数,它将文件路径转换为图像-标签对。
- 文件路径被转换为路径组件列表。
- 将倒数第二个值添加到类别目录中。
- 接下来,标签被编码为整数。
- 另一个名为 `decode_img` 的函数用于调整图像大小并返回它。
- 首先将压缩后的字符串转换为三维整数张量,然后调整大小。
- 定义了另一个名为 `process_path` 的函数,它将文件中的原始数据加载为字符串值。
广告