大模型背景下计算机视觉年终思考小结(二)

news2024/11/18 18:17:20

1. 引言


尽管在过去的一年里大模型在计算机视觉领域取得了令人瞩目的快速发展,但是考虑到大模型的训练成本和对算力的依赖,更多切实的思考是如果在我们特定的小规模落地场景下的来辅助我们提升开发和落地效率。本文从相关数据集构造,预刷和生成方向进行相关大模型落地的切入和思考。

闲话少说,我们直接开始吧!

2. 构造数据集


使用这些新的大模型的一个切实想法是保留我们的之前标准训练流程框架,举个栗子,通常在检测领域我们使用的 Yolo 检测器中,我们可以通过生成新的训练图像或生成新的标注来改进我们的训练数据集。具体流程如下:
在这里插入图片描述

如上图所示:

  1. 标准数据集由一组人工标注好的训练集和验证集组成

  2. 数据集扩充将使用强大的通用大模型来添加自动化标注:

    • 对未标记图像进行新的标注 ⇒ 这需要一个已经适合该任务的模型。一般来说大家可以使用一个非常大的通用模型,需要大家提供小样本标注示例或文本提示词,来执行零样本或小样本自动化标注,甚至从现有的人工标注数据中微调非常大的模型。
    • 当前已标注文件中添加新任务的标注信息。例如对于2D检测任务可以利用SAM模型来对2D框添加语义分割的mask作为标注信息,可以在训练的时候添加额外的分割监督头。
  3. 生成式的数据集将由生成的图像及其对应的标注组成。当你构建了一个由图像或文本组成的语义提示后,可以用以生成成千上万个图像及其对应的标注。我们可以直接使用大模型的API生成这些带标注的图像(与人工收集和人工标注相比,成本应该很小)

当我们需要验证训练好的模型在人工标注的数据集上的实际性能时,将验证集与生成或扩充的数据集分开是至关重要的。这意味着,在实践中,即使我们选择了新的生成技术或基础模型,我们仍然需要对真实图像进行一些人工手动标注。

3. 扩充数据集


这个想法是从现有的图像开始,通过丰富标注的标签或使其更容易标注来改进标注结果。一些数据标注平台现在通常使用SAM或DINOv2,通过预先分割图片中的对象来提升标注的效率。

在这里插入图片描述

													Annotation Tool using SAM

在这里插入图片描述

							                  	    Anylabeling

更多细节可以访问附录里的相关链接。

4. 生成数据集


虽然生成数据集的想法已经存在很长时间了,并最先被广泛应用于训练 LLM,但实际上要针对小规模应用程序开发利用高效生成的数据(自动化标注或纯合成数据)是相当具有挑战性的。

● 不使用基础大模型,而是使用简单的渲染pipeline,例如合成数据集生成示例,通常做法是使用 python 脚本对感兴趣的对象进行裁剪,之后进行随机缩放、旋转并添加到背景中;对应的标注文件也是使用同一处理流程进行创建。在这种方法下,我们创建的图像不完全是真实的照片,但这些图像上的对象和背景是 100% 真实的。

在这里插入图片描述

● 许多人使用类似3D 渲染来生成数据,例如如下流程:
在这里插入图片描述

基于图像渲染仿真系统,将 3D 模型作为输入,并生成一组训练图像作为输出,通过给定多个渲染参数 θ,该系统将使用3D模型生成多个图像,从所有可能的视角、不同尺寸大小、不同照明条件、不同遮挡量和不同背景等角度来对输出进行建模。相关示例如下:
在这里插入图片描述

● 使用人工来进行图像收集和标注既费时又费力。相比之下,合成数据集可以使用生成式模型(例如,DALL-E、Stable Diffusion)免费获得。在本文中,我们展示了可以自动获得由预训练的稳定扩散生成式模型来生成图像的准确语义掩码,该稳定扩散模型在训练过程中仅使用文本-图像对。

在这里插入图片描述

上述方法称之为 DiffuMask,它利用了文本和图像之间交叉注意力映射的潜力,这是自然和无缝的,可以将文本驱动的图像合成技术扩展到语义掩码生成。DiffuMask 使用文本引导的交叉注意力信息来定位特定类别的区域,并将其与实用技术相结合,以创建一种新颖的高分辨率像素掩码。这些方法显然有助于降低数据收集和人工标注成本。

5. 注意事项


这里值得一提的是使用 CV 合成技术来构建数据集(例如,将对象粘贴到背景以执行分割任务)的问题在于,数据的质量很大程度上取决于生成图像的质量,因此大家必须投入大量精力来构建正确的渲染步骤。

使用纯生成式模型来生成数据集的成功例子(DeepDetectionModels)还不多,但考虑到最近图像生成式 AI模型的渲染质量和可操纵性,这只是时间的问题。从现有的分割或轮廓开始,可以使用ControlNet来生成我们已经有标签的新图片,但目前尚不清楚它是否适用于分布外的类别(即不是标准的COCO类),或者成像质量是否足够好。

论文(Segmentation-ControlNet)提出了一个类似的想法,即修改现有的标记图片,以生成共享分割掩码的新图片,从而实现超强的语义数据增强。
在这里插入图片描述

论文DeepDetectionModels 提出了一个通过微调预训练的稳定扩散模型来生成合成数据集的框架,然后对合成数据集进行手动注释,并用于训练各种目标检测模型。图示如下:
在这里插入图片描述

6. 知识蒸馏


我们通过使用人类手动标注数据集训练模型来进行现代计算机视觉的方式即将被新的大型基础模型彻底改变。大型基础模型有时具有轻量级的版本,专为在低端服务器甚至嵌入式应用程序上进行推理而设计。然而,对于许多应用程序来说,它们仍然太大了。在短期实时应用上,我们不会使用超过 500M+ 参数量的视觉 `transformer` ,而是使用更小、更专业的模型。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ea2ac5dd48c14629a977c5b1cf55a636.png#pic_center)

尽管如此,即使是小规模推理和低算力资源上的开发,我们也会利用大型基础模型来作为辅助,要么通过使用 API/本地推理直接调用这些模型,要么使用其中一些模型学到的先验知识。今天介绍的主要是通过数据标注来展开,其实也可以通过其他知识转移的方式——例如通过蒸馏或 LoRA。对于检测或分割任务,没有标准流程或广泛的首选方法来从这些大型或生成式模型中转移这些知识,但它可能会在 2024 年普及!

7. CNN和Transformer之争


大多数小规模的 CV 应用程序都涉及 CNN(卷积神经网络),而最近所有大型 AI 系统都涉及 Transformers。我们是否应该从CNN换到Transformer呢?
  • 首先上述问题并没有确定的答案。Transformer 无处不在,因为它们可以更好地随着数据量大小和参数数量的扩展而扩展,这是所有新的大型生成式 AI 系统的先决条件。此外,它们还可以更好地集成多模态输入,因为我们可以轻松地将文本信息和图像特征进行融合,并让交叉注意力机制混合这些信息以产生良好的输出。最后,LoRA 等技术的发展也需要transformer架构。
  • 其次对于低端设备上的大多数实时应用来说,这些大型transformer模型在效率方面还不具备与经典卷积网络相比的竞争力!然而,由于许多人正试图加速边缘设备上transformer结构的推理,这种情况可能会在不久的将来发生改变。

8. 总结


本文重点介绍了在大模型发展背景下,如何在日常开发中合理利用大模型的能力来构建合成数据集和丰富数据集的标注类别等应用,同时随着技术的发展,未来大模型在日常开发中会带来更多的应用和落地点,希望大家也可以结合自己具体的业务来思考如何和现有大模型进行结合。

您学废了嘛?

9. 参考链接

SAM

DINOV2

anylabeling

imageAnnotationTool

CreateSyntheticDataset

DiffuMask

DeepDetectionModels

ControlNet

segmentation-ControlNet

LoRA

AutoDistill

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

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

相关文章

【干货】忘记设备IP咋整?查找设备IP地址这几种手段请收藏好~

前言: 拿到了设备但找不到设备IP地址的情况想必很多人都遇到过,又不想重置,怎么办嘞? 别急,可以通过机身标签上的唯一标识MAC地址查到IP,小云君给你支几招: 手段1 通过查询PC的ARP表项查询局…

Halcon提取彩色多通道图像的亚像素边缘edges_color_sub_pix算子

Halcon提取彩色多通道图像的亚像素边缘edges_color_sub_pix算子 如要要提取彩色多通道图像的亚像素边缘,可以使用edges_color sub pix算子。该算子与edges_sub_pix 算子的参数十分相似,但又有所区别。首先从名称上看,edges color sub pix 算…

Rust-析构函数

所谓“析构函数”(destructor),是与“构造函数”(constructor)相对应的概念。 “构造函数”是对象被创建的时候调用的函数,“析构函数”是对象被销毁的时候调用的函数。 Rust中没有统一的“构造函数”这个语法,对象的构造是直接对每个成员进行初始化完…

软件测试要学习的基础知识——白盒测试

白盒测试是通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试,以确定实际运行状态与预期状态是否一致。 白盒测试又被称为: 透明盒测试 结构化测试 逻辑驱动测试 基于代码的测试 白盒测试的常用技术分类 一、静态分析&#x…

GEE:机器学习分类中每个类别的概率图像可视化

作者:CSDN @ _养乐多_ 在 Google Earth Engine(GEE) 中应用机器学习分类器进行多分类时,有一个需求是想知道每个像素对于每个类别的分类概率。 比如在进行随机森林分类时,每个决策树会生成一个类别,通过投票选择票数最多的类别作为最终分类。除了最终分类结果,其他类别…

【Leetcode】82. 删除排序链表中的重复元素 II

文章目录 题目思路代码 题目 82. 删除排序链表中的重复元素 II 题目:给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,3,4,…

Docker容器(二)安装与初体验wordpress

一、安装 1.1关闭SeLinux SeLinux(Security-Enhanced Linux)是一种基于Linux内核的安全模块,旨在提供更严格的访问控制和安全策略。它通过强制实施安全策略来限制系统资源的访问,从而保护系统免受恶意软件和未经授权的访问。 在…

用Photoshop来制作GIF动画

录了个GIF格式的录屏文件,领导让再剪辑下,于是用Photoshop2023进行剪辑,录屏文件有约1400帧,PS保存为GIF格式时,还是挺耗时的,平时少用PS来进行GIF剪辑,编辑后的GIF不能动,网上搜索的…

emacs 源码分析(五)

emacs源码分析(五) 因为emacs的C源码中有大量的宏,在gdb中调试是非常痛苦的,所以有下面的内容: 一个更方便的调试emacs源码的方式 就像在“emacs源码分析(四)”中提到的那样,要么…

内存四区图练习

带着白卡去旅行 绘制图中三种情况的内存四区图 一个实参 一个形参 取地址 通过指针修改变量 返回 多级指针的训练 #define _CRT_SECURE_NO_WARNINGS #include<stdlib.h> #include<stdio.h> #include<string.h> #include<math.h>int getMem(char***p3,…

HDFS WebHDFS 读写文件分析及HTTP Chunk Transfer Encoding相关问题探究

文章目录 前言需要回答的首要问题DataNode端基于Netty的WebHDFS Service的实现基于重定向的文件写入流程写入一个大文件时WebHDFS和Hadoop Native的块分布差异 基于重定向的数据读取流程尝试读取一个小文件尝试读取一个大文件 读写过程中的Chunk Transfer-Encoding支持写文件使…

Transformer从菜鸟到新手(七)

引言 上篇文章加速推理的KV缓存技术&#xff0c;本文介绍让我们可以得到更好的BLEU分数的解码技术——束搜索。 束搜索 我们之前生成翻译结果的时候&#xff0c;使用的是最简单的贪心搜索&#xff0c;即每次选择概率最大的&#xff0c;但是每次生成都选择概率最大的并不一定…

Spring Cloud中的提供者与消费者

在服务调用关系中&#xff0c;会有两个不同的角色&#xff1a; 服务提供者&#xff1a;一次业务中&#xff0c;被其它微服务调用的服务。&#xff08;提供接口给其它微服务&#xff09; 服务消费者&#xff1a;一次业务中&#xff0c;调用其它微服务的服务。&#xff08;调用…

YUM仓库和NFS共享

目录 一、yum仓库 1. yum仓库介绍 1.1 简介 1.2 实现过程 1.3 实现安装服务 2. yum配置文件及命令 2.1 yum配置文件 2.1.1 yum主配置文件 2.1.2 仓库设置文件 2.1.3 日志文件 2.2 yum命令详解 2.2.1 查询 2.2.2 yum安装升级 2.2.3 软件卸载 3. 搭建仓库的方式 …

网卡唯一标识你了解吗?MAC地址详解

本文内容&#xff1a; MAC地址概述 MAC地址组成 单播、组播、广播MAC地址 本地管理和全球管理MAC地址 一、MAC地址概述 MAC地址&#xff08;Media Access Control Address&#xff09;的全称叫做媒体访问控制地址&#xff0c;也称作局域网地址&#xff0c;以太网地址或者物…

Node cool 跨域问题的解决

1.问题 自己在写后端接口的时候 发现一个接口在抖音小程序上可以调用 浏览器上也可以直接打开 但是在H5 的请求中 一直就是cors error 前端报这个跨域问题 在后端 报not Found 一开始以为是找不到 经过确定 发现是跨域问题 2.解决 在全局 configuration.ts 文件里有个全局…

Miracast手机高清投屏到电视(免费)

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Miracast概述 Miracast是一种无线显示标准&#xff0c;它允许支持Miracast的设备之间通过Wi-Fi直接共享音频和视频内容&#xff0c;实现屏幕镜像或扩展显示。这意味着你可以…

【linux】终端发送网络请求与文件下载

发送网络请求 linux的终端中发送网络请求可以使用curl命令。 语法&#xff1a; curl [url] 但是他返回的是html代码&#xff0c;因为在终端中&#xff0c;他无法像浏览器中一样把访问到的html代码渲染成我们访问的页面&#xff0c;所以我们只能拿到他的源码。 访问CSDN - 专…

IDEA中如何让包名一层层展开的设置

在开发过程中&#xff0c;发现新下载的一个项目在打开时候&#xff0c;呈现的包是没有一层一层展开的&#xff0c;是平铺在idea中的&#xff0c;截图如下&#xff1a; 设置方法&#xff1a; 打开options的小图标 在treeAppear中的Flatten packages的对号取消掉取消之后的效果…

class_1:qt的安装及基本使用方式

一、选择组件&#xff1a; 1、windows编译工具&#xff1a;MinGW 7.30 32-bit MinGW 7.30 64-bit 2、QT源代码&#xff1a;sources 3、QT的绘图模块&#xff1a;QT charts 4、QT虚拟键盘&#xff1a;QT Virtual Keyboard 5、QT Creational 4.12.2 GDB 二、新建QT项目 文…