如何在Tensorflow中加载、标记和输入JPEG数据?

我尝试将1750 * 1750的图像输入到Tensorflow中,但在使用tf.image.decode_jpeg()函数将图像转换为张量后,我不知道如何标记和输入这些数据。

目前我的代码是这样的:

import tensorflow as tfimport numpy as npimport imageflowimport os, globsess = tf.InteractiveSession()def read_jpeg(filename_queue): reader = tf.WholeFileReader() key, value = reader.read(filename_queue) my_img = tf.image.decode_jpeg(value) my_img.set_shape([1750, 1750, 1]) print(value) return my_img#####################################################def read_image_data(): jpeg_files = [] images_tensor = [] i = 1 WORKING_PATH = "/Users/Zanhuang/Desktop/NNP/DATA" jpeg_files_path = glob.glob(os.path.join(WORKING_PATH, '*.jpeg')) for filename in jpeg_files_path:    print(i)    i += 1    jpeg_files.append(filename) filename_queue = tf.train.string_input_producer(jpeg_files) mlist = [read_jpeg(filename_queue) for _ in range(len(jpeg_files))] init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) images_tensor = tf.convert_to_tensor(images_tensor) sess.close()

正如我之前所说,我需要输入并标记这些数据。我看过CIFAR-10教程文件,但他们将标签存储在一个文件中,而我计划不采用这种方式。

我是Tensorflow的新手,请尽可能详细地回答我的问题。

谢谢!


回答:

根据你的需求,有几种不同的方法可以考虑。

  1. 如果你只是想对任意JPEG文件进行推理(即不需要标签),那么你可以参考classify_image.py的例子,它将JPEG图像输入到预训练的Inception网络中:

    github.com/tensorflow/models/blob/master/tutorials/image/imagenet/classify_image.py

  2. 如果你确实想在一个小型的自定义JPEG图像数据集上训练(或微调)模型,那么可以参考这个例子,了解如何在一个小型JPEG图像集上训练模型。

    github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/image_retraining/retrain.py

  3. 如果你确实想在一个大型的自定义JPEG图像数据集上训练(或微调)模型,那么读取许多单独的JPEG文件将非常低效,并且会大大减慢训练速度。

我建议你按照inception/模型库中描述的程序,将一个目录中的JPEG图像转换为包含序列化JPEG图像的分片RecordIO文件。

github.com/tensorflow/models/blob/master/research/inception/inception/data/build_image_data.py

运行转换脚本的说明在这里可以找到:

github.com/tensorflow/models/blob/master/research/inception/README.md#how-to-construct-a-new-dataset-for-retraining

运行转换后,你可以使用/复制inception/模型使用的图像预处理流程。

github.com/tensorflow/models/blob/master/research/inception/inception/image_processing.py

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注