【大厂AI课学习笔记NO.54】2.3深度学习开发任务实例(7)数据标注和数据集拆分

数据标注

有时我们会把特征工程和数据集的标注弄混淆,在普通的机器学习项目中,我们需要进行特征工程,但是在深度学习项目过程中,我们需要进行数据标注工作。

标注工具

在本案例中,使用的是开源的标注工具Labelme,生成格式为yolo格式的标准文件。

在人工智能的深度学习项目中,数据标注是一个非常重要的环节,它涉及到将原始数据转化为机器学习算法可以理解和学习的形式。下面是一些常用和重要的开源数据标注工具,以及它们的使用方式、重要步骤和数据格式。

  • LabelImg

LabelImg是一个图形图像标注工具,它支持多种标注形式,包括矩形框、多边形、线段、关键点等。使用LabelImg进行标注的步骤大致如下:

(1)导入图像数据:将需要标注的图像数据导入到LabelImg中。

(2)创建标注任务:设置标注任务的名称、描述、标签等信息。

(3)进行标注:使用LabelImg提供的标注工具对图像进行标注。

(4)导出标注数据:将标注数据导出为特定格式的文件,如PASCAL VOC、YOLO等。

LabelImg支持的数据格式包括PASCAL VOC、YOLO、COCO等,这些格式都是深度学习领域常用的数据格式。

  • VIA (VGG Image Annotator)

VIA是VGG发布的图像标注工具,它支持对象检测、图像语义分割和实例分割等标注任务。使用VIA进行标注的步骤大致如下:

(1)上传图像数据:将需要标注的图像数据上传到VIA的服务器上。

(2)创建标注项目:设置标注项目的名称、描述、标签等信息。

(3)进行标注:使用VIA提供的标注工具对图像进行标注。

(4)导出标注数据:将标注数据导出为JSON格式的文件。

VIA支持的数据格式为JSON,其中包含了图像的元数据、标注信息和标签等信息。

  • CVAT (Computer Vision Annotation Tool)

CVAT是一个高效的计算机视觉标注工具,它支持图像分类、对象检测、图像语义分割、实例分割等多种标注任务。使用CVAT进行标注的步骤大致如下:

(1)上传图像数据:将需要标注的图像数据上传到CVAT的服务器上。

(2)创建标注任务:设置标注任务的名称、描述、标签等信息。

(3)进行标注:使用CVAT提供的标注工具对图像进行标注。CVAT支持多人协作标注,可以提高标注效率。

(4)导出标注数据:将标注数据导出为特定格式的文件,如COCO、PASCAL VOC等。

CVAT支持的数据格式包括COCO、PASCAL VOC、YOLO等,这些格式都是深度学习领域常用的数据格式。此外,CVAT还支持视频数据标注和本地部署,可以满足更多的需求。

对于以上这些工具,使用方式都相对直观,一般都会有详细的用户指南和教程可供参考。在使用过程中,需要注意的是要保证标注的准确性和一致性,这样才能训练出高质量的深度学习模型。同时,对于大规模的数据标注任务,可以考虑使用多人协作的方式进行标注,以提高效率。

此外,有2个标准工具,LabelImg和Labelme,我们常弄混淆。

LabelMe和LabelImg是两个不同的图像标注工具,它们各自具有独特的特点和功能。

LabelMe是由麻省理工学院(MIT)的计算机科学和人工智能实验室(CSAIL)研发的图像标注工具。它主要用于创建计算机视觉和机器学习应用所需的标记数据集,支持多种标注类型,如矩形框、多边形、圆形、多段线、线段、点等,可以用于目标检测、图像分割等任务。此外,LabelMe还可以用于视频标注,生成VOC格式和COCO格式的数据集。它的源代码已经开源,并且可以在服务器上安装使用,是一个在线的Javascript图像标注工具,可以在任意地方使用,不需要在电脑中安装大型数据集。

LabelImg也是一款开源的图像标注工具,它的标签可用于分类和目标检测,其注释以PASCAL VOC格式保存为XML文件。它使用Python编写,并使用QT作为其图形界面。

主要区别如下:

  1. 开发背景:LabelMe由知名的麻省理工学院(MIT)的计算机科学和人工智能实验室(CSAIL)研发,而LabelImg则可能由不同的开发团队或组织开发。
  2. 功能和用途:虽然两者都用于图像标注,但LabelMe支持更多的标注类型,并且可以用于视频标注,而LabelImg则更专注于图像分类和目标检测任务。
  3. 数据格式:LabelMe可以生成VOC格式和COCO格式的数据集,而LabelImg的注释则以PASCAL VOC格式保存为XML文件。
  4. 使用方式:LabelMe是一个在线的Javascript图像标注工具,可以在任意地方使用,而LabelImg则是基于Python和QT的桌面应用程序。

总的来说,LabelMe和LabelImg虽然都是图像标注工具,但它们在开发背景、功能和用途、数据格式以及使用方式等方面存在一些差异。选择哪个工具取决于具体的项目需求和个人偏好。

这2个文件,都支持使用yolo格式来存储文件,我们在本案例中,也选择这个文件格式。

在YOLO的标注文件中,通常会包含以下几个部分:

  1. 图像文件:这些是原始的图像文件,通常以JPEG或PNG格式存储。

  2. 标注文件:对于每个图像,都会有一个与之对应的标注文件,通常以.txt为扩展名。这个文件包含了图像中每个对象的边界框坐标和类别ID。在YOLO格式中,这个文件的每一行代表一个对象,包含以下信息:对象类别ID、对象的中心点x坐标、对象的中心点y坐标、对象的宽度、对象的高度。这些信息都是相对于图像的宽度和高度的比例值,并且是按空格分隔的浮点数。

  3. classes.txt:这个文件包含了数据集中所有类别的列表,每个类别占一行。这个文件用于将类别ID映射到实际的类别名称。例如,如果classes.txt中的内容是:

    person
    bicycle
    car
    ...

    那么类别ID 0就对应着"person",类别ID 1对应着"bicycle",以此类推。

在开源工具中,能够处理YOLO格式的工具很多,但具体哪一个工具生成了包括classes.txt的YOLO格式标注文件并不是由文件格式本身决定的,而是由使用该工具的用户或开发者决定的。许多标注工具都支持导出为YOLO格式,同时附带一个classes.txt文件来指明类别。

我们存储为的格式是:

 标注文件每行表示一个矩形框;含义分别是:类别编号、中心点x坐标、中心点y坐标、框体宽度、框体高度;数值是根据图片宽高归一化后的数据,所以是0~1之间的小数。

classes.txt:存放标注的所有类别。本案例中,做了简化,就是traffic一个类别。

抽查

抽查比例由具体任务决定,由于本案中的检测任务较为简单,我们抽查1%,即 100 张。

数据集拆分

将所有数据按照8:2的比例拆分为训练集(8000张)与测试集(2000张)。注意标注文件也应当对应拆。

训练集将提供跟算法组用于模型训练,测试集将提供给测试组用于验证数据的泛化效果。

要用随机采样的方式划分,确保独立。

2个集,不要有1张重合的。这是非常重要的概念。本认证考试中,也特意有这样的考题。

(待续)

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

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

相关文章

PureFlash v1.9.1特性介绍

PureFlashv1.9.1版本特性主要有3个: 1. 支持RDMA网络 使用RDMA协议可以大大减少对CPU的消耗,性能提升30%以上。 PureFlash的网络配置分为存储节点间网络(存储后端网)和客户端网络(前端网)。都支持使用RD…

Elasticsearch 创建index库 timeout

问题概述 使用 python 客户端 代码进行创建,【之前成功创建,但是现在出现报错,报错代码es_connection.client.indices.create】def create_vector_index(dataset_index_name,vector_query_field,query_field):es_connection = get_collention(dataset_index_name,vector_que…

Redis+Caffeine 太强了!二级缓存可以这样实现!

在实际的项目中,我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中,只有当缓存的访问没有命中时再查询数据库。 在一些场景下可能还需要进一步配合本地缓存使用,例如Guava cache或Caffeine,从而再次提升程序的响应…

Keil5 配置jlink及jlink下载程序,程序没有运行

1.先选好对应的芯片设备 之后步骤参考这个:MDK5 JLINK配置流程_keil5配置jlink仿真器步骤-CSDN博客 2.jlink下载程序之后板子没有运行可以查看reset and run是否有没有勾选

享元模式(Flyweight Pattern)

定义 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;其主要目的是通过共享尽可能多的数据来减少内存使用和提高性能。它通常在需要创建大量相似对象的情况下使用&#xff0c;以减少对象的数量和内存消耗。 示例 #include <iostream…

扫雷2(2537)

题目描述 扫雷游戏是一款十分经典的单机小游戏。它的精髓在于&#xff0c;通过已翻开格子所提示的周围格地雷数&#xff0c;来判断未翻开格子里是否是地雷。现在给出 m 行 n 列的雷区中的地雷分布&#xff0c;要求计算出每个非地雷格的周围格地雷数。 注&#xff1a;每个格子周…

docker build基本命令

背景 我们经常会构建属于我们应用自己的镜像&#xff0c;这种情况下编写dockerfile文件不可避免&#xff0c;本文就来看一下常用的dockerfile的指令 常用的dockerfile的指令 首先我们看一下docker build的执行过程 ENV指令&#xff1a; env指令用于设置shell的环境变量&am…

1019: 【C1】【循环】【for】满足条件的数累加

题目描述 将正整数 m 和 n 之间&#xff08;包括 m 和 n&#xff09;能被 17 整除的数累加。其中&#xff0c;0 < m < n < 1000。 输入 一行&#xff0c;包含两个整数m和n&#xff0c;其间&#xff0c;以一个空格间隔 输出 输出一行&#xff0c;包行一个整数&…

【c语言】字符函数和字符串函数(下)

前言 书接上回 【c语言】字符函数和字符串函数(上) 上一篇讲解的strcpy、strcat、strcmp函数的字符串长度是不受限制的 而本篇strncpy、strncat、strcnmp函数的字符串长度是受限制的 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;…

JANGOW: 1.0.1

kali:192.168.223.128 主机发现 nmap -sP 192.168.223.0/24 端口扫描 nmap -p- 192.168.223.154 开启了21 80端口 web看一下&#xff0c;有个busque.php参数是buscar,但是不知道输入什么&#xff0c;尝试文件包含失败 扫描目录 dirsearch -u http://192.168.223.154 dirse…

Python的字符串操作你用对了吗?

1.创建字符串 字符串指的是使用一对单引号或者一对双引号或者一对三个单引号或者一对三个双引号包裹的文本 # 创建字符串str1 hellostr2 "world"print(str1)print(str2) # 使文本原样输出str3 床上明月光&#xff0c;疑是地上霜。str4 """举头望…

零基础韩语怎么学,柯桥韩语培训留学培训

应用”ㅗ”的单词为&#xff1a; 辅音ㄱ 发音时&#xff0c;将舌后部分向上抬起&#xff0c;舌根接触软腭堵住气流&#xff0c;然后放开使气流冲出而成音。它跟汉语中的”g” 歌(ge)古(gu) 国(guo)中的声母比较相似。 应用”ㄱ”的单词为&#xff1a; &#xff08;1&#x…

10.vue学习笔记(组件数据传递-props回调函数子传父+透传Attributes+插槽slot)

文章目录 1.组件数据传递2.透传Attributes&#xff08;了解&#xff09;禁用Attributes继承 3.插槽slot3.1.插槽作用域3.2.默认内容3.3.具名插槽3.4.插槽中的数据传递3.5.具名插槽传递数据 1.组件数据传递 我们之前讲解过了组件之间的数据传递&#xff0c;props 和 自定义事件…

算法【线性表的查找-顺序查找】

线性表的查找-顺序查找 顺序查找基本思想应用范围顺序表的表示数据元素类型定义查找算法示例分析 时间效率分析顺序查找的特点如何提高查找效率 顺序查找 基本思想 在表的多种结构定义方式中&#xff0c;线性表是最简单的一种。而顺序查找是线性表查找中最简单的一种。 顺序查…

Superhuman 邮箱的替代方案是什么?

Superhuman是一个极好的人工智能工具在电子邮件助理领域。根据SimilarWeb的最新统计&#xff0c;它在全球网站排名中排名第21980位&#xff0c;月访问量为1751798。然而市场上还有许多其他优秀的选择。为了帮助您找到最适合您需求的解决方案&#xff0c;我们为您精心挑选了10种…

Python进阶学习:json.dumps()和json.dump()的区别

Python进阶学习&#xff1a;json.dumps()和json.dump()的区别 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程 &#x1f448; 希望得到您…

Golang基础面试题1

来源于fullstack&#xff0c;绿色为重点 1. Go语言是什么 Go 是一种通用编程语言&#xff0c;设计初衷是为了进行系统编程。它最初是由 Google 的 Robert Griesemer、Rob Pike 和 Ken Thompson 在 2007 年开发的。Go 语言是强类型且静态类型的&#xff0c;它内置了对垃圾回收…

在Ubuntu上为ARM 8处理器安装Python 3.10.4虚拟环境指南

在Ubuntu上为ARM 8处理器安装Python 3.10.4虚拟环境指南 安装Anaconda或Miniconda&#xff1a; 首先&#xff0c;您需要从官方网站下载适用于ARM架构的Anaconda或Miniconda安装包。下载完成后&#xff0c;在终端中使用bash Anaconda3-2019.10-Linux-armv8.sh&#xff08;文件…

【JVM】StringTable 字符串常量池

参考&#xff1a;javaGuide 字符串常量池 是 JVM 为了提升性能和减少内存消耗针对字符串&#xff08;String 类&#xff09;专门开辟的一块区域&#xff0c;主要目的是为了避免字符串的重复创建 String的不可变性 1.通过字面量的方式&#xff08;区别于new&#xff09;给一个…

利用小红书笔记详情API:轻松获取海量笔记内容

小红书是一个非常流行的社交分享平台&#xff0c;特别是深受年轻人喜欢&#xff0c;因为它提供了用户分享生活方式、时尚、美妆、旅行、美食等内容的功能。如果你希望从小红书上获取大量的笔记内容&#xff0c;那么利用小红书的API是一个很好的选择。下面&#xff0c;我将为你介…