【PaliGemma】画像を理解できるGoogleのオープン言語モデル

PaliGemma 画像 理解できる Google オープン言語モデル

WEELメディア事業部LLMライターのゆうやです。

2024年5月15日、Googleから新しいビジョン言語モデル(VLM)の「PaliGemma」が公開されました!

このモデルは、GoogleのVLMであるPaLI-3から着想を得ており、SigLIP-So400mを画像エンコーダとして、Gemma-2Bをテキストエンコーダ統合した、軽量で汎用性の高いVLMです。

最大の特徴は、画像とテキスト両方の入力を理解できるマルチモーダル機能を備えていることで、幅広いタスクに対応できます。

例えば、入力画像を認識して、画像の説明文を出力する「画像キャプション生成」、画像に基づいた質問に対して、適切な回答を生成する「視覚質問応答(VQA)」などのタスクを行えます。

今回は、PaliGemmaの概要と使ってみた感想をお伝えします。

是非最後までご覧ください!

目次

PaliGemmaの概要

PaliGemmaは、Googleが開発したビジョン言語モデルで、画像とテキスト両方の入力を理解できるマルチモーダル機能を備えています。

主要な構成要素は、画像エンコーダー「SigLIP」とテキストデコーダー「Gemma-2B」で、Googleが以前開発したPaLI-3から着想を得ています。

引用元:https://huggingface.co/blog/paligemma

多様なタスクに対応し、画像キャプション生成、視覚質問応答、物体検出、セグメンテーション、文書理解などが可能です。

対応しているタスクの具体的な内容です。

  • 画像キャプション生成:
    • 画像の内容を自然言語で説明するキャプションを生成します。
  • 視覚質問応答(VQA):
    • 画像に基づいた質問に対して、適切な回答を生成します。
  • 物体検出:
    • 画像内の物体を特定し、それらを識別します。
  • セグメンテーション:
    • 画像内の特定の領域を識別し、セグメント化します。
  • 文書理解:
    • 画像内のテキストを認識し、その内容を理解します。

また、PaliGemmaは以下の3種類のモデルタイプが公開されています。

  • PTモデル: 事前学習済みモデル
  • Mixモデル: 複数タスクに対応
  • FTモデル: 特定タスクに特化

このモデルは、以下のような画期的な学習プロセスにより視覚と言語の統合能力を高めており、多様なタスクに活用できるようになっています。

  • 事前学習(PTモデル):
    • 大規模な画像とテキストのペアを使用し、コントラスト学習によって視覚と言語の統合モデルを構築。
    • SigLIP-So400mを画像エンコーダー、Gemma-2Bをテキストデコーダーとして使用。
  • マルチタスク学習(Mixモデル):
    • 複数のタスクに対応するように微調整。
    • 一般的な推論に適しており、自由なテキストプロンプトに対応。
  • タスク特化型ファインチューニング(FTモデル):
    • 特定の学術ベンチマークに最適化。
    • 各タスクに対して専用の微調整を実施。

ここからは、PaliGemmaの使い方を解説し、実際に使用してみます。

なお、Googleの表情を自由に編集できるGoogleのアバター生成AIであるVLOGGERについて知りたい方はこちらの記事をご覧ください。

PaliGemmaのライセンス

PaliGemmaは、Google独自のGemma利用規約のもとで提供されており、配布や商用利用も可能になっています。

利用用途可否
商用利用⭕️
改変⭕️
配布⭕️
特許使用
私的使用⭕️
参考:https://ai.google.dev/gemma/terms

PaliGemmaの使い方

PaliGemmaの使用方法はいくつかありますが、ここではTransformersを使用した方法と、オンラインデモの使い方を解説します。

Transformersの使用

まずは、以下のコードを実行してモデルのロードを行います。

from transformers import AutoProcessor, PaliGemmaForConditionalGeneration

model_id = "google/paligemma-3b-mix-224"
model = PaliGemmaForConditionalGeneration.from_pretrained(model_id)
processor = AutoProcessor.from_pretrained(model_id)

次に、以下のコードを実行して入力の前処理と推論を実行します。

prompt = "What is on the flower?"
image_file = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/bee.jpg?download=true"
raw_image = Image.open(requests.get(image_file, stream=True).raw)
inputs = processor(prompt, raw_image, return_tensors="pt")
output = model.generate(**inputs, max_new_tokens=20)

print(processor.decode(output[0], skip_special_tokens=True)[len(prompt):])

これで完了です。

また、以下のように4ビットまたは8ビットでモデルをロードすることもできます。

from transformers import BitsAndBytesConfig

bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)
model = PaligemmaForConditionalGeneration.from_pretrained(
    model_id,
    quantization_config=bnb_config,
    device_map={"":0}
)

次にオンラインデモを使用する方法を紹介します。

オンラインデモの使用

PaliGemmaは、HuggingFace SpaceでMixモデルのデモが公開されており、以下のリンクから利用できます。

paligemma

それでは実際に使っていきましょう!

PaliGemmaを実際に使ってみた

まずは画像のキャプションを生成させてみましょう。

以下の画像とプロンプトを入力します。

プロンプト

Caption

画像

結果は5秒ほどで以下のキャプションを出力してくれました。

A fluffy gray and white cat sits peacefully in the grass, its eyes wide open. The cat's fur is soft and silky, and its eyes are bright and full of life. The flowers in the garden bloom in a variety of colors, including pink, white, and red. The cat's ears are perked up, and its tail is swiped across the grass. The cat's eyes are full of wonder, and its nose is wrinkled in concentration.

ふわふわの灰色と白の猫が草むらに安らかに座っています。猫の毛は柔らかく絹のようで、その目は明るく生命力に溢れています。庭にはピンク、白、赤などさまざまな色の花が咲いています。猫の耳はピンと立ち、尻尾は草の上をスーッと横切ります。猫の目は驚きに満ち、鼻にしわを寄せて集中しています。

おおよそ正しく描写できていると思いますが、画像には写っていないしっぽに関する説明があり完全に正しいものとは言えません。

次は、VQAを試してみます。

以下の画像とプロンプトを入力します。

プロンプト

In which city is this?

これはどこの都市ですか?

画像

結果はこのように正しく東京だと認識して回答してくれました。

tokyo

東京

次に、同じ東京の画像を利用して物体検出をしてみます。

以下のプロンプトを入力します。

detect tower

タワーを検出して

結果はこのようになりました。

画像から正しくタワーを検出できています。

最後に、画像の文章の理解を試してみます。

以下の画像とプロンプトを入力します。

プロンプト

What does this image show?

画像

引用元:https://github.com/google-research/big_vision/blob/main/big_vision/configs/proj/paligemma/README.md

結果はこのようになりました。

our model pipeline.

私たちのモデルパイプライン。

この画像がPaliGemmaのモデル概要図であることを文章などから認識したうえで、私たちのモデルパイプラインであると答えています。

実際に使ってみたところ、かなり高い画像認識能力を持っていることが伺えます。

PaliGemmaの実行に必要なスペック

PaliGemmaの実行には、かなり高い性能のGPU(A100やA10Gなど)が必要になります。

また、RAMも32GB以上必要になるとのことです。

ここからは、PaliGemmaの性能をさらに検証するため、画像認識能力を最近(2024年5月)公開されたばかりのGPT-4oと比較していきます。

PaliGemmaの画像認識能力をGPT-4oと比較してみた

それでは早速GPT-4oとの比較を行っていきましょう!

なお、今回は「画像キャプション生成」、「視覚質問応答(VQA)」、「文章理解」の3つのタスクで比較します。

使用するPaliGemmaのモデルは、汎用的なモデルであるpaligemma-3b-mix-448です。

画像キャプション生成

まずは、画像の説明文を生成する画像キャプション生成の比較です。

入力する画像はこちらです。

様々な要素が含まれる複雑な画像ですが、果たしてどうなるでしょうか。

以下のプロンプトを入力します。

Caption

結果はこのようになりました。

PaliGemma

In this image we can see a castle, trees, flowers and lights.

この画像には、お城、木々、花々、イルミネーションが写っています。

GPT-4o

In a magical fairy tale land, a grand castle stands majestically amidst a forest of trees adorned with enchanting flowers and illuminated by fantastical lights, creating a vibrant and dreamlike atmosphere.

不思議なおとぎ話の国の中で、魅惑的な花々で飾られ、幻想的な光に照らされた木々の森の中に、壮大な城が堂々と佇み、活気に満ちた夢のような雰囲気を醸し出しています。

PaliGemmaが生成したキャプションは、非常に簡素でそのクオリティはGPT-4oよりかなり劣っている印象です。

先ほど別の画像で試した際は、はるかに詳細なキャプションを生成してくれましたが、なぜでしょうか?

もしかすると画像の複雑さなどによって応答が変わってしまうのかもしれません。

視覚質問応答(VQA)

続いて、視覚質問応答(VQA)を比較します。

以下の画像とプロンプトを入力します。

プロンプト

How many people are in the image?

画像には何人写っていますか?

画像

結果はこのようになりました。

PaliGemma

13

GPT-4o

The image shows a group of 13 people.

画像は13人のグループのものです。

どちらも正しく認識できていますが、言語モデルの出力としてより適切だと感じるのは、GPT-4oのほうです。

PaliGemmaは、「13」とだけ出力しており、文章で回答を出力してくれればなおよいと思います。

文章理解

最後に、画像内の文章(文字)を理解する能力を検証するため、Gemmaのテクニカルレポートから、GemmaとMistralとLlama2のベンチマーク結果を比較した表の画像を入力します。

引用元:https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf

入力するプロンプトはこちらです。

Tell me what you can learn from this table.

この表から分かることを教えて

結果はこのようになりました。

PaliGemma

performance of different models on the different datasets.

異なるデータセットに対する異なるモデルのパフォーマンス。

GPT-4o

The table compares the performance of different AI models (LLaMA-2, Mistral, and Gemma) on various benchmarks. Here are the key insights:

1. **MMLU (5-shot, top-1)**: Gemma 7B has the highest score at 64.3, outperforming all other models.
   
2. **HellaSwag (0-shot)**: Mistral 7B and Gemma 7B perform equally well, both scoring 81.2.

3. **PIQA (0-shot)**: Mistral 7B leads with 82.2, with Gemma 7B close behind at 81.2.

4. **SIQA (0-shot)**: Mistral 7B and Gemma 7B show comparable performance, with Mistral 7B at 47.0 and Gemma 7B at 51.8.

5. **BoolQ (0-shot)**: Mistral 7B and Gemma 7B excel with scores of 83.2 each.

6. **Winogrande (partial scoring)**: Mistral 7B leads with 74.2, followed by Gemma 7B at 72.3.

7. **CQA (7-shot)**: Mistral 7B scores 66.3, while Gemma 7B leads with 71.3.

8. **OBQA (0-shot)**: LLaMA-2 7B has the highest score at 58.6, with Gemma 7B at 52.8.

9. **ARC-e**: Mistral 7B leads with 80.5, with Gemma 7B at 81.5.

10. **ARC-c**: Mistral 7B scores highest at 54.9, with Gemma 7B at 53.2.

11. **TriviaQA (5-shot)**: Mistral 7B has the highest score at 79.6, with Gemma 7B at 63.4.

12. **NQ (5-shot)**: Mistral 7B scores 31.2, while Gemma 7B is at 23.0.

13. **HumanEval (pass@1)**: Gemma 7B significantly outperforms others with a score of 32.3.

14. **MBPP (3-shot)**: Mistral 7B performs best at 40.2, with Gemma 7B at 44.4.

15. **GSM8K (maj@1)**: Mistral 7B scores highest at 35.4, with Gemma 7B at 46.4.

16. **MATH (4-shot)**: Gemma 7B leads with 24.3.

17. **AGIEval**: Mistral 7B scores highest at 41.2, with Gemma 7B at 41.7.

18. **BBH**: Mistral 7B scores highest at 56.1, with Gemma 7B at 55.1.

19. **Average**: Gemma 7B has the highest average score at 56.4, indicating overall strong performance across benchmarks.

**Summary**:
- **Best Overall**: Gemma 7B, with the highest average score (56.4).
- **Notable Performances**: Gemma 7B excels in MMLU, HumanEval, GSM8K, and MATH benchmarks.
- **Competitive Models**: Mistral 7B performs strongly in several benchmarks, often leading or closely following Gemma 7B. 

Overall, Gemma 7B shows strong performance, leading in several benchmarks and having the highest average score, indicating it is a highly effective model across various tasks.

この表は、さまざまなベンチマークにおける異なるAIモデル(LLaMA-2、Mistral、Gemma)のパフォーマンスを比較しています。以下は主要なポイントです:

  1. MMLU (5-shot, top-1):Gemma 7Bが64.3で最も高いスコアを持ち、他のすべてのモデルを上回っています。
  2. HellaSwag (0-shot):Mistral 7BとGemma 7Bは共に81.2のスコアで同等のパフォーマンスを示しています。
  3. PIQA (0-shot):Mistral 7Bが82.2でトップ、Gemma 7Bは81.2で僅差で続いています。
  4. SIQA (0-shot):Mistral 7BとGemma 7Bは同程度のパフォーマンスを示し、それぞれ47.0と51.8のスコアを持っています。
  5. BoolQ (0-shot):Mistral 7BとGemma 7Bは共に83.2のスコアで優れたパフォーマンスを示しています。
  6. Winogrande (部分スコアリング):Mistral 7Bが74.2でリードし、Gemma 7Bは72.3で続いています。
  7. CQA (7-shot):Mistral 7Bが66.3、Gemma 7Bが71.3でリードしています。
  8. OBQA (0-shot):LLaMA-2 7Bが58.6で最も高いスコアを持ち、Gemma 7Bは52.8です。
  9. ARC-e:Mistral 7Bが80.5でリードし、Gemma 7Bは81.5です。
  10. ARC-c:Mistral 7Bが54.9で最も高いスコアを持ち、Gemma 7Bは53.2です。
  11. TriviaQA (5-shot):Mistral 7Bが79.6でリードし、Gemma 7Bは63.4です。
  12. NQ (5-shot):Mistral 7Bが31.2で、Gemma 7Bは23.0です。
  13. HumanEval (pass@1):Gemma 7Bが32.3で他のモデルを大きく上回っています。
  14. MBPP (3-shot):Mistral 7Bが40.2で最高のパフォーマンスを示し、Gemma 7Bは44.4です。
  15. GSM8K (maj@1):Mistral 7Bが35.4で最高スコアを持ち、Gemma 7Bは46.4です。
  16. MATH (4-shot):Gemma 7Bが24.3でリードしています。
  17. AGIEval:Mistral 7Bが41.2でリードし、Gemma 7Bは41.7です。
  18. BBH:Mistral 7Bが56.1で最高スコアを持ち、Gemma 7Bは55.1です。
  19. 平均:Gemma 7Bが56.4で最高の平均スコアを持ち、全体的に強力なパフォーマンスを示しています。

まとめ

  • 全体で最高:Gemma 7Bが最高の平均スコア(56.4)を持つ。
  • 注目すべきパフォーマンス:Gemma 7BはMMLU、HumanEval、GSM8K、およびMATHベンチマークで優れている。
  • 競争力のあるモデル:Mistral 7Bは複数のベンチマークで強力なパフォーマンスを示し、しばしばGemma 7Bをリードまたは僅差で追随しています。

全体として、Gemma 7Bは複数のベンチマークでリードし、最高の平均スコアを持つため、さまざまなタスクにおいて非常に効果的なモデルであることが示されています。

結果は、さすがにGPT-4oの圧勝でした。

PaliGemmaも、異なるモデルのベンチマーク結果の比較表であることは理解していますが、出力の詳細度が全く違います。

GPT-4oは、表について非常に詳しくかつ端的にまとめてくれており、その性能の高さには驚きです。

今回の検証の結果、PaliGemmaは画像認識能力はGPT-4oに迫る能力を有していますが、その出力はGPT-4oにはまだまだ及ばない結果になりました。

もし、この記事を読んでPaliGemmaが気になった方は、簡単に試せるので是非試してみてください!

なお、GPT-4oについて知りたい方はこちらの記事をご覧ください。

PaliGemmaは高い性能を持った次世代オープンソースVLM

PaliGemmaはGoogleが開発した視覚と言語の統合モデル(VLM)で、画像とテキストを統合して処理し、多様なタスクに対応します。

対応するタスクには画像キャプション生成、視覚質問応答(VQA)、物体検出、セグメンテーション、文書理解があります。

主な構成要素は画像エンコーダー「SigLIP-So400m」とテキストデコーダー「Gemma-2B」で、事前学習済みモデル(PT)、複数タスク対応モデル(Mix)、特定タスク特化型モデル(FT)の3種類があります。

実際に使ってみたところ、かなり高い精度で画像を理解して回答を出力してくれました。

ただ、GPT-4oとの比較では、同等程度の画像認識能力を発揮したものの、出力する回答の詳細度はまだまだ及ばない結果になりました。

今後は、大規模言語モデル(LLM)の「Gemma 2」のリリースも予定されており、今後のGemmaシリーズの動向に目が離せません!

サービス紹介資料

生成系AIの業務活用なら!

・生成系AIを活用したPoC開発

・生成系AIのコンサルティング

・システム間API連携

最後に

いかがだったでしょうか?

弊社では

・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
ハルシネーション対策AIツールの開発
自社専用のAIチャットボットの開発

などの開発実績がございます。

まずは、「無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。

➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

生成AIを社内で活用していきたい方へ
無料相談

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。

セミナー内容や料金については、ご相談ください。

また、サービス紹介資料もご用意しておりますので、併せてご確認ください。

投稿者

  • ゆうや

    ロボット工学専攻。 大学時代は、対話ロボットのための画像キャプションの自動生成について研究。 趣味は、サウナとドライブ。

  • URLをコピーしました!
  • URLをコピーしました!
目次