YOLO,VOC数据集标注格式

这篇具有很好参考价值的文章主要介绍了YOLO,VOC数据集标注格式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


YOLO,VOC数据集标注格式

一、YOLO数据集标注格式

YOLO数据集txt标注格式:
YOLO,VOC数据集标注格式

每个标签有五个数据,依次代表:

  • 所标注内容的类别,数字与类别一一对应
  • 归一化后中心点的x坐标
  • 归一化后中心点的y坐标
  • 归一化后目标框的宽度w
  • 归一化后目标框的高度h

这里归一化是指除以原始图片的宽和高

二、VOC数据集标注格式

VOC数据集xml标注格式

<annotation>
	<folder>VOC</folder>
	<filename>bird_1.jpg</filename>    #图片名称以及图片格式
	<size>                             #图片的大小以及是否是rgb图片
		<width>1024</width>
		<height>688</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>                             #多个目标可以有多个object
		<name>bird</name>                #图片中一个目标的类别
		<pose>Unspecified</pose>         #物体的姿态
		<truncated>0</truncated>         #物体是否被部分遮挡(>15%)
		<difficult>0</difficult>         #是否为难以辨识的物体, 主要指要结体背景才	
		                                 #能判断出类别的物体。虽有标注, 但一般忽略这类物体
		<bndbox>                         #xmin和ymin是含目标框左上角的坐标
			<xmin>506</xmin>             #xmax和ymax是含目标框右下角的坐标
			<ymin>170</ymin>
			<xmax>509</xmax>
			<ymax>176</ymax>
		</bndbox>
	</object>
</annotation>

三、数据集格式转换

转换公式:

  • VOC->YOLO
	norm_x=(xmin + xmax)/2/width
	norm_y=(ymin + ymax)/2/height
	norm_w=(xmax - xmin)/width
	norm_h=(ymax - ymin)/height
  • YOLO->VOC
	xmin=width * (norm_x - 0.5 * norm_w)
	ymin=height * (norm_y - 0.5 * norm_h)

	xmax=width * (norm_x + 0.5 * norm_w)
	ymax=height * (norm_y + 0.5 * norm_h)

YOLO v5官方开源代码文章来源地址https://www.toymoban.com/news/detail-400586.html

import cv2
import numpy as np
import pandas as pd
import pkg_resources as pkg
import torch
import torchvision
import yaml


def clip_coords(boxes, shape):
    # Clip bounding xyxy bounding boxes to image shape (height, width)
    '''
    将boxes的坐标(x1y1x2y2左上角右下角)限定在图像的尺寸(img_shapehw)内,防止出界。
    '''
    if isinstance(boxes, torch.Tensor):  # faster individually
        boxes[:, 0].clamp_(0, shape[1])  # x1
        boxes[:, 1].clamp_(0, shape[0])  # y1
        boxes[:, 2].clamp_(0, shape[1])  # x2
        boxes[:, 3].clamp_(0, shape[0])  # y2
    else:  # np.array (faster grouped)
        boxes[:, [0, 2]] = boxes[:, [0, 2]].clip(0, shape[1])  # x1, x2
        boxes[:, [1, 3]] = boxes[:, [1, 3]].clip(0, shape[0])  # y1, y2


def xyxy2xywh(x):
    # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] where xy1=top-left, xy2=bottom-right
    y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
    y[:, 0] = (x[:, 0] + x[:, 2]) / 2  # x center
    y[:, 1] = (x[:, 1] + x[:, 3]) / 2  # y center
    y[:, 2] = x[:, 2] - x[:, 0]  # width
    y[:, 3] = x[:, 3] - x[:, 1]  # height
    return y


def xywh2xyxy(x):
    # Convert nx4 boxes from [x, y, w, h] to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right
    y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
    y[:, 0] = x[:, 0] - x[:, 2] / 2  # top left x
    y[:, 1] = x[:, 1] - x[:, 3] / 2  # top left y
    y[:, 2] = x[:, 0] + x[:, 2] / 2  # bottom right x
    y[:, 3] = x[:, 1] + x[:, 3] / 2  # bottom right y
    return y


def xywhn2xyxy(x, w=640, h=640, padw=0, padh=0):
    # Convert nx4 boxes from [x, y, w, h] normalized to [x1, y1, x2, y2] where xy1=top-left, xy2=bottom-right
    y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
    y[:, 0] = w * (x[:, 0] - x[:, 2] / 2) + padw  # top left x
    y[:, 1] = h * (x[:, 1] - x[:, 3] / 2) + padh  # top left y
    y[:, 2] = w * (x[:, 0] + x[:, 2] / 2) + padw  # bottom right x
    y[:, 3] = h * (x[:, 1] + x[:, 3] / 2) + padh  # bottom right y
    return y


def xyxy2xywhn(x, w=640, h=640, clip=False, eps=0.0):
    # Convert nx4 boxes from [x1, y1, x2, y2] to [x, y, w, h] normalized where xy1=top-left, xy2=bottom-right
    if clip:
        clip_coords(x, (h - eps, w - eps))  # warning: inplace clip
    y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
    y[:, 0] = ((x[:, 0] + x[:, 2]) / 2) / w  # x center
    y[:, 1] = ((x[:, 1] + x[:, 3]) / 2) / h  # y center
    y[:, 2] = (x[:, 2] - x[:, 0]) / w  # width
    y[:, 3] = (x[:, 3] - x[:, 1]) / h  # height
    return y


def xyn2xy(x, w=640, h=640, padw=0, padh=0):
    # Convert normalized segments into pixel segments, shape (n,2)
    y = x.clone() if isinstance(x, torch.Tensor) else np.copy(x)
    y[:, 0] = w * x[:, 0] + padw  # top left x
    y[:, 1] = h * x[:, 1] + padh  # top left y
    return y

到了这里,关于YOLO,VOC数据集标注格式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • labelimg标注的VOC格式标签xml文件和yolo格式标签txt文件相互转换

    目录 1 labelimg标注VOC格式和yolo格式介绍 1.1 voc格式 1.2 yolo数据格式介绍 2 voc格式数据和yolo格式数据相互转换 2.1 voc转yolo代码 2.2 yolo转voc格式代码          labelimg标注工具怎么安装和使用在我的博客中已经讲解了,有需要可以看看,博客。         VOC格式文件保存在和图像名

    2024年02月02日
    浏览(54)
  • 【最全教程】VOC格式转YOLO格式数据

            在做目标检测时候,都会通过一些方法获得大量的数据集,或是网上下载,或是自己用软件一个一个的打标签。         不会打标签的可以看下这个文章 Win10下安装LabelImg及使用技巧--全网最快最简单 Win10下安装LabelImg及使用--全网最快最简单 https://blog.csdn.net

    2024年02月06日
    浏览(94)
  • 数据集 VOC转YOLO格式

    划分为训练集、验证集和测试集 手动复制

    2024年02月13日
    浏览(43)
  • 伪装目标检测中数据集的标注格式:COCO和VOC

    1.OSFormer中提供的COD10K的json格式,是coco的格式,但由于伪装目标检测任务的特殊性,标注信息中还有一个segmentation段 首先将一整个json文件分解: 然后转化为VOC格式: 这样生成的xml文件,没有之前COD10K标注的segmentation信息,还需要进一步考虑,在转换为xml的脚本中加上识别

    2024年04月27日
    浏览(57)
  • YOLO格式数据集(.txt)如何转换为VOC格式数据集(.xml)

    前言: 安装好python环境与编译器 转换: 将标注文件从文本格式( .txt )转换为 XML 格式( .xml )可以通过以下步骤完成: 解析文本标注文件:打开 .txt 文件,逐行读取每个标注,并解析边界框坐标和类别信息。 创建 XML 文件:使用 Python 的内置库 xml.etree.ElementTree 创建一个

    2024年02月12日
    浏览(47)
  • 目标检测数据集格式转换:将labelme格式转为YOLO以及VOC格式

    一个目标检测项目需要自己找图片标注数据进行训练,训练需要YOLO格式,但数据增广需要VOC格式,该文记录如何将labelme标注的数据格式转为YOLO格式,再从YOLO格式转为VOC格式,只作为自己用的记录,如果你刚好也需要这么干,或者需要文中提到的某一种转换,也可以参考一下

    2024年02月08日
    浏览(53)
  • 道路坑洞数据集(坑洞目标检测)VOC+YOLO格式650张

        路面坑洞的形成原因是由于设计、施工、养护处理不当、控制不适和受气候、环境、地质、水文等自然因素影响,以及车辆的运行和车辆超载运行导致路面破损,出现坑洞的现象。 路面坑洞的分类: (1)路面混凝土板中坑洞:位于砼板表面,形状小、深度浅多为不规则

    2024年02月04日
    浏览(56)
  • 100种目标检测数据集【voc格式yolo格式json格式coco格式】+YOLO系列算法源码及训练好的模型

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

    2023年04月09日
    浏览(52)
  • 目标检测任务中常用的数据集格式(voc、coco、yolo)

    VOC数据集(Annotation的格式是xmI) Pascal VOC数据集是目标检测的常用的大规模数据集之一,从05年到12年都会举办比赛,比赛任务task: 分类Classification 目标检测Object Detection 语义分割Class Segmentation 实例分割Object Segmentation Action Classification(专注于人体动作的一种分类) Person Layout(

    2024年02月14日
    浏览(49)
  • 数据集格式相互转换——CoCo、VOC、YOLO、TT100K

    将annotations目录下的所有xml标注文件按coco格式写入了json文件中。 此处得到的是全部的标签信息,可根据如下代码进行train、val和test的比例划分: train和val同理。 train、val和test分别执行一次即可。 以上代码参考自博文数据转换。

    2023年04月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包