見出し画像

類似画像検索にLLMを利用する。

画像の類似度って難しいですよね?
同じものを表しているのに、画像としては全然違うものだからEmbeddingしてコサイン類似度を測ると遠くなることがよくあります。
なので、商品や動物などの物体を比較する場合は画像の類似度はあてになるけど、スポーツやビジネスシーン等の状況や場面の類似度は難しいという課題がありました。

例としてスポーツを見てみましょう。
以下の4枚の画像の類似度を出します。

画像1
画像2
画像3
画像4

画像1~3は野球で、画像4はバスケの画像です。
とりあえずAugNetで類似度を出しましょう。

結果

この結果を見ると一番似ているのは、画像1と画像4です。

野球画像の画像1~3同士は近く、画像4は他と遠くなって欲しい場合はどうしましょうか?

そこでLLMを使ってみます。

ChatGPTのSceneXplainを使います。
SceneXplainはChatGPTのプラグインで、画像のURLを入れると説明をしてくれます。

例えば、画像1ですと、以下のような説明になります。


画像1

画像は、観客の前でアクションを起こしている野球選手を表示しています。
選手は野球場に立っており、バットを振っています。
さらに、画像は野球選手のビデオゲームの表現をキャッチしているようです。
選手の名前「GUERRA」と番号「41」が画像の別々のセクションに表示されています。

画像が粗いせいか、ビデオゲームと認識されていますが、野球であることはちゃんと文章で表現してくれています。
同様に他の画像も説明してもらいましょう。


画像2

晴れた野球場の中で、クラシックなユニフォームを着た若い選手が、野球バットでの完璧なスイングを披露しています。
成功したヒットの期待が空気中に漂い、バッターの集中した表情は彼らの決意を明らかにしています。
緑の広がりのフィールドが彼らを囲んでおり、ゲームのための開放的な遊び場を提供しています。
選手が飛んでくるボールにスイングすると、彼らの体の回転は、強力なストライクに必要な正確な調整を示唆しています。
このシーンは、野球という時代を超えたスポーツと、フィールド上での勝利への永遠の追求を証明しています。


画像3

画像は、フィールド上でボールを投げる野球選手のアクションを展示しています。
選手は画像の中央に位置しており、投げる動作をしています。
画像は鮮やかな色で満たされており、野球に適した屋外の環境を描写しています。
さらに、画像にはテキスト要素があり、右下隅に「Tuin」という言葉が書かれています。
このテキストは選手と関連しているか、追加の文脈を提供するかもしれませんが、シーンとの正確な関係は指定されていません。


画像4

画像は、ブルックリン・ニックスとブルックリン・ネッツのバスケットボールチームが立っているバスケットボールコートを描写しています。
チームはコート上に位置していますが、具体的な場所は指定されていません。
さらに、チームの前には観客がいます。画像の上部には「| NER. /T」というテキストが読めます。

勘のいい人はもう何をしたいか気づいていると思いますが、この説明を使ってNLPのEmbeddingでコサイン類似度を出します。

今回は、T5のSentence Embeddingを使います。
参考:


結果

画像1と一番近いのは、画像3,
画像2と一番近いのは、画像3
画像3と一番近いのは、画像1
となり、意図した結果となりました。

まとめ

今回はそこまでまともに検証はしてないですが、期待できる結果が得られました。
状況や場面等の画像の場合はLLMに説明をさせ、その説明でNLPで類似度を測るというのは場合によっては有効そうです。

その他

今回は、Embeddingしてコサイン類似度を出しましたが、次のようなプロンプトだと、画像を構造化するメタデータの作成もできそうです🤔

画像2に対して


↓今すぐフォローすべきキラキラアカウント

↓今すぐ登録すべきキラキラサービス

じゃあの。


この記事が気に入ったらサポートをしてみませんか?