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

CSTDB数据集介绍

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)

- 每个对象一行
- 每一行是 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 os

os.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, c
    nm = 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, c
    nm = 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/images

nc: 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']
将SSDD(Scene Text Detection and Recognition)数据集转换成Yolo格式需要以下步骤: 1. 下载和准备数据集:首先,从官方网站或相关资源中下载SSDD数据集。确保数据集中包含图像和相应的标注文件。将它们存储在合适的文件夹中。 2. 理解SSDD数据集的标注格式:SSDD数据集标注文件通常是以XML或JSON格式存储的。该文件中包含了每张图像中的文本区域的坐标和标签等信息。 3. 解析标注文件:使用适当的解析工具(如Python中的xml或json解析库),读取标注文件,提取图像路径,文本区域的坐标和标签等信息。 4. 图像预处理:对于每张图像,进行必要的预处理,如调整大小、归一化或增强等操作。 5. 转换为Yolo格式:根据Yolo的要求,将每个文本区域的坐标和标签转换为Yolo格式Yolo格式通常包含类别的索引、边界框中心点相对于图像宽度和高度的归一化值,以及边界框的宽度和高度相对于图像宽度和高度的归一化值。 6. 生成Yolo标签文件:将Yolo格式的信息保存到与对应图像相同的文件名的TXT文件中。每个文本区域的Yolo信息占据一行。 7. 拆分训练集和测试集:根据自己的需求,将数据集分为训练集和测试集,并分别创建包含图像路径和对应标签信息的TXT文件。 8. 配置Yolo模型:根据创建的数据集和标签文件的路径,修改Yolo模型的配置文件。设置类别的数量、路径和其他相关参数。 9. 训练和测试:通过使用修改后的Yolo模型配置文件,训练模型并在测试集上进行测试。 10. 验证结果:将模型检测到的文本区域的坐标和标签信息进行解析和验证,以确保转换成功。 以上步骤提供了将SSDD数据集转换为Yolo格式的一般过程。根据实际情况,可能需要进行一些适应性的调整和修改。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

放飞自我的Coder

你的鼓励很棒棒哦~

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

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

打赏作者

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

抵扣说明:

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

余额充值