Fluxi AI Small Vision
Fluxi AI 是一款基于 Qwen2-VL-7B-Instruct 的多模态智能助手,具备文本、图像和视频处理能力,特别优化了葡萄牙语支持。
下载量 25
发布时间 : 2/1/2025
模型简介
全能AI助手,能够处理文本、图像和视频的多模态交互,支持函数调用、检索增强生成(RAG)和系统引导式交互。
模型特点
多模态智能
支持文本、图像和视频的多模态交互与理解。
多语言理解
特别优化了葡萄牙语能力,同时支持多种欧洲和亚洲语言。
函数执行能力
支持预定义函数的调用与执行,优化了葡萄牙语函数调用。
高级RAG技术
检索增强生成技术,优化了葡萄牙语内容检索与整合。
自然友好的交互体验
提供角色化应答和增强的上下文理解能力。
模型能力
文本生成与理解
图像分析与解读
视频理解
函数调用
检索增强生成(RAG)
系统引导式交互
使用案例
多模态交互
图像描述
根据输入的图像生成详细的描述文本。
生成准确且详细的图像描述。
视频内容分析
分析视频内容并生成描述或摘要。
生成视频内容的详细描述或摘要。
函数调用
联系人创建
根据用户输入创建联系人记录。
生成结构化联系人信息并调用相关函数。
检索增强生成
信息查询
根据提供的文档上下文回答用户问题。
生成基于文档的准确回答。
🚀 Fluxi AI - 小型视觉模型 🤖✨
Fluxi AI - 小型视觉模型是一款多功能的人工智能助手,能够处理文本、图像和视频等多模态交互。它支持函数调用、增强检索生成(RAG)和系统引导交互,尤其在葡萄牙语方面进行了优化,具有自然友好的交互体验。
🚀 快速开始
安装依赖
Qwen2-VL 的代码可在最新版本的 Hugging Face Transformers 中获取,建议使用以下命令从源代码进行构建:
pip install git+https://github.com/huggingface/transformers
否则,可能会遇到以下错误:
KeyError: 'qwen2_vl'
我们还提供了一套工具,可更方便地处理各种视觉输入,包括 base64、URL 以及交错的图像和视频。可以使用以下命令进行安装:
pip install qwen-vl-utils
代码示例
以下是使用 transformers
和 qwen_vl_utils
调用聊天模型的代码示例:
from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor
from qwen_vl_utils import process_vision_info
# 加载模型到可用设备
model = Qwen2VLForConditionalGeneration.from_pretrained(
"JJhooww/Fluxi_AI_Small_Vision", torch_dtype="auto", device_map="auto"
)
# 建议启用 flash_attention_2 以获得更好的加速和内存节省,特别是在处理多图像和视频的场景中。
# model = Qwen2VLForConditionalGeneration.from_pretrained(
# "JJhooww/Fluxi_AI_Small_Vision",
# torch_dtype=torch.bfloat16,
# attn_implementation="flash_attention_2",
# device_map="auto",
# )
# 默认处理器
processor = AutoProcessor.from_pretrained("JJhooww/Fluxi_AI_Small_Vision")
# 模型中每个图像的视觉令牌数量的默认范围是 4 - 16384。您可以根据需要配置 min_pixels 和 max_pixels,例如将令牌计数范围设置为 256 - 1280,以平衡速度和内存使用。
# min_pixels = 256*28*28
# max_pixels = 1280*28*28
# processor = AutoProcessor.from_pretrained("JJhooww/Fluxi_AI_Small_Vision", min_pixels=min_pixels, max_pixels=max_pixels)
messages = [
{
"role": "user",
"content": [
{
"type": "image",
"image": "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg",
},
{"type": "text", "text": "描述这张图片。"},
],
}
]
# 推理准备
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("cuda")
# 推理:生成输出
generated_ids = model.generate(**inputs, max_new_tokens=128)
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)
不使用 qwen_vl_utils
from PIL import Image
import requests
import torch
from torchvision import io
from typing import Dict
from transformers import Qwen2VLForConditionalGeneration, AutoTokenizer, AutoProcessor
# 以降低精度加载模型到可用设备
model = Qwen2VLForConditionalGeneration.from_pretrained(
"JJhooww/Fluxi_AI_Small_Vision", torch_dtype="auto", device_map="auto"
)
processor = AutoProcessor.from_pretrained("JJhooww/Fluxi_AI_Small_Vision")
# 图像
url = "https://qianwen-res.oss-cn-beijing.aliyuncs.com/Qwen-VL/assets/demo.jpeg"
image = Image.open(requests.get(url, stream=True).raw)
conversation = [
{
"role": "user",
"content": [
{
"type": "image",
},
{"type": "text", "text": "描述这张图片。"},
],
}
]
# 输入预处理
text_prompt = processor.apply_chat_template(conversation, add_generation_prompt=True)
# 预期输出: '<|im_start|>system\n您是一个有用的助手。<|im_end|>\n<|im_start|>user\n<|vision_start|><|image_pad|><|vision_end|>描述这张图片。<|im_end|>\n<|im_start|>assistant\n'
inputs = processor(
text=[text_prompt], images=[image], padding=True, return_tensors="pt"
)
inputs = inputs.to("cuda")
# 推理:生成输出
output_ids = model.generate(**inputs, max_new_tokens=128)
generated_ids = [
output_ids[len(input_ids) :]
for input_ids, output_ids in zip(inputs.input_ids, output_ids)
]
output_text = processor.batch_decode(
generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True
)
print(output_text)
多图像推理
# 包含多张图像和文本查询的消息
messages = [
{
"role": "user",
"content": [
{"type": "image", "image": "file:///path/to/image1.jpg"},
{"type": "image", "image": "file:///path/to/image2.jpg"},
{"type": "text", "text": "找出这些图像中的相似之处。"},
],
}
]
# 推理准备
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("cuda")
# 推理
generated_ids = model.generate(**inputs, max_new_tokens=128)
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)
视频推理
# 包含图像列表作为视频和文本查询的消息
messages = [
{
"role": "user",
"content": [
{
"type": "video",
"video": [
"file:///path/to/frame1.jpg",
"file:///path/to/frame2.jpg",
"file:///path/to/frame3.jpg",
"file:///path/to/frame4.jpg",
],
"fps": 1.0,
},
{"type": "text", "text": "描述这个视频。"},
],
}
]
# 包含视频和文本查询的消息
messages = [
{
"role": "user",
"content": [
{
"type": "video",
"video": "file:///path/to/video1.mp4",
"max_pixels": 360 * 420,
"fps": 1.0,
},
{"type": "text", "text": "描述这个视频。"},
],
}
]
# 推理准备
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("cuda")
# 推理
generated_ids = model.generate(**inputs, max_new_tokens=128)
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)
批量推理
# 批量推理的示例消息
messages1 = [
{
"role": "user",
"content": [
{"type": "image", "image": "file:///path/to/image1.jpg"},
{"type": "image", "image": "file:///path/to/image2.jpg"},
{"type": "text", "text": "这些图像中的共同元素有哪些?"},
],
}
]
messages2 = [
{"role": "system", "content": "您是一个有用的助手。"},
{"role": "user", "content": "你是谁?"}
]
# 组合消息进行批量处理
messages = [messages1, messages1]
# 批量推理准备
texts = [
processor.apply_chat_template(msg, tokenize=False, add_generation_prompt=True)
for msg in messages
]
image_inputs, video_inputs = process_vision_info(messages)
inputs = processor(
text=texts,
images=image_inputs,
videos=video_inputs,
padding=True,
return_tensors="pt",
)
inputs = inputs.to("cuda")
# 批量推理
generated_ids = model.generate(**inputs, max_new_tokens=128)
generated_ids_trimmed = [
out_ids[len(in_ids) :] for in_ids, out_ids in zip(inputs.input_ids, generated_ids)
]
output_texts = processor.batch_decode(
generated_ids_trimmed, skip_special_tokens=True, clean_up_tokenization_spaces=False
)
print(output_texts)
✨ 主要特性
- 多模态智能:具备处理文本、图像和视频等多模态信息的能力。
- 多语言理解:支持多种语言,尤其在葡萄牙语上有优化表现。
- 函数执行能力:能够执行预定义的函数,处理结构化的输入输出。
- 高级 RAG 功能:结合文档上下文,提供更准确的回答。
- 自然友好交互:提供自然流畅的交互体验。
📦 安装指南
安装 Transformers
pip install git+https://github.com/huggingface/transformers
安装工具包
pip install qwen-vl-utils
💻 使用示例
基础用法
函数调用示例
# 函数调用数据集结构
messages = [
{
"role": "system",
"content": [{
"type": "text",
"text": """# 工具
您可以调用一个或多个函数来辅助用户查询。
您会在 XML 标签 <tools></tools> 中收到函数签名:
<tools>
{
"type": "function",
"function": {
"name": "criar_contato",
"description": "创建一个新联系人",
"parameters": {
"type": "object",
"properties": {
"nome": {"type": "string", "description": "联系人的姓名"},
"email": {"type": "string", "description": "联系人的电子邮件地址"}
},
"required": ["nome", "email"]
}
}
}
</tools>"""
}]
},
{
"role": "user",
"content": [{
"type": "text",
"text": "我需要为我的朋友 John Doe 创建一个新联系人。他的电子邮件是 johndoe@example.com。"
}]
}
]
# 助手响应
response = {
"role": "assistant",
"content": [{
"type": "text",
"text": "<tool_call>\n{'name': 'criar_contato', 'arguments': {'nome': 'John Doe', 'email': 'johndoe@example.com'}}</tool_call>"
}]
}
RAG 实现示例
# RAG 数据集结构
messages = [
{
"role": "user",
"content": [{
"type": "text",
"text": "访问巴西的外国游客主要来自哪些国家?"
}]
},
{
"role": "system",
"content": [{
"type": "text",
"text": "{'doc04': {'text': '巴西接待了超过 600 万外国游客,主要来自阿根廷、美国、巴拉圭、智利、乌拉圭和法国...'}}"
}]
}
]
# 助手响应
response = {
"role": "assistant",
"content": [{
"type": "text",
"text": "访问巴西的外国游客主要来自以下国家:\n\n- 阿根廷\n- 美国\n- 巴拉圭\n- 智利\n- 乌拉圭\n- 法国"
}]
}
系统引导代理示例
# 系统引导代理配置
messages = [
{
"role": "system",
"content": [{
"type": "text",
"text": "您是多个科学学科的专家,包括物理、化学和生物学。请以引人入胜且易懂的方式解释科学概念、理论和现象。"
}]
},
{
"role": "user",
"content": [{
"type": "text",
"text": "你能帮我写一篇关于森林砍伐的文章吗?"
}]
}
]
📚 详细文档
模型概述
该 AI 助手基于 Qwen2-VL-7B-Instruct 模型构建,这是由 Qwen 开发的强大多模态语言模型。主要特点包括:
- 70 亿参数:提供更强大的语言处理能力。
- 先进的视觉和语言架构:支持多模态信息处理。
- 多图像分辨率支持:适应不同的图像输入。
- 视频处理能力:能够理解视频内容。
- 多模态任务优化:针对多模态任务进行了专门优化。
主要功能
多模态处理
- 文本生成与理解:能够生成和理解自然语言文本。
- 图像分析与理解:对图像进行分析和解读。
- 视频理解:支持长达 20 分钟以上的视频理解。
- 多种输入格式支持:包括本地文件、Base64 图像、URL 以及图像和视频的组合。
多语言支持
模型能够理解和处理多种语言,包括:
- 葡萄牙语(优化支持)
- 英语
- 西班牙语、法语、德语等欧洲语言
- 日语和韩语
- 阿拉伯语和越南语
主要特性
函数调用
- 执行预定义函数:具备执行预定义函数的能力。
- 结构化输入输出处理:处理结构化的输入输出。
- 复杂参数支持:支持复杂的函数参数。
- 葡萄牙语优化:针对葡萄牙语使用场景进行了优化。
增强检索生成(RAG)
- 文档上下文整合:结合文档上下文提供更准确的回答。
- 相关信息提取:提取相关的信息。
- 上下文自适应回答:根据上下文生成合适的回答。
- 葡萄牙语优化:针对葡萄牙语内容进行了优化。
系统引导交互
- 基于角色和功能的回答:根据角色和功能生成回答。
- 领域知识适应:适应不同的领域知识。
- 增强的上下文理解:更好地理解上下文信息。
- 葡萄牙语代理优化:针对葡萄牙语代理进行了优化。
葡萄牙语优化
函数调用
- 葡萄牙语函数名称和描述:函数名称和描述使用葡萄牙语。
- 巴西命名约定:遵循巴西的参数命名约定。
- 本地化错误消息和响应:提供本地化的错误消息和响应。
- 基于巴西用例的函数选择:根据巴西的用例选择合适的函数。
增强 RAG
- 葡萄牙语内容检索优化:优化葡萄牙语内容的检索。
- 巴西上下文优先:优先考虑巴西的上下文信息。
- 本地信息提取精度提高:提高本地信息提取的精度。
- 语言模式识别改进:改进对葡萄牙语语言模式的识别。
代理特定增强
- 增强的巴西文化背景:融入更多的巴西文化背景信息。
- 区域知识整合:整合区域知识。
- 葡萄牙语细微差别理解提升:更好地理解葡萄牙语的细微差别。
- 巴西特定领域优化:针对巴西特定领域进行优化。
模型局限性
- 不支持音频:目前模型不支持音频输入和处理。
- 数据截止日期:数据库信息截止到 2023 年 6 月。
- 个体和品牌识别受限:对个体和品牌的识别能力有限。
- 多步骤复杂任务性能下降:在处理多步骤复杂任务时性能可能会下降。
- 物体精确计数困难:难以精确计数物体。
- 3D 空间推理有限:3D 空间推理能力有限。
🔧 技术细节
本模型基于 Qwen2-VL-7B-Instruct 构建,该模型具有先进的多模态处理架构,能够有效地处理文本、图像和视频信息。通过优化的训练算法和大量的多模态数据训练,模型在多语言理解和多模态交互方面表现出色。在葡萄牙语优化方面,采用了特定的语言处理技术和数据增强方法,提高了模型在葡萄牙语环境下的性能。
📄 许可证
本项目采用 Apache-2.0 许可证。
📚 引用
基础模型引用
@article{Qwen2VL,
title={Qwen2-VL: Enhancing Vision-Language Model's Perception of the World at Any Resolution},
author={Wang, Peng and Bai, Shuai and Tan, Sinan and Wang, Shijie and Fan, Zhihao and Bai, Jinze and Chen, Keqin and Liu, Xuejing and Wang, Jialin and Ge, Wenbin and Fan, Yang and Dang, Kai and Du, Mengfei and Ren, Xuancheng and Men, Rui and Liu, Dayiheng and Zhou, Chang and Zhou, Jingren and Lin, Junyang},
journal={arXiv preprint arXiv:2409.12191},
year={2024}
}
@article{Qwen-VL,
title={Qwen-VL: A Versatile Vision-Language Model for Understanding, Localization, Text Reading, and Beyond},
author={Bai, Jinze and Bai, Shuai and Yang, Shusheng and Wang, Shijie and Tan, Sinan and Wang, Peng and Lin, Junyang and Zhou, Chang and Zhou, Jingren},
journal={arXiv preprint arXiv:2308.12966},
year={2023}
}
📋 信息表格
属性 | 详情 |
---|---|
模型类型 | Fluxi AI - 小型视觉模型 |
训练数据 | JJhooww/system_chat_portuguese、JJhooww/rag_agente、JJhooww/chamada_de_funcao、JJhooww/open_perfect_ptbr_sharegpt_multiturn |
基础模型 | Qwen/Qwen2-VL-7B-Instruct |
许可证 | Apache-2.0 |
Clip Vit Large Patch14
CLIP是由OpenAI开发的视觉-语言模型,通过对比学习将图像和文本映射到共享的嵌入空间,支持零样本图像分类
图像生成文本
C
openai
44.7M
1,710
Clip Vit Base Patch32
CLIP是由OpenAI开发的多模态模型,能够理解图像和文本之间的关系,支持零样本图像分类任务。
图像生成文本
C
openai
14.0M
666
Siglip So400m Patch14 384
Apache-2.0
SigLIP是基于WebLi数据集预训练的视觉语言模型,采用改进的sigmoid损失函数,优化了图像-文本匹配任务。
图像生成文本
Transformers

S
google
6.1M
526
Clip Vit Base Patch16
CLIP是由OpenAI开发的多模态模型,通过对比学习将图像和文本映射到共享的嵌入空间,实现零样本图像分类能力。
图像生成文本
C
openai
4.6M
119
Blip Image Captioning Base
Bsd-3-clause
BLIP是一个先进的视觉-语言预训练模型,擅长图像描述生成任务,支持条件式和非条件式文本生成。
图像生成文本
Transformers

B
Salesforce
2.8M
688
Blip Image Captioning Large
Bsd-3-clause
BLIP是一个统一的视觉-语言预训练框架,擅长图像描述生成任务,支持条件式和无条件式图像描述生成。
图像生成文本
Transformers

B
Salesforce
2.5M
1,312
Openvla 7b
MIT
OpenVLA 7B是一个基于Open X-Embodiment数据集训练的开源视觉-语言-动作模型,能够根据语言指令和摄像头图像生成机器人动作。
图像生成文本
Transformers 英语

O
openvla
1.7M
108
Llava V1.5 7b
LLaVA 是一款开源多模态聊天机器人,基于 LLaMA/Vicuna 微调,支持图文交互。
图像生成文本
Transformers

L
liuhaotian
1.4M
448
Vit Gpt2 Image Captioning
Apache-2.0
这是一个基于ViT和GPT2架构的图像描述生成模型,能够为输入图像生成自然语言描述。
图像生成文本
Transformers

V
nlpconnect
939.88k
887
Blip2 Opt 2.7b
MIT
BLIP-2是一个视觉语言模型,结合了图像编码器和大型语言模型,用于图像到文本的生成任务。
图像生成文本
Transformers 英语

B
Salesforce
867.78k
359
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers 支持多种语言

L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers 英语

C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统 中文
R
uer
2,694
98
智启未来,您的人工智能解决方案智库
简体中文