[DIOR | DIOR-R]旋转目标检测数据集——基于YOLOv8obb,map50已达81.8%

DIOR是一个用于光学遥感图像目标检测的大规模基准数据集。涵盖20个对象类。这20个对象类是飞机、机场、棒球场、篮球场、桥梁、烟囱、水坝、高速公路服务区、高速公路收费站、港口、高尔夫球场、地面田径场、天桥、船舶、体育场、储罐、网球场、火车站、车辆和风磨。

1. DIOR简介

1.1 数据说明

DIOR由23463张遥感图像和190288个目标实例组成,这些目标实例用轴向对齐的边界框手动标记,由192472个轴对齐的目标边界框注释组成。数据集中图像大小为800×800像素,空间分辨率为0.5m ~ 30m。该数据集分为训练验证集(11725张图像)和测试集(11738张图像)。

https://arxiv.org/ftp/arxiv/papers/1909/1909.00133.pdf

DIOR-R数据集是在DIOR数据集的基础上,对目标实例重新标注边框,采用旋转框标注,这样避免了水平框的重叠问题。

https://arxiv.org/pdf/2110.01931.pdf

1.2 DIOR-R数据格式

下载地址:

http://www.escience.cn/people/gongcheng/DIOR.html

解压后,标签内的Horizontal Bounding Boxes为水平框,Oriented Bounding Boxes为旋转框,如下所示为旋转框示例,可以看到相关的信息,如坐标、角度、标签等信息。

2.DIOR-R数据处理

2.1 处理成如下格式

133 237 684 237 684 672 133 672 golffield 0

处理代码如下:

import os
import xml.etree.ElementTree as ET
# 输入文件夹和输出文件夹路径
input_folder = 'xmls'
output_folder = 'labels'
# 确保输出文件夹存在
os.makedirs(output_folder, exist_ok=True)
# 遍历输入文件夹中的所有XML文件
for xml_file in os.listdir(input_folder):if xml_file.endswith(".xml"):xml_path = os.path.join(input_folder, xml_file)# 读取XML文件tree = ET.parse(xml_path)root = tree.getroot()# 构建输出txt文件路径txt_file = os.path.join(output_folder, os.path.splitext(xml_file)[0] + '.txt')# 打开txt文件进行写入with open(txt_file, 'w') as f:# 循环遍历每个object节点for obj in root.findall('.//object'):# 提取需要的信息x_left_top = obj.find('.//x_left_top').texty_left_top = obj.find('.//y_left_top').textx_right_top = obj.find('.//x_right_top').texty_right_top = obj.find('.//y_right_top').textx_right_bottom = obj.find('.//x_right_bottom').texty_right_bottom = obj.find('.//y_right_bottom').textx_left_bottom = obj.find('.//x_left_bottom').texty_left_bottom = obj.find('.//y_left_bottom').textname = obj.find('.//name').textangle = obj.find('.//angle').text# 写入到txt文件line = f"{x_left_top} {y_left_top} {x_right_top} {y_right_top} {x_right_bottom} {y_right_bottom} {x_left_bottom} {y_left_bottom} {name} {angle}\n"f.write(line)
print("批量转换完成。")

 2.2进行obb格式的转换

转换后的结果如下:

9 0.16625 0.29625 0.855 0.29625 0.855 0.84 0.16625 0.84

转换代码如下所示:

from ultralytics.data.converter import convert_dota_to_yolo_obb
convert_dota_to_yolo_obb('C:\myyolo\ultralytics-main\dataobb')
#关于dataobb文件下的目录可参考https://blog.csdn.net/qq_41301570/article/details/135540398

对应的convert_dota_to_yolo_obb函数下的class_mapping修改如下:

class_mapping = {"airplane": 0,"airport": 1,"baseballfield": 2,"basketballcourt": 3,"bridge": 4,"chimney": 5,"dam": 6,"Expressway-Service-area": 7,"Expressway-toll-station": 8,"golffield": 9,"groundtrackfield": 10,"harbor": 11,"overpass": 12,"ship": 13,"stadium": 14,"storagetank": 15,"tenniscourt": 16,"trainstation": 17,"vehicle": 18,"windmill": 19,}
9 0.16625 0.29625 0.855 0.29625 0.855 0.84 0.16625 0.84

2.3进行训练

如果你不想浪费时间进行数据的处理,可私戳!!!

from ultralytics import YOLO
import os
​
def main():model = YOLO('yolov8s-obb.yaml').load('yolov8s-obb.pt')  # build from YAML and transfer weightsmodel.train(data='dior8-obb.yaml', epochs=300, imgsz=[1280, 659], batch=4, workers=4)
if __name__ == '__main__':main()

 2.4进行验证

from ultralytics import YOLO
def main():model = YOLO(r'runs/obb/train/weights/best.pt')model.val(data='dior8-obb.yaml', imgsz=1024, batch=4, workers=4)
if __name__ == '__main__':main()

 2.5测试集上的表现

最后:

如果你想要进一步了解更多的相关知识,可以关注下面公众号联系~会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

5a8015ddde1e41418a38e958eb12ecbd.png

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

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

相关文章

常见の算法链表问题

时间复杂度 1.链表逆序 package class04;import java.util.ArrayList; import java.util.List;public class Code01_ReverseList {public static class Node {public int value;public Node next;public Node(int data) {value data;}}public static class DoubleNode {publi…

Java 字符串 05 练习-遍历字符串和统计字符个数

代码: import java.util.Scanner; public class practice{public static void main(String[] args) {//键盘录入一个字符串,并进行遍历;Scanner input new Scanner(System.in);System.out.println("输入一个字符串:")…

webassembly003 whisper.cpp的main项目-1

参数设置 /home/pdd/le/whisper.cpp-1.5.0/cmake-build-debug/bin/main options:-h, --help [default] show this help message and exit-t N, --threads N [4 ] number of threads to use during computation-p N, --processors …

Android App开发-简单控件(2)——视图基础

2.2 视图基础 本节介绍视图的几种基本概念及其用法,包括如何设置视图的宽度和高度,如何设置视图的外部间距和内部间距,如何设置视图的外部对齐方式和内部对齐方式等等。 2.2.1 设置视图的宽高 手机屏幕是块长方形区域,较短的那…

【星海随笔】unix 启动问题记录.

启动Ubuntu操作系统时,直接进入GRUB状态。 调试时候,曾显示 no bootable device no known filesystem detected 注意: 目前 GRUB 分成 GRUB legacy 和 GRUB 2。版本号是 0.9x 以及之前的版本都称为 GRUB Legacy ,从 1.x 开始的就称…

NODE笔记 2 使用node操作飞书多维表格

前面简单介绍了node与简单的应用,本文通过结合飞书官方文档 使用node对飞书多维表格进行简单的操作(获取token 查询多维表格recordid,删除多行数据,新增数据) 文章目录 前言 前两篇文章对node做了简单的介绍&#xff…

eNSP学习——配置通过STelnet登陆系统

目录 背景 实验内容 实验目的 实验步骤 实验拓扑 详细配置过程 基础配置 配置SSH server 配置SSH client 配置SFTP server 与client 背景 由于Telnet缺少安全的认证方式,而且传输过程采用的是TCP进行明文传输。单纯的提供Telnet服务容易招致主机IP地址欺骗、路…

数据分析 - 图形化解释(后续添加)

图形化解释 作为数据分析师来说一个好的图形,就是自己的数据表达能力 简单文本 只有一两项数据需要分享的时候,简单的文本是最佳的沟通方法 下图的对比可以看出来文字的表达效果会好很多 散点图 散点图在展示两件事的关系时很有用,观察是否存…

【搞懂设计模式】命令模式:从遥控器到编程的妙用!

我们都熟悉电视遥控器,它有许多按钮,每个按钮都有确定的功能。你按下电源键电视就会打开,再按下一次电视就会关闭。编程世界里也有这种模式,这就是我们说的命令模式。 命令模式是一种设计模式,它把一个请求或操作封装…

以梦为码,CodeArts Snap 缩短我与算法的距离

背景 最近一直在体验华为云的 CodeArts Snap,逐渐掌握了使用方法,代码自动生成的准确程度大大提高了。 自从上次跟着 CodeArts Snap 学习用 Python 编程,逐渐喜欢上了 Python。 我还给 CodeArts Snap 起了一个花名: 最佳智能学…

计算机服务器中了halo勒索病毒怎么办,halo勒索病毒解密处理流程

计算机技术的发展与应用为企业的生产生活提供了坚实基础,但同时也为网络安全威胁制造了有利条件。近期,网络上的勒索病毒非常嚣张,给企业的计算机服务器带来严重威胁。近日,云天数据恢复中心接到山东某制造公司的求助,…

Oracle DG环境下的秘钥管理

今天有朋友问到1)DG环境下的秘钥管理需要注意什么,2)秘钥管理对DG的日志同步有影响吗? 对于2)的回答是明确的,没有影响。秘钥的管理和DG的redo log shipping完全是两套机制。在最新版的Oracle Key Vault常…

Qlik Sense : ErrorCode(错误变量)

错误变量 所有错误变量的值在脚本执行之后依然保留。第一个变量 ErrorMode 由用户输入,最后三个变量是 Qlik Sense 的输出(包括脚本中错误的信息)。 使用每个变量的下拉列表可查看每个变量的简短描述和语法。单击语法描述中的变量名称可了解…

Vulnhub靶机:FunBox10

一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:FunBox10(10.0.2.35) 目标:获取靶机root权限和flag 靶机下载地址:https://download.vulnhub.com/funbo…

Effective C++——关于重载赋值运算

令operator返回一个*this的引用 在重载,,*等运算符时&#xff0c;令其返回一个指向this的引用。 class MyClass {int* val; public:MyClass(int i) : val(new int(i)){}MyClass():val(new int(0)){}void print() {cout << *val << endl;}MyClass& operator(co…

LabVIEW电液比例阀测试系统

电液比例阀与普通阀和伺服阀相比&#xff0c;比例阀展现出显著的耐污染和可靠性特点。为了满足这些比例阀的综合性能测试需求&#xff0c;开发了一种基于LabVIEW软件的电液比例阀综合性能试验台。这个系统不仅能够进行比例压力阀、流量阀和方向阀的性能测试&#xff0c;而且通过…

RabbitMQ 笔记一

概览&#xff1a; MQ基本概念 RabbitMQ入门 基本工作模 1.MQ是什么&#xff1f; MQ:Message Queue, 存储消息的中间件&#xff0c;是消息发送过程中的暂存容器&#xff0c;主要用于解决分布式系统进程间的通信。 分布式系统通信的两种方式&#xff1a;直接远程调用、借助第三…

01:云计算底层技术奥秘|虚拟化管理|公有云概述

云计算底层技术奥秘&#xff5c;虚拟化管理&#xff5c;公有云概述 虚拟化平台安装验证虚拟化支持 Linux虚拟机创建虚拟机磁盘虚拟机配置文件创建虚拟机 公有云简介 虚拟化平台安装 虚拟化&#xff1a;是一种技术 就是将不可拆分的实体资源变成可以自由划分的逻辑资源&#xf…

one-stage/two-stage区别

One-stage和Two-stage是目标检测中的两种主要方法&#xff0c;它们在处理速度和准确性上存在显著差异。以下是两者的主要区别&#xff1a; 处理流程&#xff1a;One-stage方法通过卷积神经网络直接提取特征&#xff0c;并预测目标的分类与定位&#xff0c;一步到位&#xff0c…

【Go学习】Ginkgo测试框架学习实践 + 问题记录 + 怎么解决(0)

1、ginkgo测试框架介绍&#xff1a;https://onsi.github.io/ginkgo/ 2、重点是学习实践 问题记录 怎么解决 3、送福利&#xff1a;国内好用的ChatGpt有很多&#xff0c;比如&#xff1a;天工、文心一言、讯飞星火、通义万相等 1. 安装 xxxmacdeMacBook-Pro-3  /Volumes/mac…