python实现将图片数据以TFRecord方式存储

2023-10-29 08:36

本文主要是介绍python实现将图片数据以TFRecord方式存储,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

以TFRecord方式存储的优点

  1. 高效性:TFRecord是一种二进制格式,可以提供更高的存储和读取效率。它可以更快地读取和解析数据,特别适用于大规模数据集

  2. 可压缩性:TFRecord可以使用压缩算法进行压缩,减小数据文件的大小。这对于需要传输或存储大量数据的场景非常有用,可以减少存储空间和网络传输带宽的消耗

  3. 灵活性:TFRecord可以存储多种类型的数据,包括数字、字符串、图像、音频等

  4. 数据读取效率高:使用TFRecord文件可以将数据预处理为模型所需的格式,并通过TensorFlow的数据读取API高效地读取和加载数据。这可以提高训练和推理的效率,并充分利用GPU等硬件资源

  5. 支持并行读取:TFRecord文件可以被并行读取,多个线程可以同时读取不同的TFRecord文件或不同的数据样本,提高数据加载的并行性和效率

代码示例

将目标分类的数据存储成“.tfrecord”文件,

import os, cv2, warnings
import tensorflow as tf
import numpy as np
from tqdm import tqdmimg_paths = []
images = []
labels = []
for img_path in img_paths:img = cv2.imread(img_path)if img is None:print(f"Image at {img_path} is corrupted and will be skipped.")continueimages.append(img)labels.append(1)  ## 假设图片的label为1def _bytes_feature(value):if isinstance(value, type(tf.constant(0))):value = value.numpy()return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))def _int64_feature(value):return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))def create_example(img, label):img_bytes = img.tostring()feature = {'height': _int64_feature(img.shape[0]),'width': _int64_feature(img.shape[1]),'depth': _int64_feature(img.shape[2]),'label': _int64_feature(label),'image_raw': _bytes_feature(img_bytes),}return tf.train.Example(features=tf.train.Features(feature=feature))def write_tfrecord(file_path, images, labels):with tf.io.TFRecordWriter(file_path) as writer:for i in tqdm(range(len(images))):example = create_example(images[i], labels[i])writer.write(example.SerializeToString())write_tfrecord("xxx.tfrecord", images, labels)

这篇关于python实现将图片数据以TFRecord方式存储的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用animation.css库快速实现CSS3旋转动画效果

《使用animation.css库快速实现CSS3旋转动画效果》随着Web技术的不断发展,动画效果已经成为了网页设计中不可或缺的一部分,本文将深入探讨animation.css的工作原理,如何使用以及... 目录1. css3动画技术简介2. animation.css库介绍2.1 animation.cs

CSS引入方式和选择符的讲解和运用小结

《CSS引入方式和选择符的讲解和运用小结》CSS即层叠样式表,是一种用于描述网页文档(如HTML或XML)外观和格式的样式表语言,它主要用于将网页内容的呈现(外观)和结构(内容)分离,从而实现... 目录一、前言二、css 是什么三、CSS 引入方式1、行内样式2、内部样式表3、链入外部样式表四、CSS 选

Java进行日期解析与格式化的实现代码

《Java进行日期解析与格式化的实现代码》使用Java搭配ApacheCommonsLang3和Natty库,可以实现灵活高效的日期解析与格式化,本文将通过相关示例为大家讲讲具体的实践操作,需要的可以... 目录一、背景二、依赖介绍1. Apache Commons Lang32. Natty三、核心实现代

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Python文件操作与IO流的使用方式

《Python文件操作与IO流的使用方式》:本文主要介绍Python文件操作与IO流的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、python文件操作基础1. 打开文件2. 关闭文件二、文件读写操作1.www.chinasem.cn 读取文件2. 写

SpringBoot实现接口数据加解密的三种实战方案

《SpringBoot实现接口数据加解密的三种实战方案》在金融支付、用户隐私信息传输等场景中,接口数据若以明文传输,极易被中间人攻击窃取,SpringBoot提供了多种优雅的加解密实现方案,本文将从原... 目录一、为什么需要接口数据加解密?二、核心加解密算法选择1. 对称加密(AES)2. 非对称加密(R

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

详解如何在SpringBoot控制器中处理用户数据

《详解如何在SpringBoot控制器中处理用户数据》在SpringBoot应用开发中,控制器(Controller)扮演着至关重要的角色,它负责接收用户请求、处理数据并返回响应,本文将深入浅出地讲解... 目录一、获取请求参数1.1 获取查询参数1.2 获取路径参数二、处理表单提交2.1 处理表单数据三、

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

python通过curl实现访问deepseek的API

《python通过curl实现访问deepseek的API》这篇文章主要为大家详细介绍了python如何通过curl实现访问deepseek的API,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编... API申请和充值下面是deepeek的API网站https://platform.deepsee