2023年小型计算机视觉总结

在过去的十年中,出现了许多涉及计算机视觉(CV)的项目,无论是小型的概念验证项目还是更大规模的生产应用。应用计算机视觉的方法是相当标准化的:

1、定义问题(分类、检测、跟踪、分割)、输入数据(图片的大小和类型、视野)和类别(正是我们想要的)

2、注释一些图片

3、选择一个网络架构,训练-验证,得到一些统计数据

4、构建推理系统并进行部署

到2023年底,人工智能领域迎来了生成式人工智能的新成功:大型语言模型(llm)和图像生成模型。每个人都在谈论它,它们对小型计算机视觉应用有什么改变吗?

本文将探索是否可以利用它们来构建数据集,利用新的架构和新的预训练权重,或者从大模型中提取知识。

小型计算机视觉

在这里,我们通常感兴趣的是可以以相对较小的规模构建和部署的应用程序:

💰开发成本不应该太高

💽它不应该需要一个庞大的基础设施来训练(想想计算能力和数据规模)

🧑‍🔬它不需要很强的研究技能,而是应用现有的技术

⚡推理应该是轻量级和快速的,以便它可以嵌入或部署在CPU服务器上

🌍总体环境足迹应该很小(考虑计算能力,模型/数据的一般大小,没有特定的硬件要求)

这显然不是当今人工智能的趋势,因为我们在今年看到的都是具有数十亿个参数的模型,并且这些模型开始成为某些应用程序的标准。但重要的是:关心更小的规模是至关重要的,并不是所有的项目都应该遵循谷歌、Meta、OpenAI或微软的规模趋势并且我们也不可能有它们那么大的资金。

目前来看大多数有趣的计算机视觉项目实际上也比那些大公司的项目规模要小得多,但这并不意味着我们就要缩小我们的应用程序,而是说我们应该更加关心开发和推理成本。所以考虑到这一点,我们还能在应用中利用人工智能的最新发展吗?

首先看看基础模型

计算机视觉中的基础模型

新的大型语言模型(LLM)已经很流行,因为你可以很容易地在应用程序中使用基础模型(许多是开源的,或者可以通过API使用)。把GPT、Bert、Llama看作这样的模型。基础模型是一个非常大的通用神经网络,它是大多数下游任务的基础。它包含了非常广泛的主题,语义,语法,不同的语言等知识。

在计算机视觉中,这样的模型已经存在了很长一段时间了:使用ImageNet(100万张标记图像)上预训练的神经网络作为下游任务的“基础”模型是标准的。你可以在它的基础上构建你的神经网络,如果需要的话,还可以根据你自己的数据对它进行微调。

ImageNet预训练网络和llm之间有两个主要的概念区别:

训练的数据类型:ImageNet依赖于纯粹的监督学习:一个大规模的分类任务,而LLM是生成模型:它们以一种使用原始文本的自监督方式训练(任务只是预测下一个单词)。

基础模型对新任务的适应:ImageNet预训练网络系统地需要一个新的学习过程来适应新的任务。但是对于llm,虽然可以对模型进行微调,但模型已经足够强大,无需任何进一步的训练就可以用于下游任务,只需用正确的信息提示模型,使其对新任务有用。

目前大多数计算机视觉应用,如分类,目标检测,分割仍然使用ImageNet预训练网络。下面我们回顾一下可能用于计算机视觉任务的或即将出现的新模型。

计算机视觉的新基础模型综述

在计算机视觉的世界里,除了ImageNet,有很多自监督网络的例子,其中一些是生成模型(比如GAN和最近的扩散模型)。它们只接受原始图像或图像-文本对(例如图像及其描述)的训练。它们有时被称为LVM(大视觉模型)。

(弱)有监督的视觉模型:

1、DINOv2 (Meta) -一个大型ViT(1B参数)的集合,以完全自监督的方式进行训练。

2、SAM Segment Anything (Meta) -一个用于高分辨率图像的ViT,专门设计用于分割,并可以进行零样本分割(不需要注释来生成新的分割蒙版)。另一个用例是使用SAM作为医学图像分割的附加输入。

基于图像-文本对训练的视觉语言基础模型:

CLIP (OpenAI) -图像和简短描述的对齐,非常适合于拍摄分类,并在实践中用作各种下游CV任务的基础模型

大型生成模型,现在是多模态的(包括能够在其架构中理解复杂文本的大型语言模型):

StableDiffusion

Dall-E (OpenAI)

视觉专用多任务大型模型

Florence-2:统一计算机视觉(Microsoft)

大型闭源坏模型

只能通过api获得:大型多用途模型,不以视觉为中心,但展示了出色的视觉能力,以及生成能力;

GPT-4V (OpenAI)

Gemini (Google)

除了闭源以外,还有许多开源的、更小的、多用途的视觉+文本聊天模型正在开发中,例如LlaVA。

所有这些模型都是强大的基础模型,涵盖了许多视觉领域,在许多情况下都能很好地完成判别或生成任务。如何在我们特定的小型环境中利用它们呢?

构建训练数据集

使用这些新模型的一个实用的想法是保持我们的标准训练管道,例如广泛使用的Yolo检测器,通过生成新的训练图像和/或生成注释来改进我们的数据集。流程如下:

标准数据集由一组带注释的训练和验证图像组成

增强数据集将使用强大的通用模型来添加自动注释:

1)对未标记图像的新注释⇒这需要一个已经适合任务的模型。可以使用一个非常大的通用模型,仔细地添加示例或提示,进行零标注,或者根据现有的人工注释对非常大的模型进行微调。

2)在现有标注的基础上增加一层新的信息,例如使用SAM从边界框信息中自动添加分割标注

生成的数据集由生成的图像及其注释组成。构建一个由图像和/或文本组成的提示,以生成数千个图像及其注释。可以直接使用API来生成这些带注释的图像(与寻找好的图像和收集人工注释相比,成本应该很小)。

将验证集与生成的或增强的集分开,因为要在精心标记的数据上度量实际性能。这意味着在实践中,即使我们选择了新的生成技术或基础模型,仍然需要对真实图像进行一些手动标记。

扩充数据集的例子

可以从现有的图像开始,通过丰富它们或使它们更容易注释来改进标签。现在有几个数据标注平台提出使用SAM或DINOv2,通过对图片中的物体进行预分割来提高标注效率。

生成的数据集示例

虽然生成数据集的想法已经存在很长时间并且被广泛用于训练LLM,但找到真正的小型应用程序来有效地利用生成的数据(自动注释或纯合成数据)是相当具有挑战性的。

不使用基础模型,而是使用简单的渲染管道,或者使用类似的技术使用3D渲染来生成数据,这些结果目前看起来还很粗糙

https://github.com/921kiyo/3d-dl

使用生成模型完全生成图片和注释,以下图片是使用Dall-E 生成图片的样例

还可以使用CV处理构建数据集(例如将对象粘贴到背景中进行分割任务),但是这里的问题是,数据的质量将在很大程度上取决于生成图像的质量,因此将不得不在构建正确的渲染步骤上投入大量精力(在3D中甚至更多)。

目前还没有太多使用纯生成模型生成数据集的成功例子,但考虑到最近图像生成AI模型的渲染质量和可操作性,我个人认为这只是时间的问题。比如有可能使用ControlNet从现有的分割蒙版或轮廓开始生成已经有标签的新图片,但目前还不清楚它是否能很好地与非分布类(即不是标准的COCO类)一起工作,或者分辨率是否足够好。

下面这篇论文提出了一个类似的想法,即修改现有的标记图片以生成共享分割掩码的新图片,从而产生增压的语义数据增强。

https://liu.diva-portal.org/smash/get/diva2:1779399/FULLTEXT01.pdf

但是当生成成千上万的图像而不是手动管理和标记它们时,应该考虑成本,因为改进并不明显!

最后

通过训练带有人类注释数据的模型来实现现代计算机视觉的方式即将被新的大型基础模型彻底改变。

大型基础模型有时具有“纳米级”版本,用于在低端服务器甚至嵌入式应用程序上进行推理。但是对于这些应用来说,它们仍然太大了,并且对于新任务的调整也不是那么便宜。因为目前,我们还是不会边缘设备上使用500M+参数的VIT模型,而是选择更小,更专业的模型。

但是对于小型的推理和低资源开发,我们也可以使用大型基础模型,或者通过使用api /本地推理直接调用这些模型,或者使用这些模型的一些知识。今天主要通过帮助标记数据,明天通过其他方式知识转移-例如,蒸馏。

没有标准的程序或普遍的方法来从这些大型或生成模型中转移这些知识,但它可能会在2024年有所发展!

https://avoid.overfit.cn/post/27697c284d4f4a4d93f91be616e3e998

作者:Charles Ollion

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

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

相关文章

WEB 3D技术 three.js 通过分组顶点 给同一个物体设置多个材质

上文 WEB 3D技术 three.js 集合体 讲解三角形构建图形 顶点概念 顶点值重用 我们讲到 一个元素是由多个面组成的 那么 我们是不是可以一个物体用多个材质? 简单说 一个面用一种材质 我们还是在官网中搜索 geome 如下图选择 然后 找到 groups 顶点组 它能够将我们的…

Abaqus随机单元删除插件:Random Element Del - AbyssFish

插件介绍 Random Element Del - AbyssFish 插件可在Abaqus软件内对自建网格部件进行指定区域内的随机单元删除,可用于生成指定孔隙率或模拟缺陷等。 插件使用中指定需要进行删除的部件,这里的部件需要为网格部件。设定删除单元的比例参数(…

使用Java语言统计一行字符串的数据

方法 创建字符串接收器,接收用户输入的字符串,然后将其转换为字符串数组,安装字符对应的字节码进行判断。 代码 import java.io.*; public class StaticsChar {public static void main(String[] args) throws IOException{String zifuch…

如何使用Docker部署Dashy并无公网ip远程访问管理界面

文章目录 简介1. 安装Dashy2. 安装cpolar3.配置公网访问地址4. 固定域名访问 简介 Dashy 是一个开源的自托管的导航页配置服务,具有易于使用的可视化编辑器、状态检查、小工具和主题等功能。你可以将自己常用的一些网站聚合起来放在一起,形成自己的导航…

2023年全球前端大技术大会(GMTC北京站2023)-核心PPT资料下载

一、峰会简介 大会以“业务至上,效率为王”为主题,策划了 1 个主会场,10 个技术专场。会议议题包含前端 DevOps 实践、低代码、大前端监控、跨端技术选型、团队可持续发展、IoT 动态应用开发、移动端性能与效率优化、TypeScript、大前端技术…

【期末复习】微信小程序复习大纲( 1- 5 章)

前言: 这周开始进入期末复习周,没时间看C/C、linux等知识了,先把期末考试必考的知识捋一遍。 目录 第一章 微信小程序入门 一、填空题 二、判断题 三、选择题 四、简答题 第二章 微信小程序页面制作 一、填空题 二、判…

三叠云工程劳务管理,优化建筑施工管理,提升效率与质量

随着建筑行业的蓬勃发展,工程施工现场管理变得愈发复杂。传统的人员管理方式已经无法满足企业快速发展的需求。如何提高施工效率、优化人力资源管理成为了建筑企业亟待解决的问题。逐渐走向数字化的工程建设行业,急需一种足以匹配这一时代变革、高效管理…

两台苹果手机靠近迁移数据,教你如何一键换机!

我们在更换新手机时,如果没有将旧手机的数据迁移到新手机上,一旦旧手机丢失或者无法正常启动,那么所有数据将会丢失。更换手机后,及时迁移手机数据可以避免数据丢失。那么,两台苹果手机靠近迁移数据怎么操作&#xff1…

k8s:kubernets

自动部署、自动扩展和管理的容器化部署的应用程序的一个开源系统 k8s负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具 可以以分布式和集群化的方式进行容器管理 1.18版本,目前最多的是1.20版本,最新的是1.29版本&am…

第八部分 函数

定义 8.1 设 F 为二元关系 , 若 ∀ x ∈ dom F 都存在唯一的 y ∈ ran F 使 xFy 成立 , 则称 F 为 函数 对于函数 F , 如果有 xFy , 则记作 y F ( x ), 并称 y 为 F 在 x 的 值 . 例 F 1 {< x 1 , y 1 >,< x 2 , y 2 >,< x 3 , y 2 >…

3 步走,快速上手 API 接口测试

开始 API 接口测试之前&#xff0c;我们需要弄清接口测试的含义&#xff1a; 接口测试就是根据接口清单&#xff0c;模拟客户端向服务端发送请求数据&#xff0c;并获取响应数据后&#xff0c;查看响应数据是否符合预期的过程。 整个过程可以分为三个步骤&#xff1a; 第一步…

Android Termux安装SSH结合内网穿透实现远程SFTP文件传输

文章目录 1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 SFTP&#xff08;SSH File Transfer Protocol&#xff09;是一种基于SSH&#xff08;Secure Shell&#xff09;安全协议的文件传输协议。与FTP协议相比&#xff0c;SFTP使用了…

怎么搭建实时渲染云传输服务器

实时渲染云传输技术方案&#xff0c;在数字孪生、虚拟仿真领域使用越来越多&#xff0c;可能很多想使用该技术方案项目还不知道具体该怎么搭建云传输服务器&#xff0c;具体怎么使用实时云渲染平台系统。点量云小芹将对这两个问题做集中分享。 一、实时渲染服务器怎么搭建&…

Git安装及基本操作

1.安装Git 配置用户 git config --global user.name "用户名" git config --global user.email "邮箱"配置完成后查看配置 git config -l生成SSH秘钥 ssh-keygen -t rsa -C “邮箱” 输入完成后需要按3次Enter键 $ ssh-keygen -t rsa -C "邮箱&quo…

第11章 GUI Page436 步骤十 使用wxAutoBufferedPaintDC

注意&#xff0c;窗口构造函数中&#xff0c;一定得有第157行&#xff0c;否则就会报警&#xff08;即使窗口绑定上背景处理函数也不行&#xff09;&#xff1a;

ssh工具 从ssh服务器下载文件夹

此文分享一个python脚本,用于快速的定位、选择ssh服务器上的文件夹,并将其下载到本地指定的位置。 效果演示 🔥完整演示效果 👇 第一步,显然,我们需要选择功能 👇 第二步,确认我们需要从哪个ssh服务器上下载文档 👇 第三步,定位、选择、确认需要下载的文件夹…

4.2 媒资管理模块 - 项目搭建、minio文件系统

文章目录 一、搭建媒资服务工程1.1 media-api 工程1.1.1 bootstrap.yaml1.1.2 Maven1.1.3 Nacos 1.2 media-service 工程1.2.1 bootstrap.yaml1.2.2 Maven1.2.3 Nacos1.2.4 分页插件 1.3 media-model 工程1.3.1 QueryMediaParamsDto1.3.2 MediaFiles1.3.3 MediaProcess1.3.4 Me…

MySql的mvcc原理

目录 一、什么是mvcc? 二、什么是当前读,快照读? 当前读 快照读 三、mvcc实现原理 版本链 undo日志 Undo log 的用途 Read View(读视图) Read View几个属性 五、RR、RC级别下生成时机 一、什么是mvcc? mvcc全称Multi-Version Concurrency Control&#xff0c;即…

为什么我的网络这么卡卡卡卡卡?(网络调试篇)

前言 最近小白迷上了打游戏。 有没有一起上王者的小伙伴&#xff1f; 有没有一起吃鸡的小伙伴&#xff1f; 欧耶&#xff0c; 咱们组队 送人头去吧 为了不让对方太菜&#xff0c; 送人头是与对方最高的敬意。 闲话说到这&#xff0c;本文就结束了。 感谢观看&#xff5e;…

常用组件的一些数据指标

QPS metrics 机制&#xff0c;利用 AtomicLong 算出核心接口每分钟调用多少次&#xff08;除以 60 就是高峰期每秒访问次数&#xff09;以及每天被调用总次数 TP99 100ms , 99%的接口耗时在 100ms以内&#xff0c;1%的接口耗时在100ms以上 TP95 100ms , 95%的接口耗时在 1…