【CTSDB数据集转换成YOLO格式】

CSTDB数据集介绍

  • CTSDB数据集

Dataset consists of 5998 traffic sign images of 58 categories. Each image is a zoomed view of single traffic sign. Annotations provide image properties (file_name, width, height) as well as traffic sign coordinates within image and category (e.g. 5 km/h speed limit)

  • yolo格式
- 每个对象一行
- 每一行是 class x_center y_center width height 格式。
方框坐标必须在 归一化 xywh 格式(从 0 到 1)。如果您的方框以像素为单位,则除以 x_center 和 width 图像宽度,以及 y_center 和 height 按图像高度计算。
类号以 0 为索引(从 0 开始)。

下载数据

wget https://nlpr.ia.ac.cn/pal/trafficdata/TSRD-Train%20Annotation.zip
wget https://nlpr.ia.ac.cn/pal/trafficdata/tsrd-train.zip
wget https://nlpr.ia.ac.cn/pal/trafficdata/TSRD-Test.zip
wget https://nlpr.ia.ac.cn/pal/trafficdata/TSRD-Test%20Annotation.zip

创建目录

import osos.makedirs('CTSDB/train/images')
os.makedirs('CTSDB/train/labels')
os.makedirs('CTSDB/test/images')
os.makedirs('CTSDB/test/labels')

解压

!unzip -q 'TSRD-Test Annotation.zip' -d 'CTSDB/'
!unzip -q 'TSRD-Test.zip' -d 'CTSDB/test/images/'
!unzip -q 'TSRD-Train Annotation.zip' -d 'CTSDB/'
!unzip -q 'tsrd-train.zip' -d 'CTSDB/train/images/'

生成test labels

with open('CTSDB/TsignRecgTest1994Annotation.txt') as f:data = f.readlines()data = [d.strip().split(';')[:-1] for d in data]data = [[d[0]]+[int(_d) for _d in d[1:]] for d in data]
print(len(data))
print(f'ncls : {len(set(d[-1] for d in data))}')
print(set(d[-1] for d in data))
print(data[10])ndata = []
for d in data:# w,h hx,hy,vx,vy, cnm = d[0]d = d[1:]xc = (d[2]+d[4])/(2*d[0])yc = (d[3]+d[5])/(2*d[1])w = (d[4]-d[2])/d[0]h = (d[5]-d[3])/d[1]ndata.append([nm, d[-1], xc, yc, w, h])
print(ndata[0])for d in ndata:nm = d[0].rsplit('.')[0]+'.txt'with open(f'CTSDB/test/labels/{nm}', 'w') as f:f.write(' '.join(map(str, d[1:])))

生成train labels

with open('CTSDB/TsignRecgTrain4170Annotation.txt') as f:data = f.readlines()data = [d.strip().split(';')[:-1] for d in data]data = [[d[0]]+[int(_d) for _d in d[1:]] for d in data]
print(len(data))
print(f'ncls : {len(set(d[-1] for d in data))}')
print(set(d[-1] for d in data))
print(data[10])ndata = []
for d in data:# w,h hx,hy,vx,vy, cnm = d[0]d = d[1:]xc = (d[2]+d[4])/(2*d[0])yc = (d[3]+d[5])/(2*d[1])w = (d[4]-d[2])/d[0]h = (d[5]-d[3])/d[1]ndata.append([nm, d[-1], xc, yc, w, h])
print(ndata[0])for d in ndata:nm = d[0].rsplit('.')[0]+'.txt'with open(f'CTSDB/train/labels/{nm}', 'w') as f:f.write(' '.join(map(str, d[1:])))

生成data.yaml

train: train/images
val: valid/images
test: test/imagesnc: 58
names: ['cls 0', 'cls 1', 'cls 2','cls 3','cls 4','cls 5','cls 6','cls 7','cls 8','cls 9','cls 10','cls 11','cls 12','cls 13','cls 14','cls 15','cls 16','cls 17','cls 18','cls 19','cls 20','cls 21','cls 22','cls 23','cls 24','cls 25','cls 26','cls 27','cls 28','cls 29','cls 30','cls 31','cls 32','cls 33','cls 34','cls 35','cls 36','cls 37','cls 38','cls 39','cls 40','cls 41','cls 42','cls 43','cls 44','cls 45','cls 46','cls 47','cls 48','cls 49','cls 50','cls 51','cls 52','cls 53','cls 54','cls 55','cls 56','cls 57']

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

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

相关文章

移动硬盘怎么加密?移动硬盘加密软件有哪些?

移动硬盘是我们在工作中最常用的移动存储设备,为了保护数据安全,需要使用专业的移动硬盘加密软件加密保护。那么,移动硬盘加密软件有哪些? ​BitLocker BitLocker是Windows的磁盘加锁功能,可以用于加密保护移动硬盘中…

火焰烟雾AI识别检测算法---豌豆云

烟雾火焰AI识别算法是一项重要的火灾预防工具。近年来,火灾的发生频率和范围不断扩大,给人们和社会经济造成了巨大的损失,已成为一种普遍而破坏性极大的自然灾害。 火灾一旦爆发,火势迅速蔓延,烟雾浓度高,…

MySQL(常用函数、多表查询)

文章目录 1.数据库函数1.count函数案例答案count(*)与count(列)的区别 2.sum函数案例答案 3.avg函数案例答案 4.max/min函数案例答案 5.group by 分组统计案例答案 6.字符串相关函数演示练习 7.数学相关函数演示 8.日期相关函数演…

Linux系统使用Docker部署个人IT工具箱IT-Tools结合内网穿透实现公网访问

作为程序员,在日常工作中,需要借助一些工具来提高我们工作效率,IT-Tools是为开发人员度身打造的一套便捷在线工具。它提供全面功能,使开发者能以更高效方式完成任务。经由IT-Tools,开发人员能轻松应对各类技术挑战&…

算法刷题记录 Day28

算法刷题记录 Day28 Date: 2024.03.23 lc 45. 跳跃游戏II // 使用范围计算 class Solution { public:int jump(vector<int>& nums) {if(nums.size() 1)return 0;int pre_range 0;int range 0; // 当前覆盖范围int cur_steps 0; // 当前步数// 每次遍历当…

鸿蒙OS开发实例:【通知消息】

背景 HarmonyOS 论坛中有研发人员求助&#xff0c;反馈通知没有没有声音&#xff0c;因此在真机上验证了一下&#xff0c;果不其然&#xff0c;没有通知的提示音&#xff0c;后来解决办法也非常简单&#xff0c;在手机设置应用中&#xff0c;将可以打开的通知提示统统改为铃声…

告别繁琐代码,只需简单拖拽,便可从0到1开发!

告别繁琐代码&#xff0c;拥抱科技未来&#xff01;只需简单拖拽&#xff0c;便可从0到1开发&#xff01;代码即刻生成&#xff0c;一键下载&#xff0c;轻松上手。我们的低代码平台&#xff0c;不仅高效便捷&#xff0c;更完全开源&#xff0c;让你自由探索编程的无限可能&…

利用DNDC模型分析温室气体排放的建模方法与实践

碳循环的精确模拟是实现“双碳”行动的关键。DNDC&#xff08;Denitrification-Decomposition&#xff0c;反硝化-分解模型&#xff09;是目前国际上最为成功的模拟生物地球化学循环的模型之一&#xff0c;自开发以来&#xff0c;经过不断完善和改进&#xff0c;从模拟简单的农…

算法—递归逆序栈、排序栈

递归和栈 1. 递归逆序栈2. 递归排序栈 1. 递归逆序栈 只用递归逆序一个栈&#xff0c;时间复杂度O(n^2) // 栈底元素移除掉&#xff0c;上面的元素盖下来 // 返回移除掉的栈底元素 public static int bottomOut(Stack<Integer> stack) {int ans stack.pop();if (stack…

MySQL TDE 透明数据加密 知识总结

目录 一、存储加密说明 二、TDE概述 三、MySQL对TDE支持情况 四、注意事项 一、存储加密说明 MySQL数据库存储加密有多种方式可供选择&#xff0c;主要分为两大类&#xff1a; 利用字段加密&#xff0c;在对数据库存储/读取时进行加密/解密操作&#xff0c;需要用户修改应…

设计模式-装饰者模式在Java中使用实例-打印发票装饰抬头和脚注

场景 设计模式-装饰者模式在Java中的使用示例&#xff1a; 设计模式-装饰者模式在Java中的使用示例_java装饰者模式例子-CSDN博客 上面装饰器的调用示例如下 AbstarctComputer computer;//要买1台电脑computer new BaseComputer();//加一个内存条computer new MemoryDecor…

【面试专题】Spring高频面试题

1.Spring应该很熟悉吧&#xff1f;来介绍下你的Spring的理解 有些同学可能会抢答&#xff0c;不熟悉!!! 好了&#xff0c;不开玩笑&#xff0c;面对这个问题我们应该怎么来回答呢&#xff1f;我们给大家梳理这个几个维度来回答 1.1 Spring的发展历程 先介绍Spring是怎么来的…

密码学 总结

群 环 域 群 group G是一个集合&#xff0c;在此集合上定义代数运算*&#xff0c;若满足下列公理&#xff0c;则称G为群。 1.封闭性 a ∈ G , b ∈ G a\in G,b\in G a∈G,b∈G> a ∗ b ∈ G a*b\in G a∗b∈G 2.G中有恒等元素e&#xff0c;使得任何元素与e运算均为元素本…

鸿蒙(HarmonyOS)ArkTs语言基础教程开发准备

本文档适用于HarmonyOS应用开发的初学者。通过构建一个简单的具有页面跳转/返回功能的应用&#xff08;如下图所示&#xff09;&#xff0c;快速了解工程目录的主要文件&#xff0c;熟悉HarmonyOS应用开发流程。 在开始之前&#xff0c;您需要了解有关HarmonyOS应用的一些基本概…

【LAMMPS学习】六、LAMMPS可选包(2)可用软件包详情

6、LAMMPS可选包 本节概述了扩展 LAMMPS 功能的可选包。包是启用一组特定功能的文件组。例如&#xff0c;分子系统的力场或刚体约束都在封装中。您可以通过在 LAMMPS 发行版的 src 目录中键入“make package”来查看所有包的列表以及用于管理它们的“make”命令。构建包页面提…

python 移位运算符

左移运算符<< 示例a<<b 表示把a的二进制位向左移动b位&#xff0c;高位溢出丢弃&#xff0c;低位补0&#xff0c;结果是a乘以2的b次方 a21 print(a*2**3)#168 print(a<<3)#168 ba<<3 print(bin(a))#0b10101 二进制为10101 print(bin(b))#0b10101000 …

【C++学习(27)】一个c++类的实例“多线程“运行的例子

一个类本身并不直接“用于多线程运行”。但是&#xff0c;类的实例&#xff08;即对象&#xff09;可以在多线程环境中被使用&#xff0c;并且类的设计可以影响它在多线程环境中的表现和易用性。 在多线程编程中&#xff0c;重要的是要理解线程安全和并发控制的概念。线程安全…

誉天华为认证存储HCIE课程怎么样

HCIA-Storage 课程介绍课程适合转行想进入IT行业者、零基础学员、IT从业人员、存储爱好者等 实验环境全真机&#xff0c;练习时间自由&#xff0c;7*24开机&#xff0c;可以随时通过远程连接进行试验课程内容 存储发展历史 存储硬件介绍 硬盘接口介绍 RAID技术 RAID2.…

解码视频流在opengl中的贴图投影计算

解码视频流在opengl中的贴图投影计算 修改顶点着色器cpp 文件放大缩小 我们把视频当成纹理,首先要确定贴入的坐标&#xff0c;原始坐标如下所示 static float vertices[] {// ---- 位置 ---- ---- 颜色 ---- - 纹理坐标 -1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f…

为BUG编程:函数重载的烦恼 char *匹配bool而不是string

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 这是一个BUG。 运行环境为linu…