SmolVLM2: 让视频理解能力触手可及

news/2025/3/26 18:26:55/文章来源:https://www.cnblogs.com/huggingface/p/18790299

一句话总结: SmolVLM 现已具备更强的视觉理解能力📺

SmolVLM2 标志着视频理解技术的根本性转变——从依赖海量计算资源的巨型模型,转向可在任何设备运行的轻量级模型。我们的目标很简单: 让视频理解技术从手机到服务器都能轻松部署。

我们同步发布三种规模的模型 (22 亿/5 亿/2.56 亿参数),并全面支持 MLX 框架 (提供 Python 和 Swift API)。所有模型及演示案例 均可在此获取。

想立即体验 SmolVLM2?欢迎试用我们的 交互式聊天界面,通过直观的交互测试 22 亿参数模型的视频理解能力。

技术细节

我们推出三款新模型 (2.56 亿/5 亿/22 亿参数)。其中 22 亿参数模型是视觉与视频任务的优选,而 5 亿和 2.56 亿模型更是 迄今发布的最小型视频语言模型

虽然体积小巧,但其内存效率却优于现有所有模型。在视频领域权威基准测试 Video-MME 中,SmolVLM2 在 20 亿参数级别与顶尖模型比肩,在更小规模模型中更是一骑绝尘。

SmolVLM2 性能表现

注: Video-MME 基准因覆盖多样视频类型 (11 秒至 1 小时) 、多模态数据 (含字幕和音频) 及 254 小时高质量专家标注而著称。了解更多

SmolVLM2-22 亿: 视觉与视频理解新标杆

相较于前代产品,新版 22 亿模型在图像数学解题、图片文字识别、复杂图表解析和科学视觉问答方面表现显著提升:

SmolVLM2 视觉能力提升

在视频任务中,该模型展现出优异性价比。基于 Apollo 大型多模态模型视频理解研究 的数据混合策略,我们在视频/图像性能之间取得了良好平衡。

其内存效率之高,甚至可在免费版 Google Colab 中运行。

Python 代码示例:

# 确保使用最新版 Transformers
!pip install git+https://github.com/huggingface/transformers.gitfrom transformers import AutoProcessor, AutoModelForImageTextToTextmodel_path = "HuggingFaceTB/SmolVLM2-2.2B-Instruct"
processor = AutoProcessor.from_pretrained(model_path)
model = AutoModelForImageTextToText.from_pretrained(model_path,torch_dtype=torch.bfloat16,_attn_implementation="flash_attention_2"
).to("cuda")messages = [{"role": "user","content": [{"type": "video", "path": "path_to_video.mp4"},{"type": "text", "text": "请详细描述该视频内容"}]},
]inputs = processor.apply_chat_template(messages,add_generation_prompt=True,tokenize=True,return_dict=True,return_tensors="pt",
).to(model.device)generated_ids = model.generate(**inputs, do_sample=False, max_new_tokens=64)
generated_texts = processor.batch_decode(generated_ids,skip_special_tokens=True,
)print(generated_texts[0])

更轻量级: 5 亿与 2.56 亿视频模型

我们首次突破小模型极限: SmolVLM2-5 亿视频指令模型 在保持 22 亿模型 90% 视频理解能力的同时,参数量减少四分之三 🤯。

而我们的实验性作品 SmolVLM2-2.56 亿视频指令模型 则探索了小模型的极限。受 IBM 利用 256M 模型 取得成果的启发,我们继续深挖小模型潜力。虽然属于实验性发布,但期待它能激发更多创新应用。

SmolVLM2 应用案例集

为在小型视频模型领域展现我们的核心理念,我们开发了三个实际应用案例,生动呈现该模型系统的多场景应用能力。

iPhone 视频理解

我们开发了完全本地化运行的 iPhone 应用 (使用 5 亿模型),用户无需云端即可进行视频分析。立即申请测试资格,与我们共同打造移动端 AI 视频应用!

VLC 媒体播放器集成

与 VLC 合作开发的智能视频导航功能,支持通过语义搜索跳转到指定片段。在这个 Space 体验播放列表生成原型。

视频精彩片段生成器

擅长处理长视频 (1 小时+),可自动提取足球比赛等场景的关键时刻。立即在线体验。

使用 Transformers 和 MLX 运行 SmolVLM2

自发布首日起,我们便实现了 SmolVLM2 与 Transformer 架构及 MLX 框架的即开即用兼容适配。在本章节中,您可查阅面向视频与多图像处理的多种推理方案,以及配套的实战教程指南。

Transformers

通过对话式 API 可便捷调用 SmolVLM2 模型,聊天模板会自动对输入进行预处理:
你可以像下面这样加载模型:

# 确保使用最新版 Transformers
!pip install git+https://github.com/huggingface/transformers.gitfrom transformers import AutoProcessor, AutoModelForImageTextToTextprocessor = AutoProcessor.from_pretrained(model_path)
model = AutoModelForImageTextToText.from_pretrained(model_path,torch_dtype=torch.bfloat16,_attn_implementation="flash_attention_2"
).to(DEVICE)

视频推理

通过传入 {"type": "video", "path": {video_path} ,你可以在聊天模板传递视频路径,下面是完整的模板示例:

messages = [{"role": "user","content": [{"type": "video", "path": "视频路径.mp4"},{"type": "text", "text": "请详细描述该视频"}]},
]
inputs = processor.apply_chat_template(messages,add_generation_prompt=True,tokenize=True,return_dict=True,return_tensors="pt",
).to(model.device)generated_ids = model.generate(**inputs, do_sample=False, max_new_tokens=64)
generated_texts = processor.batch_decode(generated_ids,skip_special_tokens=True,
)print(generated_texts[0])

多图推理

除了视频,SmolVLM2 支持多图推理。您可以通过聊天模板使用相同的 API。

messages = [{"role": "user","content": [{"type": "text", "text": "这两张图片有何区别?"},{"type": "image", "path": "图片1.png"},{"type": "image", "path": "图片2.png"} ]},
]
inputs = processor.apply_chat_template(messages,add_generation_prompt=True,tokenize=True,return_dict=True,return_tensors="pt",
).to(model.device)generated_ids = model.generate(**inputs, do_sample=False, max_new_tokens=64)
generated_texts = processor.batch_decode(generated_ids,skip_special_tokens=True,
)print(generated_texts[0])

使用 MLX 进行推理

要在 Apple 芯片设备上使用 Python 运行 SmolVLM2,可通过优秀的 mlx-vlm 库 实现。首先安装特定分支:

pip install git+https://github.com/pcuenca/mlx-vlm.git@smolvlm

单图推理示例 (使用 未量化的 5 亿参数版本):

python -m mlx_vlm.generate \--model mlx-community/SmolVLM2-500M-Video-Instruct-mlx \--image https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg \--prompt "请描述这张图片"

视频分析专用脚本 (系统提示词可引导模型关注重点):

python -m mlx_vlm.smolvlm_video_generate \--model mlx-community/SmolVLM2-500M-Video-Instruct-mlx \--system "请专注描述视频片段中的关键戏剧性动作或显著事件,省略常规场景描述" \--prompt "视频中发生了什么?" \--video ~/Downloads/example_video.mov

Swift 语言支持

通过 mlx-swift-examples 代码库 实现 Swift 支持 (当前需从 开发分支 编译),这正是我们构建 iPhone 应用的技术基础。

图像推理 CLI 示例:

./mlx-run --debug llm-tool \--model mlx-community/SmolVLM2-500M-Video-Instruct-mlx \--prompt "请描述这张图片" \--image https://example.com/image.jpg \--temperature 0.7 --top-p 0.9 --max-tokens 100

视频分析示例 (系统提示词调节输出粒度):

./mlx-run --debug llm-tool \--model mlx-community/SmolVLM2-500M-Video-Instruct-mlx \--system "请专注描述视频片段中的核心事件" \--prompt "发生了什么?" \--video ~/Downloads/example_video.mov \--temperature 0.7 --top-p 0.9 --max-tokens 100

若您使用 MLX 和 Swift 集成 SmolVLM2,欢迎在评论区分享您的实践!

微调 SmolVLM2

您可使用 Transformers 库对视频数据进行微调。我们已在 Colab 环境演示了基于 VideoFeedback 数据集 对 5 亿参数模型的微调流程。由于模型较小,推荐使用全参数微调而非 QLoRA/LoRA (但可在 cB 变体尝试 QLoRA)。完整教程请参考 微调笔记。

延伸信息

特别鸣谢 Raushan Turganbay、Arthur Zucker 和 Pablo Montalvo Leroux 对模型移植的贡献。

如果您想了解更多关于 SmolVLM 系列模型的信息,请阅读以下内容:
模型与演示全集 | Apollo 视频理解研究

期待见证您用 SmolVLM2 构建的创新应用!


英文原文: https://huggingface.co/blog/smolvlm2

原文作者: Orr Zohar, Miquel Farré, Andres Marafioti, Merve Noyan, Pedro Cuenca, Cyril, Joshua

译者: yaoqih

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React-Native开发鸿蒙NEXT-video

React-Native开发鸿蒙NEXT-video 前几周的开发,基本把一个”只读型“社区开发的差不多了。帖子列表,详情,搜索都迁移实现了,但还差了一点------视频类型帖子的展示。之前开发RN社区中,对于视频的处理用的是react-native-video,这个三方组件也已经实现了鸿蒙化,部分逻辑可…

React-Native开发鸿蒙NEXT-cookie设置

React-Native开发鸿蒙NEXT-cookie设置 应用有个积分商城,做一些积分兑换的业务,就一个基于react-native-webview开发的页面,在页面加载的时候通过js注入来设置cookie带入用户信息。 早先应甲方要求web网站关闭了,现在又要继续运行。于是就把web服务启动了,然后发现应用里积…

第六天

单词 以下是今天需学习的35个单词复习,同时前几天的单词阅读 理解文章大意,记录不认识的单词。今天这个阅读非常应当下的情景。 How to Teach Yourself Anything in Less than Three Months 如何在3个月内学习任何一件事(一) Self-education can be wonderful and frustrat…

React Native开发鸿蒙Next---富文本浏览

React Native开发鸿蒙Next---富文本浏览 最近在继续开发App剩余的社区功能。地铁的社区相对较为特殊,只有公告/政策规章/操作指南等资讯阅读功能,无法进行交互。对于原先的社区RN,除了移植适配鸿蒙,还需要做大量的功能屏蔽等改造。新的社区后台大量采用富文本进行内容编辑,…

17.指针

正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用 & 运算符访问的地址,它表示了在内存中的一个地址。 请看下面的实例,它将输出定义的变量地址:#include <stdio.h>int main(){int var_runoob = 10;int *p; //定义指针变量p = &var…

3.24 学习记录

实现了学习记录APP的登录注册功能

2025西安交大集训Day2:DFS,BFS记忆化搜索,迭代加深搜索,二分搜索

2025西安交大集训Day2:DFS,BFS记忆化搜索,迭代加深搜索,二分搜索

掌握 Postman:高级 GET 请求技术与响应分析

欢迎阅读本指南,它将详细介绍如何在 Postman 中发送 GET 请求并理解 API 响应。对于希望提升 API 测试和开发能力的开发者来说,这是不可或缺的技能。 Postman 对开发者的重要性Postman 是 API 开发和测试中不可或缺的工具。它不仅简化了发送请求和分析响应的过程,还提供了一…

带你一起来熟悉linux文件权限体系

了解 Linux 文件权限对于有效且可靠的linux相关系统管理和安全管理至关重要。通过本文中概述的概念并加以实践,您将可以轻松浏览文件权限并确保 Linux 系统的完整,可靠和安全。下面将从权限的格式,常用设置,修改,解析等方面分别说明。 A).Linux 文件权限由三个权限部分组成…

OP100自动安装背板常见问题

1.运行过程中切手动,回原灯一直闪烁,始终无法执行完成 OP50自动安装座板 OP100自动安装背板 OP280自动安装上盖 这几个工站因为有记忆功能,会记住当前步序以及夹爪/吸盘上有没有物体,如果运行中切换手动,并动了气缸,会导致逻辑错乱,类似升降器的SUB40,遇到这种情况: 1…

20244217 2024-2025-2 《Python程序设计》实验一报告

学号 2024-2025-2 《Python程序设计》实验一报告 课程:《Python程序设计》 班级: 2442 姓名: 胡峻豪 学号:20244217 实验教师:王志强 实验日期:2025年3月24日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境。首先在官网下载并安装PyCharm专业版,安装完成后打开软…