【深度学习: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% 以上。

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

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

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

面向数据的编程

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

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

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

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

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

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

相关文章

动态分配内存的风险

1. 悬挂指针问题 在指针释放之后要将指针置空 delete ptr; ptr nullptr;2.内存碎片问题 频繁的申请与释放小块内存会造成大量的内存碎片。 3.内存申请与释放问题 C与C的内存申请与释放最好不要混用。 4.复制内存 基本语法 void* memcpy(void* _Dst, void* _Src, size_…

移动硬盘无法识别处理办法

今天这里做一下总结,我现在手上有一个移动硬盘,插入win10电脑是有盘号的,但是 但是点击就出问题 解决办法 安装DiskGenius 下载网址在https://www.diskgenius.cn/download.php 下载之后解压安装就行,非常简单,然后…

wordpress相册gallery自定义

把这段代码添加到functions.php就可以实现相册gallery输出的自字义 add_filter( the_content, wpdocs_show_gallery_image_urls );function wpdocs_show_gallery_image_urls( $content ) {global $post;if( ! is_singular() ) return $content;if( ! has_shortcode( $post->…

理论U4 集成学习

文章目录 一、集成学习1、传统学习的问题2、集成学习1)背景2)概念3)注意 3、多样性度量4、多样性增强1)多样性增强:在学习过程引入随机性2) 输入属性扰动3) 输出表示扰动4) 算法参数…

C#中各变量类型占多少个字节,容量又是多少呢?

变量的本质 变量的本质是一段内存的别名。 各变量占字节数: 通过sizeof方法 能够获取变量类型所占的内存空间(单位是字节): int sbytesize sizeof(sbyte); sbyte 1字节 short 2字节 int 4字节 long 8字节 byte …

arm的侏罗纪二 cache学习

个人觉得inner shareable和outer shareable;POU和POC 是难点,慢慢学习吧。 inner shareable是cluster内 outer shareable是cluster之间 参考文献: 深入学习Cache系列 1: 带着几个疑问,从Cache的应用场景学起 https://www.eet-c…

桌面云虚拟机Ubuntu离线安装open-vm-tools

桌面云虚拟机Ubuntu离线安装open-vm-tools 背景解决思路安装步骤1. 下载open-vm-tools及其依赖软件包2. 软件包转ISO文件3. 安装open-vm-tools 背景 公司办公在桌面云中进行开发,桌面云是无法访问外网的,然后又有安装虚拟机的需求,使用VMwar…

uniapp如何实现跨端适配

Uniapp是一款基于Vue.js的跨平台开发框架,可以同时支持多个主流的移动端和Web端平台。Uniapp提供了一套统一的API和组件库,可以实现跨端适配。 Uniapp的跨端适配主要通过条件编译和样式适配来实现。具体的步骤如下: 使用条件编译&#xff1a…

软件包安装

1.软件包分类 1.1软件包的分类 源码包二进制包脚本安装包 1.2源码包 1.2.1源码包的样子 源码包可以认为是利用不同的计算机语言而写的包, 我们打开相应的文件也能看到相应的源码 1.2.2源码包的特点 源码包的优点: 开源, 如果有足够的能力, 可以修改源代码可以自由选择…

Java (省市区三级联动),可扩展到4级或者5级(目前全网最新)

项目场景: 在项目编写的过程中 需要实现客户选择的具体大区信息 三级联动表结构 DROP TABLE IF EXISTS tb_ipr_item_region; CREATE TABLE tb_ipr_item_region (id int(11) NOT NULL COMMENT 主键ID,pid varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bi…

STM32——高级定时器输出比较模式实验

1高级定时器输出比较模式实验 1.1高级定时器输出比较模式实验原理 1.2高级定时器输出比较模式实验实验配置步骤 1,配置定时器基础工作参数 HAL_TIM_OC_Init() 2,定时器PWM输出MSP初始化 HAL_TIM_OC_MspInit() 配置NVIC、CLOCK、GPIO等 3,配…

ssm基于Java的超市管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本超市管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息&am…

java List<对象> 根据对象的一个属性进行去重

ArrayList<BasicSectionCfg>list1list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()->newTreeSet<>(Comparator.comparing(BasicSectionCfg::getPamKey))),ArrayList::new)); 这段代码使用Java 8中的流API将一个ArrayList<Bas…

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

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

实战经验:IIS网站服务器性能优化攻略

Windows Server自带的互联网信息服务器&#xff08;Internet Information Server&#xff0c;IIS&#xff09;是架设网站服务器的常用工具&#xff0c;它是一个既简单而又麻烦的东西&#xff0c;新手都可以使用IIS架设一个像模像样的Web站点来&#xff0c;但配置、优化 IIS的性…

高级分布式系统-第9讲 实时调度--静态调度与动态调度

静态调度 在静态调度中&#xff0c;任务组的调度表是通过离线计算得出的。在调度表的生成过程中&#xff0c;必须把所有任务的资源、优先级和同步要求考虑进去&#xff0c;并且确保所有的截止时间要求。这个调度表指明了各个任务的运行起始时间 &#xff0c;一旦生成就不再变化…

vue2配置教程

5.12.3 Vue Cli 文档地址: https://cli.vuejs.org/zh/ IDEA 打开项目&#xff0c;运行项目

Java基本数据类型boolean占用几个字节?

我们知道Java中的基本数据类型有以下几种 char占用2个字节 boolean占用1个字节或者4个字节(稍后解释) byte占用1个字节 short占用2个字节 int占用4个字节 long占用8个字节 float占用4个字节 double占用8个字节 char a a; boolean b false; int c 1; ......当我们在对这些基…

STL tuple源码分析

STL tuple源码分析 和pair一样&#xff0c;tuple也是STL中非常常见的数据结构。pair是个二元组&#xff0c;只支持两个类型参数&#xff0c;tuple则是个多元组&#xff0c;可以支持多个类型参数。因此&#xff0c;在具体实现上&#xff0c;要比pair复杂一些。我们还是以MSVC提供…

js检测网址是否可访问,javascript检测网址是否可访问,支持跨域;

js检测网址是否可访问&#xff0c;javascript检测网址是否可访问&#xff0c;支持跨域&#xff1b; <!DOCTYPE html> <html> <head><meta name"viewport" content"widthdevice-width" /><title>url检测是否可访问</tit…