「Amazon Titanを使用して簡単に意味論的画像検索を構築する」

「Amazon Titanを使用して簡単に意味論的画像検索を構築する方法」

デジタルパブリッシャーは、品質を損なうことなく、できるだけ素早く新しいコンテンツを生成し、公開するために、常にメディアワークフローを効率化し自動化する方法を探しています。

テキストの本質を捉えるために画像を追加することは、読者の体験を向上させることができます。機械学習の技術を使用して、そのような画像を見つけることができます。「魅力的な画像は、オーディエンスの注意を引き付け、ストーリーとの関係を作り出すための最も効果的な方法の1つですが、それは意味を成さなければなりません。

前の投稿では、Amazonマシンラーニング(ML)サービスを使用して、キーワードを入力せずに記事やテレビの概要に配置するための最適な画像を見つける方法について説明しました。前の投稿では、画像からメタデータを抽出するためにAmazon Rekognitionを使用しました。その後、テキスト埋め込みモデルを使用して、後で最適な画像を見つけるために使用できるメタデータの単語埋め込みを生成しました。

この投稿では、Amazon Titanファウンデーションモデルを使用して、記事を迅速に理解し、それに添付する最適な画像を見つける方法を説明します。今回は、埋め込みを画像から直接生成します。

セマンティック検索の重要な概念は埋め込みです。埋め込みは、ベクトルの形での入力(画像、テキスト、またはその両方)の数値表現です。多くのベクトルを持っていると、それらの間の距離を測定することができ、距離が近いベクトルは意味的に類似または関連しています。

Amazon Bedrockは、AI21 Labs、Anthropic、Cohere、Meta、Stability AI、Amazonなどの主要なAI企業から高性能なファウンデーションモデル(FMs)を選択できる完全管理型サービスであり、単一のAPIとともに、開発の簡素化とプライバシーとセキュリティの維持をサポートする幅広い機能を提供しています。

Amazon Titanは最近、コレクションに新しい埋め込みモデルであるTitan Multimodal Embeddingsを追加しました。この新しいモデルは、マルチモーダル検索、レコメンデーションシステム、および他のダウンストリームアプリケーションに使用することができます。

マルチモーダルモデルは、テキスト、画像、ビデオ、音声などの複数のモダリティでデータを理解して分析することができます。この最新のAmazon Titanモデルは、テキスト、画像、またはその両方を受け入れることができます。つまり、同じモデルを使用して、画像とテキストの埋め込みを生成し、それらの埋め込みを使用して2つの間の類似性を計算することができます。

ソリューションの概要

以下のスクリーンショットでは、ミニ記事を取り上げ、検索を実行し、記事に共鳴する画像を見つける方法を示しています。この例では、ヴェルナー・フォーゲルスがインドを旅する際に白いスカーフを着用しているという文を取り上げます。この文のベクトルは、スカーフを着用するヴェルナーの画像のベクトルと意味的に関連しており、この検索で上位の画像として返されます。

Amazon Titanを使用したセマンティック画像検索高いレベルで、画像はAmazon Simple Storage Service (Amazon S3)にアップロードされ、画像の埋め込みを含むメタデータが抽出されます。

画像からテキストメタデータを抽出するために、セレブリティ認識機能およびラベル検出機能Amazon Rekognitionで使用します。Amazon Rekognitionは、MLを使用して、画像やビデオで数万の有名人を自動的に認識します。この機能を使用して、画像内の有名人を認識し、このメタデータをAmazon OpenSearch Serviceに保存します。ラベル検出は、画像からオブジェクトや概念を検出し、前述のスクリーンショットでは、画像の下にラベルのメタデータが表示されています。

タイタンマルチモーダル埋め込みモデルを使用して、画像の埋め込みを生成し、検索可能なメタデータを作成します。

すべてのメタデータは、後で画像を検索する必要がある場合に備えて、OpenSearchサービスに保存されます。

アーキテクチャの2番目の部分は、新たに投稿された記事でこれらの画像を検索することです。

記事が投稿されると、記事を抽出して変換し、OpenSearchサービスの検索入力に変換する必要があります。テキスト内の潜在的な有名人の名前を検出するために、Amazon Comprehendを使用します。記事を要約することは、おそらく記事の本質を捉えるために1つまたは2つの画像を選ぶことになるため、テキストの要約は重要です。内容の要点を捉えるために、テキストの要約を行うために「以下のテキストの要約を提供してください。テキストに言及されていない情報は追加しないでください」といったプロンプトと共に、Amazon Titan Text G1 – Expressモデルを使用します。要約された記事では、Amazon Titanマルチモーダル埋め込みモデルを使用して、要約された記事の埋め込みを生成します。埋め込みモデルには最大トークン入力数がありますので、記事を要約することは、埋め込みにできるだけ多くの情報をキャプチャするためにさらに重要です。単純に言えば、トークンとは単語、サブワード、または文字のことです。

その後、記事の名前と埋め込みを使用してOpenSearchサービスに対して検索を実行し、指定した有名人の存在を伴った意味的に類似した画像を取得します。

ユーザーとして、入力として記事を使用して画像を検索しています。

ウォークスルー

次の図は、このユースケースを提供するためのアーキテクチャを示しています。

Amazon Titanを使用した意味的な画像検索

次の手順では、意味的な画像と有名人の検索を可能にする図に描かれたアクションのシーケンスについて説明します。

  1. 画像をAmazon S3バケットにアップロードします。
  2. Amazon EventBridgeがこのイベントを受信し、AWS Step Functionsステップを開始します。
  3. Step Functionsステップは、Amazon S3の画像の詳細を取り、以下の3つの並行アクションを実行します:
    1. オブジェクトメタデータを抽出するためにAmazon RekognitionDetectLabels APIを呼び出す
    2. 既知の有名人を抽出するためにAmazon RekognitionRecognizeCelebrities APIを呼び出す
    3. ML埋め込みモデルの受け入れ可能な最大サイズに画像をリサイズし、画像入力から埋め込みを直接生成するためにAWS Lambda関数を実行する
  4. Lambda関数は、画像オブジェクトのメタデータと有名人の名前があれば挿入し、埋め込みをk-NNベクトルとしてOpenSearchサービスのインデックスに挿入します。
  5. Amazon S3は、Amazon CloudFrontによって配信されるシンプルな静的ウェブサイトをホストします。フロントエンドのユーザーインターフェース(UI)では、Amazon Cognitoを使用してアプリケーションに認証し、画像を検索することができます。
  6. UIを使用して記事またはテキストを送信します。
  7. 別のLambda関数が、Amazon Comprehendを呼び出して、テキスト内の名前を有名人の候補として検出します。
  8. 関数は、Titan Text G1 – Expressを使用して、記事から要点を要約します。
  9. 関数は、Amazon Titanマルチモーダル埋め込みモデルを使用して、要約された記事の埋め込みを生成します。
  10. 関数は、OpenSearchサービスの画像インデックスを検索して、有名人の名前とベクトルのk最近傍を使用して、意味的に類似した画像を取得します。この際には、余弦類似度を使用して正確なk-NNスコアリングスクリプトを使用します。
  11. Amazon CloudWatchおよびAWS X-Rayにより、エンドツーエンドのワークフローの可観測性が提供され、問題があった場合に通知されます。

以下の図は、Step Functionsワークフローのビジュアルワークフローデザイナーを示しています。

Amazon Titan Step Functionsを使用したセマンティック画像検索

以下は埋め込みの例です:

{"Embedding_Results": [-0.40342346, 0.073382884, 0.22957325, -0.014249567, 0.042733602, -0.102064356, 0.21086141, -0.4672587, 0.17779616, 0.08438544, -0.58220416, -0.010788828, -0.28306714, 0.4242958, -0.01655291,....

前述の数字の配列は、テキストまたは画像オブジェクトから意味を捉え、計算や関数を行うための形式です。

埋め込みは、数百から数千の次元性を持っています。このモデルは1,024次元であり、つまり、前述の配列には与えられたオブジェクトの意味を捉える1,024の要素が含まれます。

マルチモーダル埋め込みとテキスト埋め込み

セマンティック画像検索の提供方法には、画像の埋め込みを生成する方法が異なる2つのオプションがあります。以前の投稿では、Amazon Rekognitionを使用して抽出されたテキストメタデータから埋め込みを生成します。この投稿では、Titanマルチモーダル埋め込みモデルを使用し、画像の埋め込みを直接生成します。

UI上での2つのアプローチに対するクイックテストとクエリの実行を行うと、結果が明らかに異なることがわかります。例として、クエリの記事は「Werner Vogelsはインドを巡る際に白いスカーフを愛用しています」という内容です。

マルチモーダルモデルからの結果では、スカーフが存在する画像に高いスコアが付けられます。スカーフという単語は私たちが提出した記事に含まれており、埋め込みがそれを認識していることを示しています。

Amazon Rekognitionによって抽出されたメタデータをUIで確認すると、スカーフという単語は含まれていないため、画像からの情報を一部見逃してしまっています。つまり、マルチモーダルモデルは、使用ケースによっては優位性を持つ可能性があります。Amazon Rekognitionを使用することで、埋め込みを作成する前に画像で検出されたオブジェクトをフィルタリングすることができます。そのため、望む結果により良く適合する他の適用可能な使用ケースがあるかもしれません。

以下の図は、Amazon Titanマルチモーダル埋め込みモデルの結果を示しています。

Amazon Titanマルチモーダルを使用したセマンティック画像検索

以下の図は、Amazon Titanテキスト埋め込みモデルを使用し、Amazon Rekognitionによって抽出されたメタデータを使用して埋め込みを生成した結果を示しています。

Amazon Titanワード埋め込みを使用したセマンティック画像検索

事前条件

この手順には、以下の事前条件が必要です:

  • AWSアカウント
  • AWS Serverless Application Model Command Line Interface (AWS SAM CLI)
    • このソリューションではAWS SAM CLIをデプロイに使用します。
    • AWS SAM CLIの最新バージョンを使用していることを確認してください
  • Docker
    • このソリューションでは、ローカルの依存関係を回避するためにコンテナ内でビルドするためのAWS SAM CLIオプションを使用します。そのためにDockerが必要です。
  • Node
    • このソリューションのフロントエンドはReactウェブアプリケーションであり、Nodeを使用してローカルで実行することができます。
  • npm
    • ウェブアプリケーションをローカルで実行するために必要なパッケージのインストールやリモートデプロイメントのビルドにはnpmが必要です。

フルスタックアプリケーションの構築とデプロイ

  1. リポジトリをクローンする

    git clone https://github.com/aws-samples/semantic-image-search-for-articles.git
  2. 新しくクローンしたプロジェクトのディレクトリに移動する

    cd semantic-image-search-for-articles
  3. アプリケーションを実行するために必要なすべてのパッケージをダウンロードするために、npm installを実行する

    npm install
  4. 一連のスクリプトを実行するデプロイスクリプトを実行し、sam buildsam deploy、構成ファイルの更新、そしてAmazon S3にウェブアプリケーションファイルをホストしてAmazon CloudFront経由で提供準備をする

    npm run deploy
  5. スクリプトからの最終的な出力の1つは、アプリケーションにアクセスするためのAmazon CloudFrontのURLです。AWS Management Consoleで新しいユーザーを作成してサインインする必要があります。後で使用するためにURLをメモしておいてください。

次のスクリーンショットは、スクリプトがAWS SAMを使用してスタックをデプロイし、アプリケーションにアクセスするために使用できるAmazon CloudFrontのURLを出力している様子を示しています。

SAMビルドの出力

アプリケーションにサインインするための新しいユーザーを作成する

  1. Amazon Cognitoコンソールに移動し、新しいユーザープールを選択する
  2. 新しいパスワードを持つ新しいユーザーを作成する

Cognitoユーザーの追加

ウェブアプリケーションにサインインしてテストする

  1. サインインページに移動するためのAmazon CloudFrontのURLを見つける。これは前のスクリーンショットに表示されている最終行で出力されます。
  2. 新しいユーザー名とパスワードの組み合わせを入力してサインインする
  3. UIを使用していくつかのサンプル画像をアップロードする。
    1. ファイルを選択を選択し、その後アップロードを選択する。注: /uploadsフォルダにファイルを追加することで、一括でS3バケットに直接アップロードすることもできます。
    2. 記事を書いたりコピー&ペーストしたりして提出を選択して、画像が期待通りの順序で返されるか確認する

Amazon Titanを使用したセマンティック画像検索のアップロード画面

後片付け

将来の課金を回避するために、リソースを削除してください。

  1. このソリューションでデプロイされたS3バケットを見つけて、バケットを空にする。
  2. CloudFormationコンソールに移動し、先に述べたデプロイスクリプトを介してデプロイしたスタックを選択し、スタックを削除する。

CloudFormationスタック

結論

この記事では、Amazon Rekognition、Amazon Comprehend、Amazon Bedrock、およびOpenSearch Serviceを使用して画像からメタデータを抽出し、セレブリティやセマンティック検索を使用して関連コンテンツを自動的に発見する方法を紹介しました。これは、出版業界では新鮮なコンテンツを迅速に複数のプラットフォームに配信する際に特に重要です。

次のステップとして、このソリューションをAWSアカウントにデプロイし、独自の画像をいくつかアップロードしてセマンティック検索がどのように機能するかをテストしてみてください。コメント欄でいくつかのフィードバックをお知らせください。

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

AIニュース

エロン・マスクのxAIがOpenAIのChatGPTに挑戦します

ビジョン溢れる億万長者であるイーロン・マスクは、電気自動車、宇宙探査、ソーシャルメディアなどの事業を手掛ける人物で、...

機械学習

PyTorchを使った効率的な画像セグメンテーション:パート1

この4部作では、PyTorchを使用して深層学習技術を使った画像セグメンテーションをゼロから段階的に実装しますシリーズを開始...

機械学習

「Amazon SageMakerでのRayを使用した効果的な負荷分散」

以前の記事(たとえば、ここ)では、DNNトレーニングワークロードのプロファイリングとパフォーマンスの最適化の重要性につい...

人工知能

AIの革新的なイノベーションが開発者を強化する

SAPは、Build CodeやHANA Cloudなどの複数の生成AI機能を導入し、開発者が迅速にデータから価値を生み出し、革新するのを支援...

データサイエンス

Deep Learningのマスタリング:Piecewise推定による非線形近似の技術 パート2

皆さん、こんにちは!「マスタリング深層学習シリーズ」の第2回目へようこそこの記事は、第1回目の続編であり、タイトルは『...

機械学習

高性能意思決定のためのRLHF:戦略と最適化

はじめに 人間の要因/フィードバックからの強化学習(RLHF)は、RLの原則と人間のフィードバックを組み合わせた新興の分野で...