🚀 HelpingAI-Vision
HelpingAI-Visionは、画像とテキストを入力としてテキストを出力するモデルです。このモデルは、画像の理解を向上させるための新しいアプローチを採用しており、シーン理解能力の向上を目指しています。
📚 ドキュメント
モデルの詳細
HelpingAI-Visionの基本的な考え方は、画像全体に対してN個のビジュアルトークン埋め込みを生成するのではなく、画像のN個の部分ごとに1つのトークン埋め込みを生成することです。このアプローチは、HelpingAI-Liteをベースに、LLaVAアダプターを組み込んでおり、より詳細な情報を捉えることでシーン理解能力を向上させることを目指しています。
画像の各クロップに対して、完全なSigLIPエンコーダを使用して埋め込み(サイズ[1, 1152])が生成されます。その後、すべてのN個の埋め込みはLLaVAアダプターを通じて処理され、サイズ[N, 2560]のトークン埋め込みが得られます。現在、これらのトークンには元の画像内の位置に関する明示的な情報が含まれていませんが、後のアップデートで位置情報を組み込む予定です。
HelpingAI-Visionは、MC-LLaVA-3bからファインチューニングされたモデルです。
このモデルはChatMLプロンプト形式を採用しており、チャットベースのシナリオでの使用が想定されています。特定の質問や詳細情報が必要な場合は、自由にお問い合わせください。
<|im_start|>system
You are Vortex, a helpful AI assistant.<|im_end|>
<|im_start|>user
{prompt}<|im_end|>
<|im_start|>assistant
📦 インストール
依存関係のインストール
!pip install -q open_clip_torch timm einops
モデリングファイルのダウンロード
from huggingface_hub import hf_hub_download
hf_hub_download(repo_id="OEvortex/HelpingAI-Vision", filename="configuration_llava.py", local_dir="./", force_download=True)
hf_hub_download(repo_id="OEvortex/HelpingAI-Vision", filename="configuration_phi.py", local_dir="./", force_download=True)
hf_hub_download(repo_id="OEvortex/HelpingAI-Vision", filename="modeling_llava.py", local_dir="./", force_download=True)
hf_hub_download(repo_id="OEvortex/HelpingAI-Vision", filename="modeling_phi.py", local_dir="./", force_download=True)
hf_hub_download(repo_id="OEvortex/HelpingAI-Vision", filename="processing_llava.py", local_dir="./", force_download=True)
💻 使用例
基本的な使用法
from modeling_llava import LlavaForConditionalGeneration
import torch
model = LlavaForConditionalGeneration.from_pretrained("OEvortex/HelpingAI-Vision", torch_dtype=torch.float16)
model = model.to("cuda")
from transformers import AutoTokenizer
from processing_llava import LlavaProcessor, OpenCLIPImageProcessor
tokenizer = AutoTokenizer.from_pretrained("OEvortex/HelpingAI-Vision")
image_processor = OpenCLIPImageProcessor(model.config.preprocess_config)
processor = LlavaProcessor(image_processor, tokenizer)
from PIL import Image
import requests
image_file = "https://images.unsplash.com/photo-1439246854758-f686a415d9da"
raw_image = Image.open(requests.get(image_file, stream=True).raw)
prompt = """<|im_start|>system
A chat between a curious human and an artificial intelligence assistant.
The assistant gives helpful, detailed, and polite answers to the human's questions.
The assistant does not hallucinate and pays very close attention to the details.<|im_end|>
<|im_start|>user
<image>
Describe the image.<|im_end|>
<|im_start|>assistant
"""
with torch.inference_mode():
inputs = processor(prompt, raw_image, model, return_tensors='pt')
inputs['input_ids'] = inputs['input_ids'].to(model.device)
inputs['attention_mask'] = inputs['attention_mask'].to(model.device)
from transformers import TextStreamer
streamer = TextStreamer(tokenizer)
%%time
with torch.inference_mode():
output = model.generate(**inputs, max_new_tokens=200, do_sample=True, top_p=0.9, temperature=1.2, eos_token_id=tokenizer.eos_token_id, streamer=streamer)
print(tokenizer.decode(output[0]).replace(prompt, "").replace("<|im_end|>", ""))
📄 ライセンス
このモデルは、hsulライセンスの下で提供されています。