【深度学习:Micro-Models】用于标记图像和视频的微模型简介

在这里插入图片描述

【深度学习:Micro-Models】用于标记图像和视频的微模型简介

    • 微模型:起源故事
    • 微模型到底是什么?
      • 更详细地解释微观模型:一维标签
      • 蝙蝠侠效率
    • 在计算机视觉项目中使用微模型的额外好处
    • 面向数据的编程

在本文中,我们将介绍 Encord 用于自动化数据注释的“微模型”方法。我们已将这种方法部署到各个领域的计算机视觉标记任务中,包括医学成像、农业、自动驾驶汽车和卫星成像。

让我们切入正题:

  • 什么是微模型低偏差模型适用于数据集中的一小组图像或视频。
  • 微模型如何发挥作用? 在狭义任务的少数示例上过度拟合深度学习模型,一旦准确性足够高,就可以将其应用于整个数据集。
  • 为什么在计算机视觉中使用微模型? 节省数百小时的手动标记和注释。

构建一个检测蝙蝠侠的微型模型需要多少数据?

在这里插入图片描述

黑暗骑士

当然,这取决于您的目标。也许您想要一个通用模型,可以同时检测亚当·韦斯特、迈克尔·基顿和巴特弗莱克等蝙蝠侠。也许您需要它包含一个布鲁斯·韦恩探测器,该探测器也可以识别面具后面的人。

但如果你想要一个在一部电影、一个场景中跟随克里斯蒂安·贝尔·蝙蝠侠的模型,答案是……五张带标签的图像。用于生成上述模型推理结果片段的模型是使用以下五个标签进行训练的:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

用于训练微模型的五个标签

我希望这有助于回答第一个问题,令人惊讶的是它只需要五张图片。

该模型只是蝙蝠侠的部分模型。它在 Val Kilmer 或 George Clooney Batmen 上的表现并不好,但对于这个特定的用例来说它仍然有效。因此,我们不会称其为蝙蝠侠模型,而是称其为蝙蝠侠微模型

微模型:起源故事

不用担心;微型模特背后的起源故事并不是从一个富家子突然成为孤儿开始的。

我们在 Encord 早期就开始使用微模型,当时我们纯粹专注于视频数据集和计算机视觉模型。

我们在尝试不同的建模框架来自动分类胃肠病学视频时偶然发现了这个想法(您可以在此处找到更多相关信息)。

我们最初的策略是尝试一种“经典”数据科学方法,从广泛分布的视频中采样帧,训练模型,并对不同视频集的样本外图像进行测试。然后,我们将使用这些模型并测量与人工标记相比我们的注释效率的改进。

在这些实验中,我们意识到,仅对来自一个视频的一小组智能选择的帧进行训练的分类模型已经产生了很好的结果。我们还注意到,随着纪元数量的增加,我们的注释效率也随之提高。

这与我们对数据科学最佳实践的了解相反(整个团队在这方面拥有丰富的经验)。无意中,我们严重过度拟合了该视频的模型。但它确实有效,特别是如果我们将其分解,使每个视频都有其模型。我们称它们为微模型。虽然这是针对视频帧分类的,但我们后来将实践扩展到包括对象检测、分割和人体姿势估计任务。

微模型到底是什么?

最简单地说,微模型是针对特定任务或特定数据进行过度训练的特定注释模型。

微模型故意过度拟合模型,使其在一般问题上表现不佳,但在自动化数据注释工作流程的某一方面却非常有效。因此,它们被设计为只擅长一件事。要在实践中使用微模型进行图像或视频注释和标记,更有效的方法是将多个模型组装在一起以自动化全面的注释过程。

在这里插入图片描述

“传统”模型和微模型之间的区别不在于它们的架构或参数,而在于它们的应用领域、用于生成它们的反直觉数据科学实践以及它们的最终用途。

更详细地解释微观模型:一维标签

为了介绍微型模型的工作原理,我们将采用一个高度简化的玩具模型,可以更清晰地了解其背后的基础。机器学习 (ML) 的核心是曲线拟合,只是在具有许多参数的高维空间中进行。将构建模型的本质提炼为最简单的可能情况之一(一维标签)非常有用。以下内容稍微技术性一些;请随意跳过。

假设您是一家人工智能公司,面临以下问题:

  • 您需要建立一个适合下面假设曲线的模型
  • 您没有曲线的 x-y 坐标,实际上无法看到整个曲线;您只能手动对 x 的值进行采样,并且对于每个值,您都必须查找与其关联的相应 y 值(x 的“标签”)。
  • 由于这种“贴标签”操作,每个样品都会产生成本。

您希望用一个模型拟合整个曲线,但对正确数量的点进行密集采样的成本太高。您可以在这里使用什么策略?

一种策略是将高次多项式拟合到曲线域上的一组初始采样点,随机重新采样,评估误差,并根据需要更新多项式。问题是每次检查新的样本点时都必须重新拟合整个曲线。每个点都会影响其他点。您的模型还必须非常复杂才能处理曲线中的所有不同变化。

解决这些问题的另一种策略是在局部区域进行采样,拟合一个近似该区域的模型,然后将整个域中的许多局部区域缝合在一起。我们可以尝试将模型拟合到下面的这个弯曲部分,例如:

在这里插入图片描述

这就是样条插值,一种常见的曲线拟合技术。每个样条线都有目的地“过度拟合”局部区域。它不会远远超出其领域进行推断,但也没有必要这样做。这是在低维空间中表现的微观模型的概念基础。这些单独的样条单元类似于我们用来自动化 x 值标记的“微模型”。

更通用的用例遵循类似的核心逻辑,但有一些额外的微妙之处(例如利用迁移学习和优化采样策略)。为了自动化完整的计算机视觉注释过程,我们还在训练数据工作流程中将微模型“缝合”在一起,类似于装配线。请注意,将弱模型组装在一起以获得更好的推理结果是一个已经存在很长时间的想法。这是一种略有不同的方法。

在 Encord,我们不会对单个预测的微模型进行平均,而是让每个模型自行处理预测。微模型也不仅仅是“弱学习者”。他们只是对数据分布的覆盖范围有限,并且对该覆盖范围表现出非常低的偏差。

对于微模型,我们利用这样一个事实:在注释工作流程过程中,我们可以利用某种形式的人工监督来将模型“指向”正确的领域。这种对微模型领域的指导使我们能够使用很少的人类标签来开始自动化流程。

蝙蝠侠效率

模型可以根据形式(近似世界上某些现象的可量化表示)或功能(帮助您做事的工具)来定义。我的观点倾向于后者。正如常见的引用所说:

所有模型都是错误的,但有些模型是有用的。

微模型也不例外。它们的理由来自于在各个领域的应用程序中使用它们。

为了考虑微模型在注释方面的实际考虑,让我们看一下蝙蝠侠的例子。从我们训练模型的场景中提取 1500 帧,我们发现其中大约一半出现了蝙蝠侠。我们的微模型又选取了大约 70% 的实例。因此,我们仅通过五个手动注释就获得了大约 500 个蝙蝠侠标签。

当然也存在需要纠正的问题。例如,我们有误报。考虑一下我们的模型拾取的场景中的一个“假”蝙蝠侠的推理结果。

在这里插入图片描述

I’m (not) Batman

我们的边界框也没有达到应有的紧密程度。然而,这只是我们微模型的第一步。与普通模型一样,微模型也会经历几轮迭代。为此,主动学习是最好的解决方案。

我们一开始只使用了五个标签,但现在通过一些最小的校正和智能采样,我们有超过 500 个标签可以用来训练下一代微模型。然后,我们使用这个更强大的版本来改进我们的原始推理结果并生成更高质量的标签。经过这个过程的另一个循环后,当考虑到许多人类行为(包括手动更正)时,我们的微型模型的蝙蝠侠标签效率达到了 95% 以上。

在计算机视觉项目中使用微模型的额外好处

评估微模型时还需要考虑一些其他要点:

  • 开始的时间: 您可以在新项目的五分钟内开始使用微模型进行推理,因为它们需要很少的标签来训练。
  • 迭代时间: 启动速度的必然结果是迭代周期短。您可以进入几分钟而不是几小时或几天的主动学习循环。
  • 原型设计: 短迭代周期有利于快速模型实验。我们已经看到微型模型可以作为人们构建的未来生产模型的非常有用的原型。它们可以快速检查想法对于机器学习项目是否具有最低限度的可行性。

面向数据的编程

虽然我们在使用微模型进行数据注释方面取得了成功,但我们认为除了数据管道应用程序之外,还有其他可能性。如前所述,人工智能是曲线拟合。但更根本的是,它让计算机做你想让它做的事情,这就是编程。本质上,微模型是一种统计驱动而非逻辑驱动的编程类型。

“正常”编程的工作原理是通过逻辑运算建立确定性偶发事件,将输入转换为输出。机器学习在高复杂性领域蓬勃发展,在这些领域中,逻辑捕获这些意外事件的难度被从示例中学习所取代。这种统计编程范式仍处于起步阶段,尚未开发出可供实际使用的概念框架。

例如,将问题分解为更小的组件是大多数问题解决框架的关键要素之一。面向对象的编程范式是朝着这个方向的组织转变,它加速了软件工程的发展,并且至今仍在实践中。我们仍处于人工智能的早期阶段,也许实例化面向数据的编程范式对于类似的快速发展是必要的。

在这种情况下,微模型可能在对象范式中具有天然的相似性。复杂数据分布中的一个块是“对象等价物”,微模型是该对象的实例。虽然这些想法还处于早期阶段,但它们与对以数据为中心的人工智能的新强调非常吻合。开发编排这些“数据对象”的工具是下一代人工智能基础设施的负担。我们才刚刚开始,还有很长的路要走。

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

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

相关文章

SystemC学习笔记 - Hello systemc world

Hello Systemc World 码农老规矩,先写一个hello world并输出,语法什么的后面再说,先能编译运行再说。 目录配置 使用examples里的配置,在examples/sysc目录下创建test目录,其下创建第一个test1的目录,如…

【Py/Java/C++三种语言详解】LeetCode每日一题240114【链表】LeetCode83、删除排序链表中的重复节点

文章目录 题目链接题目描述解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目链接 LeetCode83、删除排序链表中的重复节点 题目描述 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返…

寡年是否适合结婚?寡妇年结婚有什么禁忌吗?让程序来告诉你有多少人是寡妇年结婚的。

什么是寡年? 百度百科 原文:寡年-百度百科 指整年没有“立春”的日子就是“盲年”,俗称寡年。又名滑头年 社会上流传的“寡妇年”,是指整个农历年都没有立春的年份。以农历2005年的鸡年为例,立春在公历2月4日&…

8年老鸟,自动化测试经验,测试数据管理分析总结,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 问题:…

Linux 转换文字编码与换行符 nkf命令

参考资料 【 nkf 】コマンド――文字コードと改行コードを変換するnkfコマンドでファイルの文字コードと改行コードを統一する 目录 一. 前期准备二. 乱码现象与分析三. nkf命令3.1 nkf --guess 查看文件编码3.2 nkf -w8 UTF-8(BOM)编码显示3.3 nkf -wd --overwrite 覆盖源文件…

关于CodeReview的一些实践和思考

在日常开发中,Code Review 的重要性日益凸显。它不仅有助于提升代码质量,还促进了团队成员之间的知识共享和技能提升。本文将主要聚焦于 Code Review,分享在这个过程中的一些心得和思考。 CodeReview常用到的一些术语 之前看到公司的大佬经…

项目进度管理

7过程 计划过程组6项:规划进度管理,定义活动,排列活动顺序,估算活动资源,估算活动持续时间,制定进度计划, 监控过程组1项:控制进度 1、规划进度管理, 对项目过程中管理…

Webpack模块打包工具

目录 Webpack模块打包工具知识点自测01.Webpack 简介以及体验目标讲解小结 02.Webpack 修改入口和出口目标讲解小结 03.案例-用户登录-长度判断目标讲解小结 04.Webpack 自动生成 html 文件目标讲解小结 05.Webpack-打包 css 代码目标讲解小结 06.优化-提取 css 代码目标讲解小…

C++学习笔记——继承和动态内存分配

目录 一、继承 二、动态内存分配 三、继承的细节 四、动态内存分配细节 五、一个动物园管理系统 继承和动态内存分配是C中两个重要的概念 一、继承 继承是C中面向对象编程的一个重要特性,它允许我们创建一个新类,该类从现有的类中继承属性和方法&…

设置ubuntu命令行样式

目录 一、脚本 二、含义 三、颜色设置 四、展示 五、注意 上次为了学习ros安装了一个22.04并且做了简单的配置,这次我们进一步对命令行样式进行配置 ubuntu22.04安装与配置_ubuntu22.04硬件配置-CSDN博客 一、脚本 这是他的默认配置,太长了&#x…

Python--循环语句

在 Python 中,循环语句用于重复执行一段代码多次。Python 主要提供了两种类型的循环:for 循环和 while 循环。 1. for 循环 for 循环用于遍历可迭代对象(如列表、元组、字典、字符串等)中的每个元素,并对每个元素执行…

【每日一题】构造限制重复的字符串

文章目录 Tag题目来源解题思路方法一:贪心空间复杂度: O ( ∑ ) O(\sum) O(∑)。 写在最后 Tag 【贪心】【字符串】【2024-01-13】 题目来源 2182. 构造限制重复的字符串 解题思路 方法一:贪心 思路 解题思想比较简单,利用贪…

C++进阶--红黑树

红黑树 一、红黑树的概念二、红黑树的性质三、红黑树结点的定义四、红黑树的插入五、红黑树的验证七、红黑树的查找七、红黑树与AVL树的比较七、完整代码RBTree.h 一、红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色…

IaC基础设施即代码:使用Terraform 连接 alicloud阿里云

目录 一、实验 1.环境 2.alicloud阿里云创建用户 3.Linux使用Terraform 连接 alicloud 4.Windows使用Terraform 连接 alicloud 二、问题 1.Windows如何申明RAM 相关变量 2.Linux如何申明RAM 相关变量 3. Linux terraform 初始化失败 4.Linux terraform 计划与预览失败…

关于高通Android 平台上qssi的介绍

1. QSSI 是 Qualcomm Single System Image 的缩写。 2. Android Q上开始支持QSSI。 3. QSSI 是用来编译system.img的 3.1 QSSI编译注意事项 lunch qssi ------ 编译system.img lunch target ------ 编译其余的image 3.2 有QSSI和没有QSSI的编译流程对比 没有QS…

YOLOv5独家原创改进:多层次特征融合(SDI)结合PConv、DualConv、GSConv,实现二次创新 | UNet v2最新论文

💡💡💡本文独家改进:多层次特征融合(SDI)高效结合DualConv、PConv、GSConv等实现二次创新 1)替代原始的Concat; 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),适合paper !!! 💡�…

Docker运行RabbitMQ并使用SpringAMQP操作

文章目录 一、RabbitMQ运行二、整合SpringAMQP1. 引入依赖 三、测试1. 消费者2. 生产者3. 运行 一、RabbitMQ运行 拉取docker镜像 docker pull rabbitmq:3-management基础运行命令 docker run \-e RABBITMQ_DEFAULT_USERrabbitmq \-e RABBITMQ_DEFAULT_PASSrabbitmq \--name…

Vue3 如何使用移动端调试工具vConsole

1、安装 pnpm i vconsole2、在src/utils下新建vconsole.ts,写入以下代码 // 这是移动端控制台调试工具,需要调试就打开,不用就注释 import vConsole from vconsole const vconsole new vConsole()3、src/main.ts 引入,需要调试就打开,&…

数据结构学习之链式栈应用的案例(最小栈)

实例要求: 设计一个支持入栈、出栈、取栈顶元素等操作,并能在常数时间内检索到最小元素的栈; 实现 MinStack 类: MinStack* minStackCreate() 初始化堆栈对象,即建栈; void minStackPush(MinStack* obj, int val) …

DICE模型的原理与推导、碳循环与气候变化、政策评估、不确定性分析与代码分析

目录 专题一:DICE模型的原理与推导 专题二:碳循环与气候变化 专题三:政策评估 专题四:不确定性分析与代码分析 更多应用 随着温室气体排放量的增大和温室效应的增强,全球气候变化问题受到日益的关注。我国政府庄严…