DROBEプロダクト開発ブログ

DROBEのプロダクト開発周辺の知見や考え方の共有をしていきます

(続)ファッションにおける類似商品検索アルゴリズムの性能評価

DROBEで機械学習エンジニアをしております、藤崎です。

概要

  • ファッションアイテムを特徴づけるための情報として、画像とテキストがある。これらは異なる情報を含んでいると考えられる。
  • 類似のファッションアイテムを検索する場面で、画像とテキストの情報を両方活用することで、検索の精度を向上させることができると推測される。
  • 類似のファッションアイテムを検索するタスクで、両方の情報を活用した提案手法の性能を評価し、片方の情報だけを活用するよりも、大幅に性能が改善することを確認した。

背景・目的

  • この記事は以下の記事の続編です

tech.drobe.co.jp

以前の記事で、私たちはプロのスタイリストが作成した評価データセットを用いて、複数のアルゴリズムを類似商品検索の設定で定量的に評価しました。 その設定では、画像だけを入力とするアルゴリズムが最も優れた性能を持っていることを確認しました。

ただし、ファッションの領域においては、商品のすべての特徴を画像のみから抽出するのは困難であると感じています。その理由として、ファッション商品の情報には、色やカテゴリ、柄といった視覚的に判断できる要素だけでなく、どのような商品と組み合わせると良いのか、どのシーンでの使用が適しているのか、どんな素材かといった、視覚的には判断しづらい情報も含まれているからです。多くの場合、このような情報はテキストで表現され、画像だけでは完全に捉えるのは難しいのです。

従って、画像とテキスト情報を組み合わせることで、さらに精緻に商品から特徴を抽出できると考えています。 この考えに基づき、我々はファッションにおける商品の画像情報とテキスト情報を組み合わせる手法の開発に取り組みました。後述するように類似の手法はすでに存在していますが、我々の取り組みの特長としては、画像とテキストの両方を活用することで、単一の情報源だけを使用するよりもどれだけ性能が向上するかを定量的に示した点にあります。

関連研究

JSAI2023で発表された 画像情報及び言語情報に基づくファッションコーディネート投稿の推薦*1 が我々と似た発想の手法を提案しております。 岩井らはコーディネートの推薦の手法では画像情報のような「見た目」の情報だけでは推薦の困難性が高いとし、コーディネートに関連するタグ情報、すなわち単語情報の活用を提案しています。 具体的には以下のような処理の流れで、画像と単語情報から得られるランキングを活用しています。

ここで、

  •  \text{Image Score} : 画像特徴ベクトルを元に計算したクエリに対する類似度のスコア
  •  \text{Text Score} : テキスト特徴ベクトルを元に計算したクエリに対する類似度のスコア
  •  \text{Image Ranking} : 類似度のスコアを元に計算したランキング
  •  \text{Text  Ranking} : 類似度のスコアを元に計算したランキング
  •  \alpha : 調整可能なハイパーパラメタ

論文内の図表2を参考に作成した処理の流れ

岩井らの研究では、画像の特徴ベクトルをImage2StyleGANを用いて、また単語の特徴ベクトルをDoc2Vecを使用して取得しています。このように、彼らは画像情報とタグ情報の両方を効果的に組み合わせることで、ユーザが求めるコーディネートを推薦する手法を提案しています。しかしながら、その手法における定量的な評価手法の確立は、今後の研究の課題とされていました。

提案手法

私たちの提案法では、岩井らが採用していたランキングを用いた手法とは異なり、その前段で得られる(何かしらの距離関数を用いて算出された)スコアのベクトルを活用します。このスコアは連続的な値として表現されるため、細かな差異も詳しく捉えることができます。これに対して、ランキングベースの手法は、微小な違いによっても順位が大きく変わる可能性があります。

改めて、スコアとランキングにはそれぞれ以下のような利点が考えられると認識しています。

  • スコア:連続的な数値を持つため、細かい違いや差異を精密に捉えることができる
  • ランキング:全体的なスケールが統一されているので、異なるタイプの距離関数を使っても、適用が容易である

提案手法の処理の流れ

  •  \text{Image Score} : 画像特徴ベクトルを元に計算したクエリに対する類似度のスコア
  •  \text{Text Score} : テキスト特徴ベクトルを元に計算したクエリに対する類似度のスコア
  •  \alpha : 調整可能なハイパーパラメタ[0, 1]

この実験では、以前のブログでも使用したアルゴリズムを使用しています。具体的には、テキストの特徴ベクトルの取得にはBERTを採用しています。一方、画像の特徴ベクトルの取得には複数の手法を試しています。

そして、特徴ベクトル間の類似度の計算にはコサイン類似度を使用しています。コサイン類似度は、ベクトルの向きの近さを計算する方法であり、0から1の範囲の値を取ります。この方法は、出力が特徴ベクトルのスケールの大きさに依存しないという利点があります。

実験

アルゴリズムの説明

実験で用いた深層学習モデルは以下の通りです。(使用するモデルは以前のブログと同じです)

# モデル名 推論時の入力 DROBEが持つデータでの学習
1 ResNet-50 画像 なし
2 ResNet-50
(自己教師あり学習での学習)
画像 あり
画像10万枚で学習)
3 CLIP 画像 なし
4 BLIP-2 画像 あり
画像と自然言語の1万ペアで学習)
5 BERT テキスト なし

上記各モデルの概要は以下の通りです。

  1. ResNet-50 は教師あり学習の文脈で、画像に対してその正解のラベルを正しく推定するように学習されたモデルです。

  2. ResNet-50を自己教師あり学習の文脈で学習したモデルです。そして、この自己教師あり学習をDROBEの画像データを使って行っています。ここで自己教師あり学習とはラベルデータを使わずに、大量の未ラベルデータから特徴を学習する手法です。1.のようなラベルデータを作成するのは手間なので、ラベルを使わずに1.のような性能を得ることはメリットが大きいです。(自己教師あり学習については、日本語で沢山の技術解説記事があります。*2) 自己教師あり学習では沢山の手法が提案されていますが、SimSiamという手法を使用しました。*3

  3. CLIPは、インターネットから収集した大量(4億)*1の画像とそれに対応する自然言語の説明文のペアを使用してモデルを学習する方法です。このモデルは、入力された画像と自然言語の対応関係の良さを識別する能力を持っており、特定のタスクに対する訓練なしで、多様な画像認識タスクに適用することができます。つまり、あらかじめ訓練された知識を用いて未知のタスクを解決する能力があります。

  4. BLIP-2とはVQAタスク(入力した画像に対する質問を言語モデルに答えさせるタスク)で一定の性能を示した手法です。BLIP-2の枠組みの中に画像と言語の処理を行う深層学習モデルが含まれており、この関係性を捉えるモデル(Q-Former)を学習します。 具体的には画像と質問を投げ、正解の文章を答えられるようにするように学習することで、質問に答えるための良い画像からの特徴の抽出法を学習します。*4

    BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Modelsより

  5. BERTは言語モデルの一種で、言語モデルといえばChatGPTのような言語生成にも活用できますが、文章を受け取ってその文章の意味性に基づいて固定長のベクトルに変換することにも応用できます。5.ではこのような方法で取得したベクトルを使用しました。使用したモデルではベンチマーク*5 において多言語にも対応できるかつ性能が良いMultilingual-E5-largeを選択しました。

順位相関の確認

以下の内容は、BERTと画像を入力とするアルゴリズムとの間の順位相関、すなわちKendall's tauの結果です。

Kendall's tauは、2つのランキング間の順序の相関を評価する指標で、その値が1であれば完全な正の相関が存在し、-1であれば完全に負の相関が存在することを示します。

ここでは、BERTと画像を入力とした他のモデルとの間には、正の相関は見られるものの、その相関は非常に弱いことが確認されました。このことから、テキストから得た特徴と、画像から得た特徴とでは、アイテムの類似性をどのように認識するかが大きく異なることが考えられます。

ResNet-50 ResNet-50(SSL) CLIP BLIP
BERT 0.1566 0.1122 0.1352 0.1435

定量評価

前回と同じく評価は3万件のDROBEのデータについて行い、上記の1 ~ 5のモデルが出力する類似度のtop K個に正解データが含まれている割合を計測しました。

すなわち、指標としては以下の通りです。

 \frac{top K個の候補に正解データが含まれていた数}{テストデータの合計}

これをKが10, 100, 1000の場合で確認しました。 前回のブログでも述べたとおり、単体の情報を使った場合では以下のような結果になります。

単体の情報(画像 or テキスト)を入力した場合の性能

まず前回の結果において、画像モーダルで性能が高かったCLIPについて、提案法を適用してみます。

CLIP + BERT
先ほどの結果と比較してみると、性能が大きく向上していることが確認できます。 特にtop10の場合でCLIP単体で23%ほど( \alphaが0の場合)、BERT単体で20%ほど( \alphaが1の場合)だった指標値が31%まで向上しました。

(注 : 実験設定が変更し、データが少し変わったため、以前のブログに記載したCLIP単体の性能に少し誤差が出ています。)

次に順位相関が相対的に高かったResNet-50について確認してみます。

resnet-50 + bert
こちらも性能が大きく向上していることが確認できます。 特にtop10の場合でResNet-50単体で16%ほど( \alphaが0の場合)、BERT単体で20%( \alphaが1の場合)だった指標値が30%まで向上しました。

(注 : 実験設定が変更し、データが少し変わったため、以前のブログに記載したResNet-50単体の性能に少し誤差が出ています。)

表にまとめると以下の通りです。

単体での性能(top10) 提案法の適用によって得られた性能 最適な α
ResNet-50 約16% 約30% 0.6
CLIP 約23% 約31% 0.5

また、ResNet-50を使った場合とCLIPを使った場合で正解したidの重複は85%ほどであり、モデルが異なっていても正解できる問題が似ていることも確認しました。

定量評価の内訳

定量評価の結果から気になるのは、画像やテキストの両方を使うことでどれだけ正解するようになったのか、です。

CLIPを用いた実験において、正解したidを検証した結果の内訳は以下のようになり、16%のケースにおいては、画像とテキストの情報を組み合わせることで初めて正解するようになることが確認されました。これは、画像だけやテキストだけの情報では不十分であり、両方の情報を組み合わせることではじめて充足することができることを示しています。

  • 正解したidの内訳
両方のtopKに入っている 画像のtopKにしか入っていない テキストのtopKにしか入っていない どちらのtopKにも入っていない
0.394% 0.289% 0.157% 0.16%

定性評価

定量評価では、top K個の候補に正解が含まれているかだけに注目していました。

すなわち、正解以外のtop K個の候補の類似性が考慮されていません。そこで次にtop K個の全体感を評価するために可視化を行い、定性評価を行います。 定性評価では複数の観点について分析しました。 具体的には、ある商品と同じ カテゴリ、色、丈、柄 の商品が正しくtop K個内に出現させることができたかを確認しています。

表中の表現の目安は以下の通りです。

  • 高 : 10個中7個以上 で商品に対して同じ観点のものを検出できた
  • 中 : 10個中4個 ~ 6個 でクエリに対して同じものを検出できた
  • 低 : 10個中3個 以下 でクエリに対して同じものを検出できた
CLIPのみ BERTのみ 提案手法(CLIP + BERT)
カテゴリに対するロバスト性
色に対するロバスト性
丈に対するロバスト性
柄に対するロバスト性

定性的な評価から、提案手法ではtopKの出力において「相対的に」視覚的な統一感が低いという結果になりました。

具体的には、画像情報を単独で用いる場合、色や柄などの視覚的な要素における一貫性や統一感が見られた一方、テキスト情報のみを用いる場合には、雰囲気やテイストの一貫性が感じられました。しかし、これらの情報を組み合わせて使用する提案手法では、そのような統一感が損なわれてしまいました

定量的には提案手法が優れた結果を示しているにも関わらず、実際にこれを目にするユーザーは、出力が「ランダム」と感じられる可能性があることが懸念されます。今後は定量的な向上だけではなく、ユーザーがシステムの出力をどう認識するかという側面も考慮する必要があることを示唆しています。

おわりに

画像とテキストの類似度のスコアを組み合わせることで、ファッションにおける類似検索の精度を向上させる手法の有望性を確認しました。従来の方法では、画像やテキストの情報を独立して使っていました。

しかし、私たちのアプローチでは、これら画像やテキストの情報を組み合わせることで、より総合的な視点からの類似検索を実現し、その結果として検索精度の向上を達成しました。 今後の議論の方向性としては、出力の統一感をどのように保証するかだと認識しています。

参考文献

*1:, [Online]. Available: https://www.jstage.jst.go.jp/article/pjsai/JSAI2023/0/JSAI2023_2L6GS303/_article/-char/ja/

*2:“2020年超盛り上がり!自己教師あり学習の最前線まとめ!,” Qiita, Dec. 01, 2020. https://qiita.com/omiita/items/a7429ec42e4eef4b6a4d (accessed Oct. 14, 2023).

*3:理由としては、ベンチマークでの性能が高いこと。“Benchmarks — lightly 1.4.20 documentation.” https://docs.lightly.ai/self-supervised-learning/getting_started/benchmarks.html (accessed Oct. 14, 2023). 低いバッチサイズでも良い性能となりそうなことです。X. Chen and K. He, “Exploring Simple Siamese Representation Learning,” arXiv [cs.CV], Nov. 20, 2020. [Online]. Available: http://arxiv.org/abs/2011.10566

*4:J. Li, D. Li, S. Savarese, and S. Hoi, “BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models,” arXiv [cs.CV], Jan. 30, 2023. [Online]. Available: http://arxiv.org/abs/2301.12597

*5:https://huggingface.co/spaces/mteb/leaderboard


DROBE開発組織の紹介
組織情報ポータル