🚀 Qwen2-VL-7B-Captioner-Relaxed
Qwen2-VL-7B-Captioner-Relaxed 是一款先进的多模态大语言模型,它基于 Qwen2-VL-7B-Instruct 进行指令微调。该微调版本基于为文本到图像模型精心策划的数据集,能为给定图像提供更详细的描述。
🚀 快速开始
环境要求
如果你遇到 KeyError: 'qwen2_vl'
或 ImportError: cannot import name 'Qwen2VLForConditionalGeneration' from 'transformers'
等错误,请尝试从源代码安装最新版本的 transformers 库:
pip install git+https://github.com/huggingface/transformers
代码示例
from PIL import Image
from transformers import Qwen2VLForConditionalGeneration, AutoProcessor
from transformers import BitsAndBytesConfig
import torch
model_id = "Ertugrul/Qwen2-VL-7B-Captioner-Relaxed"
model = Qwen2VLForConditionalGeneration.from_pretrained(
model_id, torch_dtype=torch.bfloat16, device_map="auto"
)
processor = AutoProcessor.from_pretrained(model_id)
conversation = [
{
"role": "user",
"content": [
{
"type": "image",
},
{"type": "text", "text": "Describe this image."},
],
}
]
image = Image.open(r"PATH_TO_YOUR_IMAGE")
text_prompt = processor.apply_chat_template(conversation, add_generation_prompt=True)
inputs = processor(
text=[text_prompt], images=[image], padding=True, return_tensors="pt"
)
inputs = inputs.to("cuda")
with torch.no_grad():
with torch.autocast(device_type="cuda", dtype=torch.bfloat16):
output_ids = model.generate(**inputs, max_new_tokens=384, do_sample=True, temperature=0.7, use_cache=True, top_k=50)
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
)[0]
print(output_text)
Gradio 图形界面
如果你不想编写代码,这里有一个简单的图形界面,可用于为选定的图像生成描述。你可以在此处了解更多信息:
qwen2vl-captioner-gui
✨ 主要特性
- 增强细节:生成更全面、细致的图像描述。
- 约束放宽:与基础模型相比,提供限制更少的图像描述。
- 自然语言输出:使用自然语言描述图像中的不同对象,并指定其位置。
- 针对图像生成优化:生成与最先进的文本到图像生成模型兼容的描述。
⚠️ 重要提示
此微调模型针对创建文本到图像数据集进行了优化。因此,与原始模型相比,在其他任务上的性能(例如在 mmmu_val 上下降约 10%)可能会降低。
📄 许可证
该项目采用 Apache-2.0 许可证。
致谢
Google AI/ML 开发者计划团队通过提供 Google Cloud 信用额度支持了这项工作。
如需更多详细选项,请参考 Qwen2-VL-7B-Instruct 文档。