模型简介
模型特点
模型能力
使用案例
🚀 TraVisionLM - 快速且原生的土耳其语视觉语言模型
TraVisionLM 是一款快速且轻量级(仅 8.75 亿参数)的视觉语言模型。它能根据输入的图像和土耳其语指令,生成土耳其语回复。该模型与 Transformers 库兼容,易于加载、微调,无需外部库即可实现快速推理。

你可以在此处体验该模型:TRaVisionLM-Demo
✨ 主要特性
- 快速轻量:仅 8.75 亿参数,响应速度快。
- 语言支持:支持土耳其语,能根据图像和土耳其语指令生成回复。
- 兼容性强:与 Transformers 库兼容,易于加载、微调与推理。
📦 安装指南
在 Transformers 中,你可以按以下方式加载模型并进行推理:
重要提示:TraVisionLM 模型尚未原生集成到 Transformers 库中。因此,在加载模型时,你需要设置 trust_remote_code=True
。这将从仓库下载 configuration_travisionlm.py
、modeling_travisionlm.py
和 processing_travisionlm.py
文件。如果你对恶意代码有任何担忧,可以在 Files and Versions 标签下查看这些文件的内容,并固定特定版本。
from transformers import AutoModelForCausalLM, AutoProcessor
import torch
import requests
from PIL import Image
model = AutoModelForCausalLM.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True, device_map="cuda")
# 你也可以以 bfloat16 或 float16 格式加载模型
# model = AutoModelForCausalLM.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True, torch_dtype=torch.bfloat16, device_map="cuda")
processor = AutoProcessor.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True)
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
prompt = "Açıkla" # 简短描述
# prompt = "Detaylı açıkla" # 详细描述
# prompt = "Araba ne renktir?" # 视觉问答
# prompt = "Resmin odak noktası nedir?" # 视觉问答
# prompt = "Araba nerede duruyor?" # 视觉问答
inputs = processor(text=prompt, images=image, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=512, do_sample=True, temperature=0.6, top_p=0.9, top_k=50, repetition_penalty=1.2)
output_text = processor.batch_decode(outputs, skip_special_tokens=True)[0]
print("模型回复: ", output_text)
你也可以按以下方式进行批量推理(确保所有图像都关联了提示文本):
from transformers import AutoModelForCausalLM, AutoProcessor
import torch
import requests
from PIL import Image
model = AutoModelForCausalLM.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True, device_map="cuda")
# 你也可以以 bfloat16 或 float16 格式加载模型
# model = AutoModelForCausalLM.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True, torch_dtype=torch.bfloat16, device_map="cuda")
processor = AutoProcessor.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True)
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
prompt_list = [
'Açıkla',
'Detaylı açıkla',
'Araba nerede duruyor?',
'Arabanın rengi nedir?',
]
inputs = processor(text=prompt_list, images=len(prompt_list)*[image], padding="longest", return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=512, do_sample=True, temperature=0.6, top_p=0.9, top_k=50, repetition_penalty=1.2)
output_text_list = processor.batch_decode(outputs, skip_special_tokens=True)
for output_text in output_text_list:
print(f"模型回复: {output_text}\n\n\n")
输出示例如下:
"""
模型回复: Açıkla
Bir binanın önünde, sokakta park halindeki mavi bir Volkswagen Beetle.
模型回复: Detaylı açıkla
Bu görüntüde, bir taş döşeli sokakta park edilmiş yeşil ve mavi bir Volkswagen Beetle bulunmaktadır. Arka planda iki sarı bina vardır. Araba kameraya doğru bakmaktadır. Görüntü net odaklanmıştır ve renkler canlıdır. Görsel tarzı gerçekçidir.
模型回复: Araba nerede duruyor?
Araba, sarı bir binanın yanında sokakta park edilmiş.
模型回复: Arabanın rengi nedir?
Araba turkuaz veya limon yeşili renktedir.
"""
💻 使用示例
基础用法
from transformers import AutoModelForCausalLM, AutoProcessor
import torch
import requests
from PIL import Image
model = AutoModelForCausalLM.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True, device_map="cuda")
processor = AutoProcessor.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True)
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
prompt = "Açıkla"
inputs = processor(text=prompt, images=image, return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=512, do_sample=True, temperature=0.6, top_p=0.9, top_k=50, repetition_penalty=1.2)
output_text = processor.batch_decode(outputs, skip_special_tokens=True)[0]
print("模型回复: ", output_text)
高级用法
# 批量推理示例
from transformers import AutoModelForCausalLM, AutoProcessor
import torch
import requests
from PIL import Image
model = AutoModelForCausalLM.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True, device_map="cuda")
processor = AutoProcessor.from_pretrained('ucsahin/TraVisionLM-base', trust_remote_code=True)
url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/transformers/tasks/car.jpg"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
prompt_list = [
'Açıkla',
'Detaylı açıkla',
'Araba nerede duruyor?',
'Arabanın rengi nedir?',
]
inputs = processor(text=prompt_list, images=len(prompt_list)*[image], padding="longest", return_tensors="pt").to("cuda")
outputs = model.generate(**inputs, max_new_tokens=512, do_sample=True, temperature=0.6, top_p=0.9, top_k=50, repetition_penalty=1.2)
output_text_list = processor.batch_decode(outputs, skip_special_tokens=True)
for output_text in output_text_list:
print(f"模型回复: {output_text}\n\n\n")
📚 详细文档
模型详情
该模型是一个多模态大语言模型,它结合了 SigLIP 作为视觉编码器和 GPT2-large 作为语言模型。视觉投影器将这两种模态连接在一起。其架构与 PaliGemma 非常相似,但在视觉投影器和因果语言建模方面进行了一些优化调整。
开发过程总结如下:
- 单模态预训练:此阶段,不从头开始预训练两种模态,而是使用 google/siglip-base-patch16-256-multilingual 模型的视觉编码器和 ytu-ce-cosmos/turkish-gpt2-large 模型的语言编码器。
- 特征对齐:遵循 LLaVA 训练方法,仅使用 50 万个图像 - 文本对训练视觉投影器,使视觉和文本特征对齐。
- 任务特定训练:在此步骤中,对齐后的模型针对短描述、详细描述和简单视觉问答等任务进行了更多训练,使用了超过 100 万个图像 - 请求 - 完成三元组的数据集。
- 下游任务微调:最后,为了展示模型在各种任务中的多功能性,对其进行了目标检测的微调。你可以在 ucsahin/TraVisionLM-Object-Detection-ft 查看目标检测微调后的模型详情。
模型描述
- 开发者:ucsahin
- 模型类型:图像 - 文本到文本
- 语言(NLP):土耳其语
- 许可证:Apache 许可证 2.0
使用场景
直接使用
- 短描述:你可以给模型下达如
"Açıkla", "Kısaca açıkla", "Görseli özetle", "Çok kısa özetle"
等任务指令,模型将生成你提供图像的简短描述。需要注意的是,该模型在这项任务中产生幻觉的可能性较小,你可以尝试调整生成参数以获得最符合需求的答案。 - 详细描述:下达
"Detaylı açıkla", "Çok detaylı açıkla", "Görseli detaylı anlat", "Görseli çok detaylı anlat"
等指令,模型将生成图像的详细描述。不过,模型在这项任务中容易产生幻觉,可能会提供图像中不存在的细节和信息,你可以调整生成参数。 - 视觉问答:提出
"Resmin odağında ne var?", "Görselde adam ne yapıyor?", "Kaç zürafa var?", "Görselle ilgili ne söylenir?", "Görseldeki *obje* ne renk?"
等开放性问题,模型将生成相应回答。同样,该任务中模型也容易产生幻觉,你可以调整生成参数。
下游使用
- 视频 - 文本到文本:模型可适应与视频相关的问答任务,无需更改架构,通过采样视频帧并让模型为每一帧生成答案。
- 图像/文本检索:可直接用于基于文本的最相关图像检索任务。
- 微调:对于支持该模型架构的视觉分类等其他任务,可使用 Transformers 库对模型进行微调。示例可查看 ucsahin/TraVisionLM-Object-Detection-ft。
不适用场景
- 多轮复杂聊天:尽管模型能回答与图像相关的简单问题,但不适合多轮复杂聊天场景,它不会保留过往信息,也不会将之前的问题作为上下文。不过,你可以通过准备相应的聊天模板来训练模型完成此任务。
- 多图像输入:模型不接受多个图像输入,例如不适合回答比较两个不同图像的问题。若要添加此功能,需要修改架构。对于此类模型,可查看 HuggingFaceM4/idefics2-8b(仅英文)。
- 字符和文本识别(OCR)、分割和多目标检测:模型未针对这些任务进行训练。若要在这些任务中达到可接受的性能,可使用 google/paligemma-3b-pt-224 和 microsoft/Florence-2-large 等视觉语言模型。
友好提醒
如果你计划使用此模型,感谢你的关注。开发该模型是为了展示利用 Hugging Face 生态系统中的开源工具,能够以像土耳其语这样的低资源语言创建自己的多模态基于 Transformer 的模型。若没有这样支持开源研究和社区的平台,这项任务几乎不可能完成,所以在此表示衷心感谢。
需要说明的是,该模型不如谷歌、微软或 Meta AI 等公司开发的 VLM 模型强大。开发过程中,在获取高质量、多样化的多模态土耳其语数据和计算资源方面都受到限制,主要依赖 Colab 和 Runpod 等云 GPU 提供商。
为何创建土耳其语视觉语言模型?
- 像土耳其语这样的低资源语言的大单模态语言模型的发展速度远快于其多模态对应模型。对于土耳其语,有一个文本模型排行榜 Turkish LLM-Leaderboard,但多模态模型没有类似的排行榜。
- 在 Hugging Face 上,没有主要用于土耳其语的 图像 - 文本到文本 模型。
- 使用 TraVisionLM 时,你会发现它会犯很多错误并产生幻觉。但当你用土耳其语向大公司的 VLM 模型提问时,答案往往也会让你失望。这些模型大多在英语数据上训练,虽然是多语言的,但在对齐后,除英语外的其他语言的性能会显著下降。
希望该模型能为开源土耳其语社区做出有价值的贡献,欢迎提供反馈。
其他开源土耳其语 VLM 模型
在此提及一些之前了解到的该领域的相关工作,若有遗漏,欢迎告知补充。
- 99eren99/Turkish-BakLLaVa1.5-Mistral:这是一个在 LLaVA 训练框架下开发的土耳其语视觉语言模型。
- 使用 Trendyol Mistral v1.0 Chat 作为语言模型。
- 与 TraVisionLM 模型相比,参数多 8 - 10 倍。
- 与 Transformers 库在模型加载和生成回复方面不直接兼容。
- 后续有时间可对两个模型在相似任务上的性能进行比较。
🔧 技术细节
训练数据
计划发布模型训练期间使用的多模态土耳其语数据,但当前格式的数据尚未准备好发布。在此之前,为了提供有关数据集的一些细节并为开源社区做出贡献,将在 ucsahin/Turkish-VLM-Mix-Benchmark 发布数据集的评估部分。该数据集主要由知名多模态数据集从英语翻译成土耳其语的版本组成,未来将分享更多相关信息。
训练过程
特征对齐和任务特定训练阶段分别使用了以下训练超参数:
-
特征对齐 | 数据规模 | 全局批量大小 | 学习率 | 轮数 | 最大长度 | 权重衰减 | |--------------|-------------------|---------------|--------|------------|--------------| | 500K | 128 | 1e-3 | 1 | 1024 | 0 |
-
任务特定训练 | 数据规模 | 全局批量大小 | 学习率 | 轮数 | 最大长度 | 权重衰减 | |--------------|-------------------|---------------|--------|------------|--------------| | 1100K | 128 | 2e-5 | 3 | 1024 | 0 |
评估
在获得 ucsahin/Turkish-VLM-Mix-Benchmark 的评估结果后,将更新此部分内容。
测试数据、因素和指标
后续将提供更多相关信息。
计算基础设施
特征对齐和任务特定训练阶段分别使用了以下计算资源:
- 特征对齐:1 个 A100(40GB),约需 4 个 GPU 小时。
- 任务特定训练:1 个 H100(80GB),约需 18 个 GPU 小时。
📄 许可证
TraVisionLM 采用 Apache 2.0 许可证发布。经过充分研究,该许可证应符合开发过程中使用的数据集以及单模态视觉和语言模型的要求。
然而,如果收到任何相反的通知,将及时更新许可信息。
如果你在研究、工作或个人项目中使用 TraVisionLM 模型,请引用此仓库。
最后,如果该工作达到成熟状态,可能会计划在学术环境中发表。届时,将在此处提供适当的引用信息,以便未来的工作能够正确引用。
模型卡片联系信息
如果你对模型有疑问或建议,建议直接通过 Hugging Face(例如,创建一个 issue)与我联系。如果你有特定的想法或未来项目的合作意向,请发送邮件至 sahin.umitcan@gmail.com。








