🚀 Japanese Stable VLM
Japanese Stable VLMは、入力画像や質問などの入力テキストに対して日本語の説明を生成できるビジョン言語モデルです。商用利用に関する詳細は、指定のサイトを参照してください。
🚀 クイックスタート
このモデルの商用利用については、https://stability.ai/license を参照してください。
商用利用に関する日本語での問い合わせは partners-jp@stability.ai までお願い致します。
✨ 主な機能
Japanese Stable VLMは、ビジョン言語の指示に従い、入力画像と任意の入力テキスト(質問など)に対して日本語の説明を生成することができます。
📦 インストール
このセクションでは、必要なライブラリのインポート方法を説明します。
import torch
from transformers import AutoTokenizer, AutoModelForVision2Seq, AutoImageProcessor
from PIL import Image
import requests
💻 使用例
基本的な使用法
以下のコードは、画像のキャプションを生成する基本的な使用例です。
TASK2INSTRUCTION = {
"caption": "画像を詳細に述べてください。",
"tag": "与えられた単語を使って、画像を詳細に述べてください。",
"vqa": "与えられた画像を下に、質問に答えてください。",
}
def build_prompt(task="caption", input=None, sep="\n\n### "):
assert (
task in TASK2INSTRUCTION
), f"Please choose from {list(TASK2INSTRUCTION.keys())}"
if task in ["tag", "vqa"]:
assert input is not None, "Please fill in `input`!"
if task == "tag" and isinstance(input, list):
input = "、".join(input)
else:
assert input is None, f"`{task}` mode doesn't support to input questions"
sys_msg = "以下は、タスクを説明する指示と、文脈のある入力の組み合わせです。要求を適切に満たす応答を書きなさい。"
p = sys_msg
roles = ["指示", "応答"]
instruction = TASK2INSTRUCTION[task]
msgs = [": \n" + instruction, ": \n"]
if input:
roles.insert(1, "入力")
msgs.insert(1, ": \n" + input)
for role, msg in zip(roles, msgs):
p += sep + role + msg
return p
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForVision2Seq.from_pretrained("stabilityai/japanese-stable-vlm", trust_remote_code=True)
processor = AutoImageProcessor.from_pretrained("stabilityai/japanese-stable-vlm")
tokenizer = AutoTokenizer.from_pretrained("stabilityai/japanese-stable-vlm")
model.to(device)
url = "https://images.unsplash.com/photo-1582538885592-e70a5d7ab3d3?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1770&q=80"
image = Image.open(requests.get(url, stream=True).raw).convert("RGB")
prompt = build_prompt(task="caption")
inputs = processor(images=image, return_tensors="pt")
text_encoding = tokenizer(prompt, add_special_tokens=False, return_tensors="pt")
inputs.update(text_encoding)
outputs = model.generate(
**inputs.to(device, dtype=model.dtype),
do_sample=False,
num_beams=5,
max_new_tokens=128,
min_length=1,
repetition_penalty=1.5,
)
generated_text = tokenizer.batch_decode(outputs, skip_special_tokens=True)[0].strip()
print(generated_text)
📚 ドキュメント
モデルの詳細
学習について
このモデルは、LLaVA 1.5アーキテクチャを持つビジョン言語指示従順モデルです。言語モデルとしてstabilityai/japanese-stablelm-instruct-gamma-7bを、画像エンコーダとしてopenai/clip-vit-large-patch14を使用しています。学習時には、最初の段階でMLP投影をゼロから学習し、2段階目で言語モデルとMLP投影をさらに学習しました。
学習データセット
学習データセットには、以下の公開データセットが含まれています。
利用目的
このモデルは、オープンソースコミュニティによるビジョン言語アプリケーションでの利用を目的としています。
制限事項とバイアス
学習データセットには、データフィルターを適用したにもかかわらず、不快な内容や不適切な内容が含まれている可能性があります。ユーザーは、これらのモデルを本番システムで使用する際には、適切な注意を払うことをお勧めします。個人やグループに危害や苦痛を与える可能性のあるアプリケーションでは、このモデルを使用しないでください。
引用方法
@misc{JapaneseStableVLM,
url = {[https://huggingface.co/stabilityai/japanese-stable-vlm](https://huggingface.co/stabilityai/japanese-stable-vlm)},
title = {Japanese Stable VLM},
author = {Shing, Makoto and Akiba, Takuya}
}
お問い合わせ
- モデルに関する質問やコメントは、Stable Community Japanに参加してください。
- Stability AIのモデル、研究、イベントに関する将来の発表や情報については、https://twitter.com/StabilityAI_JP をフォローしてください。
- ビジネスや協業に関するお問い合わせは、partners-jp@stability.ai または sales-jp@stability.aiにご連絡ください。