贾佳亚团队新作LLaMA-VID,2token让大模型学会看好莱坞大片
家人们谁懂,连大模型都学会看好莱坞大片了,播放过亿的GTA6预告片大模型还看得津津有味,实在太卷了!
而让LLM卷出新境界的办法简单到只有2token——将每一帧编码成2个词即可搞定。等等!这种大道至简的方法有种莫名的熟悉感。不错,又是出自香港中文大学贾佳亚团队。
这是贾佳亚团队自8月提出主攻推理分割的LISA多模态大模型、10月发布的70B参数长文本开源大语言模型LongAlpaca和超长文本扩展术LongLoRA后的又一次重磅技术更新。而LongLoRA只需两行代码便可将7B模型的文本长度拓展到100k tokens,70B模型的文本长度拓展到32k tokens的成绩收获了无数好评。
这次,贾佳亚团队的新作多模态大模型LLaMA-VID,可支持单图、短视频甚至长达3小时电影的输入处理。须知当前,包括GPT-4V在内的多模态模型 [1,2,3]基本只能支持图像输入,面对实际场景中对多图像长视频的处理需求支持十分有限,面对几十分钟甚至几个小时的长视频更显无能为力。
可以说,LLaMA-VID的出现填补了大语言模型在长视频领域的空白。
电影搭子LLaMA-VID的一手体验
先拿最近爆火的GTA6预告片试试手感。
LLaMA-VID能够准确理解预告片里出现的场景,并能分析预告片中游戏吸引人的地方在于广泛的活动场景和惊艳的视觉效果。
而根据游戏中的场景和特征,LLaMA-VID还能推测出预告片是Rockstar公司游戏GTA6的推广,并说出游戏的背景城市为迈阿密。
针对网络上流行的短视频和图片,LLaMA-VID也不在话下。
LLaMA-VID能够分析短视频中知名表情包的笑点,因为视频中人物夸张的表情以及对周围人物的情绪感染不断加深并强化。
也能扮演“福尔摩斯”,像侦探来根据室内的环境分析人物性格。
接下来,LLaMA-VID将通过看经典电影来展示自己的看家本领。首先是励志、温情的《阿甘正传》:
可以看出,LLaMA-VID对角色的理解与分析十分准确。
如珍妮对于阿甘的意义(孩童时期的朋友,后来成为阿甘的妻子,是阿甘生活和心灵的慰藉);阿甘在战争及退伍后的事件分析(丹中尉责怪阿甘救了自己,无法战死沙场),并对接见阿甘的美国总统如数家珍(肯尼迪、约翰逊、尼克松分别因为全美橄榄球运动员、越战荣誉勋章、和全美乒乓球队接见阿甘)。
这一次直接挑战超长视频,让LLaMA-VID看一部近3小时的、刺激的科幻大片《星际穿越》,并与其进行对话。
可以看出,LLaMA-VID不仅能结合电影情节和人物轻松对电影进行点评,而且能很精准地回答出剧中所涉的细节。
例如,虫洞的作用和创造者是谁(未来的智慧生物放置在土星附近,用于帮助人类进行远距离星际穿越),男主库珀是如何将黑洞中的信息传递给女儿墨菲(通过手表以摩斯密码的方式传递数据),以及米勒星球上相对地球时间的快慢及原因(米勒星球由于在黑洞附近,导致1小时相当于地球7年)。
不得不说,这个电影搭子实在太强大了,又狠话又多那种!
16个图片视频量化指标直接Promax
见识过电影搭子的超能力后,不妨来看看贾佳亚团队是如何开发LLaMA-VID的。
要知道,当前的多模态模型无法处理长视频的主要原因在于传统多模态大模型对单张图片的编码token数量过多,导致在视频时间加长后所需要的token数急剧增加,使模型难以承受。
以当前多模态大模型的技术标杆GPT-4V为例。由于每张图像都需要过多的Token进行编码,GPT-4V很难将所有的视频帧全部送入大模型。例如对于GTA6预告片(1分30秒)的输入,GPT-4V采用抽取5帧的策略进行逐帧分析:
这不仅会使用户对视频内容无法获得直观的理解,并难以处理更长的视频输入。
如果让GPT-4V对视频进行统一分析,则会出现报错并无法处理:
为解决这个问题,贾佳亚团队重新设计了图像的编码方式,采用上下文编码 (Context Token) 和图像内容编码 (Content Token) 来对视频中的单帧进行编码,从而将视频中的每一帧用2个Token来表示。
其中,上下文编码根据用户输入的问题生成,从而保证了在极限压缩视频消耗的同时,能尽可能保留和用户问题相关的视觉特征。而图像内容编码则更加关注图像本身的内容信息,来对上下文编码未关注到的环境进行补充。
简单来说,对于上下文编码 (Context Token),LLaMA-VID利用文本解码器(Text Decoder)根据用户的输入和图像编码器(Visual Encoder)提取的特征来生成输入指令相关的跨模态索引(Text Query),并使用所生成的索引对图像编码器生成的特征利用注意力机制(Context Attention)进行特征采样和组合,从而生成高质量的指令相关特征。
而对于图像内容编码 (Content Token) ,LLaMA-VID直接根据用户需求对图像特征进行池化采样。这对于单张图片或短视频,可保留绝大多数的图像特征从而提升细节理解,而面对几个小时的长视频时,则可将每帧的图像特征压缩成2个Token。
用这种方式,LLaMA-VID可以将3个小时的电影或视频精简为数个Token,直接使用大语言模型进行理解和交互。
这种Token生成方法非常简洁,仅需几行代码即可实现高效的生成。
此外,LLaMA-VID还收集了400部电影并生成9K条长视频问答语料,包含电影影评、人物成长及情节推理等。结合之前贾佳亚团队所发布的长文本数据集LongAlpaca-12k(9k条长文本问答语料对、3k短文本问答语料对), 可轻松将现有多模态模型拓展来支持长视频输入。
在16个视频、图片理解及推理数据集上实现了promax的效果
与现有方法相比,LLaMA-VID所提出的创新之处在于,仅用2个Token来处理视频中的图片即已大幅超越以往的模型,在MSVD-QA,MSRVTT-QA,ActivityNet-QA等多个视频问答和推理的榜单上实现了SOTA。而随着语言模型的增大,效果还能进一步增强。
而面对现有的多模态模型如LLaVA-1.5,LLaMA-VID仅需加入1个所提出的上下文编码 (Context Token)拓展,能在GQA、MMBench、MME、SEED等8个图片问答指标上获得显著的提升:
值得一提的是,LLaMA-VID的视频理解和推理能力已经出了Demo,可以在线跟电影对话的那种。
操作也极其简单,只需选择电影海报和对应的电影段,即可直接和电影交流(部署在单块3090,需要的小伙伴可以参考code用更大的显存部署,直接和整个电影对话)。
同时也支持用户上传短视频进行互动。
如果对描述指令有疑惑的,Demo也给出了一些示例,感兴趣的小伙伴们不妨来pick一下这个电影搭子。
参考文献
[1] Hang Zhang, Xin Li, and Lidong Bing. Video-llama: An instruction-tuned audio-visual language model for video understanding. arXiv:2306.02858, 2023.
[2] KunChang Li, Yinan He, Yi Wang, Yizhuo Li, Wenhai Wang, Ping Luo, Yali Wang, Limin Wang, and Yu Qiao. Videochat: Chat-centric video understanding. arXiv:2305.06355, 2023.
[3] Muhammad Maaz, Hanoona Rasheed, Salman Khan, and Fahad Shahbaz Khan. Video-chatgpt: Towards detailed video understanding via large vision and language models. arXiv:2306.05424, 2023.
相关文章:

贾佳亚团队新作LLaMA-VID,2token让大模型学会看好莱坞大片
家人们谁懂,连大模型都学会看好莱坞大片了,播放过亿的GTA6预告片大模型还看得津津有味,实在太卷了! 而让LLM卷出新境界的办法简单到只有2token——将每一帧编码成2个词即可搞定。等等!这种大道至简的方法有种莫名的熟…...

【数据结构】手撕排序
🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 文章目录 一、排序的概念及其运用1.1 排序的概念1.2 常见的算法排序 二、 冒泡排序三、直接插入排…...

运维05:自动化
人工运维时代 运维人员早期需要维护众多的机器,因此需要执行很多重复的劳动,很多机器需要同时部署相同的服务或者是执行相同的命令,还得反复地登录不同的机器,执行重复的动作 自动化运维时代 早期运维人员会结合ssh免密登录&…...

OpenCL学习笔记(一)开发环境搭建(win10+vs2019)
前言 异构编程开发,在高性能编程中有重要的,笔者本次只简单介绍下,如何搭建简单的开发环境,可以供有需要的小伙伴们开发测试使用 一、获取opencl的sdk库 1.使用cuda库 若本机有Nvidia的显卡,在安装cuda库后&#x…...
寻找两个正序数组的中位数
更好的阅读体验,请点击 YinKai s Blog。 题目:寻找两个正序数组的中位数 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O(log (mn)) 。 …...

探索低代码的潜力、挑战与未来展望
低代码开发作为一种新兴的开发方式,正在逐渐改变着传统的编程模式,低代码使得开发者无需编写大量的代码即可快速构建各种应用程序。然而,低代码也引发了一系列争议,有人称赞其为提升效率的利器,也有人担忧其可能带来的…...

unity 2d 入门 飞翔小鸟 小鸟碰撞 及死亡(九)
1、给地面,柱体这种添加2d盒装碰撞器,小鸟移动碰到就不会动了 2、修改小鸟的脚本(脚本命名不规范,不要在意) using System.Collections; using System.Collections.Generic; using UnityEngine;public class Fly : Mo…...
实时最优控制(Real-Time Optimal Control)工具
系列文章目录 前言 许多现代控制方法,如模型预测控制(model-predictive control),在很大程度上依赖于实时解决优化问题。特别是,高效解决优化控制问题的能力使复杂机器人系统在实现高动态行为(highly dyna…...

(env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
应公司需求,在特定情况下需要修改ip 在开发过程中出现的小插曲 1、第一种情况:重复声明 2、第二种情况: 应官方要求,需要跳转的 tabBar 页面的路径(需在 pages.json 的 tabBar 字段定义的页面)࿰…...
go-zero开发入门-API服务开发示例
接口定义 定义 API 接口文件 接口文件 add.api 的内容如下: syntax "v1"info (title: "API 接口文件示例"desc: "演示如何编写 API 接口文件"author: "一见"date: "2023年12月07日"version: "…...
NVIDIA Jetson NX ubuntu20.04删除多余版本冲突的Boost库
参考Ubuntu16.04 卸载旧版本Boost库并安装新版本 卸载 删除/usr/local/include/boost文件夹,删除/usr/local/lib中和boost有关的文件,以及/usr/local/lib/cmake/中boost的cmake文件 cd /usr/local/lib/ ls | grep boost sudo rm -rf /usr/local/include/boost su…...

【蜗牛到家】获南明电子信息产业引导基金战略投资
智慧社区生活服务平台「蜗牛到家」已于近期获得贵阳南明电子信息产业引导基金、华科明德战略投资。 贵阳南明电子信息产业引导基金属于政府旗下产业引导基金,贵州华科明德基金管理有限公司擅长电子信息产业、高科技产业、城市建设及民生保障领域的投资,双…...
基于ubuntu nc指令实现远程传输文件到嵌入式设备中
背景: 最近在使用nc进行远程文件传输的时候发现在文件传输完成时,没有正确的反馈,而是界面一直停留在传输阶段,加上使用nc传输需要设置一些诸如-l、 -p等参数,于是想将这些参数包裹在sh脚本中,一键执行脚本…...
蓝桥杯 day01 奇怪的数列 特殊日期
奇怪的数列 题目描述 奇怪的数列 从 X 星截获一份电码,是一些数字,如下: 13 1113 3113 132113 1113122113 ⋯⋯ YY 博士经彻夜研究,发现了规律: 第一行的数字随便是什么,以后每一行都是对上一行…...
properties配置和读取
如何配置和读取属性文件 1.属性文件介绍1.1 什么是属性文件1.2属性文件规范1.3 属性文件优缺点 2.属性文件读取4.spring和属性文件4.1利用注解读取4.2配置文件里直接引用 4.属性文件写入5.注意事项5.总结 1.属性文件介绍 1.1 什么是属性文件 Java开发中,我们经常需…...

如何利用人工智能+物联网技术实现自动化设备生产
随着科技的发展与行业竞争的日益激烈,制造业也逐渐走向智能化发展。制造业的改革是利用物联网技术和自动化设备,实现生产线的智能化和自适应生产,优化生产流程,提高生产效率和质量,为企业创造更大的价值。 方案概述 智…...

STM32CubeMx+MATLAB Simulink串口输出实验
STM32CubeMxMATLAB Simulink串口输出实验 📌《STM32CubeMxMATLAB Simulink点灯程序》📍相关篇《MATLAB Simulink STM32硬件在环 (HIL)实现例程测试》🔖需要的软件支持包:Embedded Coder Support Package fo…...
React中每次渲染都会传入一个新的props.children到子组件?
传入props.children后, 为什么会导致组件的重新渲染? 问题描述 在 react 中, 我想要对组件的渲染进行优化, 遇到了一个非常意思的问题, 当我向一个组件中传入了 props.children 之后, 每次父组件重新渲染都会导致这个组件的重新渲染; 它看起来的表现就像是被memo包…...
Qt 通过命令行编译程序
前言 从服务器拉代码到编译成可执行文件一个脚本解决问题。使用的项目文件见上一个文章 Qt生成动态链接库并使用动态链接库 脚本代码 为了方便易懂这是一个很简单的Qt编译脚本 call E:\vs2015\VC\vcvarsall.bat x86 rmdir /s /q my-project git clone gitgitee.com:wenbai1…...

WireShark监控浏览器登录过程网络请求
软件开发中经常前后端扯皮。一种是用Chrome浏览器的开发者工具 来看网络交互,但是前提是 网络端口的确是通的。 WireShark工作在更低层。 这个工具最大的好处,大家别扯皮,看网络底层的log,到底 你的端口开没开, 数据…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

华为OD机考-机房布局
import java.util.*;public class DemoTest5 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseSystem.out.println(solve(in.nextLine()));}}priv…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...