模型简介
模型特点
模型能力
使用案例
🚀 Asagi-4B 大规模日语视觉语言模型
本项目提供了 Asagi-4B,这是一个大规模的日语视觉语言模型(VLM)。该模型基于广泛的日语数据集进行训练,整合了多种不同来源的数据,为日语视觉语言处理提供了强大的支持。
🚀 快速开始
环境要求
transformers==4.45.1
accelerate==0.34.2
torch==2.4.0
torchvision==0.19.0
使用方法
import requests
import torch
import transformers
from PIL import Image
from transformers import AutoModel, AutoProcessor, GenerationConfig
transformers.set_seed(42)
model_path = "MIL-UT/Asagi-4B"
processor = AutoProcessor.from_pretrained(model_path)
model = AutoModel.from_pretrained(
model_path, trust_remote_code=True,
torch_dtype=torch.bfloat16,
device_map="auto"
)
generation_config = GenerationConfig(
do_sample=True,
num_beams=5,
max_new_tokens=256,
temperature=0.7,
repetition_penalty=1.5
)
prompt = ("以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。\n\n"
"### 指示:\n<image>\nこの画像を見て、次の質問に詳細かつ具体的に答えてください。この写真はどこで撮影されたものか教えてください。また、画像の内容についても詳しく説明してください。\n\n### 応答:\n")
# sample image
sample_image_url = "https://raw.githubusercontent.com/uehara-mech/uehara-mech.github.io/refs/heads/master/images/shibuya.jpg"
image = Image.open(requests.get(sample_image_url, stream=True).raw)
inputs = processor(
text=prompt, images=image, return_tensors="pt"
)
inputs_text = processor.tokenizer(prompt, return_tensors="pt")
inputs['input_ids'] = inputs_text['input_ids']
inputs['attention_mask'] = inputs_text['attention_mask']
for k, v in inputs.items():
if v.dtype == torch.float32:
inputs[k] = v.to(model.dtype)
inputs = {k: inputs[k].to(model.device) for k in inputs if k != "token_type_ids"}
generate_ids = model.generate(
**inputs,
generation_config=generation_config
)
generated_text = processor.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]
# do not print the prompt
if "<image>" in prompt:
prompt = prompt.replace("<image>", " ")
generated_text = generated_text.replace(prompt, "")
print(f"Generated text: {generated_text}")
# >>> Generated text: この写真は東京の渋谷で撮影されたものです。夜の渋谷の街並みが写っており、高層ビルが立ち並び、街灯やネオンサインが輝いています。
✨ 主要特性
本仓库提供的 Asagi-4B 大规模日语视觉语言模型具有以下特性:
- 丰富的训练数据:使用了大量的日语数据集进行训练,涵盖多种数据来源。
- 合成数据的合理使用:部分训练数据通过日语大语言模型(如 CALM3-22B-Chat)和英语视觉语言模型(如 Phi3.5-vision-instruct)合成,且未使用许可证限制输出使用的大语言模型(如 GPT - 4)。
- 多组件架构:由视觉编码器、投影器和大语言模型组成。
模型组件详情
模型组件 | 模型/架构 | 参数数量 |
---|---|---|
视觉编码器 | siglip-so400m-patch14-384 | 4.28 亿 |
投影器 | 2 层 MLP | 6400 万 |
大语言模型 | llm-jp-3-3.7b-instruct | 37 亿 |
💻 使用示例
基础用法
上述快速开始部分的代码展示了如何使用 Asagi-4B 模型对图像进行处理并生成文本描述。以下是一个简单的示例:
# 代码保持不变
import requests
import torch
import transformers
from PIL import Image
from transformers import AutoModel, AutoProcessor, GenerationConfig
transformers.set_seed(42)
model_path = "MIL-UT/Asagi-4B"
processor = AutoProcessor.from_pretrained(model_path)
model = AutoModel.from_pretrained(
model_path, trust_remote_code=True,
torch_dtype=torch.bfloat16,
device_map="auto"
)
generation_config = GenerationConfig(
do_sample=True,
num_beams=5,
max_new_tokens=256,
temperature=0.7,
repetition_penalty=1.5
)
prompt = ("以下は、タスクを説明する指示です。要求を適切に満たす応答を書きなさい。\n\n"
"### 指示:\n<image>\nこの画像を見て、次の質問に詳細かつ具体的に答えてください。この写真はどこで撮影されたものか教えてください。また、画像の内容についても詳しく説明してください。\n\n### 応答:\n")
# sample image
sample_image_url = "https://raw.githubusercontent.com/uehara-mech/uehara-mech.github.io/refs/heads/master/images/shibuya.jpg"
image = Image.open(requests.get(sample_image_url, stream=True).raw)
inputs = processor(
text=prompt, images=image, return_tensors="pt"
)
inputs_text = processor.tokenizer(prompt, return_tensors="pt")
inputs['input_ids'] = inputs_text['input_ids']
inputs['attention_mask'] = inputs_text['attention_mask']
for k, v in inputs.items():
if v.dtype == torch.float32:
inputs[k] = v.to(model.dtype)
inputs = {k: inputs[k].to(model.device) for k in inputs if k != "token_type_ids"}
generate_ids = model.generate(
**inputs,
generation_config=generation_config
)
generated_text = processor.batch_decode(
generate_ids, skip_special_tokens=True, clean_up_tokenization_spaces=False
)[0]
# do not print the prompt
if "<image>" in prompt:
prompt = prompt.replace("<image>", " ")
generated_text = generated_text.replace(prompt, "")
print(f"Generated text: {generated_text}")
高级用法
可以根据不同的需求调整 GenerationConfig
中的参数,以实现不同的生成效果,例如调整 max_new_tokens
控制生成文本的最大长度,调整 temperature
控制生成文本的随机性等。
📚 详细文档
示例展示
基础示例
提示 | 输出 |
---|---|
请详细且具体地回答以下问题。这张照片是在哪里拍摄的?请详细说明图像的内容。 | 这张照片是在东京的涩谷拍摄的。照片中展示了夜晚的涩谷街景,高楼林立,路灯和霓虹灯闪耀。 |
更多示例
点击展开
提示 | 输出 |
---|---|
请详细且具体地回答以下指示。请详细介绍这张照片的内容。 | 这张照片拍摄的是东京的彩虹桥。桥身被漆成白色,优雅地横跨在平静的水面上。背景是高楼林立的城市景观,天空湛蓝,点缀着白色的云朵。 |
提示 | 输出 |
---|---|
请详细且具体地回答以下问题。请评价这张照片。 | 这张照片拍摄的是以东京塔为背景的秋日风景。东京塔以其红白条纹图案为特色,周围是红叶树木。天空部分多云,阳光透过云层洒下,营造出美丽的对比度。前景可以看到路灯和建筑物的轮廓,感受到都市氛围。 |
提示 | 输出 |
---|---|
请详细且具体地回答以下问题。请详细介绍这张照片中的神社。 | 这张照片中的神社体现了日本传统建筑风格。白色的墙壁和鲜艳的橙色屋顶是其特色,营造出神圣的氛围。神社入口处有朱红色的鸟居,这是神道中神圣空间入口的象征性大门。鸟居前有一个小神殿,供参拜者祈祷。神殿旁边拉着绳子,暗示这是一个神圣的地方。神社位于现代建筑之间,象征着日本传统与现代文化的共存。 |
提示 | 输出 |
---|---|
请详细且具体地回答以下指示。在日本庭园中,这种庭园属于哪种类型?原因是什么? | 在日本庭园中,这种庭园属于“石庭”类型。石庭巧妙地布置自然石头,追求宁静与美丽,是日本传统庭园设计的一种。 |
提示 | 输出 |
---|---|
请详细回答以下问题。请以这张图片的场景为背景,编写一个小说的情节梗概。 | 从前,在一个小村庄里,有一条石头台阶通向村庄的中心。这条台阶对村民来说是通往神圣地方的入口,村民们会登上台阶,在神圣的地方祈祷。台阶周围是郁郁葱葱的植物,展现出与自然和谐相处的风景。村民们每次登上台阶,都表达着对自然恩赐和神圣地方的敬意。 |
训练详情
训练数据
数据集 | 预处理方式 | 阶段 1 | 阶段 2 | 数据规模 |
---|---|---|---|---|
ROIS (自有) | 合成 | ✓ | ✓ | 840 万 |
日语图像文本对 | 合成 | ✓ | ✓ | 440 万 |
维基百科 | 合成 | ✓ | ✓ | 250 万 |
Open Images | 翻译 | ✓ | ✓ | 68 万 |
DCI | 翻译 | ✓ | ✓ | 7000 |
CommonCatalog CC - BY | 翻译 | ✓ | ✓ | 350 万 |
LLaVA - Pretrain - JA | ✓ | ✓ | 55 万 | |
STAIR Captions | ✓ | ✓ | 41 万 | |
Flickr - JP | ✓ | ✓ | 16 万 | |
YJ Captions | ✓ | ✓ | 13 万 | |
日语 Pascal | ✓ | ✓ | 5000 | |
ArtBench | 合成 | ✓ | 10 万 | |
GQA | 翻译 | ✓ | 190 万 | |
VQA v2 | 翻译 | ✓ | 88 万 | |
A - OKVQA | 翻译 | ✓ | 3.4 万 | |
OK - VQA | 翻译 | ✓ | 1.8 万 | |
日语视觉基因组 | 翻译 | ✓ | 160 万 | |
PangeaInstruct | ✓ | 9.3 万 |
注:ROIS (自有) 是为该项目专门从网络爬取的新数据集,由图像和原始文本对组成,用于合成训练数据。
评估结果
使用 Heron - Bench、JA - VLM - Bench - in - the - Wild 和 JA - VG - VQA - 500 对模型进行评估,使用 eval - mm 库进行评估操作。
注:带有“†”的模型未使用 GPT 生成的数据进行训练。粗体数字表示所有模型中的最佳性能,下划线数字表示未使用 GPT 生成数据训练的模型中的最佳性能。
模型 | 语言模型规模 | Heron - Bench (LLM (%)) | JA - VLM - Bench - In - the - Wild (ROUGE - L) | JA - VLM - Bench - In - the - Wild (LLM (/5.0)) | JA - VG - VQA - 500 (ROUGE - L) | JA - VG - VQA - 500 (LLM (/5.0)) |
---|---|---|---|---|---|---|
日语 InstructBLIP Alpha† | 70 亿 | 14.0 | 20.8 | 2.42 | - | - |
日语 Stable VLM† | 70 亿 | 24.2 | 23.3 | 2.47 | - | - |
LLaVA - CALM2 - SigLIP† | 70 亿 | 43.3 | 47.2 | 3.15 | 17.4 | 3.21 |
Llama - 3 - EvoVLM - JP - v2 | 80 亿 | 39.3 | 41.4 | 2.92 | 23.5 | 2.96 |
VILA - jp | 130 亿 | 57.2 | 52.3 | 3.69 | 16.2 | 3.62 |
Asagi - 2B† | 18 亿 | 44.7 | 48.8 | 3.26 | 53.7 | 3.69 |
Asagi - 4B† | 37 亿 | 49.3 | 49.6 | 3.38 | 55.6 | 3.78 |
Asagi - 8B† | 72 亿 | 54.7 | 49.4 | 3.45 | 56.43 | 3.84 |
Asagi - 14B† | 130 亿 | 55.8 | 50.8 | 3.44 | 56.8 | 3.84 |
GPT - 4o | - | 87.6 | 37.6 | 3.85 | 12.1 | 3.58 |
🔧 技术细节
Asagi-4B 模型由视觉编码器、投影器和大语言模型三个主要部分组成。视觉编码器使用 siglip-so400m-patch14-384 对图像进行特征提取,投影器为 2 层 MLP 用于处理视觉特征,大语言模型采用 llm-jp-3-3.7b-instruct 进行文本生成。
在训练过程中,使用了多种日语和翻译后的数据集进行两阶段训练,通过合成和翻译等预处理方式,确保模型能够学习到丰富的视觉和语言信息。
📄 许可证
本模型采用 Apache - 2.0 许可证。
⚠️ 重要提示
这里发布的模型处于研究和开发的早期阶段,尚未进行调优以确保输出符合人类意图和安全考虑。
👨💻 模型卡片作者
Kohei Uehara








