TensorFlow⾃定义⽣成.record⽂件
⼀、⽣成 .record ⽂件
前⾯的⽂章 TensorFlow 训练⾃⼰的⽬标检测器 中的第⼆部分第 2 ⼩节中我们已经预先说过,会在后续的⽂章中阐述怎么⾃定义的将图像转化为 .record ⽂件,今天我们就来说⼀说这件事。
在⽂章 TensorFlow 训练 CNN 分类器 中我们⽣成了 50000 张 28 x 28 像素的图像,我们的⽬标就是将这些图像全部写⼊到⼀个后缀为 .record 的⽂件中。 .record 或 tfrecord ⽂件是 TensorFlow 中的标准数据读写格式,它是⼀种能够⾼效读写的⼆进制⽂件,能够快速的复制、移动、读写和存储等。
在⽂章 TensorFlow 训练 CNN 分类器 和⽂章 TensorFlow-slim 训练 CNN 分类模型 中,我们在训练模型时导⼊数据的⽅式都是⼀次性的将所有图像读⼊,然后循环的从中选择⼀个批量来训练。这对于⼩数据集来说不会产⽣问题,但如果训练数据异常⼤,那么很可能由于内存限制⽆法⼀次性将说有数据导⼊,这样前⾯的训练⽅式便不能采⽤了。此时,我们可以将数据转化为 .record ⽂件格式,然后再分批次的、逐步的读⼊.record ⽂件进⾏训练。
要将图像写⼊ .record ⽂件,⾸先要将图像编码为字符或数字特征,这需要调⽤类 tf.train.Feature。然后,在调⽤ tf.train.Example 将特征写⼊协议缓冲区。最后,通过类 tf.python_io.TFRecordWriter 将数据写⼊到 .record ⽂件中。⽐如,我们将前⾯提到的 50000 张图像写⼊
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Mar 26 09:02:10 2018
@author: shirhe-lyh
"""
"""Generate tfrecord file from images.
Example Usage:
---------------
python3 train.py \
-
-images_path: Path to the training images (directory).
--output_path: Path to .record.
"""
import glob
import io
import os
import tensorflow as tf
python怎么读取py文件from PIL import Image
flags = tf.app.flags
flags.DEFINE_string('images_path', None, 'Path to images (directory).')
flags.DEFINE_string('output_path', None, 'Path to output tfrecord file.')
FLAGS = flags.FLAGS
def int64_feature(value):
ain.Feature(int64_ain.Int64List(value=[value]))
def int64_list_feature(value):
ain.Feature(int64_ain.Int64List(value=value))
def bytes_feature(value):
ain.Feature(bytes_ain.BytesList(value=[value]))
def bytes_list_feature(value):
ain.Feature(bytes_ain.BytesList(value=value))

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。