❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦
🎧 “视觉推理新突破!R1-Onevision 开源多模态模型,超越 GPT-4V 的推理能力”
大家好,我是蚝油菜花。你是否也遇到过——
- 👉 面对复杂的科学问题,难以快速找到解决方案?
- 👉 需要分析大量图像数据,但缺乏高效的工具?
- 👉 在教育场景中,如何帮助学生更好地理解复杂的逻辑推理?
今天要介绍的 R1-Onevision,是一款开源的多模态视觉推理模型,基于 Qwen2.5-VL 微调而成。它不仅能同时处理图像和文本输入,还能在数学、科学、深度图像理解和逻辑推理等领域表现出色。在多项基准测试中,R1-Onevision 甚至超越了 Qwen2.5-VL-7B 和 GPT-4V 等模型。
🚀 快速阅读
R1-Onevision 是一款开源的多模态视觉推理模型,专注于复杂视觉推理任务。
- 核心功能:通过整合视觉和文本数据,R1-Onevision 能够在数学、科学、深度图像理解和逻辑推理等领域表现出色。
- 技术原理:基于 Qwen2.5-VL 微调,采用形式化语言驱动的推理和基于规则的强化学习技术,提升了模型的推理准确性和可解释性。
R1-Onevision 是什么
R1-Onevision 是一款开源的多模态大语言模型,专注于复杂视觉推理任务。它基于 Qwen2.5-VL 微调而成,通过整合视觉和文本数据,能够精准地进行多模态信息解释。在数学、科学、深度图像理解和逻辑推理等领域表现出色,并在多项推理基准测试中超越了 Qwen2.5-VL-7B 和 GPT-4V 等模型。
R1-Onevision 能同时处理图像和文本输入,通过先进的 embedding 技术实现高效的信息提取与关联。训练数据集涵盖了自然场景、科学、数学问题、OCR 内容和复杂图表等多个领域,进一步提升了模型的推理能力。
R1-Onevision 的主要功能
- 多模态融合与推理:R1-Onevision 能同时处理图像和文本输入,通过先进的 embedding 技术实现视觉与语言信息的高效整合,在数学、科学、深度图像理解和逻辑推理等领域表现出色。
- 复杂推理能力:模型通过形式语言和规则强化学习,具有深度推理能力,能在高难度的推理任务中提供精准答案。
- 多样化应用场景:R1-Onevision 可广泛应用于科学研究、教育工具、图像理解以及工业领域。可以帮助科学家分析复杂数据集,为学生提供精准指导,或用于医疗影像分析和自动驾驶等场景。
- 基准测试与数据集支持:R1-Onevision 团队开发了 R1-Onevision-Bench 基准测试,涵盖逻辑推理、数学、物理和化学问题,用于评估模型在不同领域的推理能力。
- 自监督学习与优化:R1-Onevision 通过群组相对策略优化(GRPO)进行强化学习自我探索,减少了对大量标注数据的依赖,提升了学习速度和泛化能力。
R1-Onevision 的技术原理
- 形式化语言驱动的推理:模型引入了形式化语言(Formal Language)来表达图像内容,推理过程更加精确和可解释。提升了推理的准确性,使模型的推理过程更加透明,便于理解和验证。
- 基于规则的强化学习:R1-Onevision 在训练过程中采用了基于规则的强化学习(Rule-Based Reinforcement Learning, RL),通过明确的逻辑约束和结构化输出,确保模型在推理过程中遵循逻辑推导的原则。
- 精心设计的数据集:R1-Onevision 的数据集通过密集标注技术捕捉图像的细节信息,结合语言模型的推理能力生成更具逻辑性的文本描述。
- 强化学习优化:R1-Onevision 借鉴了 DeepSeek 的 GRPO(Generative Reward Processing Optimization)强化学习技术,通过自监督学习和优化,减少了对大量标注数据的依赖。
- 模型架构与训练:R1-Onevision 基于 Qwen2.5-VL 微调而成,采用全模型监督微调(Full Model SFT)方法,训练过程中使用了 512 分辨率的图像输入以节省 GPU 内存。模型通过优化学习率和梯度累积等技术,进一步提升了训练效率。
如何运行 R1-Onevision
1. 安装依赖
首先,确保你已经安装了 transformers
库和 torch
。可以通过以下命令安装:
pip install transformers torch
2. 加载模型
你可以使用 Hugging Face 的 transformers
库加载 R1-Onevision 模型:
from transformers import AutoProcessor, Qwen2_5_VLForConditionalGeneration
import torch
from qwen_vl_utils import process_vision_info
MODEL_ID = "Fancy-MLLM/R1-Onevision-7B"
processor = AutoProcessor.from_pretrained(MODEL_ID, trust_remote_code=True)
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
MODEL_ID,
trust_remote_code=True,
torch_dtype=torch.bfloat16
).to("cuda").eval()
3. 准备输入
准备图像和文本输入:
messages = [
{
"role": "user",
"content": [
{
"type": "image", "image": "<your image path>"},
{
"type": "text", "text": "Hint: Please answer the question and provide the final answer at the end. Question: Which number do you have to write in the last daisy?"},
],
}
]
4. 推理
进行推理并输出结果:
text = processor.apply_chat_template(
messages, tokenize=False, add_generation_prompt=True
)
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
text=[text],
images=image_inputs,
videos=video_inputs,
padding=True,
return_tensors="pt",
)
inputs = inputs.to(model.device)
generated_ids = model.generate(**inputs, max_new_tokens=4096)
generated_ids_trimmed = [
out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_text = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_text)
资源
- GitHub 仓库:https://github.com/Fancy-MLLM/R1-onevision
- HuggingFace 模型库:https://huggingface.co/Fancy-MLLM/R1-Onevision-7B
- 在线演示 Demo:https://huggingface.co/spaces/Fancy-MLLM/R1-Onevision
❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!
🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦