说明文档
SmolVLM2-500M-Video
SmolVLM2-500M-Video 是一款轻量级多模态模型,专门用于分析视频内容。该模型能够处理视频、图片和文本输入,生成文本输出——无论是回答关于媒体文件的问题、比较视觉内容,还是从图片中转录文本。尽管体积小巧,只需 1.8GB GPU 显存即可进行视频推理,但在复杂的多模态任务中表现出色。这种高效性使其特别适合计算资源受限的端侧应用场景。
模型摘要
- 开发机构: Hugging Face 🤗
- 模型类型: 多模态模型(图片/多图片/视频/文本)
- 语言(NLP): 英语
- 许可证: Apache 2.0
- 架构: 基于 Idefics3(详见技术摘要)
资源
应用场景
SmolVLM2 可用于对多模态(视频/图片/文本)任务进行推理,输入由文本查询以及一个视频或多张图片组成。文本和媒体文件可以任意交错,支持 caption 生成、视觉问答和基于视觉内容的故事创作等任务。该模型不支持图片或视频生成。
要针对特定任务微调 SmolVLM2,请参考微调教程。
评估
我们在以下科学基准测试上评估了 SmolVLM2 系列的性能:
| 规模 | Video-MME | MLVU | MVBench |
|---|---|---|---|
| 2.2B | 52.1 | 55.2 | 46.27 |
| 500M | 42.2 | 47.3 | 39.73 |
| 256M | 33.7 | 40.6 | 32.7 |
快速入门
你可以使用 transformers 来加载、推理和微调 SmolVLM。请确保已安装 num2words、flash-attn 和最新版本的 transformers。
from transformers import AutoProcessor, AutoModelForImageTextToText
import torch
model_path = "HuggingFaceTB/SmolVLM2-500M-Video-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": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg"},
{"type": "text", "text": "Can you describe this image?"},
]
},
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device, dtype=torch.bfloat16)
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 进行视频推理,请确保已安装 decord。
messages = [
{
"role": "user",
"content": [
{"type": "video", "path": "path_to_video.mp4"},
{"type": "text", "text": "Describe this video in detail"}
]
},
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device, dtype=torch.bfloat16)
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])
多图片交错推理
你可以使用聊天模板将多个媒体与文本交错使用。
import torch
messages = [
{
"role": "user",
"content": [
{"type": "text", "text": "What is the similarity between these two images?"},
{"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg"},
{"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/0052a70beed5bf71b92610a43a52df6d286cd5f3/diffusers/rabbit.jpg"},
]
},
]
inputs = processor.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device, dtype=torch.bfloat16)
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])
模型优化
滥用与超出范围的使用
SmolVLM 不适用于高风险场景或影响个人福祉或生计的关键决策过程。该模型可能生成看起来真实但实际上不准确的内容。滥用包括但不限于:
- 禁止用途:
- 对个人进行评估或打分(例如就业、教育、信用方面)
- 关键自动化决策
- 生成不可靠的事实内容
- 恶意活动:
- 垃圾信息生成
- 虚假信息活动
- 骚扰或虐待
- 未经授权的监控
许可证
SmolVLM2 基于 SigLIP 作为图片编码器,SmolLM2 作为文本解码器。
我们在 Apache 2.0 许可证下发布 SmolVLM2 检查点。
引用信息
请按以下方式引用我们:
@article{marafioti2025smolvlm,
title={SmolVLM: Redefining small and efficient multimodal models},
author={Andrés Marafioti and Orr Zohar and Miquel Farré and Merve Noyan and Elie Bakouch and Pedro Cuenca and Cyril Zakka and Loubna Ben Allal and Anton Lozhkov and Nouamane Tazi and Vaibhav Srivastav and Joshua Lochner and Hugo Larcher and Mathieu Morlon and Lewis Tunstall and Leandro von Werra and Thomas Wolf},
journal={arXiv preprint arXiv:2504.05299},
year={2025}
}
训练数据
SmolVLM2 最初使用 330 万样本进行训练,这些样本来自十个不同的数据集:LlaVa Onevision、M4-Instruct、Mammoth、LlaVa Video 178K、FineVideo、VideoStar、VRipt、Vista-400K、MovieChat 和 ShareGPT4Video。 下图给出了这些样本在各个模态上的总体概览以及样本来源。 <!-- <center><img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/smolvlm2_data_split.png" width="auto" height="auto" alt="Image description"> </center>
详情
<img src="https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/smolvlm2_datadetails.png" width="auto" height="auto" alt="Image description"> -->
按模态划分的数据比例
| 数据类型 | 百分比 |
|---|---|
| 图片 | 34.4% |
| 文本 | 20.2% |
| 视频 | 33.0% |
| 多图片 | 12.3% |
各模态的详细数据集切片
文本数据集
| 数据集 | 百分比 |
|---|---|
| llava-onevision/magpie_pro_ft3_80b_mt | 6.8% |
| llava-onevision/magpie_pro_ft3_80b_tt | 6.8% |
| llava-onevision/magpie_pro_qwen2_72b_tt | 5.8% |
| llava-onevision/mathqa | 0.9% |
多图片数据集
| 数据集 | 百分比 |
|---|---|
| m4-instruct-data/m4_instruct_multiimage | 10.4% |
| mammoth/multiimage-cap6 | 1.9% |
图片数据集
| 数据集 | 百分比 |
|---|---|
| llava-onevision/other | 17.4% |
| llava-onevision/vision_flan | 3.9% |
| llava-onevision/mavis_math_metagen | 2.6% |
| llava-onevision/mavis_math_rule_geo | 2.5% |
| llava-onevision/sharegpt4o | 1.7% |
| llava-onevision/sharegpt4v_coco | 1.5% |
| llava-onevision/image_textualization | 1.3% |
| llava-onevision/sharegpt4v_llava | 0.9% |
| llava-onevision/mapqa | 0.9% |
| llava-onevision/qa | 0.8% |
| llava-onevision/textocr | 0.8% |
视频数据集
| 数据集 | 百分比 |
|---|---|
| llava-video-178k/1-2m | 7.3% |
| llava-video-178k/2-3m | 7.0% |
| other-video/combined | 5.7% |
| llava-video-178k/hound | 4.4% |
| llava-video-178k/0-30s | 2.4% |
| video-star/starb | 2.2% |
| vista-400k/combined | 2.2% |
| vript/long | 1.0% |
| ShareGPT4Video/all | 0.8% |
HuggingFaceTB/SmolVLM2-500M-Video-Instruct
作者 HuggingFaceTB
创建时间: 2025-02-11 07:06:38+00:00
更新时间: 2025-04-08 07:25:40+00:00
在 Hugging Face 上查看