首页 > 其他 > 详细

VOC_2007数据集反序列化

时间:2020-09-23 21:42:40      阅读:81      评论:0      收藏:0      [点我收藏+]
import os
import tensorflow as tf
slim = tf.contrib.slim


def get_dataset(dataset_dir):
‘‘‘
获取数据集
:param dataset_dir:文件地址
:return: Dataset
‘‘‘
# 准备参数
# 第一个参数:数据目录+文件名
file_pattern = os.path.join(dataset_dir, ‘VOOC_2007_*.tfrecord‘)
# 第二个参数 reader
reader = tf.TFRecordReader
# 第三个参数 decoder
# 反序列化
keys_to_features = {
‘image/height‘: tf.FixedLenFeature([1], tf.int64),
‘image/width‘: tf.FixedLenFeature([1], tf.int64),
‘image/channels‘: tf.FixedLenFeature([1], tf.int64),
‘image/shape‘: tf.FixedLenFeature([3], tf.int64),
‘image/object/bbox/xmin‘: tf.VarLenFeature(dtype=tf.float32),
‘image/object/bbox/xmax‘: tf.VarLenFeature(dtype=tf.float32),
‘image/object/bbox/ymin‘: tf.VarLenFeature(dtype=tf.float32),
‘image/object/bbox/ymax‘: tf.VarLenFeature(dtype=tf.float32),
‘image/object/bbox/label‘: tf.VarLenFeature(dtype=tf.int64),
‘image/object/bbox/difficult‘: tf.VarLenFeature(dtype=tf.int64),
‘image/object/bbox/truncated‘: tf.VarLenFeature(dtype=tf.int64),
‘image/format‘: tf.FixedLenFeature((), tf.string, default_value=‘jpeg‘),
‘image/encoded‘: tf.FixedLenFeature((), tf.string, default_value=‘‘)
}
# 反序列化为高级的形式,用户可以直接使用的形式
items_to_handlers = {
‘image‘: slim.tfexample_decoder.Image(‘image/encoded‘, ‘image/format‘),
‘shape‘: slim.tfexample_decoder.Tensor(‘image/shape‘),
‘object/bbox‘: slim.tfexample_decoder.BoundingBox(
[‘ymin‘, ‘xmin‘, ‘ymax‘, ‘xmax‘], ‘image/object/bbox/‘),
‘object/labels‘: slim.tfexample_decoder.Tensor(‘image/object/bbox/label‘),
‘object/difficult‘: slim.tfexample_decoder.Tensor(‘image/object/bbox/difficult‘),
‘object/truncated‘: slim.tfexample_decoder.Tensor(‘image/object/bbox/truncated‘)
}
# 构造decoder
decoder = slim.tfexample_decoder.TFExampleDecoder(keys_to_features, items_to_handlers)

return slim.dataset.Dataset(
data_sources = file_pattern,
reader = reader,
decoder = decoder,
num_samples = 9963,
items_to_descriptions = {
‘image‘: ‘A color image of varying height and width‘,
‘shape‘: ‘Shape of image‘,
‘object/bbox‘: ‘A list of bounding boxes, one per each object‘,
‘object/label‘: ‘A list of labels, one per each object‘
}, # 数据集返回的格式描述字典
num_classes = 20

)
--------------------------------------------------------------------------
from datasets import passvalvoc_2007
import tensorflow as tf

slim = tf.contrib.slim

if __name__ == ‘__main__‘:
# 获取dataset
dataset = passvalvoc_2007.get_dataset(‘./DATA/TFRecords/‘)
# 通过provider取出数据
provider = slim.dataset_data_provider.DatasetDataProvider(
dataset,
num_readers = 3 # 读取线程数
)
# 通过get方法获取指定名称的数据(是在准备规范数据dataset时高级格式的名称)
[image, shape, bbox, label, diff, trunc] = provider.get(
[‘image‘, ‘shape‘, ‘object/bbox‘, ‘object/labels‘, ‘object/difficult‘, ‘object/truncated‘]
)
print(image, shape, bbox, label, diff, trunc)

VOC_2007数据集反序列化

原文:https://www.cnblogs.com/yuganwj/p/13721209.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!