打标签制作自己的数据集并在TensorFlow框架上训练
标签工具labelImg
用labelimg对自己的数据做好标注,只有一类预测桃子图像。
注释文件保存为xml格式,满足PASCAL VOC风格,如下图1把图片和标签放在一个文件夹内(data)
转换数据格式,可以在tensorflow框架下读取
需将标记完的数据集xml的文件转换为TFRecord格式的文件
1、先转换为csv格式
转换代码为:
import os
import glob
import pandas as pd
import xml.etree.ElementTree as ETdef xml_to_csv(path):xml_list = []# 读取注释文件for xml_file in glob.glob(path + '/*.xml'):tree = ET.parse(xml_file)root = tree.getroot()for member in root.findall('object'):value = (root.find('filename').text,int(root.find('size')[0].text),int(root.find('size')[1].text),member[0].text,int(member[4][0].text),int(member[4][1].text),int(member[4][2].text),int(member[4][3].text))xml_list.append(value)column_name = ['filename', 'width', 'height', 'class', 'xmin', 'ymin', 'xmax', 'ymax']# 将所有数据分为样本集和验证集,一般按照3:1的比例train_list = xml_list[0: int(len(xml_list) * 0.67)]eval_list = xml_list[int(len(xml_list) * 0.67) + 1: ]# 保存为CSV格式train_df = pd.DataFrame(train_list, columns=column_name)eval_df = pd.DataFrame(eval_list, columns=column_name)train_df.to_csv('D:/programs/models-master/research/object_detection/data/train_peaches.csv', index=None)eval_df.to_csv('D:/programs/models-master/research/object_detection/data/eval_peaches.csv', index=None)def main():path = 'D:/dataset/data'xml_to_csv(path)print('Successfully converted xml to csv.')
main()
2、再转换为TFRecord格式
转换代码为:
from __future__ import division
from __future__ import print_function
from __future__ import absolute_importimport os
import io
import pandas as pd
import tensorflow as tffrom PIL import Image
from object_detection.utils import dataset_util
from collections import namedtuple, OrderedDictflags = tf.app.flags
flags.DEFINE_string('csv_input', '', 'Path to the CSV input')
flags.DEFINE_string('output_path', '', 'Path to output TFRecord')
FLAGS = flags.FLAGS# 将分类名称转成ID号
def class_text_to_int(row_label):if row_label == 'peach':return 1else:print('NONE: ' + row_label)Nonedef split(df, group):data = namedtuple('data', ['filename', 'object'])gb = df.groupby(group)return [data(filename, gb.get_group(x)) for filename, x in zip(gb.groups.keys(), gb.groups)]def create_tf_example(group, path):print(os.path.join(path, '{}'.format(group.filename)))with tf.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid:encoded_jpg = fid.read()encoded_jpg_io = io.BytesIO(encoded_jpg)image = Image.open(encoded_jpg_io)width, height = image.sizefilename = group.filename.encode('utf8')image_format = b'jpg'xmins = []xmaxs = []ymins = []ymaxs = []classes_text = []classes = []for index, row in group.object.iterrows():xmins.append(row['xmin'] / width)xmaxs.append(row['xmax'] / width)ymins.append(row['ymin'] / height)ymaxs.append(row['ymax'] / height)classes_text.append(row['class'].encode('utf8'))classes.append(class_text_to_int(row['class']))tf_example = tf.train.Example(features=tf.train.Features(feature={'image/height': dataset_util.int64_feature(height),'image/width': dataset_util.int64_feature(width),'image/filename': dataset_util.bytes_feature(filename),'image/source_id': dataset_util.bytes_feature(filename),'image/encoded': dataset_util.bytes_feature(encoded_jpg),'image/format': dataset_util.bytes_feature(image_format),'image/object/bbox/xmin': dataset_util.float_list_feature(xmins),'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs),'image/object/bbox/ymin': dataset_util.float_list_feature(ymins),'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs),'image/object/class/text': dataset_util.bytes_list_feature(classes_text),'image/object/class/label': dataset_util.int64_list_feature(classes),}))return tf_exampledef main(csv_input, output_path, imgPath):writer = tf.python_io.TFRecordWriter(output_path)path = imgPathexamples = pd.read_csv(csv_input)grouped = split(examples, 'filename')for group in grouped:tf_example = create_tf_example(group, path)writer.write(tf_example.SerializeToString())writer.close()print('Successfully created the TFRecords: {}'.format(output_path))if __name__ == '__main__':imgPath = 'D:/dataset/data'# 生成train.record文件output_path = 'D:/programs/models-master/research/object_detection/data/train_peaches.record'csv_input = 'D:/programs/models-master/research/object_detection/data/train_peaches.csv'main(csv_input, output_path, imgPath)# 生成验证文件 eval.recordoutput_path = 'D:/programs/models-master/research/object_detection/data/eval_peaches.record'csv_input = 'D:/programs/models-master/research/object_detection/data/eval_peaches.csv'main(csv_input, output_path, imgPath)
运行结果
如下图:
训练自己的数据集
结果如图
参考博客:
https://blog.csdn.net/RobinTomps/article/details/78115628?locationNum=5&fps=1
打标签制作自己的数据集并在TensorFlow框架上训练相关推荐
- 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络
使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络 本文例程部分主要参考官方文档. JAX简介 JAX 的前身是 Autograd ,也就是说 JAX 是 Autograd 升级版本 ...
- 从本地加载FASHION MNIST数据集并输入到模型进行训练
文章目录 1.概要 2.代码 2.1 数据集加载及展示 2.2模型训练 3. 源文件和训练结果 1.概要 本文将简要介绍fashion minist数据集,从本地加载此数据集,并将其输入到一个简单的分 ...
- 深入云原生 AI:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
作者 | 车漾(阿里云高级技术专家).顾荣(南京大学 副研究员) 导读:Alluxio 项目诞生于 UC Berkeley AMP 实验室,自开源以来经过 7 年的不断开发迭代,支撑大数据处理场景的数 ...
- 阿里云原生实践:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
导读:Alluxio 项目诞生于 UC Berkeley AMP 实验室,自开源以来经过 7年的不断开发迭代,支撑大数据处理场景的数据统一管理和高效缓存功能日趋成熟.然而,随着云原生人工智能(Clou ...
- php制作标签,ThinkPHP标签制作教程
搜索热词 本文以实例讲解了ThinkPHP标签的制作方法,对于ThinkPHP的初学者或者开发人员都有一定的借鉴价值. 一般来说,ThinkPHP的默认标签解析器在Lib/Template/TagLi ...
- 下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)
下载MNIST数据集并使用python将数据转换成NumPy数组 首先来分析init_mnist函数 接下来继续分析load_mnist函数 实现数据集转换的python脚本的代码 显示MNIST图像 ...
- 深度学习vad人声检测之标签制作
深度学习几乎渗透到了各行各业,最火热的莫过于视觉算法.然而,音频相关的很多处理算法也逐渐被深度学习所浸润,vad作为音频前处理的一个操作得到了很广泛的应用,比较典型的vad检测算法是通过提取特征,构造 ...
- yolov3从头实现(一)-- xml标签制作与读取
标签制作与读取 这里说的标签制作并非yolov3所需要的标签,而是一般的没有处理的标签 一.标签的制作 1.制作工具及制作结果 制作工具使用的是:labelImg 用labelimg制作完成后的标签 ...
- yolov3从头实现(三)-- yolov3标签制作
yolov3标签制作 一 .自定义anchors yolov3中需要自己定义不同特征尺度下的anchor的大小 而anchor的大小时根据标注数据集聚类得出来的,可以理解成在标注数据集中的大多数标注框 ...
最新文章
- 【开源】Winform甘特日程控件GanttPlanner V1.0发布
- Vue Angular 双向绑定检测不到对象属性的添加和删除
- 树莓派 使用读卡器修改WIFI连接配置
- SAP ABAP STOP,EXIT,CHECK,RETURN
- XSS跨站脚本(web应用)——会话管理(一)
- linux文件系统的管理方法,Linux学习笔记:2.文件系统的管理命令(2)
- 表面配准论文1--基于高阶图匹配方法的稠密表面配准
- 开源好用的思维导图软件XMind
- 那个一年发四篇Cell的研究生,后来怎么样了?
- 知名的开源apm(Application Performance Management)工具
- Css(常用的特殊效果)
- poj 1511 Invitation Cards spfa比基础题难一些!!练练手挺好
- Spring源代码地址
- web渗透--rpcbind利用
- ⑥tiny4412 Linux驱动开发之LCD(framebuffer)驱动程序
- 【考研政治】马克思主义基本原理概论——导论篇
- Android谷歌地图地理编码,使用谷歌地图api iOS反向地理编码
- find linux 指定后缀_文件查找:find命令,文件名后缀
- 2021-11-27 2021年施工员-装饰方向-岗位技能(施工员)考试题及施工员-装饰方向-岗位技能(施工员)考试题库
- XLA编译器用于JIT加速