当前位置: 首页 > news >正文

【目标检测-数据集准备】DIOR转为yolo训练所需格式

【目标检测】DIOR遥感影像数据集,转为yolo系列模型训练所需格式。

在这里插入图片描述
标签文件位于Annotations下,格式为xml,yolo系列模型训练所需格式为txt,格式为

class_id x_center,y_center,w,h

其中,train,text,val按照官方方式划分(DIOR/ImageSets/Main/train.txt),分别含影像5062,5063,11738张。
在DIOR/ImageSets/Main/xx.txt 路径中,txt文件为不包含影像后缀的影像名称,如下图
在这里插入图片描述
yolo训练中需要的train.txt文件内容需要是包括后缀的绝对路径:
在这里插入图片描述

转换代码:
转换中的outpath可以自定义,为后续配置文件中的路径

注意:
(1)将DIOR的影像文件夹改名为images,注意全小写,字母要对
(2)转换后的标签位于影像文件夹下的labels下,不要修改
**images和labels两个文件夹名称不要修改,不要修改,否则会报错:No labels in xx./train.cache

# -*- coding: utf-8 -*-
import xml.etree.ElementTree as ET
import os
from os import getcwdsets = ['train', 'val', 'test']# class names
classes =  ['airplane', 'airport', 'baseballfield', 'basketballcourt', 'bridge', 'chimney', 'dam','Expressway-Service-area', 'Expressway-toll-station', 'golffield', 'groundtrackfield', 'harbor','overpass', 'ship', 'stadium', 'storagetank', 'tenniscourt', 'trainstation', 'vehicle', 'windmill']   # 改成自己的类别
abs_path = os.getcwd()def convert(size, box):dw = 1. / (size[0])dh = 1. / (size[1])x = (box[0] + box[1]) / 2.0 - 1y = (box[2] + box[3]) / 2.0 - 1w = box[1] - box[0]h = box[3] - box[2]x = x * dww = w * dwy = y * dhh = h * dhreturn x, y, w, h#修改路径-----------------------------
datasetpath="E:/dataset/DIOR"
imgpath="E:/dataset/DIOR/images"
outpath="E:/dataset/DIOR/myyolo"def convert_annotation(image_id):in_file = open(datasetpath+'/Annotations/%s.xml' % (image_id), encoding='UTF-8')out_file = open(datasetpath+'/labels/%s.txt' % (image_id), 'w')   #不要修改labels文件夹名称tree = ET.parse(in_file)root = tree.getroot()size = root.find('size')w = int(size.find('width').text)h = int(size.find('height').text)for obj in root.iter('object'):# difficult = obj.find('Difficult').text# cls = obj.find('name').text# if cls not in classes or int(difficult) == 1:#     continuecls = obj.find('name').textif cls not in classes:continuecls_id = classes.index(cls)xmlbox = obj.find('bndbox')b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text),float(xmlbox.find('ymax').text))b1, b2, b3, b4 = b# 标注越界修正if b2 > w:b2 = wif b4 > h:b4 = hb = (b1, b2, b3, b4)bb = convert((w, h), b)out_file.write(str(cls_id) + " " + " ".join([str(a) for a in bb]) + '\n')wd = getcwd()
for image_set in sets:if not os.path.exists(datasetpath+'/labels/'):os.makedirs(datasetpath+'/labels/')image_ids = open(datasetpath+'/ImageSets/Main/%s.txt' % (image_set)).read().strip().split()if not os.path.exists(outpath):os.makedirs(outpath)list_file = open(outpath+'/%s.txt' % (image_set), 'w')for image_id in image_ids:list_file.write(imgpath+'/%s.jpg\n' % (image_id))convert_annotation(image_id)list_file.close()

转换后的text文件:
在这里插入图片描述
建立数据集配置文件DIOR.yaml,路径修改为outpath,

train: E:/dataset/DIOR/myyolo/train.txt
val: E:/dataset/DIOR/myyolo/val.txt# number of classes
nc: 20# class names
names: ['airplane', 'airport', 'baseballfield', 'basketballcourt', 'bridge', 'chimney', 'dam','Expressway-Service-area', 'Expressway-toll-station', 'golffield', 'groundtrackfield', 'harbor','overpass', 'ship', 'stadium', 'storagetank', 'tenniscourt', 'trainstation', 'vehicle', 'windmill']

在训练时将data参数设置为DIOR.yaml即可使用yolo系列模型训练DIOR。YOLOv5,v7,v8通用。

parser.add_argument('--data', type=str, default='data/DIOR.yaml', help='data.yaml path')

相关文章:

【目标检测-数据集准备】DIOR转为yolo训练所需格式

【目标检测】DIOR遥感影像数据集,转为yolo系列模型训练所需格式。 标签文件位于Annotations下,格式为xml,yolo系列模型训练所需格式为txt,格式为 class_id x_center,y_center,w,h其中,train,text&#xff…...

Nacos为什么对于临时实例采用心跳检测,非临时实例采用主动询问?Nacos同时作为配置中心和注册中心有什么坏处?为什么Nacos可以抗住那么高的注册?

Nacos为什么对于临时实例采用心跳检测,非临时实例采用主动询问? Nacos 对于临时实例采用心跳检测,而对于非临时实例采用主动询问,这两种不同的健康检查机制是为了满足不同场景下的服务发现需求。具体分析如下: 临时实例的心跳检测&#xf…...

【NLP】如何实现快速加载gensim word2vec的预训练的词向量模型

1 问题 通过以下代码,实现加载word2vec词向量,每次加载都是几分钟,效率特别低。 from gensim.models import Word2Vec,KeyedVectors# 读取中文词向量模型(需要提前下载对应的词向量模型文件) word2vec_model KeyedV…...

前端实例:页面布局1(后端数据实现)

效果图 注&#xff1a;这里用到后端语言php&#xff08;页面是.php文件&#xff09;,提取纯html也可以用 inemployee_index.php <?php include(includes/session.inc); $Title _(内部员工首页); $ViewTopic 内部员工首页; $BookMark 内部员工首页; include(includes/…...

【调参】如何为神经网络选择最合适的学习率lr-LRFinder-for-Keras

【调参】如何为神经网络选择最合适的学习率lr-LRFinder-for-Keras_学习率选择-CSDN博客文章浏览阅读9.2k次&#xff0c;点赞6次&#xff0c;收藏55次。keras 版本的LRFinder&#xff0c;借鉴 fast.ai Deep Learning course。前言学习率lr在神经网络中是最难调的全局参数&#x…...

【设计模式】Java 设计模式之享元模式(Flyweight)

享元模式&#xff08;Flyweight&#xff09;的深入分析 一、概述 享元模式是一种结构型设计模式&#xff0c;它提供了一种有效的方式来减少在大量对象中产生的内存开销。通过共享尽可能多的对象&#xff0c;享元模式可以使程序更高效地使用内存。享元模式常用于那些创建对象实…...

异次元发卡源码系统/荔枝发卡V3.0二次元风格发卡网全开源源码

– 支付系统&#xff0c;已经接入易支付及Z支付免签接口。 – 云更新&#xff0c;如果系统升级新版本&#xff0c;你无需进行繁琐操作&#xff0c;只需要在你的店铺后台就可以无缝完成升级。 – 商品销售&#xff0c;支持商品配图、会员价、游客价、邮件通知、卡密预选&#…...

腾讯春招后端一面(八股篇)

前言 前几天在网上发了腾讯面试官问的一些问题&#xff0c;好多小伙伴关注&#xff0c;今天对这些问题写个具体答案&#xff0c;博主好久没看八股了&#xff0c;正好复习一下。 面试手撕了三道算法&#xff0c;这部分之后更&#xff0c;喜欢的小伙伴可以留意一下我的账号。 1…...

“风口”上的量化大厂“绣球”抛向中低频人才

量化人才这几年是人才舞台上的“香饽饽”。 遵循着低频不如高频、小厂不如大厂的薪资逻辑&#xff0c;各路人才被各路机构“哄抢”&#xff0c;薪资一路走高。 但2024年的“信号”再强烈不过——量化大厂们到了改变的时候了。 而量化大厂们显然对此已“心知肚明”....... “…...

obdiag如何实现一键采集20+故障场景的诊断信息——《OceanBase诊断系列》之九

作者简介&#xff1a;靖顺&#xff0c;OcenaBase 开发工程师&#xff0c;专注于数据库诊断与调优 1. 前言 在2024年初&#xff0c;我与一线运维人员交流时&#xff0c;他们纷纷提及在运维过程中遭遇的难题——OceanBase出现问题时&#xff0c;排查工作不容易&#xff0c;有时需…...

Cookie和Session的获取方法

1、Cookie的简单获取方法&#xff08;可以获取到所有的cookie&#xff09; &#xff08;1&#xff09;在参数里还有HttpServletResponse response这些&#xff0c;这些都是内置对象需要就拿不需要就删掉就可以&#xff0c;在这里我们用到的是HttpServletRequest request &…...

旅游市场游客满意度调查报告

民安智库开展游客满意度调查主要通过问卷调查的方式进行&#xff0c;在设计问卷时&#xff0c;应确保问题覆盖游客在某省旅游过程中可能遇到的各个方面&#xff0c;包括交通、住宿、餐饮、旅游景点、导游服务等。此外&#xff0c;还可以设置一些开放性问题&#xff0c;让游客提…...

为什么选用python开发web?

目前&#xff0c;不少公司在用python做web开发&#xff0c;前司用pythonflask做内容审核的后端。 java和php在web开发领域积累较久&#xff0c;有丰富的web开发生态组件可以使用&#xff0c;性能稳定&#xff0c;扩展性强&#xff0c;这个是事实&#xff0c;从这方面来讲&…...

C# Chart曲线控件专题

1.控件基本设置 chart1.ChartAreas[0].AxisY.IsStartedFromZero false; //设置Y轴自适应chart1.Series["瞬时值"].BorderWidth 2; // 设置曲线宽度为2个像素&#xff0c;注意[]中写入的Series的Namechart1.Series["瞬时值"].Color Color.Red; // 设置曲…...

Spring:StopWatch

文章目录 一、介绍二、使用1、导入相关的Spring包2、创建StopWatch实例和开始计时3、停止计时4、获取时间5、获取任务详情6、分阶段计时7、获取总耗时与各阶段耗时 三、案例 一、介绍 在Spring框架中&#xff0c;StopWatch类通常用于测量代码块的执行时间。您可以使用StopWatc…...

考研C语言复习进阶(5)

目录 1. 为什么使用文件 2. 什么是文件 2.1 程序文件 2.2 数据文件 2.3 文件名 3. 文件的打开和关闭 3.1 文件指针 3.2 文件的打开和关闭 4. 文件的顺序读写 ​编辑 ​编辑 4.1 对比一组函数&#xff1a; ​编辑 5. 文件的随机读写 5.1 fseek 5.2 ftell 5.3 rewind…...

[uni-app] 小程序码转为二维码, 小程序解析此码获取数据

小程序码缩小后太细, 不好扫, 还是改成二维码扫 记录解析该二维码 onLoad(e) {if (e.shareTimeline) { // 以单页面启动-朋友圈分享出的单页面this.shareTimeline e.shareTimeline;let param {certId: e.certId,uid: e.uid,unionid: e.unionid,openid: e.openid,}this.initD…...

【四 (3)数据可视化之 Seaborn 常用图表及代码实现 】

目录 文章导航一、介绍二、安装Seaborn三、导入Seaborn四、设置可以中文显示五、占比类图表1、饼图2、环形图 六、比较排序类1、条形图2、箱线图3、小提琴图 七、趋势类图表1、折线图 八、频率分布类1、直方图 九、关系类图表1、散点图2、成对关系图3、热力图 文章导航 【一 简…...

ASP.NET-Server.HtmlEncode

目录 背景: 1.转义特殊字符&#xff1a; 2.防止跨站脚本攻击&#xff08;XSS&#xff09;&#xff1a; 3.确保输出安全性&#xff1a; 4.保留原始文本形式&#xff1a; 5.与用户输入交互安全&#xff1a; 实例说明: 不用Server.HtmlEncode 效果展示: 用Server.HtmlEnc…...

Linux下进行JavaEE开发-安装JDK、Tomcat、MySQL

目录 JDKTomcatMySQL JDK 安装JDK步骤&#xff1a; 1、创建目录mkdir /opt/jdk 2、将jdk压缩包通过xftp6上传到该目录 3、cd /opt/jdk 4、tar -zxvf jdk-8u151-linux-x64.tar.gz 5、mkdir /usr/local/java 6、mv /opt/jdk/jdk1.8.0_151 /usr/local/java 7、修改环境变量…...

PHP serialize进行序列化工作的完全指南

如果你和我一样&#xff0c;第一次在 PHP 中看到序列化字符串时会觉得很困惑。我当时在做一个 Laravel 项目&#xff0c;想搞清楚将任务推送到队列时到底发生了什么。我发现一些数据被序列化了&#xff0c;但不知道为什么以及怎么工作的。不过在我花时间研究序列化后&#xff0…...

别只盯着 Claw 了,这波“真香”技能才是真的生产力神器!

手把手教你一键部署OpenClaw&#xff0c;连接微信、QQ、飞书、钉钉等&#xff0c;1分钟全搞定&#xff01; 说白了&#xff0c;各家大厂出的 Claw 产品&#xff0c;核心逻辑就是“AI 大模型 技能插件”。模型是地基&#xff0c;而你用得爽不爽&#xff0c;全看这些技能给不给…...

VL53L1X_mbed驱动开发:嵌入式ToF测距实战指南

1. VL53L1X_mbed 库深度解析&#xff1a;面向嵌入式工程师的ToF激光测距驱动开发指南VL53L1X 是 STMicroelectronics 推出的第二代飞行时间&#xff08;Time-of-Flight, ToF&#xff09;激光测距传感器&#xff0c;采用 940nm 不可见红外 VCSEL 光源与单光子雪崩二极管&#xf…...

OpenClaw+千问3.5-27B学习助手:自动整理笔记与生成思维导图

OpenClaw千问3.5-27B学习助手&#xff1a;自动整理笔记与生成思维导图 1. 为什么需要AI学习助手&#xff1f; 去年准备技术认证考试时&#xff0c;我发现自己陷入了"资料沼泽"——收集了87个PDF、42小时视频课程和无数网页书签&#xff0c;但真正消化吸收的内容不到…...

Qt网络聊天室实战:如何优雅地实现聊天列表动态加载与滚动优化?

Qt网络聊天室实战&#xff1a;高性能聊天列表的架构设计与优化实践 1. 现代聊天界面的性能挑战与设计哲学 在即时通讯应用开发中&#xff0c;聊天列表的性能表现直接影响用户体验。当列表项超过100条时&#xff0c;传统实现方式往往会出现明显的滚动卡顿、内存占用飙升等问题。…...

glm-5-free不输付费版!DMXAPIAI模型聚合平台,如何调用免费大模型API?

中关村论坛发布AutoGLM 沉思智能体&#xff0c;具备深度研究与电脑操作双重能力&#xff0c;GLM-5.1 编程能力与全球顶尖模型 Claude Opus 4.6 差距仅2.6 分&#xff0c;整体呈现技术迭代、商业化与资本市场的全面提速态势。智谱AI正式推出GLM-5-free开源模型&#xff0c;凭借与…...

LIS302DL加速度计I²C驱动库LS302i2c详解

1. LS302i2c 库概述&#xff1a;面向嵌入式系统的 LIS302DL IC 加速度计驱动实现LS302i2c 是一个专为 STM32 及兼容 Cortex-M 微控制器设计的轻量级、可移植 IC 接口加速度计驱动库&#xff0c;其核心目标是为 STMicroelectronics 的 LIS302DL 三轴数字加速度传感器提供稳定、低…...

AD7190高精度ADC嵌入式驱动设计与SPI时序实战

1. AD7190高精度Σ-Δ模数转换器嵌入式驱动深度解析AD7190是Analog Devices公司推出的超低噪声、24位分辨率、最高采样率4.8 kHz的Σ-Δ型模数转换器&#xff08;ADC&#xff09;&#xff0c;内置可编程增益放大器&#xff08;PGA&#xff09;、基准电压源、数字滤波器及灵活的…...

Elasticsearch-PHP聚合分析终极指南:7步掌握数据统计与可视化

Elasticsearch-PHP聚合分析终极指南&#xff1a;7步掌握数据统计与可视化 【免费下载链接】elasticsearch-php Official PHP client for Elasticsearch. 项目地址: https://gitcode.com/gh_mirrors/el/elasticsearch-php Elasticsearch-PHP是官方PHP客户端&#xff0c;提…...

Kimi-VL-A3B-Thinking实战教程:Chainlit中集成历史对话与文件上传功能

Kimi-VL-A3B-Thinking实战教程&#xff1a;Chainlit中集成历史对话与文件上传功能 1. 引言&#xff1a;让图文对话模型真正“好用”起来 如果你已经用vllm部署了Kimi-VL-A3B-Thinking这个强大的图文对话模型&#xff0c;并且通过Chainlit搭建了前端界面&#xff0c;那么恭喜你…...