【深度学习:TACO 数据集】探索 TACO 数据集【模型训练】

在这里插入图片描述

【深度学习:TACO 数据集】探索 TACO 数据集【模型训练】

    • 介绍
    • 为什么选择以数据为中心的人工智能?
    • 上次我们学到了什么?
    • 问题
    • 关于数据集
      • 方法
    • 什么是“对象注释质量”指标?
    • 第一次迭代:修复标签错误
      • 分析
      • 重新贴标签
      • 模型再训练
    • 第二次迭代:修复错误标记的对象
      • 分析
      • 重新贴标签
      • 模型再训练
    • 结论

介绍

想象一下,您正在建造一个可以收集地面垃圾的自主机器人。作为机器学习工程师,您将负责赋予其在任何环境中检测垃圾的能力。

这是一个挑战,但有了正确的检测系统,您将离更清洁的世界更近一步,并且您将建造一个很酷的人工智能机器人。下载开源垃圾数据集后,您意识到您的模型存在多种挑战,并且即使您应用了最先进的模型,性能也很差。

这就是我们在这个以数据为中心的人工智能案例研究系列的第一部分中结束的地方。在上一篇文章中,我们分析了 TACO 数据集和标签,发现该数据集存在很多问题。

在以数据为中心的人工智能案例研究的第二部分中,我们将开始调试数据集并逐步提高模型的性能。

TLDR;

使用质量指标来计算流行的开源 TACO 数据集中多边形标签的对象注释质量,我们发现约 5% 的图像存在标签错误。通过修复标签错误,我们将最先进的计算机视觉模型的 mAP 与以下类别的基线相比提高了近 50%:透明塑料瓶

在这里插入图片描述

为什么选择以数据为中心的人工智能?

作为机器学习工程师,了解构建人工智能模型的不同方法以及每种方法的优缺点非常重要。以数据为中心的方法强调静态机器学习模型并注重改进底层训练数据。以数据为中心的方法建议持续关注在交互过程中添加高价值的训练数据,以提高整体模型的准确性和性能。

另一方面,以模型为中心的方法基于静态数据集,重点是开发和改进机器学习模型和算法。这通常是课堂上教授和前沿研究中使用的方法。然而,在工业中,以数据为中心的方法更为普遍,它可能会推动人工智能的未来发展以及 MLOps 和主动学习等领域的成熟。

在这里插入图片描述
作为机器学习工程师和数据科学家,重要的是我们要考虑问题的具体要求和约束,并选择最适合手头任务的方法。在某些情况下,可以结合使用两种方法来实现最佳性能。众所周知,吴恩达(Andrew Ng)是机器学习领域的先驱,我们甚至可以称他为以数据为中心的人工智能之父(至少他是最直言不讳的粉丝)。值得研究他的工作,以更深入地了解这些方法以及如何将它们应用到实践中。如果您有兴趣,请查看 DeepLearning.AI 的不同资源。

上次我们学到了什么?

让我们首先回顾一下我们第一篇博文中在 TACO 数据集中发现的挑战:

  • 类别不平衡:数据集包含很多类别(60),我们发现类别不平衡程度很高。有几个类别的标签接近 0(铝泡罩包装 6、电池 2、梳理泡罩包装 1)。
  • 相似的对象类:许多对象类在语义上非常相似。
  • 小物体:大多数物体都非常小,例如香烟、罐头、易拉罐。
  • 标注质量低:众包数据集的标注质量比官方数据集差很多;因此,应对标签进行审查。

我们知道许多人在改进模型时在项目中面临这些常见挑战。让我们制定一个问题陈述并尝试逐步提高我们的模型性能。

问题

我们着手遵循以数据为中心的方法来提高 TACO 数据集上 Mask RCNN 模型的性能。

由于 TACO 数据集包含 60 个类,因此我们将本教程的重点缩小到一个类(并节省一些计算能力)。我们最终选择了:

透明塑料瓶:由 PET 制成的水瓶和软饮料瓶。

在这里插入图片描述
为什么?

嗯,它在数据集中得到了很好的体现(476 张图像中的 626 个注释),我们发现它经常与其他对象(例如其他塑料瓶饮料罐)混淆。

此外,这是一个有趣且有用的用例,对于拥有存款返还系统(例如丹麦或瑞典系统)的国家可能具有潜在价值。

为简单起见,我们将根据三个指标来衡量性能:mAPmAR 和我们自己的目标注释质量指标。

关于数据集

  • 研究论文:TACO:用于垃圾检测的垃圾注释
  • 作者:佩德罗·F·普罗恩萨 (Pedro F Proença)、佩德罗·西蒙斯 (Pedro Simões)
  • 数据集大小:官方:1500 张图像,4784 个注释;非官方:3736 张图像,8419 个注释。
  • 类别: 60 窝类别
  • 许可证:CC BY 4.0
  • 发布日期:2020 年 3 月 17 日
  • 了解更多:Github 和网页

方法

为了改进机器学习模型,我们开始使用各种不同的策略:(1)重新标记不良样本,(2)修复错误标记的类,(3)标记新样本,以及(4)数据增强。

在本教程中,我们将尝试策略 (1) 和 (2),在下一个教程中我们将尝试策略 (3) 和 (4)。

每次迭代后,我们将使用改进的非官方数据集使用相同的神经网络架构重新训练模型,以比较固定官方数据集上的模型性能。

在这里插入图片描述
在我们开始讨论之前,让我们快速介绍一下“对象注释质量”指标:

什么是“对象注释质量”指标?

“对象注释质量”指标计算嵌入空间中最近邻居之间标签类别的偏差,以识别哪些标签可能包含错误。

从技术上讲,该度量将多边形转换为边界框,并提取每个边界框的嵌入。然后,将这些嵌入与它们的邻居进行比较。如果邻居的注释不同,则给予低分。您可以在 Encord Active 的 GitHub 存储库上找到技术实现。

太好了,让我们开始吧。

第一次迭代:修复标签错误

分析

使用对象注释质量指标,我们可以看到透明塑料瓶类与其他塑料瓶类混淆,有时甚至与饮料罐类混淆。

提示:您可以使用 "标签质量"→"探索 "选项卡对对象类的样本进行排序,并选择任何质量指标。只需选择 "对象注释质量 "指标,并按降序对样本进行排序。这将首先显示该类的正确标注样本。

让我们把这三种物体形象化,了解它们的真正含义:

在这里插入图片描述
它们之间的相似性似乎并不明显:然而,由于这些注释是众包的,因此注释者对于该用例可能具有不同级别的上下文,并且每个类的描述可能会引起混乱(考虑到有 60 个标签类)。

让我们深入研究 Encord Active 应用程序并打开非官方数据集。

我们导航到**“标签质量”→“资源管理器”**选项卡,选择“对象注释质量”作为指标,然后选择“透明塑料瓶”作为目标类别。按升序对样本进行排序,以查看注释质量分数较低的对象。

在这里插入图片描述

这里有些例子:

在这里插入图片描述
使用 Encord Active,我们可以直接发现这些标签错误。

提示:如果您是从 Encord Annotate 帐户导入的项目,则可以直接单击每个图像下方的编辑器按钮,在 Encord Annotate 平台中将其及其注释打开,您可以在其中轻松修复注释。

重新贴标签

在第一次迭代中,我们将修复所有注释为透明塑料瓶的对象的标签。通过从低注释质量到高注释质量,我们可以首先识别质量最低的标签。

按照这种方法,我们在 1 个小时多一点的时间里为 81 张图像修复了 117 个标签。

在这里插入图片描述
数据标记之后,让我们回到模型训练。

模型再训练

让我们在更新的数据集上重新训练我们的机器学习模型,看看透明塑料瓶的性能是否发生变化。

现在,在项目中填写 config.ini 文件的详细信息并重新训练模型(如果您之前没有这样做,请阅读此处的第一篇博客)。

训练结束后,我们将预测导入到 Encord Active 中,就像我们在上一篇博客文章中所做的那样,并检查性能。我们可以看到对象注释质量的性能现在为 0.416

在这里插入图片描述
与基线相比的性能结果如下表所示。新模型的检测性能比 mAP 的基线高 7.7%,而 mAR 的检测性能略低 (-1.5%)。

在这里插入图片描述

第二次迭代:修复错误标记的对象

良好的开端;但是,我们希望研究提高透明塑料瓶类模型性能的其他方法。

接下来,我们将讨论修复类标签错误。我们将首先查看其他塑料瓶物体的标签质量,以确定某些物体是否被错误地标记为透明塑料瓶

分析

首先,我们调查一些注释错误的其他塑料瓶标签。

在这里插入图片描述
我们看到许多标签实际上属于透明塑料瓶类别,但被标记为其他塑料瓶。

因此,让我们重新标记其他塑料瓶的错误分类图像,就像我们之前所做的那样。

重新贴标签

在这里插入图片描述

1.5 小时后,现在已经重新标记了近 100 张图像中的 150 个标签(98…)。数据标记既耗时又乏味,但让我们看看它作为一种以数据为中心的方法来提高模型性能有多么强大。

模型再训练

我们将该数据集命名为 Unofficial-v3 并训练一个新的机器学习模型。训练完成后,我们导入官方数据集的预测,打开应用程序并检查对象注释质量的性能现在为 0.466

在这里插入图片描述
在这里插入图片描述
多么大的进步啊!

通过修复错误标记的其他塑料瓶对象,我们将 Mask-RCNN 机器学习模型的 mAP 分数性能提高了 40%。如果我们选择以模型为中心的人工智能方法并简单地尝试微调模型,那么这种性能提升几乎是不可能的。与基线相比,我们的性能提高了近 50%!

在这项工作中,我们只专注于提高单个班级的表现;但如果我们对其他班级做同样的工作,也可以取得类似的结果。

结论

在以数据为中心的人工智能案例研究系列的第二部分中,我们的目标是提高特定类别的垃圾检测模型的性能。为此,我们利用开源主动学习工具 Encord Active,利用简单的数据驱动工作流程。使用该工具,我们:

  • 发现并修复不良标签以优化我们的模型性能,从而提高透明塑料瓶类别的准确性。
  • 发现并修复了被错误分类的对象并修复了标签。

在两个迭代周期结束时,我们将目标类的 mAP 比基线提高了 47%。

在以数据为中心的人工智能案例研究系列的最后一篇文章中,我们将展示如何通过定位标记工作和增强当前图像来提高基于类的模型性能。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

c++的一些陌生用法记录

c的一些陌生用法记录 1. 完美转发std::forward<decltype(PH1)>(PH1)static的用法 1. 完美转发std::forward<decltype(PH1)>(PH1) static的用法 static函数与普通函数的区别&#xff1a; 用static修饰的函数&#xff0c;本限定在本源码文件中&#xff0c;不能被本源…

MyBatisPlus:PG数组类型自动映射问题

引言: PostGreSQL数据库提供了丰富的数据类型,通过查看官网文档,我们也可以发现,PG也提供了对数组类型的支持。 但是在实际开发中,我们通常是使用MyBatis/MyBatisPlus这种半自动ORM映射框架来实现数据库/表数据基本的增删改查,以及其它操作。那么,问题来了,如何…

大蟒蛇(Python)笔记(总结,摘要,概括)——第10章 文件和异常

目录 10.1 读取文件 10.1.1 读取文件的全部内容 10.1.2 相对文件路径和绝对文件路径 10.1.3 访问文件中的各行 10.1.4 使用文件的内容 10.1.5 包含100万位的大型文件 10.1.6 圆周率中包含你的生日吗 10.2 写入文件 10.2.1 写入一行 10.2.2 写入多行 10.3 异常 10.3.1 处理Ze…

二进制搭建 Kubernetes

实验流程 k8s集群master01&#xff1a;192.168.75.10 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02&#xff1a;192.168.80.20 k8s集群node01&#xff1a;192.168.75.20 kubelet kube-proxy docker k8s集群node02&#xff1a;192.168.…

【Flink经济】Flink 内存管理

面临的问题 目前&#xff0c; 大数据计算引擎主要用 Java 或是基于 JVM 的编程语言实现的&#xff0c;例如 Apache Hadoop、 Apache Spark、 Apache Drill、 Apache Flink 等。 Java 语言的好处在于程序员不需要太关注底层内存资源的管理&#xff0c;但同样会面临一个问题&…

动态规划--线性DP最长上升子序列及其二分优化

1、B站视频链接&#xff1a;E03 线性DP 最长上升子序列_哔哩哔哩_bilibili #include <bits/stdc.h> using namespace std; int n9; int a[101]{0,5,7,1,9,4,6,2,8,3}; int f[101]; //f[i]表示以a[i]为结尾的 //最长上升子序列的长度 int main(){int i,j,ans1;for(int i1…

Spring学习笔记(五)--Spring的AOP模块

一、AOP的底层原理 AOP的底层原理是动态代理&#xff0c;动态代理有两种方式&#xff1a;JDK动态代理和CGLib动态代理&#xff0c;在有接口的实现类时我们通常用JDK的动态代理方式&#xff08;默认情况&#xff09;为类创建代理对象&#xff0c;JDK的动态代理方式可以实现无入…

智慧建工的魔法:数据可视化的引领之光

在智慧建工的时代&#xff0c;数据可视化成为推动建筑行业进步的强大引擎&#xff0c;其作用不可忽视。通过将复杂的建筑数据以直观、清晰的图形展示出来&#xff0c;数据可视化为建筑工程提供了前所未有的便利和创新。 首先&#xff0c;数据可视化在建筑规划和设计阶段发挥关键…

浏览器---浏览器/http相关面试题

1.localStorage和sessionStorage 共同点&#xff1a;二者都是以key-value的键值对方式存储在浏览器端&#xff0c;大小大概在5M。 区别&#xff1a; &#xff08;1&#xff09;数据有效期不同&#xff1a;sessionStorage仅在当前浏览器窗口关闭之前有效&#xff1b;localStorag…

基于springboot+vue的B2B平台的医疗病历交互系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

上海亚商投顾:北向资金净买入超130亿

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 指数昨日低开高走&#xff0c;三大股指午后均涨超2%&#xff0c;沪指一度逼近3000点关口&#xff0c;尾盘涨幅…

D3380——应用于无线收发机的宽带 IF IC, 最大 IF 频带为 15MHz. 包含 IF 限 幅放大器、RSSI 和检测器。

D3380是一块具有较大15MHz的高带宽中放集成电路。电路内部集成了一块中放限幅放大器&#xff0c;接收信号强度指示器&#xff0c;检测器。电路主要应用于无绳电话&#xff0c;收音机&#xff0c;遥控器&#xff0c;无线数据传输器等通讯类器件。电路具有低工作电流特性能适应于…

Linux篇:开发工具yum/vim/gcc/g++/Makefile/gdb

一. yum&#xff1a;软件包管理器 什么是软件包&#xff1f; 在Linux 下安装软件 , 一个通常的办法是下载到程序的源代码 , 并进行编译 , 得到可执行程序 . 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好 , 做成软件包 (可以理解成windows 上的安装程序) 放在…

【MySQL】学习连接查询和案例演示

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-KOxr1rwR9cQTlydJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

HotSpot虚拟机对象探秘

对象的创建 1.1 对象创建的6种方式 使用new关键字、Class的newInstance()方法、Constructor类的newInstance()方法、clone()方法、反序列化、第三方库Objenesis。 每种创建对象方式的实际操作如下。 使用new关键字—调用无参或有参构造器创建。使用Class的newInstance()方法…

软件实际应用实例分享,门诊电子处方模板制作教程,中西医诊所病历开单系统教程

软件实际应用实例分享&#xff0c;门诊电子处方模板制作教程&#xff0c;中西医诊所病历开单系统教程 一、前言 以下软件教程以 佳易王诊所电子处方软件V17.3为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、在开电子处方的时候&#xff0c…

Python3零基础教程之Python解释器与开发环境搭建

大家好&#xff0c;我是千与编程&#xff0c;硕士毕业于北京大学&#xff0c;曾先后就职于字节跳动&#xff0c;京东等互联网大厂&#xff0c;目前在编程导航知识星球担任星球嘉宾&#xff0c;著有《AI算法毕设智囊袋》&#xff0c;《保姆级带你通关秋招教程》两大专栏。 今天开…

【鸿蒙系统学习笔记】网络请求

一、介绍 资料来自官网&#xff1a;文档中心 网络管理模块主要提供以下功能&#xff1a; HTTP数据请求&#xff1a;通过HTTP发起一个数据请求。WebSocket连接&#xff1a;使用WebSocket建立服务器与客户端的双向连接。Socket连接&#xff1a;通过Socket进行数据传输。 日常…

基于Skywalking开发分布式监控(三)

回顾上期的问题&#xff0c;当我们搭建完成Skywalking的搭建&#xff0c;顺利完成应用监控之后&#xff0c;就会面临一类问题&#xff0c;怎么利用获取的监控数据&#xff0c;包括三方面&#xff1a; 1 应用的Trace和SW收集Service/Endpoint不一定完全一致&#xff0c;可能定位…

【快速上手QT】05-绘画Paint

我们写一个QT程序&#xff0c;说实话&#xff0c;很难昧着良心说这个QT界面很好看&#xff08;技术高超的小伙伴请忽略我这句话&#xff09;。但是我们可以使用绘画事件来弥补一下“相貌丑陋”的这个缺点。 paintEvent 我们可以对主界面进行绘图&#xff0c;从而达到美化界面…