Tensorflow之构建自己的图片数据集TFrecords(二)
2018-03-17 11:16
579 查看
分类好了图片,接下来制作成Tfrecord格式。
先贴代码:
import tensorflow as tf from PIL import Image import os cwd = os.getcwd() root = cwd+"./images_variant_trainval" TFwriter = tf.python_io.TFRecordWriter("./images_variant_trainval.tfrecords")class_names = [] class_list = open('./variants.txt', "r") for line in class_list.readlines(): line = line.strip() class_names.append(line) class_list.close() class_names_to_id = dict(zip(class_names, range(len(class_names)))) for className in os.listdir(root): classPath = root + "/" + className + "/" for key,value in class_names_to_id.items(): if className == key: className = value label = int(className) for parent, dirnames, filenames in os.walk(classPath): for filename in filenames: imgPath = classPath+"/"+filename print(imgPath) img = Image.open(imgPath) print(img.size,img.mode) imgRaw = img.tobytes() example = tf.train.Example(features=tf.train.Features(feature={ "label": tf.train.Feature(int64_list=tf.train.Int64List(value=[label])), "img":tf.train.Feature(bytes_list = tf.train.BytesList(value=[imgRaw])) })) TFwriter.write(example.SerializeToString()) TFwriter.close()第一部分:
import tensorflow as tf from PIL import Image import osPIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。(具体参考:点击打开链接)
第二部分:
cwd = os.getcwd() root = cwd+"./images_variant_trainval" TFwriter = tf.python_io.TFRecordWriter("./images_variant_trainval.tfrecords")os.getcwd() 方法用于返回当前工作目录。将绝对目录传递给root。(具体参考:点击打开链接)
tf.python_io.TFRecordWriter作用在于创建一个TFRecordWriter对象,这个对象就负责写记录到指定的文件中去,在此处指定文件夹为"./images_variant_trainval.tfrecords"
第三部分:
class_names = [] class_list = open('./variants.txt', "r") for line in class_list.readlines(): line = line.strip() class_names.append(line) class_list.close() class_names_to_id = dict(zip(class_names, range(len(class_names))))创建class_names空列表。
以只读形式打开variants.txt文件文件。
逐行读取该文件,利用空格分割标签,并将所有标签存入class_names列表中。
关闭class_list。
统计列表元素个数,按照排序,将class_names和其标签顺序关联起来,并形成字典,其效果部分如图所示:
第四部分:
for className in os.listdir(root): classPath = root + "/" + className + "/" for key,value in class_names_to_id.items(): if className == key: className = value label = int(className)[p] os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。这个列表以字母顺序。 它不包括 '.' 和'..' ,即使它在文件夹中。只支持在 Unix, Windows 下使用。(具体参考:点击打开链接)
建立类别目录存入classPath参数中。
遍历class_names_to_id中每一个键值对,如果在root中的文件名与其键相等,就将该键对应的值赋给这个文件名。这样做是为了后续制作标签,在python中制作标签只能是整形,不能是其他形式,而原名称中含有“-”和字母等非整形数据,因此需要改成整形数据。
最后将className赋给label。第五部分:
for parent, dirnames, filenames in os.walk(classPath): for filename in filenames: imgPath = classPath+"/"+filename print(imgPath) img = Image.open(imgPath) print(img.size,img.mode) imgRaw = img.tobytes() example = tf.train.Example(features=tf.train.Features(feature={ "label": tf.train.Feature(int64_list=tf.train.Int64List(value=[label])), "img":tf.train.Feature(bytes_list = tf.train.BytesList(value=[imgRaw])) })) TFwriter.write(example.SerializeToString()) TFwriter.close()python中os.walk是一个简单易用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。(具体详见:点击打开链接) 遍历filenames中每一个文件名(即每张图片的名字),将其赋给参数imgPath,并打印出结果。
打开imgPath的图片,输出图片大小及模式。(关于这部分知识具体详见点击打开链接)其结果如图所示。
img.tobytes表示将图片转换成字符串格式。 接下来就是制作TFRecord最关键的部分,即以下代码:
example = tf.train.Example(features=tf.train.Features(feature={ "label": tf.train.Feature(int64_list=tf.train.Int64List(value=[label])), "img":tf.train.Feature(bytes_list = tf.train.BytesList(value=[imgRaw])) })) TFwriter.write(example.SerializeToString()) TFwriter.close()文件中每一个图片都对应一个标签。(具体详见点击打开链接)
[/p]
相关文章推荐
- Tensorflow之构建自己的图片数据集TFrecords的方法
- Tensorflow之构建自己的图片数据集TFrecords
- Tensorflow之构建自己的图片数据集TFrecords
- Tensorflow构建自己的图片数据集TFrecords
- 用Tensorflow处理自己的数据:制作自己的TFRecords数据集
- tensorflow官网Cifar-10改为自己的TFRecords数据集
- Tensorflow使用TFRecord构建自己的数据集并读取
- tensorflowxun训练自己的数据集之从tfrecords读取数据
- tensorflow实战 猫狗大战(三)制作tfrecords数据集并显示与训练
- Tensorflow使用笔记(2): 如何构建TFRecords并进行Mini Batch训练
- TensorFlow 学习(二) 制作自己的TFRecord数据集,读取,显示及代码详解
- Tensorflow构建自己的图片数据集TFrecords
- 制作自己的tfrecords数据集
- tensorflow读取SVHN数据集转为TFrecords格式
- Tensorflow 构建 TFrecords
- TensorFLow 不同大小图片的TFrecords存取
- Tensorflow 训练自己的数据集(二)(TFRecord)
- 制作tensorflow标准数据集即制作.tfrecords格式文件
- tensorflow之构建自己的数据集
- tensorflow训练自己的数据集实现CNN图像分类2(保存模型&测试单张图片)