3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LlamaIndexとGPT4Vによるマルチモーダル検索

Posted at

技術の進化は止まりません。こちらのページの前半をDatabricksでウォークスルーします。

以下のステップを踏みます。

  1. 複数の画像を理解するためにマルチモーダルのLLMであるGPT4Vを使います
  2. 画像をダウンロードします
  3. テキストと画像に対するマルチモーダルインデックスとベクトルストアを作成します
  4. ステップ1の画像理由付けに従うマルチモーダルリトリーバを用いて適切なテキストと画像を同時に検索します

ライブラリのインストール

%pip install llama-index-multi-modal-llms-openai
%pip install llama-index-vector-stores-qdrant
%pip install llama_index ftfy regex tqdm
%pip install git+https://github.com/openai/CLIP.git
%pip install torch torchvision
%pip install matplotlib scikit-image
%pip install -U qdrant_client
dbutils.library.restartPython()

APIキーのセットアップ

Open AI APIキーはシークレットに格納しています。

# OpenAIのセットアップ
import os
import openai

OPENAI_API_TOKEN = dbutils.secrets.get("demo-token-takaaki.yayoi", "openai_api_key")
os.environ["OPENAI_API_KEY"] = OPENAI_API_TOKEN

GPT4Vによる画像の理由付けのためにTeslaのウェブサイトから画像をダウンロード

from pathlib import Path

input_image_path = Path("input_images")
if not input_image_path.exists():
    Path.mkdir(input_image_path)
!wget "https://docs.google.com/uc?export=download&id=1nUhsBRiSWxcVQv8t8Cvvro8HJZ88LCzj" -O ./input_images/long_range_spec.png
!wget "https://docs.google.com/uc?export=download&id=19pLwx0nVqsop7lo0ubUSYTzQfMtKJJtJ" -O ./input_images/model_y.png
!wget "https://docs.google.com/uc?export=download&id=1utu3iD9XEgR5Sb7PrbtMf1qw8T1WdNmF" -O ./input_images/performance_spec.png
!wget "https://docs.google.com/uc?export=download&id=1dpUakWMqaXR4Jjn1kHuZfB0pAXvjn2-i" -O ./input_images/price.png
!wget "https://docs.google.com/uc?export=download&id=1qNeT201QAesnAP5va1ty0Ky5Q_jKkguV" -O ./input_images/real_wheel_spec.png

これらはワークスペースファイルとして保存されます。便利です。
Screenshot 2024-02-17 at 21.02.00.png

GPT4VマルチモーダルLLMから画像の理由付けを生成

入力画像のプロット

from PIL import Image
import matplotlib.pyplot as plt
import os

image_paths = []
for img_path in os.listdir("./input_images"):
    image_paths.append(str(os.path.join("./input_images", img_path)))


def plot_images(image_paths):
    images_shown = 0
    plt.figure(figsize=(16, 9))
    for img_path in image_paths:
        if os.path.isfile(img_path):
            image = Image.open(img_path)

            plt.subplot(2, 3, images_shown + 1)
            plt.imshow(image)
            plt.xticks([])
            plt.yticks([])

            images_shown += 1
            if images_shown >= 9:
                break


plot_images(image_paths)

人が見てもTeslaの画像であることはわかります。
Screenshot 2024-02-17 at 21.03.43.png

これらの画像を理解するためにGPT4Vを活用

from llama_index.multi_modal_llms.openai import OpenAIMultiModal
from llama_index.core import SimpleDirectoryReader

# ローカルディレクトリを指定
image_documents = SimpleDirectoryReader("./input_images").load_data()

openai_mm_llm = OpenAIMultiModal(
    model="gpt-4-vision-preview", api_key=OPENAI_API_TOKEN, max_new_tokens=1500
)

response_1 = openai_mm_llm.complete(
    prompt="代替テキストとして画像を説明して下さい",
    image_documents=image_documents,
)

print(response_1)

びっくりです。

最初の画像には、テキストで書かれた仕様があり、以下のような情報が含まれています:
- バッテリータイプ:Rear-Wheel Drive / Long Range AWD
- 加速(0-100 km/h):3.7秒 / 4.8秒
- 航続距離:Range 497 km (EPA est.) / Long Range 539 km (EPA est.)
- 最高速度:Top Speed 250 km/h / 217 km/h
- ドライブタイプ:Dual Motor All-Wheel Drive
- ホイールサイズ:Up to 5 Seating / 19" or 20" Wheels
- ワランティ:Basic Vehicle - 4 years or 80,000 km, whichever comes first / Battery & Drive Unit - 8 years or 192,000 km, whichever comes first

二番目の画像は、電気自動車の透視図で、車体の骨格と内部構造が示されています。画像には「Rigid Structure」と「Impact Protection」というラベルが付いており、車の安全性に関する特徴を強調しています。

三番目の画像は、最初の画像と同様に、車の仕様をリストしたテキストが含まれていますが、異なるモデルの情報が記載されています。

四番目の画像は、車の価格情報と推定納車日、潜在的な節約額、性能の概要を含むテキストが含まれています。また、異なるモデルの価格がリストされており、購入オプションに関する情報が含まれています。

五番目の画像は、再び車の仕様をリストしたテキストが含まれており、異なるモデルの情報が記載されています。

全体として、これらの画像は電気自動車の様々なモデルの詳細な仕様、価格、および構造的特徴を提供しています。
response_2 = openai_mm_llm.complete(
    prompt="それぞれのスペックの価格を教えてくれませんか?",
    image_documents=image_documents,
)

print(response_2)

どういうことなの…

画像には、特定の電気自動車のモデルとそのスペックが表示されていますが、直接的な価格情報は含まれていません。ただし、最後の画像には、モデルYの異なるバリアントの価格が示されています。以下は、その価格の概要です:

- Model Y Rear-Wheel Drive: $57,990
- Model Y Dual Motor All-Wheel Drive: $67,990
- Model Y Performance: $74,990

これらの価格は、推定される潜在的な節約額や、可能な連邦税のインセンティブを考慮していない、基本的な購入価格です。また、価格は地域や国によって異なる場合があり、追加のオプションや税金、手数料が加算される可能性があります。購入を検討している場合は、最新の価格とオファーについては、直接メーカーのウェブサイトを確認するか、最寄りのディーラーに問い合わせることをお勧めします。

Soraも出てきて、なおさらマルチモーダルの世界が広がりますね。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?