Biu懂AI:Object Detection训练数据的Label格式

  Bui~ 新系列博文将专注AI相关领域,想要学习高通蓝牙相关知识请查看之前的系列或关注大博主声波电波就看今朝

       在CV(computer vision)中,Object detection是其中的一个核心任务,它可以在输入图像或视频中识别并框出目标。这种应用在生活中应用很多,例如停车场的车牌识别,监控的物体识别,智能驾驶的车道车辆识别等等。平常我们不会看到它是怎么框出识别物的,但是在debug模式下我们经常会看到下图这样的识别,识别到特定物体后会框出来并显示他的类别和置信度,直观得表现模型的准确性。

(图片来自于Prediction - Deci AI Documentation Hub)

        这种框框就是Object detection输出的结果,这和我们训练数据时提供的label数据差不多,只是少了置信值。模型通过对比输出结果和输入label的差异来调整模型参数。因此label的输入准不准确,决定了模型输出准不准确。

        因为不同的模型要求label的格式会有所不同,目标类型、标记方框坐标这些数据的排序;label存储的方式;有时训练数据的文件架构也要考虑,这些设置都要和训练框架匹配好才能训练出正确的模型。因此在模型训练的时候,我们要留意训练模型的要求,根据要求去调整label数据的格式。

       首先我们来了解一下label数据包含的主要数据——目标类型和标记方框坐标。目标类型主要用索引值的方式保存;方框坐标就有多种表达方式:

  1. 左上角右下角(XYXY):这种是最直观的方式,通过对角坐标画一个矩形
     
  2. 左上角宽高(XYWH):这种只有一个左上角坐标,加上宽和高之后得到右下角坐标,就能画出矩形了
     
  3. 中心点宽高(CXCYWH):这种只有一个中心点坐标,加减一半的宽和高之后也能得到左上角坐标和右下角坐标

除了格式不一样之外,还有一些会对坐标数据先进行normalized处理,还原坐标时只需要乘上图片对应的宽和高即可。例如一个数据集的坐标格式是CXCYWH,其中一个图片宽高是200*100,有一个label坐标是【0.63 0.66 0.24 0.22】,要将它转成左上右下坐标,

  1. 将CX乘上图片的宽得到实际中心点x:63 * 200 = 126
     
  2. 将CY乘上图片的高得到实际中心点y:66 * 100 = 66
     
  3. 将W乘上图片的宽得到实际方框w:24 * 200 = 48
     
  4. 将H乘上图片的高得到实际方框h:22 * 100 = 22

 

  • 将实际中心点x分别减加去实际方框w的一半得到x1,x2:126 ± 48/2 = 102和150
     
  • 将实际中心点y分别减加去实际方框h的一半得到y1,y2:66 ± 22/2 = 55和77
     
  • 我们就能得到左上角坐标(102,55)和右下角坐标(150,77)

        label的数据格式不固定的,目标类型和标记方框坐标也可以互相调换位置。再来是文件保存格式,一般是保存在文本文档或json文档中。如果是文档格式不兼容的话,可以用python脚本去转换,现在很多训练框架也有提供转换接口。方框坐标也是这样处理。如果是在意文件架构的,也有脚本去整理。如果框架没提供方法,网络也能找到大量的例程。

        Object detection的label格式大概是这样,不同的模型或框架有不同的要求。在训练时,甄别出来,用框架api或自写脚本去设置装换。下一篇将介绍pytorch如何准备训练数据,包含label数据在哪进行转换哦。

       以上是本期博文的全部内容,如有疑问请在博文下方评论留言,我会尽快解答(o´ω`o)و。谢谢大家浏览,我们下期再见。

简单是长期努力的结果,而不是起点

                                                 —— 不是我说的

FAQ 1:数据集的格式没写明,要怎么判断他的坐标格式?

A1:标志这种也能判断:Pascal-VOC format(xyxy)COCO format(xywh)YOLO format(cxcywh)。再不行就在那张图片上把坐标画上去看看

FAQ 2:图像数据格式要匹配吗?

A2:要的,但基本是那三个通道调一下

FAQ 3:有些数据集的json文件还有别的参数,要怎么用?

A3:要根据数据集的说明再去处理

FAQ 4: json文件的label类型用了字符串表示

A4: 如果框架不能识别,就要写一张表,把字符串转成索引,这样模型才好训练

FAQ 5:为什么有些数据集的json文件只有一个,而有些是一张图片对应一个文件

A5: 只有一个文件时,文件里面会记录每个sample的文件名字和对应的label数据,必要时提取出来即可

 

 登录大大通,了解更多详情,解锁1500+完整应用方案,更有大联大700+FAE在线答疑解惑!

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

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

相关文章

Rust 初体验2

变量类型 Rust 语言的变量数据类型,主要包括整型、浮点型、字符、布尔型、元组、数组、字符串、枚举、结构体和可变变量等。 fn main() { // 整型 let integer: i32 100; println!("整型: {}", integer); // 浮点型 let floating_point: f64 3.1…

15.2 Linux入门(❤❤❤❤)

15.2 Linux入门 1. Linux基础1.1 基础概念1. 操作系统2. Linux操作系统3. CentOS操作系统1.2 CentOS安装配置1. 运行要求2. 虚拟机与CentOS安装1.3 Linux目录结构1.4 Linux远程管理配置2. Linux高级操作2.1 命令:vim文本编辑器(❤❤)2.2 命令:常用文本工具(❤❤)1. echo命令<

【网页设计期末】茶文化网站

本文资源&#xff1a;https://download.csdn.net/download/weixin_47040861/88818886 1.题目要求 设计要求&#xff1a; &#xff08;1&#xff09;网站页面数量不少于4个&#xff0c;文件命名规范&#xff0c;网站结构要求层次清楚&#xff0c;目录结构清晰&#xff0c;代码…

使用ORM模型操作MySQL数据库:Python爬虫数据持久化实践

源码分享 https://docs.qq.com/sheet/DUHNQdlRUVUp5Vll2?tabBB08J2 在Python爬虫开发中&#xff0c;数据持久化是一个重要的步骤。通常&#xff0c;我们会将爬取的数据保存到数据库中。本篇博客将介绍如何使用对象关系映射&#xff08;ORM&#xff09;模型在Python中操作MySQ…

Redis的数据类型与示例演示

目录 一、KEY操作 1.1 相关命令 说明&#xff1a; 1.2示例演示 二、String类型 2.1 结构图 2.2 示例演示 三、List类型 3.1 结构图 3.2 相关命令 3.3 示例演示 四、SET类型 4.1 结构图 4.2 相关命令 4.3 示例演示 五、ZSET类型 5.1 结构图 5.2 相关命令 六、…

NumPy基础之花式索引

1 NumPy基础之花式索引 NumPy的花式索引(Fancy indexing)指ndarray数组使用整数数组进行索引。这的整数数组可以是python的列表等可迭代对象&#xff0c;也可以是NumPy数组。 花式索引&#xff0c;用整数数组的元素作为对应轴的索引&#xff0c;并且按数组元素顺序选取子集。…

负载均衡SLB

1. 什么是阿里云上的负载均衡SLB&#xff1f;它的主要功能是什么&#xff1f; 阿里云上的负载均衡SLB是一种流量分发服务&#xff0c;它的主要功能是扩展应用系统的吞吐能力和提升系统可用性。 负载均衡SLB&#xff08;Server Load Balancer&#xff09;在阿里云中是一个核心…

useEffect的4种使用情况

useeffect的用法是&#xff1a;useEffect就是指定一个副效应函数&#xff0c;组件每渲染一次&#xff0c;该函数就自动执行一次。组件首次在网页 DOM 加载后&#xff0c;副效应函数也会执行。 useEffect使用时有以下4种情况 1、不传递 useEffect不传递第二个参数会导致每次渲染…

【Spring连载】使用Spring Data访问Redis(十一)----Redis事务 Transactions

【Spring连载】使用Spring Data访问Redis&#xff08;十一&#xff09;----Redis事务 Transactions Transactional 支持 Redis通过multi, exec 和 discard命令为事务提供支持。RedisTemplate上提供了这些操作。但是&#xff0c;RedisTemplate不能保证使用相同的连接运行事务中的…

C#上位机与三菱PLC的通信02--MC协议介绍

1、协议介绍 三菱 PLC MC 协议是一种用于三菱 PLC 与上位机之间进行数据通信的协议&#xff0c;也称为 Mitsubishi Communication Protocol。该协议支持串口、以太网等多种通讯方式&#xff0c;可实现实时数据的采集和交换。三菱PLC的MC协议是一种数据通信协议&#xff0c;它用…

Bootstrap5 响应式导航栏

Bootstrap5 响应式导航栏 我们可以使用 Bootstrap5 导航栏组件为网站或应用程序创建响应式导航标题。 这些响应式导航栏在手机等小视口的设备上会折叠&#xff0c;但当用户单击切换按钮时会展开。 但是&#xff0c;它在中型和大型设备&#xff08;例如笔记本电脑或台式机&#…

考研数据结构笔记(4)

链表&#xff08;链式存储&#xff09; 单链表定义基本操作的实现单链表的插入按位序插入指定节点的前插指定节点的后插 单链表的删除 小结 单链表 定义 顺序表优点:可随机存取&#xff0c;存储密度高&#xff0c;缺点:要求大片连续空间&#xff0c;改变容量不方便。 单链表优…

中科星图——如何利用中科星图智脑引擎来下载0.5米分辨率的高清遥感影像

简介 如何利用中科星图智脑引擎来下载0.5米分辨率的高清遥感影像,这里我们一旦您有GEE的基础那么还是非常好的接入到这个平台当中的,所以这里我们依旧是使用的JavaScript语言来进行编程,地球计算器-地球编程 (geovisearth.com) 这里有一个好处是这里的函数我们可以直接悬浮…

1898_野火FreeRTOS教程阅读笔记_链表操作

1898_野火FreeRTOS教程阅读笔记_链表操作 全部学习汇总&#xff1a; g_FreeRTOS: FreeRTOS学习笔记 (gitee.com) 新的节点的插入&#xff0c;影响到的是链表中最后一个元素的后继以及当前被插入元素的前驱、后继以及归属属性。具体的操作效果为&#xff1a;新的节点更新自己的前…

请解释Java中的设计模式,并举例说明一个常用的设计模式

请解释Java中的设计模式&#xff0c;并举例说明一个常用的设计模式 在Java中&#xff0c;设计模式是一种被广泛采用的解决特定问题的可复用方案。设计模式提供了一套经过验证的解决方案&#xff0c;可以帮助开发人员解决常见的软件设计问题&#xff0c;提高代码的可维护性、可…

2 月 7 日算法练习- 数据结构-树状数组

树状数组 lowbit 在学习树状数组之前&#xff0c;我们需要了解lowbit操作&#xff0c;这是一种位运算操作&#xff0c;用于计算出数字的二进制表达中的最低位的1以及后面所有的0。 写法很简单&#xff1a; int lowbit&#xff08;int x&#xff09;&#xff5b;return x &am…

51单片机精进之路-1点亮led灯

本例中led灯使用共阳极连接在电路中&#xff0c;共阳极即将led的正极接在一起&#xff0c;通过上拉电阻接到电源正极&#xff0c;通过单片机io与Led的负极相连&#xff0c;io输出低电平&#xff0c;有电流从led流过&#xff0c;此时led点亮&#xff0c;当io输出高电平时&#x…

leetcode-206-翻转链表

对于链表来说&#xff0c;->next就是代表图上的那个箭头&#xff0c;指向后&#xff0c;就相当于已经建立完链接&#xff0c;就可以改变只想节点的指针的位置了 每一个指针&#xff0c;则是代表一个圈 一 解题 方法一&#xff1a;迭代 假设链表为 1→2→3→∅1 \rightar…

2024.02.08

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this);this->setWindowIcon(QIcon(":/zh.png"));ui->lineEdit->setPlaceholderText("账号/手…

VSCode 文件夹增加右键打开

按照以下步骤操作即可 按下Win R组合键输入"regedit"并按回车&#xff0c;打开注册表编辑器。在注册表编辑器的左侧找到&#xff1a;计算机\HKEY_CLASSES_ROOT\Directory\shell这个路径&#xff0c;在shell下右键新建>项&#xff0c;将其命名为"VSCode&quo…