Tensorflow学习教程------tfrecords数据格式生成与读取

首先是生成tfrecords格式的数据,具体代码如下:

#coding:utf-8import os
import tensorflow as tf 
from PIL import Imagecwd = os.getcwd() '''
此处我加载的数据目录如下:
bt -- 14018.jpg14019.jpg14020.jpgnbt -- 1_ddd.jpg1_dsdfs.jpg1_dfd.jpg这里的bt nbt 就是类别,也就是代码中的classes 
'''writer = tf.python_io.TFRecordWriter("train.tfrecords")
classes = ['bt','nbt']
for index, name in enumerate(classes):class_path = cwd + '/'+ name +'/' #每一类图片的目录地址for img_name in os.listdir(class_path):img_path = class_path + img_name #每一张图片的路径img = Image.open(img_path)img = img.resize((224,224)) img_raw = img.tobytes()   #将图片转化为原生bytesexample = 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]))}))print "write" + ' ' + str(img_path) + "to train.tfrecords."writer.write(example.SerializeToString()) #序列化为字符串
writer.close()

然后读取生成的tfrecords数据,并且将tfrecords里面的数据保存成jpg格式的图片。具体代码如下:

#coding:utf-8
import os 
import tensorflow as tf
from PIL import Image 
cwd = '/media/project/tfLearnning/dataread/pic/'
def 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,[224,224,3])#img = tf.cast(img,tf.float32) * (1./255) - 0.5 # 将图片变成tensor#对图片进行归一化操作将【0,255】之间的像素归一化到【-0.5,0.5】,标准化处理可以使得不同的特征具有相同的尺度(Scale)。#这样,在使用梯度下降法学习参数的时候,不同特征对参数的影响程度就一样了label = tf.cast(features['label'], tf.int32) #将标签转化tensorprint imgprint labelreturn img, label#read_and_decode('train.tfrecords')
img, label = read_and_decode('train.tfrecords')
#print img.shape, label
img_batch, label_batch = tf.train.shuffle_batch([img,label],batch_size=10,capacity=2000,min_after_dequeue=1000) #形成一个batch的数据,由于使用shuffle,因此每次取batch的时候#都是随机取的,可以使样本尽可能被充分地训练,保证min_after值小于capacit值

init = tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)# 创建一个协调器,管理线程coord = tf.train.Coordinator()# 启动QueueRunner, 此时文件名队列已经进队threads = tf.train.start_queue_runners(sess=sess, coord=coord)for i in range(10):example, l = sess.run([img, label]) #从对列中一张一张读取图片和标签#example, l = sess.run([img_batch,label_batch])print(example.shape,l)img1=Image.fromarray(example, 'RGB') #将tensor转化成图片格式img1.save(cwd+str(i)+'_'+'Label_'+str(l)+'.jpg')#save image# 通知其他线程关闭
    coord.request_stop()# 其他所有线程关闭之后,这一函数才能返回coord.join(threads)

 

转载于:https://www.cnblogs.com/cnugis/p/8393807.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS获取KinectV2相机的彩色图和深度图并制作bundlefusion需要的数据集

背景: 最近在研究BundleFusion,跑通官方数据集后,就想着制作自己的数据集来运行bundlefusion.KinectV2相机可直接获取的图像的分辨率分为三个HD 1920x1080, QHD: 960X540,SD: 512x424.我选择是中间的分辨率qhd. 录制…

Linux下配置tomcat+apr+native应对高并发

摘要:在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输…

Firefox 66 将阻止自动播放音频和视频

百度智能云 云生态狂欢季 热门云产品1折起>>> 当我们点击一个链接,或者打开新的浏览器选项卡时,浏览器就开始自动播放视频和声音,这是一件十分烦人的事。Chrome 浏览器早已对这些行为下手了,现在 Firefox 也明确表示要…

Windows 10 关闭Hyper-V

以管理员身份运行命令提示符 关闭 bcdedit /set hypervisorlaunchtype off 启用 bcdedit / set hypervisorlaunchtype auto 禁用DG 转载于:https://www.cnblogs.com/Robbery/p/8397767.html

ROS下获取kinectv2相机的仿照TUM数据集格式的彩色图和深度图

准备工作: 1. ubuntu16.04上安装iai-kinect2, 2. 运行roslaunch kinect2_bridge kinect2_bridge.launch, 3. 运行 rosrun save_rgbd_from_kinect2 save_rgbd_from_kinect2,开始保存图像. 这个保存kinectV2相机的代码如下&…

Java Web 九大内置对象(一)

在Jsp 中一共定义了九个内置对象,分别为: *request HttpServletRequest; *response HttpServletResponse; *session HttpSession; page This(本jsp页面); *application ServletCon…

Missing URI template variable 'XXXX' for method parameter of type String

原因:就是spring的controller上的RequestMapping的实参和方法里面的形参名字不一致 方法:改成一样就可。 ps.还能用绑定的方法,不建议,因为太麻烦了 RequestMapping(value "/findUser/{id}",method RequestMethod.GET…

css:text-overflow属性

参考文档:www.w3school.com.cn/cssref/pr_t… text-overflow:ellipsis;( 显示省略符号来代表被修剪的文本。)

Failed to load nodelet ‘/kinect2_bridge` of type `kinect2_bridge/kinect2_bridge_nodelet` to manager

之前在我的电脑上配置了libfreenect2和iai_kinect2,现在需要在工控机上重新安装这两个库,讲kinectV2相机安置在婴儿车上,然后使用我的ros下获取kinectV2相机的彩色图和灰度图的脚本,获取深度图和彩色图。 我成功的安装了libfreen…

object转字符串

1、obj.tostring() obj为空时,抛异常。 2、convert.tostring(obj) obj为空时,返回null; 3、(string)obj obj为空时,返回null;obj不是string类型时,抛异常。 4、obj as string obj为空时,返回nul…

微信开发中,H5的video标签使用

<video></video>是HTML5新加入的标签&#xff0c;最近流行的h5开发多以video技术集成一个H5页面&#xff0c;效果也是很6的。现在总结一下用到的技术&#xff0c;主要的使用环境是微信&#xff0c;部分属性一些手机的默认浏览器不支持&#xff0c;这些还需要读者亲…

bundlefusion论文阅读笔记

4. 全局位姿对齐(glob pose alignment) 输入系统的是使用消费级的传感器获取的RGBD数据流&#xff0c;并且保证这些数据中的彩色图像和深度图像是时间和空间上都对齐的。图像分辨率是640x480,频率是30hz。我们的目的就是要找到frames之间的3D对应&#xff0c;然后根据这些对应…

IOC和DI的区别详解

IOC 是英文inversion of control的缩写&#xff0c;意思是控制反转DI 是英文Dependency Injection的缩写&#xff0c;意思是依赖注入 下面用一个简单的例子来描述一下IOC和DI的关系 先看下总结&#xff1a; 依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情&#…

TOMCAT启动到一半停止如何解决

当你的项目过大的时候&#xff0c;往往会导致你的TOMCAT启动时间过长&#xff0c;启动失败&#xff0c;遇到该情况可以试一下下面两招&#xff1a; TOmcat启动到一半的时候停止了&#xff0c;以下原因&#xff1a; 1、 tomcat启动时间超过了设置时间&#xff1a; 解决办法&…

视觉slam十四讲ch6曲线拟合 代码注释(笔记版)

1 #include <opencv2/core/core.hpp>2 #include <ceres/ceres.h>3 #include <chrono>4 5 using namespace std;6 7 // 代价函数的计算模型8 struct CURVE_FITTING_COST9 {10 CURVE_FITTING_COST ( double x, double y ) : _x ( x ), _y ( y ) {}11 /…

Dojo 如何测试 widget

测试 dojo/framework/src/testing/README.mdcommit 84e254725f41d60f624ab5ad38fe82e15b6348a2 用于测试和断言 Dojo 部件期望的虚拟 DOM 和行为的简单 API。 测试 Features harness APICustom Comparatorsselectors harness.expect harness.expectPartial harness.triggerharn…

python中将四元数转换为旋转矩阵

在制作bundlefusion时,想测试TUM数据集,并且将groundtruth写入到数据集中,TUM中给定的groundtruth中的旋转是使用四元数表示的,而bundlefusion中需要SE3的形式,所以我需要首先将四元数转换为旋转矩阵,然后再将其与平移向量合并在一起,因为我之前关于生成bundlefusion数据集写了…

js -- 时间转年月日

/*** 时间转年月日* param sdate 开始的时间* param edate 结束的时间* returns {*}*/function day2ymrStr2(sdate, edate) {var day2ymrStr "";var date1 new Date(edate);var date2 new Date(sdate);var y 0, m 0, d 0;var y1 date1.getFullYear();var m1 …

iOS sha1加密算法

最近在项目中使用到了网络请求签名认证的方法&#xff0c;于是在网上找关于OC sha1加密的方法&#xff0c;很快找到了一个大众使用的封装好的方法&#xff0c;以下代码便是 首先需要添加头文件 #import<CommonCrypto/CommonDigest.h> 然后直接使用下面的方法就可以了 //s…

Linux开发5款实用工具推荐

今天安利给大家5款实用的Linux开发工具&#xff0c;希望对大家工作效率的提升有所帮助。容器放眼于现实&#xff0c;现在已经是容器的时代了。容器既及其容易部署&#xff0c;又可以方便地构建开发环境。如果你针对的是特定的平台的开发&#xff0c;将开发流程所需要的各种工具…