tf创建tfRecord文件

2024-04-20 01:48
文章标签 创建 tf tfrecord

本文主要是介绍tf创建tfRecord文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

项目详细请猛戳我的github地址,直接可运行:https://github.com/SamXiaosheng/create-tfRecord

下面是main文件代码和create tfRecord文件:

import tensorflow as tf
from tfRecord import *
import cv2FLAGS = tf.app.flags.FLAGStf.app.flags.DEFINE_string('image_dir', './image/',"""Directory where to write event logs """)def main(_):
    create_tfrecords(FLAGS.image_dir)image_batch,label_batch =read_and_decode('test.tfRecord')with tf.Session() as sess:
        coord = tf.train.Coordinator()threads = tf.train.start_queue_runners(sess=sess, coord=coord)while not coord.should_stop():
            image,label = sess.run([image_batch,label_batch])print(label)cv2.imshow('image',image[0])cv2.waitKey(200)coord.request_stop()coord.join(threads)if __name__ == '__main__':
    tf.app.run()


import tensorflow as tf
import numpy as np
import os
import cv2def read_and_decode(filename):
    filename_queue = tf.train.string_input_producer([filename])reader = tf.TFRecordReader()_, serialized_example = reader.read(filename_queue)features = tf.parse_single_example(serialized_example,features={'label': tf.FixedLenFeature([], tf.int64),'img_raw' : tf.FixedLenFeature([], tf.string),})img = tf.decode_raw(features['img_raw'], tf.uint8)#这里的格式非常重要
    img = tf.reshape(img, [227, 227, 3])#img = tf.cast(img, tf.float32) * (1. / 255) - 0.5
    label = tf.cast(features['label'], tf.uint8)image_batch, label_batch = tf.train.shuffle_batch([img, label],batch_size=1,#这里参数设置目的是每次只读取一个样本
                                                    capacity=1,min_after_dequeue=0)#label_batch = tf.one_hot(label_batch, NUM_CLASSES)
    #label_batch = tf.cast(label_batch, dtype=tf.int64)
    #label_batch = tf.reshape(label_batch, [batch_size, NUM_CLASSES])

    return image_batch, label_batch
#读取某目录路径下的所有文件,返回图片的名称列表
def dirtomdfbatchmsra(dirpath):#读取目录下训练图像和对应的label
    image_ext = 'jpg'
    images = [fn for fn in os.listdir(dirpath) if fn.endswith(image_ext)]#返回dirpath路径下所有后缀jpg文件
    images.sort()#排序的目的有利于样本和标签的对应
    #print(images)
    gt_ext = 'png'
    gt_maps = [fn for fn in os.listdir(dirpath) if fn.endswith(gt_ext)]gt_maps.sort()#print(gt_maps)
    return gt_maps,images#返回gt图和训练image的所有文件名

def create_tfrecords(image_dir):
    writer = tf.python_io.TFRecordWriter("test.tfRecord")image_png,image_jpg = dirtomdfbatchmsra(image_dir)for index, name in enumerate(image_jpg):
            img = cv2.imread(image_dir+name).astype(np.uint8)img = cv2.resize(img,(227,227))#统一大小
            img_raw = img.tobytes()#转换成字节形式
            example = tf.train.Example(features=tf.train.Features(feature={"label": tf.train.Feature(int64_list=tf.train.Int64List(value=[index])),'img_raw': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw]))}))writer.write(example.SerializeToString())for index, name in enumerate(image_png):
            img = cv2.imread(image_dir+name).astype(np.uint8)img = cv2.resize(img,(227, 227))#
            img_raw = img.tobytes()example = tf.train.Example(features=tf.train.Features(feature={"label": tf.train.Feature(int64_list=tf.train.Int64List(value=[index])),'img_raw': tf.train.Feature(bytes_list=tf.train.BytesList(value=[img_raw]))}))writer.write(example.SerializeToString())writer.close()




这篇关于tf创建tfRecord文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/918998

相关文章

python如何创建等差数列

《python如何创建等差数列》:本文主要介绍python如何创建等差数列的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python创建等差数列例题运行代码回车输出结果总结python创建等差数列import numpy as np x=int(in

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

MySQL 用户创建与授权最佳实践

《MySQL用户创建与授权最佳实践》在MySQL中,用户管理和权限控制是数据库安全的重要组成部分,下面详细介绍如何在MySQL中创建用户并授予适当的权限,感兴趣的朋友跟随小编一起看看吧... 目录mysql 用户创建与授权详解一、MySQL用户管理基础1. 用户账户组成2. 查看现有用户二、创建用户1. 基

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Java中实现线程的创建和启动的方法

《Java中实现线程的创建和启动的方法》在Java中,实现线程的创建和启动是两个不同但紧密相关的概念,理解为什么要启动线程(调用start()方法)而非直接调用run()方法,是掌握多线程编程的关键,... 目录1. 线程的生命周期2. start() vs run() 的本质区别3. 为什么必须通过 st

Macos创建python虚拟环境的详细步骤教学

《Macos创建python虚拟环境的详细步骤教学》在macOS上创建Python虚拟环境主要通过Python内置的venv模块实现,也可使用第三方工具如virtualenv,下面小编来和大家简单聊聊... 目录一、使用 python 内置 venv 模块(推荐)二、使用 virtualenv(兼容旧版 P

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

Java 如何创建和使用ExecutorService

《Java如何创建和使用ExecutorService》ExecutorService是Java中用来管理和执行多线程任务的一种高级工具,可以有效地管理线程的生命周期和任务的执行过程,特别是在需要处... 目录一、什么是ExecutorService?二、ExecutorService的核心功能三、如何创建

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.