标签工具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框架上训练相关推荐

  1. 使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络

    使用 PyTorch 数据读取,JAX 框架来训练一个简单的神经网络 本文例程部分主要参考官方文档. JAX简介 JAX 的前身是 Autograd ,也就是说 JAX 是 Autograd 升级版本 ...

  2. 从本地加载FASHION MNIST数据集并输入到模型进行训练

    文章目录 1.概要 2.代码 2.1 数据集加载及展示 2.2模型训练 3. 源文件和训练结果 1.概要 本文将简要介绍fashion minist数据集,从本地加载此数据集,并将其输入到一个简单的分 ...

  3. 深入云原生 AI:基于 Alluxio 数据缓存的大规模深度学习训练性能优化

    作者 | 车漾(阿里云高级技术专家).顾荣(南京大学 副研究员) 导读:Alluxio 项目诞生于 UC Berkeley AMP 实验室,自开源以来经过 7 年的不断开发迭代,支撑大数据处理场景的数 ...

  4. 阿里云原生实践:基于 Alluxio 数据缓存的大规模深度学习训练性能优化

    导读:Alluxio 项目诞生于 UC Berkeley AMP 实验室,自开源以来经过 7年的不断开发迭代,支撑大数据处理场景的数据统一管理和高效缓存功能日趋成熟.然而,随着云原生人工智能(Clou ...

  5. php制作标签,ThinkPHP标签制作教程

    搜索热词 本文以实例讲解了ThinkPHP标签的制作方法,对于ThinkPHP的初学者或者开发人员都有一定的借鉴价值. 一般来说,ThinkPHP的默认标签解析器在Lib/Template/TagLi ...

  6. 下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

    下载MNIST数据集并使用python将数据转换成NumPy数组 首先来分析init_mnist函数 接下来继续分析load_mnist函数 实现数据集转换的python脚本的代码 显示MNIST图像 ...

  7. 深度学习vad人声检测之标签制作

    深度学习几乎渗透到了各行各业,最火热的莫过于视觉算法.然而,音频相关的很多处理算法也逐渐被深度学习所浸润,vad作为音频前处理的一个操作得到了很广泛的应用,比较典型的vad检测算法是通过提取特征,构造 ...

  8. yolov3从头实现(一)-- xml标签制作与读取

    标签制作与读取 这里说的标签制作并非yolov3所需要的标签,而是一般的没有处理的标签 一.标签的制作 1.制作工具及制作结果 制作工具使用的是:labelImg 用labelimg制作完成后的标签 ...

  9. yolov3从头实现(三)-- yolov3标签制作

    yolov3标签制作 一 .自定义anchors yolov3中需要自己定义不同特征尺度下的anchor的大小 而anchor的大小时根据标注数据集聚类得出来的,可以理解成在标注数据集中的大多数标注框 ...

最新文章

  1. 【开源】Winform甘特日程控件GanttPlanner V1.0发布
  2. Vue Angular 双向绑定检测不到对象属性的添加和删除
  3. 树莓派 使用读卡器修改WIFI连接配置
  4. SAP ABAP STOP,EXIT,CHECK,RETURN
  5. XSS跨站脚本(web应用)——会话管理(一)
  6. linux文件系统的管理方法,Linux学习笔记:2.文件系统的管理命令(2)
  7. 表面配准论文1--基于高阶图匹配方法的稠密表面配准
  8. 开源好用的思维导图软件XMind
  9. 那个一年发四篇Cell的研究生,后来怎么样了?
  10. 知名的开源apm(Application Performance Management)工具
  11. Css(常用的特殊效果)
  12. poj 1511 Invitation Cards spfa比基础题难一些!!练练手挺好
  13. Spring源代码地址
  14. web渗透--rpcbind利用
  15. ⑥tiny4412 Linux驱动开发之LCD(framebuffer)驱动程序
  16. 【考研政治】马克思主义基本原理概论——导论篇
  17. Android谷歌地图地理编码,使用谷歌地图api iOS反向地理编码
  18. find linux 指定后缀_文件查找:find命令,文件名后缀
  19. 2021-11-27 2021年施工员-装饰方向-岗位技能(施工员)考试题及施工员-装饰方向-岗位技能(施工员)考试题库
  20. XLA编译器用于JIT加速

热门文章

  1. Vue入门之组件化开发
  2. webpack中配置vue
  3. Windows11系统的分区调整
  4. 一般市区有测速吗_一般红绿灯下有测速的吗
  5. ucore物理内存管理
  6. 怎么在线压缩视频文件
  7. Heartbeat 安装教程
  8. Python 匹配邮箱 正则
  9. 无线蓝牙耳机什么品牌好用,无线蓝牙耳机排行榜
  10. 卸载安卓平板自带应用