遥感图像DIOR数据集和VOC转为yolo格式代码

  • DIOR数据集
  • VOC转yolo代码

DIOR数据集

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

下载地址:http://www.escience.cn/people/gongcheng/DIOR.html
也可在飞桨AI Studio下载:飞桨官网

下载如下文件:

我的文件目录如下(也可以用自己的,在代码里修改即可),其中JEPGImahes文件夹里面是所有的训练、验证和测试图片(之后在代码中会随机划分为训练:验证:测试=6:2:2的数目),Annotations里面是voc格式的xml文件。

执行代码之后就会生成如下文件

VOC转yolo代码

# coding:utf-8import os
import random
import argparseimport xml.etree.ElementTree as ET
from os import getcwd
from shutil import copyfileparser = argparse.ArgumentParser()
#xml文件的地址,根据自己的数据进行修改 xml一般存放在Annotations下
parser.add_argument('--xml_path', default='DIOR/Annotations/Horizontal Bounding Boxes', type=str, help='input xml label path')
#数据集的划分,地址选择自己数据下的ImageSets/Mainopt = parser.parse_args()sets = ['train', 'val', 'test']
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()
print(abs_path)if not os.path.exists('DIOR_dataset/'):os.makedirs('DIOR_dataset/')if not os.path.exists('DIOR_dataset/labels/'):os.makedirs('DIOR_dataset/labels/')
if not os.path.exists('DIOR_dataset/labels/train'):os.makedirs('DIOR_dataset/labels/train')
if not os.path.exists('DIOR_dataset_yolo/labels/test'):os.makedirs('DIOR_dataset/labels/test')
if not os.path.exists('DIOR_dataset_yolo/labels/val'):os.makedirs('DIOR_dataset/labels/val')if not os.path.exists('DIOR_dataset/images/'):os.makedirs('DIOR_dataset/images/')
if not os.path.exists('DIOR_dataset/images/train'):os.makedirs('DIOR_dataset/images/train')
if not os.path.exists('DIOR_dataset/images/test'):os.makedirs('DIOR_dataset/images/test')
if not os.path.exists('DIOR_dataset/images/val'):os.makedirs('DIOR_dataset/images/val')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, hdef convert_annotation(image_id, path):
#输入输出文件夹,根据实际情况进行修改in_file = open('DIOR/Annotations/Horizontal Bounding Boxes/%s.xml' % (image_id), encoding='UTF-8')out_file = open('DIOR_dataset/labels/' + path + '/%s.txt' % (image_id), 'w')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#difficult = obj.find('Difficult').textcls = 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')train_percent = 0.6
test_percent = 0.2
val_percent = 0.2xmlfilepath = opt.xml_path
# txtsavepath = opt.txt_path
total_xml = os.listdir(xmlfilepath)
# if not os.path.exists(txtsavepath):
#     os.makedirs(txtsavepath)num = len(total_xml)
list_index = range(num)
list_index = list(list_index)
random.shuffle(list_index)train_nums = list_index[:int(num * train_percent)]
test_nums = list_index[int(num * train_percent): int(num * test_percent)+int(num * train_percent)]
val_nums = list_index[int(num * test_percent)+int(num * train_percent):]for i in list_index:name = total_xml[i][:-4]if i in train_nums:convert_annotation(name, 'train')   # lablesimage_origin_path = 'DIOR/JPEGImages/' + name + '.jpg'image_target_path = 'DIOR_dataset/images/train/' + name + '.jpg'copyfile(image_origin_path, image_target_path)if i in test_nums:convert_annotation(name, 'test')   # lablesimage_origin_path = 'DIOR/JPEGImages/' + name + '.jpg'image_target_path = 'DIOR_dataset/images/test/' + name + '.jpg'copyfile(image_origin_path, image_target_path)if i in val_nums:convert_annotation(name, 'val')   # lablesimage_origin_path = 'DIOR/JPEGImages/' + name + '.jpg'image_target_path = 'DIOR_dataset/images/val/' + name + '.jpg'copyfile(image_origin_path, image_target_path)

遥感图像DIOR数据集和VOC转为yolo格式代码相关推荐

  1. CelebA数据库转换为VOC、YOLO格式

    CelebA数据库转换为VOC.YOLO格式 原文:https://blog.csdn.net/minstyrain/article/details/77888176 CelebA是香港中文大学发布的 ...

  2. Open Street Map 全球城市路网数据下载并转为SHP格式(包含历史道路数据的下载方法)

    一.背景 Open street Map 是一个很好的开源数据获取源,本人正在做关于芝加哥的研究需要用到路网数据,因此需要从Open street Map 下载数据. 二.数据下载方法 1.简单粗暴法 ...

  3. 4.keras实现--生成式深度学习之用变分自编码器VAE生成图像(mnist数据集和名人头像数据集)...

    1.VAE和GAN 变分自编码器(VAE,variatinal autoencoder)   VS    生成式对抗网络(GAN,generative adversarial network) 两者不 ...

  4. 数据集和神经网络共同进步之代码之路

    如下代码的不断调整可使得神经网络和数据集共同进步 5分类成功分成了7分类,也就是说模型的能力将不属于该类的分出去l 但是人们还是利用模型将这些图片强行的5分类,那么一定地不准确的 也就是说本来这个图片 ...

  5. AI实战 | Tensorflow自定义数据集和迁移学习(附代码下载)

    自定义数据集 做深度学习项目时,我们一般都不用网上公开的数据集,而是用自己制作的数据集.那么,怎么用Tensorflow2.0来制作自己的数据集并把数据喂给神经网络呢?且看这篇文章慢慢道来. Poke ...

  6. 图像数据增强2_albumentation 标注框同时修改(VOC、YOLO)

    主要参考: 图像样本增广,yoloV5扩展 Albumentation库 bbox使用案例代码 [YOLOV5-5.x 源码解读]general.py 这里写目录标题 albumentation 标注 ...

  7. 【深度学习】【Python】【Widerface数据集】 转VOC格式,VOC 转YOLOv5格式,YOLOv5训练WiderFace数据集,检查yolo labels对不对

    文章目录 Widerface数据集转VOC格式 VOC 转YOLO格式 数据集的imageslisttxt YOLOv5训练 检查yolo labels对不对 并行训练 Widerface数据集转VO ...

  8. 把LabelImg标注的YOLO格式标签转化为VOC格式标签 和 把VOC格式标签转化为YOLO格式标签

    把LabelImg标注的YOLO格式标签转化为VOC格式标签 和 把VOC格式标签转化为YOLO格式标签 文章目录: 1 用LabelImgvoc和yolo标注标签格式说明 1.1 LabelImg标 ...

  9. 将VOC格式标注文件转换为Yolo格式

    这篇文章主要参考博客中的代码,对原博客VOC格式数据集转yolo格式代码进行一定修改.添加注释,此外还在后面添加了我自己写的一段关于对转换后的图片和标注文件进行整理的脚本代码. 关于数据集在Yolo格 ...

  10. 100种目标检测数据集【voc格式yolo格式json格式coco格式】+YOLO系列算法源码及训练好的模型

    提示:本文介绍并分享了应用于各行业.各领域非常有用的目标检测数据集(感谢您的关注+三连,数据集持续更新中-),其中绝大部分数据集作者已应用于各种实际落地项目,数据集整体质量好,标注精确,数据的多样性充 ...

最新文章

  1. 软件测试2019:第四次作业—— 性能测试(含JMeter实验)
  2. iOS底层(三)-状态寄存器
  3. 如何计算递归算法的时间复杂度
  4. Linux Kernel TCP/IP Stack — L2 Layer
  5. NBUT校赛 J Alex’s Foolish Function(分块+延迟标记)
  6. 没有一部是烂片 香港最强水准的10部影片
  7. How to resolve Unable to load groups error message
  8. 计算机教学理论研究,计算机辅助教学理论实践研究.doc
  9. 数据库基础知识——DDL语言
  10. static变量的作用(转)
  11. 微软部分专卖店地址选定 今秋开张
  12. 【3D动态脑图制作软件】万彩脑图大师教程 | 将思维导图输出到云服务
  13. 项目经理如何激励自己的团队
  14. 3975: 人工智能(障)?
  15. matlab axis坐标轴相关设置详解
  16. linux命令大全——文件编辑相关指令
  17. 《个人理财》书中的精髓:如何通过金融学理论知识的学习,建立更加完善的金融体系,让自己更加富有。
  18. mac 默认输入法禁用,删除?
  19. 达梦数据库中各种表的管理
  20. lego-loam代码分析(3)-激光里程计

热门文章

  1. 如何根据哈希值查看自己的区块链证书
  2. [2019数学中国网络挑战赛一等奖]基于机器学习的保险业数字化变革的研究
  3. 知识图谱-事件抽取综述
  4. Win10桌面我的电脑等图标设置
  5. 杰理蓝牙芯片主流批量生产烧录方式
  6. 按键精灵 excel mysql_Excel VBA代码保护方案讨论及总结
  7. python 100days github_GitHub - 3774257/Python-100-Days: Python - 100天从新手到大师
  8. 数据越权访问,谁之错?
  9. C# Dapper ORM操作各种数据帮助类 支持多种数据库 - 实用 - lbx
  10. #Day Day Plan# 《NCB_PCI_Express_Base 5.0.1.0》pdf 译文笔记 模版