CV什么时候能迎来ChatGPT时刻?

news2024/9/22 7:19:36

卷友们好,我是rumor。

最近看了几篇CV的工作,肉眼就感受到了CVer们对于大一统模型的“焦虑”。

这份焦虑让他们开始尝试统一一切,比如:

  • 统一复杂的自动驾驶任务的优化目标[1],来自今年CVPR最佳论文。

  • 统一典型的CV任务,包括图片理解、推理、编辑[2]。今年CVPR另一篇最佳论文。

  • 仿照LLM的方式设计Large Vision Model的范式雏形[3]

然而如今NLP进化出这样的统一范式太难得了,其中有好几个层级:

  1. 任务形式的统一:19年GPT2把所有NLP任务都整合成了一种形式,即text-to-text。

  2. 网络结构的统一:统一使用transformer (decoder)

  3. 优化范式的统一:预训练+精调+prompt

下面我就带着有偏的NLP视角,分享一下这三篇工作在统一CV上的尝试,欢迎大家在留言区交流,也欢迎推荐其他有insight的工作。

自动驾驶优化目标的统一

《Planning-oriented Autonomous Driving》

自动驾驶像NLP的对话一样,是个很复杂的任务,它的解决方案也经历了几代变化:

  • Standalone Models(图a):传统的做法是把最终目标拆解成一个个简单的单一模块,再分别去优化。但模块多了会造成误差传导,同时也可能丢失传递的信息。

  • Multi-task(图b):有工作用多任务学习去训一个统一的模型,同时输出各个模块的预测结果。这样虽然某些任务会相互增强,但也有任务会相互削弱。而且每次更新都需要从新训练(避免遗忘之前的任务),会给系统带来很多变数,不确定性较高。

  • Vanilla End2End(图c.1):能不能直接端到端呢?也有相关尝试,但对于安全要求极高的自动驾驶系统来说,纯端到端的可解释性和安全保障太弱了,想加一些强规则根本加不进去,比如识别到行人在前方就立刻刹车。

b0ea94a6e7185ee6531197310db79751.png

考虑到以上方案的优缺点之后,一个更好的方案就呼之欲出了:结合Pipeline系统的可控性+端到端for目标优化的效果保证,进行端到端Pipeline的联合优化(图c.3)。

虽然之前的工作也有类似的思想(图c.2),但都缺少一些任务(下表):

2949d3d799c91a1e1a372194030237ed.png

所以作者(上海人工智能实验室, 武汉大学,商汤)整理了自动驾驶中的感知、预测、规划三大步骤后,提出了UniAD (Unified Autonomous Driving)。

8c97d8f81f6b855e29aad3fb2945a512.png

该网络由几个子模块组成,每个模块都是一个transformer decoder,不同模块之间通过向量进行交互,从而达到共同优化最终的目标。

这篇工作主要统一了自动驾驶系统中各模块的优化目标,联合优化后,在不同的子任务上都取得了较大的提升。

CV任务的统一

《Visual Programming: Compositional visual reasoning without training 》

另一篇今年的最佳论文是Visual Programming,出自AllenAI,简单地说就是利用GPT3/4强大的In-Context Learning能力,用伪代码的形式,把复杂的图像理解、编辑任务拆解成几个简单的CV子任务,再直接调用接口解决,如下图。

aedec63214a273563d68eeda0f0a21be.png

现在这个时间节点,大家可能已经对这个思路见怪不怪了,不过CVPR23的投稿时间其实是在ChatGPT发布之前,回到那个时间还是比较novel的。(如果关注Embodied AI的话,会发现去年这种LM去做子任务拆解的思路谷歌4月份发布的SayCan[4]就提了,anyway各个方向本身就是相互促进的,估计CVer之前看NLP一堆对比学习的文章也是见怪不怪)。

这种思路虽然很优雅地统一了CV任务的输入输出,但也存在两个让落地变难的点:

  1. 从实验结果看各种任务的准确率只有60%-80%(zero-shot),无法比上专门优化的模型。

  2. 作者在论文的实验中只定义了20个API,但如果真要覆盖所有CV任务,这个API定义是很大的工程量,而且随着候选API数量提升效果也会下降。

Large Vision Model的范式

《Towards AGI in Computer Vision: Lessons Learned from GPT and Large Language Models》

这篇文章出自华为,作者首先明确了他们眼中AGI的定义,即:

maximizing reward in an environment

要做一个序列决策模型,单纯的图片是不够的,必需有连续的图像信号。因此作者参考参考LLM的训练思路,定义了CV大模型的几个训练步骤:

7b2f513de20ca64dea89a5efed96698c.png
  1. 环境构建:首先需要有一个高质量、贴近现实、能实现各种交互的环境供模型学习(下文我们会讨论为什么要创建一个环境而不直接用现有数据)。

  2. 生成式预训练:仿照LM,训练模型预测下一帧。目前CV模型的预训练主要是Contrastive learning(判别式)和Masked image modeling(生成式),但MIM还不是序列层面的。

  3. 指令精调:训练模型遵循指令,与环境交互完成各种任务。

  4. 感知下游任务:通过前两步的训练之后,作者期望模型可以具备一定的zeroshot能力,通过prompt完成各种子任务。

这篇工作虽然给出了CV大模型的优化范式,但对于细节讨论较少,实操起来还是会有很多挑战,比如第一步环境建立就是一个超大的工程(狗头。

CV统一模型是否可行

让我们再回看开头说的NLP三个统一层级,对于CV是否可行呢?

对于任务形式(输入输出),个人认为不必追求单个模态,两者结合才是最优的。CV和NLP有个很大的差别是图像的信息密度较低。视觉能表达的东西有限,所以衍生出了抽象的语言,对知识、智能建模,作为人之间交流的工具。正因如此,单纯的图像也不适合作为人和机器之间交流的工具。但硬上其实也可以,毕竟我们读书看电脑也都是视觉转语言,中间加一层OCR就可以了。说不定等比transformer更好的编码器出来后真能这么搞。

对于网络结构,近年来有不少工作在尝试了。不过个人认为CV可能还是需要backbone的创新,因为CNN不适合处理长序列,而transformer目前需要把图像压缩成离散的patch,会造成信息损失,在某些落地场景不可用[5]

像NLP一样以预训练为基座的优化范式的统一则是最难的。回到图像信息密度低的问题,这会导致CV大模型需要比NLP更多的数据进行训练,而数据的获取上就有诸多难点

  1. 互联网上的图片、视频没有文字多。

  2. 大部分文字都是通顺的,而视频是跳跃的[6]。用现实世界训练效率又很低,所以第三篇工作才倡导构建一个虚拟环境。

所以个人还是觉得多模态更加靠谱,加一个模态来补充信息。但多模态预训练需要的高质量视频数据也不多,所以我目前觉得可行的是以NLP为基座,再融入CV模态进行生成式的多模态预训练

最后,补充一个看论文看到的冷知识:我们学到的知识85%来自视觉信号

参考资料

[1]

Planning-oriented Autonomous Driving: https://arxiv.org/abs/2212.10156

[2]

Visual Programming: Compositional visual reasoning without training: https://arxiv.org/abs/2211.11559

[3]

Towards AGI in Computer Vision: Lessons Learned from GPT and Large Language Models: https://arxiv.org/abs/2306.08641

[4]

SayCan: https://arxiv.org/abs/2204.01691

[5]

在CV界,传统卷积已经彻底输给Transformer了吗?: https://www.zhihu.com/question/531529633/answer/2797528246

[6]

为何 CV 里没有出现类似 NLP 大模型的涌现现象: https://www.zhihu.com/question/597657073/answer/3003932801

65dc690b3685edcf4e2e6007ea933b3f.jpeg


我是朋克又极客的AI算法小姐姐rumor

北航本硕,NLP算法工程师,谷歌开发者专家

欢迎关注我,带你学习带你肝

一起在人工智能时代旋转跳跃眨巴眼

「早点学CV」a654f6fbe67ead5f48c1e6f941f2fd4b.png

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

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

相关文章

3s定时循环启动弹窗,子窗体3s后自动关闭功能实现

只贴关键代码: 1、父窗体关键代码 private void doAt1AM(object state){//要执行的任务,直接button调用即可//执行功能...的任务spring_Form spr_Form new spring_Form();spr_Form.Txt "陈先生" ";到1号窗口取药";spr_Form.Show…

WPF中的Behavior及Behavior在MVVM模式下的应用

WPF中的Behavior及Behavior在MVVM模式下的应用 在WPF中,Behaviors(行为)是一种可重用的组件,可以附加到任何UI元素上,以添加特定的交互行为或功能。Behaviors可以通过附加属性或附加行为的方式来实现。 Behavior并不…

【3Ds Max】使用捕捉工具、轴约束工具实现点的精准对齐

目录 问题 解决步骤 一、在XYZ轴上都对齐 二、只在一或两个轴上对齐 问题 举个例子,比如我想让如下的两个立方体的顶点对齐(在同一位置(XYZ轴都对齐),或仅在一个或两个轴上对齐): 主要使…

【PostgreSQL 数据库技术峰会(成都站)】云原生虚拟数仓 PieCloudDB Database 的架构和关键模块实现...

2023年6月17日,中国开源软件推进联盟 PostgreSQL 分会在成都举办了数据库技术峰会。此次峰会以“新机遇、新态势、新发展”为主题,结合当下信创热潮、人工智能等产业变革背景,探讨 PostgreSQL 数据库在这些新机遇下的发展前景。峰会邀请众多行…

PHP 设备管理系统 mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 设备管理系统 是一套完善的WEB设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 视频演示 PHP 设备管理系统 mysql数据库web结构apache 代码下载 https://download.csd…

70、基于51单片机智能手环心率计步温湿度蓝牙APP监控系统设计(程序+原理图+参考论文+开题报告+元器件清单等)

摘 要 计步器是一种颇受欢迎的日常锻炼进度监控器,可以激励人们挑战自己,增强体质,帮助瘦身。早期设计利用加重的机械开关检测步伐,并带有一个简单的计数器。晃动这些装置时,可以听到有一个金属球来回滑动&#xff0c…

Ansible快速上手

使用Ansible-快速上手 ping模块简介: 该模块不使用ICMP ping,而是使用基于python的模块完成。 语法: ansible 主机IP/或在清单中的名称 -m(表示选择模块) ping (表示使用ping模块)清单文件: [dev] 192.…

【运维工程师学习】安装VMware并创建Centos8虚拟机(保姆级教程)

安装虚拟机(VMware)保姆级教程(附安装包) 下载链接安装步骤创建Centos8虚拟机 下载链接 百度网盘链接:https://pan.baidu.com/s/1pWSsCnP_2Yfe7dRCPQitCg 提取码:6666 Centos8下载:https://nex…

0基础学习VR全景平台篇,第51篇:高级功能-自定义菜单

大家好,欢迎观看蛙色VR官方系列——后台使用课程! 本期为大家带来蛙色VR平台,高级功能-自定义菜单! 功能位置示意 一、本功能将用在哪里? 自定义菜单,是显示在VR漫游作品底部和顶部各种可点击的图标按钮。…

Liunx 安装 Nginx

1.准备Nginx所需依赖 yum install gcc-cyum install -y zlib zlib-develyum install -y pcre pcre-develyum install -y openssl openssl-devel2.下载tar并解压 wget http://nginx.org/download/nginx-1.23.0.tar.gz tar -xvf nginx-1.23.0.tar.gz 3.安装Nginx cd nginx-1.2…

mmdetection1.4训练fasterrcnn

mmdetection1.4训练fasterrcnn 指定参数文件urllib.error.URLError: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1131)>No such file or directory: data/coco/annotations/instances…

【C/C++实现进程间通信 一】共享内存方式

前情回顾&#xff1a; 上一期已经讲解过了进程的相关概念以及进程间通信的实现原理&#xff0c;下面仅展示相关代码。 思路&#xff1a; /* 本项目主要用于对同主机上以共享内存方式进行进程间通信的测试 。 1.包含一个外部程序 publisherDemo.exe 以及 subscriberDemo.exe。…

Selenium 使用已开启的浏览器执行测试

实际测试工作中可能遇到某些需要使用手动开启浏览器执行测试的情况&#xff0c;比如某些网站登录需要手机短信验证&#xff0c;为了跳过这步&#xff0c;可以手动登录网站&#xff0c;在已登录的页面继续测试 1、找到本地安装的浏览器启动路径&#xff0c;例如Chrome C:\Progra…

无锡斑目信息技术有限公司与无锡漫途科技有限公司签署战略伙伴合作协议!

2023年6月21日无锡斑目信息技术有限公司与无锡漫途科技有限公司签署战略伙伴合作协议。双方将在数字工厂、智慧城市等领域凭借各自的优势进行全方面的合作。 漫途传感科技总经理田吉成、无锡艾森汇智科技总经理钱小伟、无锡数字城市建设发展工业互联网事业部部长王威共同参加签…

注解实现防止重复提交(Aop)

一、前言 书接上回&#xff0c;上次实现了springboot整合redis&#xff0c;在使用过程中就避免不了重复提交的场景。springboot整合redis_crazyK.的博客-CSDN博客 重复提交的场景&#xff1a; 用于用户误操作&#xff0c;多次点击表单提交按钮由于网速等原因造成页面卡顿&am…

软考高级架构师笔记-8软件工程

目录 1. 前言 & 考情分析2. 软件工程概述3. 能力成熟度模型4. 软件过程模型4.1 敏捷模型4.2 统一过程模型(RUP)5. 逆向工程6. 需求工程7. 系统设计8. 测试基础知识9. 系统运行与维护10. 净室软件工程11. 结语1. 前言 & 考情分析 前文回顾: 软考高级架构师笔记-1计算机…

C++—指针与引用的区别与联系

一、为什么要有引用&#xff08;C语言没有&#xff09; ▪ 因为引⽤和值有⼀样的语义&#xff0c;而指针不是 ▪ 不存在空引⽤&#xff0c;必须初始化&#xff1b;保证值不变&#xff0c;保证编译器更加安全 ▪ 加减号、赋值操作符&#xff0c;作⽤在引用上会触发对象的操作符重…

PHP 人才信息与招聘系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP 人才信息与招聘系统 是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为PHP APACHE&#xff0c;数据 库为mysql5.0&#xff0c;使用php语言开发。…

Qt笔记-自定义QSet,QHash的Key

官方文档已经说得很详细了。 If you want to use other types as the key, make sure that you provide operator() and a qHash() implementation. Example:#ifndef EMPLOYEE_H#define EMPLOYEE_Hclass Employee{public:Employee() {}Employee(const QString &name, con…

在 Linux 中配置 IPv4 和 IPv6 地址详解

概要 IPv4和IPv6是Internet上常用的两种IP地址协议。在Linux系统中&#xff0c;您可以通过配置网络接口来设置IPv4和IPv6地址。本文将详细介绍如何在Linux中配置IPv4和IPv6地址。 步骤 1&#xff1a;确定网络接口 在开始配置IP地址之前&#xff0c;您需要确定要配置的网络接口…