如何使用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` 的函数,它将文件中的原始数据加载为字符串值。

更新于: 2021年2月19日

271 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告