如何将 jpeg 图像目录转换为张量流中的 TFRecords 文件?

2023-12-29

我的训练数据是 jpeg 图像的目录和包含文件名和关联类别标签的相应文本文件。我正在尝试将此训练数据转换为 tfrecords 文件,如张量流文档中所述。我花了相当多的时间试图让它工作,但张量流中没有示例演示如何使用任何读取器读取 jpeg 文件并使用 tfrecordwriter 将它们添加到 tfrecord


我希望这有帮助:

filename_queue = tf.train.string_input_producer(['/Users/HANEL/Desktop/tf.png']) #  list of files to read

reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)

my_img = tf.image.decode_png(value) # use decode_png or decode_jpeg decoder based on your files.

init_op = tf.initialize_all_variables()
with tf.Session() as sess:
  sess.run(init_op)

# Start populating the filename queue.

coord = tf.train.Coordinator()
threads = tf.train.start_queue_runners(coord=coord)

for i in range(1): #length of your filename list
  image = my_img.eval() #here is your image Tensor :) 

print(image.shape)
Image.show(Image.fromarray(np.asarray(image)))

coord.request_stop()
coord.join(threads)

要将所有图像作为张量数组获取,请使用以下代码示例。

ImageFlow 的 Github 存储库 https://github.com/HamedMP/ImageFlow


Update:

在之前的回答中,我只是讲述了如何读取 TF 格式的图像,但没有将其保存在 TFRecords 中。为此,您应该使用:

def _int64_feature(value):
  return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))


def _bytes_feature(value):
  return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))

# images and labels array as input
def convert_to(images, labels, name):
  num_examples = labels.shape[0]
  if images.shape[0] != num_examples:
    raise ValueError("Images size %d does not match label size %d." %
                     (images.shape[0], num_examples))
  rows = images.shape[1]
  cols = images.shape[2]
  depth = images.shape[3]

  filename = os.path.join(FLAGS.directory, name + '.tfrecords')
  print('Writing', filename)
  writer = tf.python_io.TFRecordWriter(filename)
  for index in range(num_examples):
    image_raw = images[index].tostring()
    example = tf.train.Example(features=tf.train.Features(feature={
        'height': _int64_feature(rows),
        'width': _int64_feature(cols),
        'depth': _int64_feature(depth),
        'label': _int64_feature(int(labels[index])),
        'image_raw': _bytes_feature(image_raw)}))
    writer.write(example.SerializeToString())

更多信息here https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/how_tos/reading_data/convert_to_records.py

你可以这样读取数据:

# Remember to generate a file name queue of you 'train.TFRecord' file path
def read_and_decode(filename_queue):
  reader = tf.TFRecordReader()
  _, serialized_example = reader.read(filename_queue)
  features = tf.parse_single_example(
    serialized_example,
    dense_keys=['image_raw', 'label'],
    # Defaults are not specified since both keys are required.
    dense_types=[tf.string, tf.int64])

  # Convert from a scalar string tensor (whose single string has
  image = tf.decode_raw(features['image_raw'], tf.uint8)

  image = tf.reshape(image, [my_cifar.n_input])
  image.set_shape([my_cifar.n_input])

  # OPTIONAL: Could reshape into a 28x28 image and apply distortions
  # here.  Since we are not applying any distortions in this
  # example, and the next step expects the image to be flattened
  # into a vector, we don't bother.

  # Convert from [0, 255] -> [-0.5, 0.5] floats.
  image = tf.cast(image, tf.float32)
  image = tf.cast(image, tf.float32) * (1. / 255) - 0.5

  # Convert label from a scalar uint8 tensor to an int32 scalar.
  label = tf.cast(features['label'], tf.int32)

  return image, label
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 jpeg 图像目录转换为张量流中的 TFRecords 文件? 的相关文章

随机推荐

  • CSS - 如何将图像裁剪为正方形,如果它已经是正方形,则调整其大小

    假设我有一张图像250 width and 250 height我想将其裁剪为90x90 它将向我显示图像中的像素 但如果它是矩形 我想裁剪它 如果它是正方形 我想调整它的大小 那么我该怎么做呢 这是裁剪图像的 CSS 代码 但是如何调整它
  • 框架还是不框架?

    昨天我去上英语课 遇到了新朋友 他跟我说了他所做的工作 现在我还在学校学习 在他的公司里 客户有 许多人要求他们的项目 如果你 使用框架但不了解全部 组件或类似的东西 你会遇到 你的源代码和你的问题 没有修复它 因为它是由 另一个 客户付了
  • Android 中显示宽度和高度错误

    我的屏幕尺寸为 600 宽 x 1024 高 我得到当前宽度 600 但错误地得到高度 976 没有旋转屏幕 我得到当前宽度 1024 但错误得到高度 552 旋转屏幕 int rowPixelWidth WindowManager get
  • 比较两个浮点数,看看它们是都是负数还是都是正数

    大家好 我有 2 个浮点数 它们都来自输入框 我需要比较这两个浮点数 如果一个为负 一个为正 则会引发错误 如果它们都是积极的 或者都是消极的 那很好 有任何想法吗 Thanks 将它们相乘 如果答案是肯定的 那么它们都是相同的符号 如果答
  • 在构造函数之后用零初始化向量的有效方法[重复]

    这个问题在这里已经有答案了 初始化向量最有效的方法是什么 我不想在构造函数中初始化它 struct st std vector
  • 在 Android 上使用 AudioRecord 录制可以加快音频速度吗?

    我正在使用 AudioRecord 录制原始音频以进行处理 音频记录完全没有任何噪音 但是当播放生成的原始 PCM 数据时 它的播放速度就好像被加快了很多 最多大约两倍 我正在 Audacity 中查看和播放 PCM 数据 我正在使用实际手
  • 模块构建失败(来自 ./node_modules/babel-loader/lib/index.js):错误:找不到模块“./src/data”

    当我尝试运行我的应用程序时 我收到此错误 我使用的是我一直使用的所有相同的依赖项 所以我对此感到非常困惑 我已经尝试删除我的 package lock json 和节点模块几次 并尝试在整个存储库中搜索 src data 但什么也没找到 更
  • 如何让 QWidget 始终位于最前面?

    我的 QMainWindow 上有两个按钮 一个用于 btnShowKb 另一个用于 btnHideKb 当我按 btnShowKb 时 它会显示一个 QWidget 我希望这个 QWidget 始终位于所有窗口的顶部 直到我按 btnHi
  • 存储数据的最佳(免费)方式?文件系统的更新怎么样?

    我有一个关于如何解决这个问题的想法 但我想知道是否有更简单 更可扩展的方法来解决我的问题 我正在开发的程序有两种基本形式的数据 图像以及与这些图像相关的信息 与图像相关的信息之前已存储在极其简单的 JET 数据库 四个表 中 结果证明该数据
  • Hibernate 中的 ResultTransformer 返回 null

    我使用 ResultTransformer 仅从实体中选择特定属性 只是我不需要实体中的所有属性 但我面临的问题是当属性是 一对多 时 这是一个简单的例子 Entity Table name STUDENT public class Stu
  • 所有小部件的颤动填充?

    我正在尝试在卡片小部件中的某些文本和图标的顶部和底部添加一些填充 我发现 flutter 有一种简单的方法可以对容器执行此操作 但似乎找不到对其他小部件执行此操作的方法 除了将它们包装在容器中之外 这是我到目前为止得到的代码 body ne
  • “use asm”到底是做什么的?

    据我所知 Asm js只是JavaScript的严格规范 它使用了JavaScript的特性 并不是一门新语言 例如 不要使用var a e 它提供var a e 0 我的问题是 如果asm js只是一个定义 并且可以通过改变使用和声明变量
  • 从 Symfony2 控制器中删除 Doctrine 生命周期事件

    我正在寻找删除一个Doctrine Extensions 生命周期事件监听器 https github com l3pp4rd DoctrineExtensions blob master lib Gedmo Tree TreeListen
  • 从 ClaimsIdentity 检索 WindowsIdentity 的最佳方法是什么

    到目前为止 我找到了两种从 ClaimsIdentity 获取 WindowsIdentity 对象的解决方案 首先 我提取用户主体名称 upn ClaimsIdentity ci ClaimsIdentity Thread Current
  • Ag-Grid 链接与单元格中的链接

    我正在使用 ag grid 构建 Angular 4 应用程序 但在尝试找出如何在单元格中放置链接时遇到问题 有人可以帮我解决这个问题吗 谢谢 请检查这个demo https plnkr co edit anJSAE p preview c
  • 如何在 Rust 中序列化 Arc>?

    我有一个特质DataSet 我已经实现了Serialize像这样 impl Serialize for dyn DataSet fn serialize
  • 仅通过客户端使用 Firestore 及其功能是否安全? [复制]

    这个问题在这里已经有答案了 如果我在应用程序中使用 prod 环境变量并为 Firestore 设置服务器端规则 我的应用程序是否可以完全安全地执行 CRUD 和身份验证 我问这个问题是因为我一直在观看相当著名的 YouTube 内容创建者
  • 使用 jQuery 重新加载 MVC2 用户控件

    我知道我今天有很多问题 但仍然试图以正确的方式学习 MVC 2 来控制一切 在我进入这个问题之前 我已经尝试过提供的解决方案here https stackoverflow com questions 826450 how can i re
  • 如何在 OS/X 中将 shell 变量设置为求值结果

    在 Linux Bash 中我可以执行以下操作 export CP cat classpath txt 如果我们执行 cat classpath 我们会看到一个非常长的输出 这就是我不在这里重现的原因 然而在 OS X 中 相同的命令会导致
  • 如何将 jpeg 图像目录转换为张量流中的 TFRecords 文件?

    我的训练数据是 jpeg 图像的目录和包含文件名和关联类别标签的相应文本文件 我正在尝试将此训练数据转换为 tfrecords 文件 如张量流文档中所述 我花了相当多的时间试图让它工作 但张量流中没有示例演示如何使用任何读取器读取 jpeg