「KOSMOS-2:Microsoftによるマルチモーダルな大規模言語モデル」

『KOSMOS-2:マイクロソフトによるマルチモーダルな大規模言語モデル』

イントロダクション

2023年はAIの年となりました。言語モデルから安定した拡散モデルの強化にSegMind APIを使うまで、AI技術は進化し続けています。その中で、Microsoftが開発したKOSMOS-2が注目を浴びています。これはマイクロソフトによって開発されたマルチモーダルの大規模言語モデル(MLLM)であり、テキストと画像の理解力において画期的な能力を発揮しています。言語モデルを開発することは一つのことですが、ビジョンモデルを作成することは別のことです。しかし、両方の技術を組み合わせたモデルを持つことは、さらなるレベルの人工知能を実現することになります。この記事では、KOSMOS-2の特徴と潜在的な応用について掘り下げ、AIと機械学習への影響を解説します。

学習目標

  • KOSMOS-2のマルチモーダル大規模言語モデルの理解
  • KOSMOS-2のマルチモーダルグラウンディングと参照表現生成の仕組みの学習
  • KOSMOS-2の現実世界での応用について洞察を得る
  • KOSMOSを使ったColabでの推論の実行

この記事はデータサイエンスブログマラソンの一部として公開されました。

KOSMOS-2モデルの理解

KOSMOS-2はマイクロソフトの研究チームによる研究成果で、そのタイトルは「Kosmos-2: Grounding Multimodal Large Language Models to the World(KOSMOS-2:マルチモーダル大規模言語モデルのグラウンディング)」です。テキストと画像を同時に処理し、マルチモーダルデータとの相互作用を再定義することを目指して設計されたKOSMOS-2は、他の有名なモデルであるLLaMa-2やMistral AIの7bモデルと同様にトランスフォーマーベースの因果言語モデルのアーキテクチャを採用しています。

しかし、KOSMOS-2の特徴はその独自のトレーニングプロセスです。特殊なトークンとして画像内のオブジェクトへの参照を含むテキストである、GRITと呼ばれる巨大なデータセットでトレーニングされています。この革新的なアプローチにより、KOSMOS-2はテキストと画像の新たな理解を提供することができます。

マルチモーダルグラウンディングとは何ですか?

KOSMOS-2の特徴的な機能の一つは、「マルチモーダルグラウンディング」の能力です。これは、画像のオブジェクトとその位置を記述するイメージキャプションを生成することができるという意味です。これにより、言語モデルにおける「幻覚」の問題を劇的に減少させ、モデルの精度と信頼性を向上させることができます。

この概念は、テキストを画像内のオブジェクトに特殊なトークンを通じて接続し、実質的にはオブジェクトを視覚的な文脈に結びつけるというものです。これにより幻覚が減少し、正確なイメージキャプションの生成能力が向上します。

参照表現生成

KOSMOS-2は「参照表現生成」でも優れた性能を発揮します。この機能により、ユーザーは画像内の特定のバウンディングボックスと質問でモデルにプロンプトを与えることができます。モデルは画像内の特定の箇所に関する質問に回答することができ、視覚コンテンツの理解と解釈の強力なツールとなります。

この「参照表現生成」の印象的なユースケースにより、ユーザーはプロンプトを使用して自然言語で視覚コンテンツとの対話を行うことができ、新たな可能性が広がります。

KOSMOS-2を使ったコードデモ

ColabでKOSMOS-2モードでの推論を実行する方法を紹介します。完全なコードはこちらからご覧いただけます:https://github.com/inuwamobarak/KOSMOS-2

ステップ1:環境の設定

このステップでは、🤗 Transformers、Accelerate、Bitsandbytesなどの必要な依存関係をインストールします。これらのライブラリはKOSMOS-2による効率的な推論に不可欠です。

!pip install -q git+https://github.com/huggingface/transformers.git accelerate bitsandbytes

ステップ2:KOSMOS-2モデルの読み込み

次に、KOSMOS-2モデルとそのプロセッサを読み込みます。

from transformers import AutoProcessor, AutoModelForVision2Seqprocessor = AutoProcessor.from_pretrained("microsoft/kosmos-2-patch14-224")model = AutoModelForVision2Seq.from_pretrained("microsoft/kosmos-2-patch14-224", load_in_4bit=True, device_map={"": 0})

ステップ3:画像とプロンプトの読み込み

このステップでは、画像のグラウンディングを行います。画像を読み込み、モデルの完了のためのプロンプトを提供します。画像内のオブジェクトを参照するために重要な<grounding>トークンを使用します。

import requestsfrom PIL import Imageprompt = "<grounding>画像の"<grounding>An image of"url = "https://huggingface.co/microsoft/kosmos-2-patch14-224/resolve/main/snowman.png"image = Image.open(requests.get(url, stream=True).raw)image

ステップ4:完了の生成

次に、プロセッサを使用してモデルに画像とプロンプトを準備させます。それから、モデルに自己回帰的に完了を生成させます。生成された完了は、画像とその内容に関する情報を提供します。

inputs = processor(text=prompt, images=image, return_tensors="pt").to("cuda:0")# Autoregressively generate completiongenerated_ids = model.generate(**inputs, max_new_tokens=128)# Convert generated token IDs back to stringsgenerated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]

ステップ5:後処理

生の生成テキストを見て、画像パッチに関連するトークンが含まれている場合があります。この後処理ステップにより、意味のある結果を得ることができます。

print(generated_text)

<image>. the, to and of as in I that' for is was- on’ it with The as at bet he have from by are " you his “ this said not has an ( but had we her they will my or were their): up about out who one all been she can more would It</image><grounding> An image of<phrase> a snowman</phrase><object><patch_index_0044><patch_index_0863></object> warming up by<phrase> a fire</phrase><object><patch_index_0006><patch_index_0879></object>

ステップ6:さらなる処理

このステップでは、最初の画像関連のトークンを超えた生成テキストに焦点を当てます。オブジェクト名、フレーズ、場所トークンなどの詳細な情報を抽出します。この抽出された情報はより意味があり、モデルの応答をより理解することができます。

# By default, the generated text is cleaned up and the entities are extracted.processed_text, entities = processor.post_process_generation(generated_text)print(processed_text)print(entities)

An image of a snowman warming up by a fire[('a snowman', (12, 21), [(0.390625, 0.046875, 0.984375, 0.828125)]), ('a fire', (36, 42), [(0.203125, 0.015625, 0.484375, 0.859375)])]

end_of_image_token = processor.eoi_tokencaption = generated_text.split(end_of_image_token)[-1]print(caption)

<grounding> An image of<phrase> a snowman</phrase><object><patch_index_0044><patch_index_0863></object> warming up by<phrase> a fire</phrase><object><patch_index_0006><patch_index_0879></object>

ステップ7:バウンディングボックスをプロットする

画像で識別されたオブジェクトのバウンディングボックスの可視化方法を示します。このステップでは、モデルが特定のオブジェクトをどこに配置したかを把握することができます。抽出した情報を活用して画像に注釈を付けることができます。

from PIL import ImageDrawwidth, height = image.sizedraw = ImageDraw.Draw(image)for entity, _, box in entities:    box = [round(i, 2) for i in box[0]]    x1, y1, x2, y2 = tuple(box)    x1, x2 = x1 * width, x2 * width    y1, y2 = y1 * height, y2 * height    draw.rectangle(xy=((x1, y1), (x2, y2)), outline="red")    draw.text(xy=(x1, y1), text=entity)image

ステップ8:グラウンディングされた質問応答

KOSMOS-2を使用して、画像内の特定のオブジェクトと対話することができます。このステップでは、バウンディングボックスと特定のオブジェクトに関連する質問をモデルに提示します。モデルは、コンテキストと画像からの情報に基づいて回答を提供します。

url = "https://huggingface.co/ydshieh/kosmos-2-patch14-224/resolve/main/pikachu.png"image = Image.open(requests.get(url, stream=True).raw)image

ピカチュウについての質問とバウンディングボックスを準備することができます。特別な<phrase>トークンの使用は、質問にフレーズが存在していることを示しています。このステップでは、グラウンディングされた質問応答によって画像から特定の情報を取得する方法を示します。

prompt = "<grounding> 質問: このキャラクターは何ですか? 答え:"inputs = processor(text=prompt, images=image, bboxes=[(0.04182509505703422, 0.39244186046511625, 0.38783269961977185, 1.0)], return_tensors="pt").to("cuda:0")

ステップ9:グラウンディングされた回答の生成

モデルに対して質問の自己回帰的な完了を許可し、提供されたコンテキストに基づいて回答を生成します。

generated_ids = model.generate(**inputs, max_new_tokens=128)generated_text = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]# デフォルトでは、生成されたテキストは整形され、エンティティが抽出されます。processed_text, entities = processor.post_process_generation(generated_text)print(processed_text)print(entities)

質問: このキャラクターは何ですか? 答え: アニメの中のピカチュウです。[('this character', (18, 32), [(0.046875, 0.390625, 0.390625, 0.984375)])]

KOSMOS-2の応用

KOSMOS-2の機能は、研究室にとどまらず、実世界の応用に広がっています。その影響を及ぼす可能性のあるいくつかの分野には以下が含まれます:

  1. ロボティクス: 雲が重そうなら、ロボットに寝ている間に起こしてもらうように指示することができたらどうでしょう。ロボットが状況に適応的に空を見る能力は貴重な特徴です。KOSMOS-2は、ロボットに統合されて、環境を理解し、指示に従い、テキストと画像を通じて世界とのやり取りを通じて経験を観察し理解することができます。
  2. ドキュメントインテリジェンス: 外部環境に加えて、KOSMOS-2はドキュメントインテリジェンスにも使用できます。これは、テキスト、画像、表を含む複雑なドキュメントを分析し理解するために使用されます。関連情報の抽出と処理を容易にします。
  3. マルチモーダルダイアログ: AIの一般的な使用法は、言語またはビジョンに関連するものです。KOSMOS-2を使用すると、チャットボットと仮想アシスタントを連携させることができ、テキストと画像を含むユーザーのクエリに理解して応答することができます。
  4. 画像キャプショニングと視覚的質問応答: これらは、画像のキャプションを自動的に生成し、視覚情報に基づいて質問に答えるものであり、広告、ジャーナリズム、教育などの産業に応用があります。これには、特定のユースケースに特化したバージョンの生成や微調整も含まれます。

実践的な現実世界での活用例

私たちは、KOSMOS-2の能力が従来のAIと言語モデルを超えていることを見てきました。具体的な応用例を見てみましょう:

  • 自動運転: KOSMOS-2は、自動車内のオブジェクトの相対位置を検出および理解することにより、自動運転システムの向上の可能性を持っています。例えば、ウィンカーやホイールなどの車内のオブジェクトをより知的な判断に基づいて扱うことができ、複雑な運転シナリオでのより賢明な意思決定を可能にします。また、高速道路上で歩行者を識別し、彼らの体の位置に基づいて彼らの意図を伝えることができます。
  • 安全とセキュリティ: ポリスセキュリティロボットを構築する際には、KOSMOS-2のアーキテクチャを使用して、人々が「凍結」した状態にあるかどうかを検出することができます。
  • 市場調査: さらに、KOSMOS-2は市場調査においても画期的な存在となる可能性があります。多量のユーザーフィードバック、画像、レビューを一緒に分析することができます。KOSMOS-2は、質的データを定量化し、統計分析と組み合わせることで、規模の大きな価値ある洞察を提供する新たな方法を提供します。

マルチモーダルAIの未来

KOSMOS-2は、マルチモーダルAIの分野において大きな飛躍を表しています。テキストと画像を正確に理解し記述する能力により、新たな可能性が開かれています。AIが進化するにつれて、KOSMOS-2のようなモデルは高度な機械知能を実現に近づけ、産業の革新をもたらします。

現在は仮説上のみの存在である人工汎用知能(AGI)に向けて、KOSMOS-2は最も近いモデルの一つです。もし実現されれば、AGIは人間が行えるタスクを学習することができます。

結論

マイクロソフトのKOSMOS-2は、テキストと画像を組み合わせて新たな機能と応用を創造するAIの潜在能力を示しています。AIが届くはずがないと考えられていた領域への進出が期待されます。未来は近づいており、KOSMOS-2のようなモデルがそれを形作っています。KOSMOS-2のようなモデルは、AIと機械学習の進歩を促進し、テキストと画像の間の鴨長川を埋め、産業を革新し、革新的な応用の扉を開きます。マルチモーダル言語モデルの可能性を追求するにつれて、AIのエキサイティングな進歩が期待され、AGIのような高度な機械知能の実現への道が開かれるでしょう。

まとめ

  • KOSMOS-2は、テキストと画像を理解することができる画期的なマルチモーダル大型言語モデルであり、テキスト内の境界ボックスを使用したユニークなトレーニングプロセスが特徴です。
  • KOSMOS-2は、画像内のオブジェクトの位置を指定するイメージキャプションを生成することにおいて、マルチモーダルグラウンディングに優れており、幻想を抑制しモデルの精度を向上させます。
  • このモデルは、画像内の特定の位置に関する質問を境界ボックスを使用して回答することができ、視覚的なコンテンツとの自然言語のやり取りの新たな可能性を提供します。

よくある質問

参考文献

  • https://github.com/inuwamobarak/KOSMOS-2
  • https://github.com/NielsRogge/Transformers-Tutorials/tree/master/KOSMOS-2
  • https://arxiv.org/pdf/2306.14824.pdf
  • https://huggingface.co/docs/transformers/main/en/model_doc/kosmos-2
  • https://huggingface.co/datasets/zzliang/GRIT
  • Peng, Z., Wang, W., Dong, L., Hao, Y., Huang, S., Ma, S., & Wei, F. (2023). Kosmos-2: Grounding Multimodal Large Language Models to the World. ArXiv. /abs/2306.14824

この記事に表示されるメディアはAnalytics Vidhyaの所有ではなく、著者の裁量により使用されています。

We will continue to update VoAGI; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

機械学習

「トランスフォーマーの単純化:あなたが理解する言葉を使った最先端の自然言語処理(NLP)— パート1 — イントロ」

「トランスフォーマーは、AIの進歩に大きく貢献したディープラーニングのアーキテクチャですそれはAIとテクノロジー全体の範...

機械学習

「JavaとGradleを使用したAIアプリケーションの開発」

実際のコード例を通じて、Deeplearning4j、Weka、そしてEncogなどの人気のあるライブラリを使用して、JavaとGradleを使ったAI...

機械学習

「コルーチンの実行のマスタリング:UnityにおけるYield、Flow、そして実用例」となります

この包括的なガイドを通じて、Unityでの高度なコルーチンの使用方法を探求しましょうyieldingのテクニック、ゲームループの統...

人工知能

チャットGPTからPiへ、そしてなぜそうするのかをお伝えします!

2月にUX/UIデザインの旅が始まって以来、ChatGPT 🤖 を使い始めて以来、私はChatGPTを私のBFFと呼んでいます感情的になるわけ...

データサイエンス

「もし私たちが複雑過ぎるモデルを簡単に説明できるとしたらどうだろう?」

この記事は次の記事に基づいています:https//www.sciencedirect.com/science/article/abs/pii/S0377221723006598 これを読ん...

人工知能

「Llama 2:ChatGPTに挑むオープンソースの深層ダイブ」

「プログラミングや創造的な文章作成などの特定の領域で有望な複雑な推論タスクをこなす大規模言語モデル(LLM)が存在します...