需求:将图片文件保存成Tfrecord的格式.

解决方法:基于tensorflow、cv2、numpy等库完成该功能.

注:改编自网上代码

1)  准备要训练的手写识别的图片文件,并按照目录结构存放。见下图示意:

2)  生成训练图片和标签对应的文本文件,见下图示意:

3) 编写图片生成TFrecord代码,代码见下:

import numpy as np
import cv2
import tensorflow as tf
import matplotlib.pyplot as plt
from io import StringIO,BytesIO# 将value转化成int64字节属性
def _int64_feature(value):return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))# 将value转化成bytes属性
def _bytes_feature(value):return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))# 从训练文本里读取样本、标签。返回样本、标签列表以及行数
def load_file(examples_list_file):# type: (object) -> objectlines = np.genfromtxt(examples_list_file, delimiter=" ", dtype=[('col1', 'S120'), ('col2', 'i8')])examples = []labels = []for example, label in lines:examples.append(example)labels.append(label)return np.asarray(examples), np.asarray(labels), len(lines)def extract_image(filename, resize_height, resize_width):image = cv2.imread(filename)image = cv2.resize(image, (resize_height, resize_width))b, g, r = cv2.split(image)rgb_image = cv2.merge([r, g, b])rgb_image = rgb_image / 255.rgb_image = rgb_image.astype(np.float32)return rgb_imagedef Image2TFRecord(trainDir,trainLabelFile,tfFile):resize_height = 28resize_width = 28train_file_root = trainDirtrain_file = trainLabelFileexamples, labels, examples_num = load_file(train_file)writer = tf.python_io.TFRecordWriter(tfFile)for i, [example, label] in enumerate(zip(examples, labels)):print('No.%d' % (i))print(examples[i].decode(encoding="utf-8"))root = train_file_root + '/' + examples[i].decode(encoding="utf-8")print(root)image = extract_image(root, resize_height, resize_width)a = image.shapeprint(root)print('shape: %d, %d, %d, label: %d' % (image.shape[0], image.shape[1], image.shape[2], label))image_raw = image.tostring()  # 将Image转化成字符example = tf.train.Example(features=tf.train.Features(feature={'image_raw': _bytes_feature(image_raw),'height': _int64_feature(image.shape[0]),'width': _int64_feature(image.shape[1]),'depth': _int64_feature(image.shape[2]),'label': _int64_feature(label)}))writer.write(example.SerializeToString())writer.close()if __name__ == '__main__':##Image2TFRecord('E:/Python/mnist_img_data4','E:/Python/mnist_img_data4/train.txt','E:/Python/mnist_img_output/a44.tfrecords')##TFrcords2Img('E:/Python/mnist_img_output/a44.tfrecords')#### 延展阅读 https://docs.scipy.org/doc/numpy-1.10.1/user/basics.io.genfromtxt.html###指定按照定长3来分割data = "  1  2  3\n  4  5 67\n890123  4"print(np.genfromtxt(StringIO(data), delimiter=3))''' 结果:
[[  1.   2.   3.][  4.   5.  67.][890. 123.   4.]]'''### 指定按照3列来分割,第一列长度是4,第二列长度是3,第三列长度是2data = "123456789\n   4  7 9\n   4567 9"print(np.genfromtxt(StringIO(data), delimiter=(4, 3, 2)))'''结果:[[1234.  567.   89.][   4.    7.    9.][   4.  567.    9.]]'''data = "1, abc , 2\n 3, xxx, 4"### 默认是不自动替换空格的print(np.genfromtxt(StringIO(data), delimiter=",", dtype="|S5"))print(np.genfromtxt(StringIO(data), delimiter=",", dtype="|S5", autostrip=True))
'''
[[b'1' b' abc ' b' 2'][b'3' b' xxx' b' 4']][[b'1' b'abc' b'2'][b'3' b'xxx' b'4']]'''
data = "1 2 3\n4 5 6"
print(np.genfromtxt(StringIO(data), usecols=(0, -1)))
'''
[[1. 3.][4. 6.]]
'''
print(np.genfromtxt(StringIO(data),names="a, b, c", usecols=("b", "c")))
'''
[(2., 3.) (5., 6.)]
'''
##DataType的类型:

4)在中E:/Python/mnist_img_output目录下生成a4.tfrecords

生成TFrecord相关推荐

  1. 如何生成tfrecord

    生成tfrecord文件可以通过tf.python_io.TFRecordWriter函数来实现,该函数的参数为要生成的文件路径和文件类型.例如:writer = tf.python_io.TFRec ...

  2. tfrecord原理详解 手把手教生成tfrecord文件与解析tfrecord文件

    1.什么是tfrecord TFRecord 是Google官方推荐的一种数据格式,是Google专门为TensorFlow设计的一种数据格式. TFRecord本质上是二进制文件,目的是更好的利用内 ...

  3. 第五篇:基于深度学习的人脸特征点检测 - 生成TFRecord文件

    在上一篇博文中,我们已经获取到了所有样本的面部区域,并且对面部区域的有效性进行了验证.当使用TensorFlow进行神经网络训练时,涉及到的大量IO操作会成为训练速度的瓶颈.为了加快训练的速度,方便后 ...

  4. Tensorflow 处理libsvm格式数据生成TFRecord (parse libsvm data to TFRecord)

    #写libsvm格式 数据 write libsvm #!/usr/bin/env python #coding=gbk # ===================================== ...

  5. tfrecord文件生成与读取

    参考博客--tensorflow-TFRecord 文件详解 1. 生成tfrecord文件 代码 #1.创建tfrecord对象 tf_record=tf.python_io.TFRecordWri ...

  6. Tensorflow—tfrecord数据集生成与使用

    参考内容: 数据读取的官方教程:Tensorflow导入数据以及使用数据 tfrecord数据集生成: 数据准备:图片数据+图片目录与label一一对应的的txt 先读取图片信息的txt文件,得到每个 ...

  7. Tensorflow—TFRecord文件生成与读取

    Tensorflow-TFRecord文件生成与读取 微信公众号:幼儿园的学霸 个人的学习笔记,关于OpenCV,关于机器学习, -.问题或建议,请公众号留言; 目录 文章目录 Tensorflow- ...

  8. 利用Tensorflow中的TFRecord生成与读取图片

    本人是深度学习的爱好者,最近在参加cv的表情识别训练,把一些步骤和过程记录下来 一.什么是TFRecord 对于计算机的内存来说,我们训练集样本的数目是巨大的,而且这些文件分散在不同的文件夹中,在存读 ...

  9. tfrecord生成

    文章目录 验证码预处理 导入数据包 一. 生成四位验证码 二. 生成对应的验证码 三. 生成图像 四.完整实现 生成tfrecord文件 导入库 一. 定义数据参数 二.检查tfrecord文件是不是 ...

最新文章

  1. list extend 和 append
  2. 实际用户ID,有效用户ID与保存设置用户ID
  3. android 读取其他应用程序,android – 在另一个应用程序中请求我自己的ContentProvider的读取权限...
  4. LOJ.2587.[APIO2018]铁人两项Duathlon(圆方树)
  5. 近期期刊制作组的工作计划
  6. wdr和hdr的区别
  7. python动态表情包下载_Python从eif中导出qq表情的gif图片
  8. Fiddler抓包 | 竟然有这些骚操作,太神奇了?
  9. matlab线性代数电子书,实用大众线性代数 MATLAB版_13652907.pdf
  10. Excel文件导入web页面
  11. 2022.4.7网页一直在加载中,无提示
  12. 计算机文化基础知识点第十一版,计算机文化基础知识点总结(经典版) 考试专用.doc...
  13. arcgis图层合并裁剪
  14. Highcharts翻译系列三:exporting导出和打印选项
  15. 负整数及浮点数的二进制表示
  16. easyui主界面布局easyui-layout用法一例
  17. k8s 配置 Secret 集成Harbor
  18. 信息系统工程的总体规划
  19. HTML-head标签详解
  20. 唱着国歌在日本抢银行

热门文章

  1. wxWidgets:wxProcess类用法
  2. wxWidgets:wxPropertyGrid概述
  3. boost::mpl模块实现next相关的测试程序
  4. boost::mp11::mp_replace_if相关用法的测试程序
  5. boost::mp11::mp_replace_front相关用法的测试程序
  6. boost::mp11::mp_power_set相关用法的测试程序
  7. boost::adl_move_swap相关用法的测试程序
  8. boost::hana::is_convertible用法的测试程序
  9. boost::geometry::clear用法的测试程序
  10. boost::coroutine模块实现对称协程的测试程序