DOTA数据集切割处理——旋转框和水平框

本文介绍了DOTA数据集,一个包含15类目标的遥感图像数据集,详细讲述了其切割后的图片和不同类型的标签,如旋转框YOLO标签和水平框标签,以及如何获取和使用该数据集进行目标检测任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DOTA是一个用于遥感图像中目标检测的大规模数据集。它包含2806张不同大小的航空图像,像素从800×800到4000×4000不等。这些图像分为15类,即飞机、船只、储罐、棒球场、网球场、篮球场、地面田径场、港口、桥梁、小型车辆、大型车辆、直升机、环岛、足球场和游泳池。

DOTA1.0数据集类别顺序:

['plane', 'baseball-diamond', 'bridge', 'ground-track-field', 'small-vehicle',  'large-vehicle', 'ship', 'tennis-court','basketball-court', 'storage-tank',  'soccer-ball-field', 'roundabout', 'harbor', 'swimming-pool', 'helicopter']

①切割后的图片和标签:

🔆train文件夹

包含images15749张,水平labelTxt-shuiping15749个,旋转标签labelTxt-xuanzhuan15749个。

🔆val文件夹

包含images5279张,水平标签labelTxt-shuiping5279个,旋转标签labelTxt-xuanzhuan5279个。

②切割后转旋转框YOLO标签:

🔆train文件夹

包含images15749张,标签labels15749个。

🔆val文件夹

包含images5279张,标签labels5279个。

③切割后转水平框YOLO标签,带角度(0和90):

🔆train文件夹

包含images10494张,标签labels10494个。

🔆val文件夹

包含images3344张,标签labels3344个。

④切割后转水平框YOLO标签,不带角度,可直接在YOLO运行:

🔆train文件夹

包含images10494张,标签labels10494个。

🔆val文件夹

包含images3344张,标签labels3344个。

⑤数据集获取

DOTA数据集切割处理——旋转框和水平框

最后:

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

5a8015ddde1e41418a38e958eb12ecbd.png

### YOLODOTA数据集分割实现 在YOLO架中,处理大规模遥感图像的数据集(如DOTA)通常需要进行特定的预处理操作。以下是关于如何对DOTA数据集进行分割以及适配YOLO模型的具体方法。 #### 数据集分割的核心概念 为了适应YOLO算法的需求,原始的大尺寸遥感图像需被切割成较小的子图。这种分割方式不仅有助于减少内存占用,还能提高检测效率[^1]。具体而言,每张大图会被划分为多个固定大小的小区域,并保留标注信息以便后续训练使用。 #### 实现步骤概述 虽然不采用传统意义上的分步描述,但可以总结如下几个方面来完成这一过程: - **读取原图及其标签文件** DOTA数据集中包含了大量高分辨率图片对应的旋转标注文件。这些标注是以`.txt`形式存储,记录了目标物体的位置参数(中心坐标、宽度高度角度等)。因此,在程序初始化阶段要加载所有必要的输入资源[^2]。 - **定义裁剪窗口大小及重叠比例** 裁剪窗口的选择直接影响最终效果的好坏。一般推荐设置边长为800像素左右正方形作为基本单元;同时为了避免边界处对象被截断丢失重要特征,还需引入一定量级的overlap rate (比如30%) 来确保平滑过渡[^3]。 - **执行实际切片逻辑并更新annotation** 利用Python脚本配合OpenCV库或者PIL工具包能够轻松达成上述目的。下面给出了一段示范代码用于说明该流程: ```python import os from PIL import Image import numpy as np def crop_image(image_path, save_dir, size=800, overlap_ratio=0.3): img = Image.open(image_path) width, height = img.size stride = int(size * (1 - overlap_ratio)) for y in range(0, height-size+stride, stride): for x in range(0, width-size+stride, stride): box = (x, y, x + size, y + size) cropped_img = img.crop(box) file_name = f"{os.path.basename(image_path).split('.')[0]}_{x}_{y}.jpg" cropped_img.save(os.path.join(save_dir, file_name)) # Example usage crop_image('path_to_original_image.jpg', 'output_directory/') ``` 此函数实现了基于指定参数自动划分源图像功能的同时也提供了灵活调整空间给用户自定义需求[^4]。 另外需要注意的是当生成新的patch之后必须同步修改相应的bounding boxes位置信息使之匹配新坐标系下的表达形式[^5]。 #### 结论 通过以上介绍可以看出针对像DOTA这样的特殊领域内的大型视觉识别挑战赛所使用的公开可用数据集合做前期准备工作是非常重要的环节之一。只有合理有效地完成了这一步骤才能更好地服务于下游任务即构建高效精准的目标探测器实例化版本运行环境当中去实践应用价值所在之处体现出来。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MatpyMaster

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值