模型概述
模型特點
模型能力
使用案例
🚀 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。








