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

VisDrone2019数据集转YOLO格式

今天跑VisDrone2019,发现数据集标注格式不是YOLO的, 在CSDN里找的Python源码做了格式转换(源作者没有保存下来),记录如下:

1、转YOLO

import os from pathlib import Path from PIL import Image from tqdm import tqdm def visdrone2yolo(dir): def convert_box(size, box): # Convert VisDrone box to YOLO CxCywh box,坐标进行了归一化 dw = 1. / size[0] dh = 1. / size[1] return (box[0] + box[2] / 2) * dw, (box[1] + box[3] / 2) * dh, box[2] * dw, box[3] * dh # (dir / 'labels').mkdir(parents=True, exist_ok=True) # make labels directory (dir / 'Annotations_YOLO').mkdir(parents=True, exist_ok=True) # make labels directory pbar = tqdm((dir / 'annotations').glob('*.txt'), desc=f'Converting {dir}') for f in pbar: try: img_size = Image.open((dir / 'images' / f.name).with_suffix('.jpg')).size lines = [] with open(f, 'r') as file: # read annotation.txt for row in [x.split(',') for x in file.read().strip().splitlines()]: if row[4] == '0': # VisDrone 'ignored regions' class 0 continue cls = int(row[5]) - 1 box = convert_box(img_size, tuple(map(int, row[:4]))) lines.append(f"{cls} {' '.join(f'{x:.6f}' for x in box)}\n") # 构建输出文件路径 output_path = str(f).replace(os.sep + 'annotations' + os.sep, os.sep + 'Annotations_YOLO' + os.sep) with open(output_path, 'w') as fl: fl.writelines(lines) # write label.txt except Exception as e: print(f"Error processing {f}: {e}") dir = Path(r'D:\VisDrone2019') # dataset文件夹下Visdrone2019文件夹路径 # Convert # for d in ['VisDrone2019-DET-train', 'VisDrone2019-DET-val', 'VisDrone2019-DET-test-dev']: # visdrone2yolo(dir / d) # convert VisDrone annotations to YOLO labels #visdrone2yolo(dir / 'VisDrone2019-DET-test-dev') # convert VisDrone annotations to YOLO labels visdrone2yolo(dir / 'VisDrone2019-DET-train')

2、增加classes.txt文件,方便LabelImage中查看:

0: pedestrian 1: people 2: bicycle 3: car 4: van 5: truck 6: tricycle 7: awning-tricycle 8: bus 9: motor

3、启动LabelImage,查看标注结果

4、配置YOLO项目源码,开始训练

http://www.jsqmd.com/news/726985/

相关文章:

  • Sora 视频生成 API 集成教程
  • 使用node js快速构建接入taotoken的ai客服原型
  • 2026太原少儿、中高考、艺考生美术培训学校排行:合规性与成果双维度测评 - 奔跑123
  • 从Verilog代码到综合网表:一个直连警告案例的完整调试与避坑指南
  • 从Blue机器人看准直驱(QDD):它真的是协作机器人降本的“银弹”吗?
  • Sunshine游戏串流5步掌握:如何实现跨设备游戏自由?
  • 终极音乐解锁指南:如何在浏览器中免费解密加密音乐文件
  • TRUNCATE TABLE(清空表)
  • 如何用MarkMap思维导图工具快速可视化你的Markdown笔记
  • 语雀文档批量导出终极解决方案:高效自动化迁移技术指南
  • 思源黑体TTF:免费开源多语言字体构建终极指南
  • 长春特色餐饮店施工口碑排行 4家优质服务商盘点 - 奔跑123
  • 基于安卓的美食探店与菜谱分享系统毕设源码
  • TouchGal:重新定义Galgame社区的3大颠覆性创新
  • OpenClaw 入门教程(2):定时任务系统详解
  • 机器学习笔记(14): MoE Gating Networks
  • 铲屎官选粮避坑难?软便、不长肉、怕劣质粮,3 款优质猫粮实测,帮铲屎官选对适配口粮 - 品牌策略主理人
  • 反激变换器同步整流控制原理
  • 潮乎盲盒H5商城系统源码|全新UI界面支持快捷注册登录|Laravel+UniApp全栈开源
  • Magnet2Torrent终极指南:将磁力链接永久保存为种子文件的简单方法
  • BarrageGrab:企业级直播数据采集架构设计与工程实践
  • 长春餐饮门店工装好评榜:5家本地实力服务商盘点 - 奔跑123
  • 2026寿光中考高考全日制机构排行 适配不同提分需求 - 奔跑123
  • 矿影智测版|矿山自动化测绘,省时精准更省心!
  • 如何快速检测微信单向好友?WechatRealFriends帮你发现谁悄悄删除了你
  • 金融数据风控:股票、基金净值实时抓取如何做到“0封禁”
  • SteamAutoCrack:如何用3步自动化工具解除Steam游戏DRM限制?
  • 权威发布:2026年卫生高级职称考试押题预测机构口碑排行榜 - 医考机构品牌测评专家
  • 2026寿光中考高考全日制机构排行:提分实力与服务全对比 - 奔跑123
  • 小爱音箱彻底告别VIP!NAS+AI部署本地曲库,保姆级教程!