目标检测数据集制作(VOC2007格式数据集制作和处理教程)

news2024/11/17 12:27:29
  • VOC2007数据集结构(目标检测+图像分割)
  • #VOC2007数据集结构如下:
    VOC2007
    	|-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
    				 #标注完成后JPEGImages每张图片在此都有一一对应的xml文件
    	|-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
    		|-Layout#存放的是具有人体部位的数据(如人的head、hand、feet等等)
    		|-Main#存放的是图像物体识别的数据
    		|-Segmentation#存放的是可用于分割的数据
    	|-JPEGImages#存放的是原图片
    	|-SegmentationClass#按类别进行图像分割,同一类别的物体会被标注为相同颜色
    	|-SegmentationObject#按对象进行图像分割,即使是同一类别的物体会被标注为不同的颜色。

    本次的是目标检测,对应的如下结构

  • #VOC2007数据集结构如下:
    VOC2007
    	|-Annotations#里面存放的是每一张图片对应的标注结果,为XML文件,
    				 #标注完成后JPEGImages每张图片在此都有一一对应的xml文件
    	|-ImageSets#存放的是每一种类型对应的图像数据,为txt文件
    		|-Main#存放的是图像物体识别的数据
    	|-JPEGImages#存放的是原图片

    1、安装工具

此次数据标注使用labelImg工具,我是在pycharm终端中进行pip安装的,安装方式很多,就不一一列举了,还需要安装lxml库和pytq可以,安装步骤如下:

pip3 install labelImg

pip install lxml

pip install pytq

进入标注工具,只需要在pycharm终端处输入LabelImg,LabelImg工具自动弹出打开,如下:

2、数据集准备

在VOC2007文件夹下创建这三个文件夹:

  • Annotations文件夹该文件下存放的是xml格式的标签文件,每个xml文件都对应于JPEGImages文件夹的一张图片。
  • JPEGImages文件夹:该文件夹下存放的是数据集图片(原图),包括训练和测试图片。把原图数据放到此文件夹下
  • ImageSets文件夹该文件夹下存放了三个文件,分别是Layout、Main、Segmentation。在这里我们只用存放图像数据的Main文件

ImageSets下创建Main文件夹,在该文件夹下创建如下4个txt文件:

  • test.txt:测试集
  • train.txt:训练集
  • val.txt:验证集
  • trainval.txt:训练和验证集

对数据重命名

  • 处理代码:
import os

path = r"D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\JPEGImages"  # JPEGImages文件夹所在路径
filelist = os.listdir(path)  # 该文件夹下所有的文件(包括文件夹)
count = 0
for file in filelist:
    print(file)
for file in filelist:  # 遍历所有文件
    Olddir = os.path.join(path, file)  # 原来的文件路径
    if os.path.isdir(Olddir):  # 如果是文件夹则跳过
        continue
    filename = os.path.splitext(file)[0]  # 文件名
    filetype = '.jpg'  # 文件扩展名
    Newdir = os.path.join(path, str(count).zfill(6) + filetype)  # 用字符串函数zfill 以0补全所需位数
    os.rename(Olddir, Newdir)  # 重命名
    count += 1

4、数据标注

  • 添加标注数据集

安装好的工具,输入LabelImge打开标注工具,然后添加需要标注的数据文件夹,数据原图是放在JPEGImages‘文件夹中的,操作如下图:
在这里插入图片描述

  • 标注方式选择
    标注方式选择Create rectBox矩形标注,或者选择快捷键w键快速标注:

在这里插入图片描述

  • 标注及标签设置
    用框框住标注目标,标注完成后,弹出标签值框,输入需要添加的标签,点击ok:
  • 标注结果保存
    标注结果默认方式每一次保存都需要选择保存文件夹,快捷键选择默认保存文件夹,使用快捷键Ctrl+r键,选择默认保存的文件夹为Annotation:
  • 在这里插入图片描述第一次标注设置好后,接下来就是快速标注,快捷键:
    w键选择标注,Ctrl+s键保存,d键切换下一张图片直到标注完成。
  • 标注结果展示
    标注好后,标注结果保存在VOC2007下的Annotation文件内,内容展示如下:

5、数据处理

  • 对标注结果xml文件夹进行数据处理
    import os
    import random
    
    trainval_percent = 0.9  # 验证集和训练集占的百分比
    train_percent = 0.7  # 训练集占的百分比
    xmlfilepath = r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\Annotations'  # Annotation文件夹所在位置
    txtsavepath = r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main'  # ImageSets文件下的Main文件夹所在位置
    total_xml = os.listdir(xmlfilepath)
    
    num = len(total_xml)
    list = range(num)
    tv = int(num * trainval_percent)
    tr = int(tv * train_percent)
    trainval = random.sample(list, tv)
    train = random.sample(trainval, tr)
    # Main文件夹下所对应的四个txt文件夹路径
    ftrainval = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\trainval.txt', 'w')
    ftest = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\test.txt', 'w')
    ftrain = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\train.txt', 'w')
    fval = open(r'D:\pythonProject\ssd-pytorch\VOCdevkit\VOC2007\ImageSets\Main\val.txt', 'w')
    
    for i in list:
        name = total_xml[i][:-4] + '\n'
        if i in trainval:
            ftrainval.write(name)
            if i in train:
                ftrain.write(name)
            else:
                fval.write(name)
        else:
            ftest.write(name)
    
    ftrainval.close()
    ftrain.close()
    fval.close()
    ftest.close()

    至此,VOC2007格式数据集制作完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1418077.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文笔记:TimeGPT-1

时间序列的第一个基础大模型 1 方法 最basic的Transformer架构 采用了公开可用的最大时间序列数据集进行训练,包含超过1000亿个数据点。 训练集涵盖了来自金融、经济、人口统计、医疗保健、天气、物联网传感器数据、能源、网络流量、销售、交通和银行业等广泛领域…

人工智能趋势报告解读:ai野蛮式生长的背后是机遇还是危机?

近期,Enterprise WordPress发布了生成式人工智能在营销中的应用程度的报告,这是一个人工智能迅猛发展的时代,目前人工智能已经广泛运用到内容创作等领域,可以预见的是人工智能及其扩展应用还将延伸到我们工作与生活中的方方面面。…

【C++】C++入门基础讲解(二)

💗个人主页💗 ⭐个人专栏——C学习⭐ 💫点击关注🤩一起学习C语言💯💫 导读 接着上一篇的内容继续学习,今天我们需要重点学习引用。 1. 引用 在C中,引用是一种特殊的变量&#xff…

成都直播产业园解析直播供应链金融服务,天府锋巢直播产业基地打造“金融+产业+生态”新型模式

天府锋巢直播产业基地如何打造“金融产业生态”新型模式? 本文将为您全面解析基地提供的成都直播产业园供应链金融服务 锋巢资讯~每周准时报道~~ 赶紧下拉,阅读全文 Q:企业入驻园区能获得哪些直播供应链金融服务&…

如何注册海外苹果账号下载软件?

国内的苹果Appstore有严格的上线审查,导致很多软件不支持。只能通过海外的苹果账号登录后下载。 比如chatgpt还有加密资产的大部分软件。 其实自己注册一个很简单。 一、注册国内Apple ID 打开苹果官网,https://appleid.apple.com 注册一个中国区的A…

【机器学习】正则化

正则化是防止模型过拟合的方法,它通过对模型的权重进行约束来控制模型的复杂度。 正则化在损失函数中引入模型复杂度指标,利用给W加权值,弱化了数据的噪声,一般不正则化b。 loss(y^,y):模型中所有参数的损失函数&…

【代码审计】小白友好的根据CNVD审计BEESCMS

BEESCMS源码下载 目录 ①BEESCMS后台登录存在SQL注入漏洞(CNVD-2020-62375) ②BEESCMS存在任意文件删除漏洞(CNVD-2020-33193) ③BEESCMS存在文件上传漏洞(CNVD-2018-18082) ④BEESCMS企业网站管理系统存在文件包含漏洞(CNVD-2020-64781) ①BEESCMS后台登录存在SQL注入漏洞…

Python接口自动化框架设计到开发

1.如何设计一个接口自动化测试框架 根据接口地址、接口类型、请求数据、预期结果来进行设计,对于需要登录后才能进行操作的接口那么则需要进行header cookie等数据的传递,自动化测试的难点就是数据依赖。 2.python操作excel获得内容 首先python操作exce…

SSL加密证书免费申请

首先,让我们来了解一下SSL证书的基本作用。SSL证书通过公钥和私钥的非对称加密技术,使得服务器与浏览器之间的通信内容得到高强度加密,同时验证网站的真实身份,从而提升用户的信任度,也是搜索引擎排名优化的一个重要因…

JSP和JSTL板块:第一节 JSP追根溯源 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 JSP和JSTL:第一节 JSP主要内容 一、什么是JSP二、IDEA的JSP相关配置1.UTF-8编码2.JSP代码模板 三、JSP的底层是Servlet四、Jsp的注释1.显式注释2.隐式注释 五、Scriptlet : 写在Jsp里的java脚本段 一、什么是JSP JSP: Java Server Page。SUN 公司提供的动态…

C语言实现快速排序算法(附带源代码)

快速排序 在区间中随机挑选一个元素作基准,将小于基准的元素放在基准之前,大于基准的元素放在基准之后,再分别对小数区与大数区进行排序。 动态效果过程演示: 快速排序(Quick Sort)是一种常用的排序算法&…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-3 getBoundingClientRect()

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>getBoundingClientRect()</title> </head> <script>function getRect(){var obj document.getElementById(example); //获取元素对象var objR…

路灯哪个牌子好?五款好用新年台灯推荐

自从娃进入小学&#xff0c;学习和视力是群里妈妈们永远不变的两大话题&#xff0c;特别是视力话题&#xff0c;常常能炸出“深潜”已久的爸爸们加入讨论。最近这几年&#xff0c;孩子的近视率又提高了&#xff01;根据国家卫健委的报道&#xff0c;儿童青少年近视总体发生率高…

Walrus 0.5发布:重构交互流程,打造开箱即用的部署体验

开源应用管理平台 Walrus 0.5 已于近日正式发布&#xff01; Walrus 0.4 引入了全新应用模型&#xff0c;极大程度减少了重复的配置工作&#xff0c;并为研发团队屏蔽了云原生及基础设施的复杂度。Walrus 0.5 在这一基础上&#xff0c;通过重构交互流程、增强抽象能力&#xff…

COW AI接入到微信 保姆教程 (部署在服务器,插件安装)

此文章不涉及国外的AI模型&#xff0c;也无需翻墙&#xff0c;跟某AI模型无关&#xff0c;审核大哥别弄错了 最近的AI开始越开越火了&#xff0c;开始介入到我们生活中的方方面面。就有人好奇AI是否能接入到微信吗&#xff1f;我在GitHub上搜索的时候还真有除了对话外还可以通…

编译Opencv3.3 版本遇到的Cuda版本变更导致:CUDA_nppicom_LIBRARY (ADVANCED)链接找不到的问题根本解法:

前言&#xff1a; Opencv 开源库的使用是必须的&#xff0c;但是&#xff0c;开源项目的特性&#xff0c;造成&#xff0c;版本的依赖性比较复杂&#xff0c; 尤其是针对某一款老硬件的SDK&#xff0c;往往随着某个开源库的使用&#xff0c;导致&#xff0c;无法编译的问题&am…

Windows XP x86 sp3 安装 Python3.4.4

1 下载 Python3.4.4&#xff0c;下载地址&#xff0c;点击红色部分。 Python Release Python 3.4.4 | Python.org 2 一路 Next&#xff0c;将 C:\Python34 和 C:\Python34\Scripts 加入环境变量。 3 python 查看版本&#xff0c;python -m pip list 查看安装的包。 4 其他(打…

关东升老师Python著作推荐(由电子工业出版社出版)

前言&#xff1a;关东升老师简单介绍 一个在IT领域摸爬滚打20多年的老程序员、软件架构师、高级培训讲师、IT作家。熟悉Java、Kotlin、Python、iOS、Android、游戏开发、数据库开发与设计、软件架构设计等多种IT技术。参与设计和开发北京市公交一卡通百亿级大型项目&#xff0c…

OpenAI、斯坦福大学提出Meta-Prompting,有效提升语言模型的性能

为了研究如何提高语言模型的性能&#xff0c;使其更充分有效地输出对于提问的回答&#xff0c;来自斯坦福和 OpenAI 的学者强强联手&#xff0c;通过提出一种名为元提示&#xff08;meta-prompting&#xff09;的方法来深入探索。元提示通过让单个语言模型&#xff08;如 GPT-4…

微信小程序(二十二)获取全局实例

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.全局实例的定义位置 2.全局实例中数据的修改方法 源码&#xff1a; app.js App({//数据可以包括在第二级globalData:{userInfo:null,token:1243,userInfo:null},//globalData并不是关键词&#xff0c;数据可以…