制作YOLOv5的数据集

在这里推荐我常用的标注工具 VIA。用久了,很多转化脚本都是基于这个工具导出的格式,所以没用其他标注工具了。

VIA可以在线标注,地址是:http://www.robots.ox.ac.uk/~vgg/software/via/via.html

标注完数据后,保存项目,导出一份json。

下面代码把该json转换成YOLOv5所需的标注格式

import os
import json

anno_file_path = '' // json路径

saveFolder = r'./txt'
if not os.path.exists(saveFolder):
    os.mkdir(saveFolder)

annotations = json.load(open(anno_file_path, 'r', encoding='UTF-8'))
imgs = annotations["_via_img_metadata"]

// 因为yolov5的标注数据格式是用比例的,需要输入图片的宽高
WIDTH = 960
HEIGHT = 540
// 这里为了简单,统一把所有数据标注为类别2
objClass = 2

# 遍历每个图片
for imgId in imgs:
    filename = imgs[imgId]['filename']
    imgName = filename.split('.')[0]
    print('filename:', filename)
    regions = imgs[imgId]['regions']
    if len(regions) <= 0:
        continue

    data = ''
    # 遍历每个区域
    for region in regions:
        print(region)
        shape = region['shape_attributes']
        x = shape['x']
        y = shape['y']
        boxW = shape['width']
        boxH = shape['height']

        minX = int(x)
        minY = int(y)
        maxX = int(x + boxW)
        maxY = int(y + boxH)

        centerX = round((minX + maxX) / 2 / WIDTH, 6)
        centerY = round((minY + maxY) / 2 / HEIGHT, 6)
        w = round((maxX - minX) / WIDTH, 6)
        h = round((maxY - minY) / HEIGHT, 6)

        data = f'{objClass} {centerX} {centerY} {w} {h}\n'

    file = open(f'{saveFolder}/{imgName}.txt', 'w')
    file.write(data[:-1])
    file.close()

上面脚本会把VIA导出的json文件生成N个标注文件,N为标注的图片数量。

最后把标注文件和图片按这样的目录结构存放即可。
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DvLee1024

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

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

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

打赏作者

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

抵扣说明:

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

余额充值