UCAS-AOD遥感旋转目标检测数据集——基于YOLOv8obb,map50已达96.7%

1.UCAS-AOD简介

1.1数据说明

遥感图像,又名高分辨率遥感图像。遥感图像的分类依据是根据成像的介质不同来进行分类的。UCAS-AOD (Zhu et al.,2015)用于飞机和汽车的检测,包含飞机与汽车2类样本以及一定数量的反例样本(背景),总共包含2420幅图像和14596个实例。论文中特别提到了目标检测的方向健壮性,所以在数据集标注过程中作者对数据进行了一定程度的筛选,使得图像中的物体方向分布均匀,数据集具体内容如下:

内容飞机图像飞机实例汽车图像汽车实例反例图像
数量100074825107114910

数据集中目标为航拍图像下的飞机和车辆,使用Google Earth软件在全球部分区域中截取的图像。

1.2数据格式

数据集分为CAR、PLANE、NEG三个文件,CAR、PLANE为正例图像,NEG为反例图像。正例图像以P+数字序号命名,反例图像以N+数字序号命名,所有图像为PNG格式,尺寸为1280x659和1372x941。UCAS-AOD采用HBB(horizontal bounding box)的标注方法,图像的groundtruth采用txt格式保存,以图像的同名文档方式存储。对于整理好的txt文档数据,每列的属性如下:

x1,y1,x2,y2,x3,y3,x4,y4,theta,x,y, width,height

其中,x1,y1,x2,y2,x3,y3,x4,y4为旋转矩形框四个顶点,theta为倾斜角。

2.UCAS-AOD数据处理

2.1处理成如下格式

x1 y1 x2 y2 x3 y3 x4 y4 class class_index

​处理代码如下:

import os

# 输入和输出文件夹路径
input_folder_path = 'label'
output_folder_path = 'txt'

# 遍历labels文件夹下所有txt文件
for filename in os.listdir(input_folder_path):
    if filename.endswith('.txt'):
        input_file_path = os.path.join(input_folder_path, filename)
        output_file_path = os.path.join(output_folder_path, filename)

        # 打开原始文件并创建一个新文件用于写入修改后的数据
        with open(input_file_path, 'r') as input_file, open(output_file_path, 'w') as output_file:
            for line in input_file:
                # 在这里你可以对每一行的内容进行处理
                # 例如,将每一行的数据以制表符分割并转换为浮点数列表
                data = [float(value) for value in line.strip().split('\t')]

                # 仅保留每行数据的前8个数
                data = data[:8]

                # 将处理后的数据写入新文件
                output_line = '\t'.join(map(str, data)) + '\tPLANE' + '\t1\n'
                output_file.write(output_line)

        print(f"数据已保存到 {output_file_path}")

分别以CAR和PLANE为例,得到:

276.3971  91.25021  291.1375  38.23406  330.8891  49.28647  316.1486  102.3026  CAR  0
254.0147  168.3054  253.027  124.0611  314.917  122.6796  315.9046  166.9239  PLANE  1

2.2进行obb格式的转换

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

以上面CAR和PLANE为例,转换后的结果如下:

0 0.215935 0.138468 0.227451 0.0580183 0.258507 0.0747898 0.246991 0.155239
1 0.198449 0.255395 0.197677 0.188257 0.246029 0.18616 0.2468 0.253299

2.3进行训练

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

2.4进行验证

最后:

小编会不定期发布相关设计内容包括但不限于如下内容:信号处理、通信仿真、算法设计、matlab appdesigner,gui设计、simulink仿真......希望能帮到你!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第4章 面向对象(下)

4.1 继承 4.1.1 继承的概念 在现实生活中,继承一般指的是子女继承父辈的财产。在程序中,继承描述的是事物之间的所属关系,通过继承可以使多种事物之间形成一种关系体系。例如,猫和狗都属于动物,程序中便可以描述为猫…

2017年认证杯SPSSPRO杯数学建模C题(第二阶段)移动端考研产品的春天真的到来了吗全过程文档及程序

2017年认证杯SPSSPRO杯数学建模 C题 移动端考研产品的春天真的到来了吗 原题再现: 2017 年的全国硕士研究生招生考试共有 201 万人报名参加,比去年增加了 24 万名考生,增加 13.56%。看起来新一轮的考研热潮即将到来,而考研教学和…

JAVA工程中引用本地jar的3种常用方式,你用过哪种?

文章目录 前言1. 第1种方式2. 第2种方式3. 第3种方式 前言 实际项目过程中咱们经常会碰到需要本地引用jar包到java工程中的场景,本文就介绍一下遇到此场景时如何在IDEA中导入本地jar包到工程中的3种方式,简单却很常用。 1. 第1种方式 IDEA -> File …

MySQL函数—流程函数

MySQL函数—流程函数:用于实现条件筛选,从而题搞语句的效率。 MySQL函数—流程函数 函数功能IF(value,t,f)如果value为true,则返回t,否则返回fIFNULL(value1,value2)如果value1不为空,返回value1,否则返回v…

单点登陆(SSO)基于CAS实现前后端分离的SSO系统开发「IDP发起」

关于其他前端常见登录实现单点登录方案,请见「前端常见登录实现方案 单点登录方案 」 前沿 单点登录(SSO),英文全称为 Single Sign On。 SSO 是指在多个应用系统中,用户只需要登录一次,就可以访问所有相互…

分布变化下的Test-Time adaption 综述

论文 https://arxiv.org/abs/2303.15361 代码 https://github.com/tim-learn/awesome-test-time-adaptation (其实这是相关领域代码和论文合集之类的东西) Abstract 机器学习方法努力在训练过程中获得一个鲁棒模型,即使在分布变化的情况下…

RDMA vs InfiniBand 网卡接口如何区分?

(该架构图来源于参考文献) 高性能计算网络,RoCE vs. InfiniBand该怎么选? 新 RoCEv2 标准可实现 RDMA 路由在第三层以太网网络中的传输。RoCEv2 规范将用以太网链路层上的 IP 报头和 UDP 报头替代 InfiniBand 网络层。这样,就可以在基于 IP…

向日葵远程控制Mac版权限设置教程解决远程无法控制问题

很多Mac新手安装向日葵远程控制Mac版后,根据提示设置了权限后发现无法远程控制,其实主要是你只勾选了中文的“向日葵权限选项“,而忘记了勾选了向日葵另外一个英文选项权限。 判断是否完全开启控制权限 打开向日葵访问权限设置面板&#xf…

gitlab runner 安装、注册、配置、使用

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

Unity Mask合批情况验证

1.首先是两个Mask完全重合的情况下 每张图片使用的image都来自同一个图集 发现彼此之间是没有合批的,但是每个Mask内部是实现了合批的 经过计算此种情况的visiableList:mask1,IM1,IM2,mask2,IM3&#xf…

实时渲染 -- 光追(Ray Tracing)

光栅化 Or 光线追踪 传统的光栅化方式主要是将每个物体进行光栅化后形成若干个像素,然后每个像素需要计算光源直接照射到自己并反射回眼睛而形成的颜色。这种算法方式是极快的,但是只能表示直接光照,图像质量较低。 Bling-Phong 模型是一个常…

Java 集合List相关面试题

📕作者简介: 过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📗本文收录于java面试题系列,大家有兴趣的可以看一看 📘相关专栏Rust初阶教程、go语言基…

IDEA插件(MyBatis Log Free)

引言 在Java开发中,MyBatis 是一款广泛使用的持久层框架,它简化了SQL映射并提供了强大的数据访问能力。为了更好地调试和优化MyBatis应用中的SQL语句执行,一款名为 MyBatis Log Free 的 IntelliJ IDEA 插件应运而生。这款插件旨在帮助开发者…

2023-2024年重庆职业院校技能大赛“信息安全管理与评估”比赛样题

2023 年重庆职业院校技能大赛(高等职业教育) “信息安全管理与评估”样题任务书 第一阶段:任务 1 网络平台搭建(50 分)任务 2 网络安全设备配置与防护(250 分) 第二阶段:第一部分 网…

C语言王道练习题第七周两题

第一题 Description 输入一个学生的学号,姓名,性别,用结构体存储,通过 scanf 读取后,然后再 通过 printf 打印输出 Input 学号,姓名,性别,例如输入 101 xiongda m Output 输出…

Linux系统Shell脚本编程之条件语句

一、条件测试 Shell 环境根据命令执行后的返回状态值 " $? " 来判断是否执行成功,当返回值为0时表示成功,否则表示失败或异常(非0值)。使用专门的测试工具 test 命令,可以对特定条件进行测试,并…

【Vue3】组件通信

Vue3组件通信和Vue2的区别: 移出事件总线,使用mitt代替。vuex换成了pinia。把.sync优化到了v-model里面了。把$listeners所有的东西,合并到$attrs中了。$children被砍掉了。 1. props 若 父传子:属性值是非函数。若 子传父&…

网络协议与攻击模拟_08DHCP协议

技术学习要了解某项技术能干什么?它的详细内容?发展走向? 一、DHCP协议 1、DHCP基本概念 dhcp动态主机配置协议,广泛应用于局域网内部 主要是为客户机提供TCP/IP 参数(IP地址、子网掩码、网关、DNS等)…

【AI】深度学习与图像描述生成——看图说话(1)

还记得我闲来无事,用大模型来“洗图”吗,就是想抄袭别人的图,但是又要装作原创的样子。因为洗稿大家都熟悉,洗图其实也是一样的。 【AIGC】今天想用AI“洗个图”,失败了,进来看我怎么做的-CSDN博客 【AIG…

Vue3快速使用手册

Vue3的创建 npm create vitelatest 1.设置项目名。 2.选择框架。 3.选择支持的语法&#xff0c;默认使用TS。 ...... Vue3的使用 setUp(无法直接修改数据&#xff0c;也就是没有响应式) 在vue3中不不再推荐使用选项式编程而是使用组合式编程。 Vue2写法 <template…