2023年小型计算机视觉总结

news2024/9/25 21:23:08

在过去的十年中,出现了许多涉及计算机视觉(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

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

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

相关文章

【性能测试】真实企业,性能测试流程总结分析(一)

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

JuiceSSH结合内网穿透实现公网远程访问本地Linux虚拟机

文章目录 1. Linux安装cpolar2. 创建公网SSH连接地址3. JuiceSSH公网远程连接4. 固定连接SSH公网地址5. SSH固定地址连接测试 处于内网的虚拟机如何被外网访问呢?如何手机就能访问虚拟机呢? cpolarJuiceSSH 实现手机端远程连接Linux虚拟机(内网穿透,手机端连接Linux虚拟机) …

dev express 列头筛选

设置这三个属性。 AllowAutoFiter::获取或设置是否可以使用自动筛选行筛选列的值AllowFiter:获取或设置网格视图中的筛选按钮(布局视图中的字段选按钮)是否显示在列标题中ImmediteUpdateAutoFiter: 获取或设置是否在最终用户修改自动筛选行单…

【网络奇遇记】揭秘计算机网络的性能指标:速率|带宽|吞吐量|时延

🌈个人主页:聆风吟 🔥系列专栏:网络奇遇记、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. 速率1.1 数据量1.2 速率 二. 带宽三. 吞吐量四. 时延4.1 发送时延4.2 传播时延…

【adb】电脑通过ADB向手机传输文件

具体步骤如下: Step1 下载ADB工具 下载最新版本的 ADB工具 !!! 注意:一定要是最新版本的ADB,否则很可能导致无法识别到手机。 将下载的ADB解压以后的文件如下图所示: Step2 添加环境变量 将 ADB的路径 D:\platformtools &…

YOLO算法改进7【中阶改进篇】:主干网络C3替换为轻量化网络MobileNetV3

解决问题:YOLOv5主干特征提取网络采用C3结构,带来较大的参数量,检测速度较慢,应用受限,在某些真实的应用场景如移动或者嵌入式设备,如此大而复杂的模型时难以被应用的。首先是模型过于庞大,面临…

git在vscode 的使用过程中 创建新分支 修改新分支代码 发现 master分支的代码也被修改了

1.问题 在我进行 代码迭代的时候 因为我主要用的是 vscode 我想创建一个分支 开发其他的功能 我发现一个问题 就是我创建了一个新的分支 修改代码 发现 master 也被修改了 就如同 这两个分支 都一样 指向了master 2.过程 经过我的测试和百度 我发现 怎么都不行 看了看 过程都没…

录制完视频如何去除重复部分?

在录制视频的过程中,有时会出现一些重复的部分,这给视频的制作人员带来了不小的困扰。如果不及时去除重复部分,不仅会影响观众的观看体验,还会浪费观众的时间和从业者的精力。那录制完的视频如何去除重复部分呢?无须担…

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

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

软件工程经济学习题 答案(不保证对错,找不到答案)

一、资金等值计算 1.某IT企业今年向银行贷款20万元以购置一台设备。若银行贷款利率为10%,规定10年内等额偿还,试求每年的偿还金额。 2.某软件企业向银行贷款200万元,按年利率为8%进行复利计息,试求该企业第5年末连本带利一次偿还银…

基于包围盒算法的三维点云数据压缩和曲面重建matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 包围盒构建 4.2 点云压缩 4.3 曲面重建 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...........................................…

iconify图标集离线使用方案简介

1.需求描述 前端项目,技术栈使用Vue3Element Plus,参考了ruoyi-vue-pro项目与vue-element-plus-admin项目,封装了一个Icon组件,图标使用的是iconify,项目部署在内网环境,不能连接互联网,需要部署一套iconi…

nosql-redis整合测试

nosql-redis整合测试 1、创建项目并导入redis2、配置redis3、写测试类4、在redis中创建key5、访问80826、在集成测试中测试方法 1、创建项目并导入redis 2、配置redis 3、写测试类 4、在redis中创建key 5、访问8082 6、在集成测试中测试方法 package com.example.boot3.redis;…

DDR加终端匹配电阻和不加信号质量的区别

DDR采用菊花链拓扑结构时,由于信号传输线较长通常需要在DDR末端加上终端匹配电阻,端接的方式有很多,但是都是为了解决信号的反射问题,通常为了消除信号的反射可以在信号的源端或者终端进行解决,在源端处消除反射是采用…

Schmitt Trigger本质就是一个带迟滞的比较器

Chapter 18 Special Purpose CMOS Circuits 甚高 24 人赞同了该文章 Chapter 18 Special Purpose CMOS Circuits 这一章讲几个实用电路, Schmitt trigger 输入信号noisy, 输出产生干净的pulse. 然后介绍multivibrator, 拥有astable和monostable两态. input buffer design 对…

drf视图组件

Django REST framwork 提供的视图的主要作用: 控制序列化器的执行(检验、保存、转换数据)控制数据库查询的执行 1.1 视图继承关系 视图的方法与属性: 1.2 视图 REST framework 提供了众多的通用视图基类与扩展类,以…

全国250米DEM数据

全国250米DEM数据 DEM是数字高程模型的英文简称(Digital Elevation Model),是研究分析地形、流域、地物识别的重要原始资料。由于DEM 数据能够反映一定分辨率的局部地形特征,因此通过DEM 可提取大量的地表形态信息,可用于绘制等高线、坡度图、…

git集成github(二)-- 遇见的问题与解决方法

1、share project on github时,弹出Cannot load information for github.com/zouxiaoya:Connection reset问题。 解决方法:pycharm-->setting-->version control-->github中,删除掉当前用户,点击reset重置即可。 2、 pus…

UE和Android互相调用

ue和android互调 这两种方式都是在UE打包的Android工程之上进行的。 一、首先是UE打包Android,勾选下面这项 如果有多个场景需要添加场景 工程文件在这个路径下 然后可以通过Android Studio打开,选择gradle打开 先运行一下,看看是否可以发布…

C语言——最古老的树

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 缺乏明确的目标,一生将庸庸…