上一篇文章已经制作好VOC数据集,这一节把VOC数据集转化为Tensorflow统一的数据格式。代码如下,参考于SSD-Tensorflow代码:https://github.com/balancap/SSD-Tensorflow
其实就是把几个文件整合到一块(tf_convert_data.py、pascalvoc_to_tfrecords.py、dataset_utils.py和pascalvoc_common.py),把参数写到文件内,直接run即可,注意修改datadir和outdir路径。
# -*- coding: utf-8 -*-
"""
Created on Thu May 24 17:03:43 2018
@author: 流羽秋
"""
import os
import sys
import random
import numpy as np
import tensorflow as tf
import xml.etree.ElementTree as ET #操作xml文件
#我的标签定义只有两类,根据自己的图片而定
VOC_LABELS = {
'none': (0, 'Background'),
'dust': (1, 'Dust')
}
# 图片和标签存放的文件夹.
DIRECTORY_ANNOTATIONS = 'Annotations/'
DIRECTORY_IMAGES = 'JPEGImages/'
# 随机种子.
RANDOM_SEED = 4242
SAMPLES_PER_FILES = 200 #每个文件的样本数
#生成整数型,浮点型和字符串型的属性
def int64_feature(value):
if not isinstance(value, list):
value = [value]
return tf.train.Feature(int64_list=tf.train.Int64List(value=value))
def float_feature(value):
if not isinstance(value, list):
value = [value]
return tf.train.Feature(float_list=tf.train.FloatList(value=value))
def bytes_feature(value):
if not isinstance(value, list):
value = [val