概要
SB Intuitionsでは、日本語や日本の文化・慣習に強い大規模視覚言語モデル(Vision-Language Model; VLM)の開発を進めており、2025年3月に弊社の日本語大規模言語モデル(Large Language Model; LLM)のSarashina2をベースに開発したVLMであるSarashina2-Vision (8B・14B)を公開しました。
Sarashina2-Visionは、日本に関連する画像に基づいた専門的タスクの処理能力を測るベンチマークや日本語の複雑図表の理解能力を測る内製ベンチマークなど、複数の日本語ベンチマークにおいて国内最高の性能を実現しています。 この記事ではVLM学習チームがSarashina2-Visionのモデル構成と学習の詳細について紹介します。評価については別記事をご参照ください。
使い方
Sarashina2-Visionは8B・14BともにHuggingFace Hubにて、商用利用可能なライセンス(MIT)で公開しており、以下のリンクからダウンロードすることができます。
以下のようにtransformersライブラリからお試しいただけます。
import requests from PIL import Image from transformers import AutoModelForCausalLM, AutoProcessor # Define model path model_id = "sbintuitions/sarashina2-vision-8b" # Load model and processor processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True) model = AutoModelForCausalLM.from_pretrained( model_id, device_map="cuda", torch_dtype="auto", trust_remote_code=True, ) message = [{"role": "user", "content": "この写真に写っているもので、最も有名と考えられる建築物は何でどこに写っていますか?"}] text_prompt = processor.apply_chat_template(message, add_generation_prompt=True) sample_image_url = "https://huggingface.co/sbintuitions/sarashina2-vision-8b/resolve/main/sample.jpg" image = Image.open(requests.get(sample_image_url, stream=True).raw).convert("RGB") inputs = processor( text=[text_prompt], images=[image], padding=True, return_tensors="pt", ) inputs = inputs.to("cuda") stopping_criteria = processor.get_stopping_criteria(["\n###"]) # Inference: Generation of the output output_ids = model.generate( **inputs, max_new_tokens=128, temperature=0.0, do_sample=False, stopping_criteria=stopping_criteria, ) generated_ids = [ output_ids[len(input_ids) :] for input_ids, output_ids in zip(inputs.input_ids, output_ids) ] output_text = processor.batch_decode( generated_ids, skip_special_tokens=True, clean_up_tokenization_spaces=True ) print(output_text[0]) """この写真に写っているもので、最も有名と考えられる建築物は東京タワーです。東京タワーは、東京のランドマークであり、この写真では、ビル群の向こうに写っています。"""
質問: この写真に写っているもので、最も有名と考えられる建築物は何でどこに写っていますか?
回答: この写真に写っているもので、最も有名と考えられる建築物は東京タワーです。東京タワーは、東京のランドマークであり、この写真では、ビル群の向こうに写っています。
質問: 真ん中に映っている赤と白の物は何ですか?
回答: 真ん中に映っている赤と白のものはクレーンです。
Sarashina2-Visionのモデル構成
VLMは一般的に次の3つの要素から構成されています。
- 画像エンコーダ:画像から特徴量を抽出
- プロジェクター:画像エンコーダとLLMを接続し、画像特徴量をテキストトークンとして扱えるように変換
- LLM:受け取ったテキスト・画像トークンの理解と回答生成
Sarashina2-Visionも上記の要素から構成されており、LLMにはSarashina2を使い、画像エンコーダとしてQwen2-VLのViT、プロジェクターには2層のMLPを採用しました。Qwen2-VLのViTは元画像の解像度やアスペクト比を可能な限り維持して情報の損失を最小限に抑えられるNaive Dynamic Resolutionという戦略をとっていることが採用の大きな理由です。
各コンポーネントのパラメータ数は以下の通りです。
コンポーネント | Sarashina2-Vision-8B | Sarashina2-Vision-14B |
---|---|---|
画像エンコーダ | 631M | 631M |
プロジェクター | 47M | 53M |
LLM | 7.3B | 13.7B |
学習開始時にプロジェクター以外はSarashina2-7BまたはSarashina2-13BとQwen2-VL-7Bから初期化しています。
画像エンコーダは他にも以下のモデルの利用を検討しました。ここではそれらのモデルの特徴と、検討の過程で得られたそれぞれのモデルの強みと問題についての知見をご紹介させていただきます。
CLIP
CLIPはLLaVAをはじめとした多くのVLMで利用されているモデルであり、大規模なテキスト画像データセットを用いて対照学習されていることから画像エンコーダによる画像の埋め込みが持つ意味の粒度はすでにテキストの意味の粒度とアラインされていることが期待されます。
しかしながら、CLIPの画像エンコーダはVision Transformer(ViT)が使われているものが多く、入力可能な画像サイズが224x224や336x336等と比較的小さく、小さな文字を認識することができないという問題点があります。 この問題に対しLLaVA-NeXTで用いられたDynamic High Resolutionによる解決を試みましたが、期待ほどの結果を得ることができませんでした。
ConvNeXt
ConvNeXTは畳み込みベースのモデルであり、ViTと異なり位置埋め込み等がないため入力の解像度に対する陽な制約がありません。 ConvNeXTを利用したVLMとしてConvLLaVAがあり、ViTを用いた構造に比べ高解像度の画像を扱うことができることが特徴で、結果として解像度が重要となる文書理解などのベンチマークで大きな性能向上が見られています。
実際に試してみるとCLIPと比較して文字認識に関するタスクに対して性能向上が確認できた一方、画像全体を理解する必要があるタスクでの性能が劣化することがわかりました。
各学習段階における訓練データ
Sarashina2-Visionの訓練は、以下の3つのステージに分けて行われ、それぞれ異なるデータセットを用いて実施されています。学習には独自にクローリングをして収集したデータなどは使用せず、全て商用利用可能かつ継承の義務のないライセンスで配布されているもの、またはSarashinaなどで自動合成したデータセットを用いました。
Stage 1 : Projector Warmup
VLMは、言語データのみで訓練されたLLMと画像エンコーダを組み合わせたモデルです。一般にそれぞれのコンポーネントは異なるモデルとして異なるデータセットで事前訓練されているため、初期状態では埋め込み空間も異なるものになっています。この画像埋め込み空間と、LLMが扱うテキストの埋め込み空間のギャップを埋めた状態で後続のチューニングを行うために、最初のステージではプロジェクターの学習のみを行います。
本ステージでは、LLaVAの事前学習(Pretrain)でも用いられたオープンなキャプションデータセットの LLaVA-Pretrainデータセットを使用しました。
Stage 2: Vision Encoder Pretraining
このステージでは、主に画像エンコーダとプロジェクターの学習を行います。 訓練開始時点で画像エンコーダはすでに事前訓練されていますが、日本語の文字を含む文書画像や、日本特有の風景、日本語の文字が含まれる画像などに対しては十分な学習がされていない可能性があります。
そのため、このステージでは一般的な画像・キャプションのデータに加えて、日本特有の画像や内製のOCRデータセットを多く活用し、訓練を行いました。 特に日本語文字を含む文書画像を適切にエンコードできるようにするため、OCRデータセットを内製し、これを用いてOCR能力を重点的に学習させました。
このステージで使用するデータセットは、主に単純なキャプショニングやOCRといったタスクを含み、VLMの基礎的な視覚処理能力や言語との対応づけを向上させることを目的とした事前訓練向けのものです。回答文の文体や表現の質を向上させるような学習にフォーカスをしていないため、このステージではLLMの学習は行わず、画像エンコーダとプロジェクターのみ訓練しました。 Stage2では以下を主とするデータセットで訓練を行いました。
- CC3M
- CC12M
- llm-jp-japanese-image-text-pairs
- 内製OCRデータセット
- 内製図表キャプション合成データセット
Stage 3: Visual Instruction Tuning
最終ステージではVLMがより適切な日本語で応答できるよう、視覚情報の理解だけでなく言語出力のチューニングに重点を置いて訓練を行いました。 このステージでは、画像エンコーダのパラメータを固定し、LLMとプロジェクターの学習を行いました。
指示応答能力を高めるために、自然画像やチャート・ドキュメント画像といったドメインにおけるVQAデータセットを用いて学習を進めました。図表などについてはオープンソースの高品質なアノテーションがされたデータセットが少ないため、Sarashinaを用いた合成データを活用して訓練しました。具体的な合成方法や合成されたデータのサンプル例については後ほど詳しくご紹介します。
Stage3では以下を主とするデータセットで訓練を行いました。
- Japanese Visual Genome VQA dataset
- OCR-VQA
- TextVQA
- PlotQA
- CLEVR (翻訳)
- DOCCI(翻訳)
- 内製OCRデータセット
- 内製General VQAデータセット
- 内製図表VQAデータセット
- 内製日本語テキストインストラクションデータセット
ステージごとの学習トークン数
最終的にそれぞれのステージで訓練に使用したトークン数は以下になります(トークン数は画像トークンも含んだ数字になっています)。
Training Stage | 日本語データ | 英語データ |
---|---|---|
Stage 1 | 0 | 78M |
Stage 2 | 3.8B | 7.7B |
Stage 3 | 2.5B | 1.0B |
高品質な日本語での画像指示チューニングデータセットの合成
VLMのチューニングにおいて、高品質な画像指示チューニング(Visual Instruction Tuning)データセットは不可欠です。しかし、現実には以下の理由により、大規模で高品質な日本語の画像指示チューニングデータセットを確保するのは難しいのが現状です。
- アノテーションコストの高さ:公開されている高品質な日本語の画像指示チューニングデータセットは少なく、人手によるデータ作成はコストが高いため大量のデータの用意が困難
- ライセンスの制約: Web上にはOpenAI社のChatGPTやGoogle社のGeminiなど強力なモデルで作成されたデータセットが公開されているが、それらはライセンスの制限により自由に使うことができない
この課題に対応するため、弊チームでは合成データセットを活用することで日本語の画像指示チューニングデータセットの不足を補いました。 合成データを活用することで以下で説明するメリットがあり、VLMの性能を安定的に向上させられると考えられます。
① 一定の品質のデータを大量に作成できる
人手によるアノテーションはアノテーターの表現や詳細度の違いにより、品質にばらつきが生じやすいという課題があります。LLMを活用する場合、統一された文体と情報の粒度を持つデータを大量に自動生成することが可能になります。
Sarashina2-Visionでは、自然な日本語でのVQA能力の向上のために、以下のような日本語の画像指示チューニングデータセットを作成し訓練に用いました。 これらのデータセットは、LLaVAで使われた合成手法に基づき、MSCOCOなどオープンなライセンスの画像とそのキャプションデータから、Sarashinaを用いて新しいQAペアを生成しています。
画像に関する合成した質問と回答の例
質問:この画像から、象と人間の関係をどのように解釈できますか?
回答:この画像では、人間と象が協力して移動している様子がうかがえます。象は人間を乗せて森の中を移動しており、人間は象の背中に乗っています。これは、象と人間が互いに信頼関係を築き、共存している関係を示唆しています。象は人間の移動手段として利用されており、人間は象の力を借りて森の奥深くまで移動しています。この関係は、象と人間が互いに利益をもたらすパートナーシップを築いていることを示しています。
② 目的に応じたタスク特化のデータを作成できる
特定のタスクに特化したデータセットを作成することで、モデルの弱点を効率的に補強したり、狙った分野の能力を集中的に向上させることができます。例えば、Sarashina2-Visionの初期モデルでは、チャートや図表の読み取りに課題があることが判明しました。具体的には、以下のような問題が確認されました。
- 図表画像内のオブジェクトの位置関係を認識できない
- フローチャートの矢印の向きや関係性を適切に把握できない
このようなモデルの弱点を補強するため、Sarashinaを活用して以下のような図表・チャートVQAデータセットを合成しました。具体的には、mermaid記法のフローチャートのコードや表の元データをSarashinaで生成させた上でレンダリングを行うことで画像を生成し、コードや表の元データをSarashinaに入力することでQAを生成しました。
合成したフローチャートデータセットの例
質問:あなたが見ているフローチャートについて詳しく説明してください。
回答:このフローチャートは、花を購入する際のプロセスを表しています。まず、花屋を探すところから始まります。次に、オンラインか実店舗かによってプロセスが分かれます。オンラインの場合は、オンライン花屋サイトにアクセスし、花の種類を選びます。その後、花束のデザインを選び、配送先と日時指定をします。注文を確定すると、花が配送されます。実店舗の場合は、花屋に行き、花の種類を選びます。その後、花束のデザインを依頼し、花束を受け取ります。どちらの場合も、美しい花束を手に入れることができます。
これらの手法で生成された品質が均一な画像指示チューニングデータセットを用いて、最終的なVLMの多様な画像・プロンプトに対する指示追従能力の強化と言語出力のチューニングを行い、性能の向上を実現しました。
終わりに
本記事ではSarashina2-Visionのモデル構成と学習について紹介しました。各モデルは商用利用も可能なライセンス(MIT)で公開していますので、ぜひVLMの研究開発にご利用いただければと思います。
プロジェクトメンバー
- 鈴木哲平: 学習コードの実装・内製ベンチマークの構築・プロジェクトリード
- 品川政太朗: VLMの評価基盤の構築・内製ベンチマークの構築・評価を実施
- 小澤圭右: VLMの評価基盤の構築・評価を実施
- 田中稔之: VLMの事前学習・学習コードの実装・学習データの合成を実施
- 髙田拓実: 事後学習におけるデータセットの検証とVLMの訓練を実施
- 臼井久生: 学習データの作成・整形を実施
- 大島遼祐: VLMの評価基盤の構築・評価を実施
- 今井悠人: VLMの評価基盤の構築・評価を実施