こんにちは。ヤフーで画像認識技術の研究開発を担当している西村と田中です。
Yahoo!ショッピング(iPhoneアプリ)では昨年7月から一部カテゴリーを対象に、類似画像検索機能が利用可能になっています。また、昨年9月にはYahoo!ラボから類似画像検索技術を用いたラボアプリFavNaviをリリースしました。
この2つのアプリに関しては、Yahoo! JAPAN Tech Blogで記事が公開されています。
ヤフーでは、これらのサービスで使われている類似画像検索の技術を独自に開発しています。
画像特徴量に関しては、継続的にモデルの改善を実施しており、今年の3月に新しい特徴量モデル(以下、特徴量v2.1と表記)がリリースされました。
本記事では、特徴量v2.1を中心に、ヤフーにおける商品画像の類似画像検索技術開発の取り組みについて紹介します。
システム概要
まず、ヤフーでの類似画像検索の枠組みについて説明します。
類似商品画像検索では、『物体検出を利用した矩形領域ベースの類似画像検索』の仕組みを採用しています。
つまり、検索対象となるのは画像全体(Whole Image)ではなく、画像内の各オブジェクトになります。
特徴抽出の前段に、物体検出処理を導入する必要がありますが、複数の商品が写っていることが多い商品画像に対して、個々の物体を検索対象にできます。また、物体領域のみを後段の特徴抽出モデルの入力にできる、構図や背景に依存しない特徴量を抽出しやすいというメリットもあります。
物体検出器はデータセットの作成からモデルの学習まで、ヤフーで独自に開発しています。
物体検出に関する詳細は、また今後の記事でご紹介できればと思います。
検索対象となる全てのオブジェクトの特徴量は、商品情報などのメタデータと紐付けた上でインデックスされ、検索可能な状態になります。
インデックスされるオブジェクト数はおよそ10^8程度ですが、この規模の高次元特徴量を高速に検索するため、近似近傍探索を利用します。エンジンはYahoo! JAPAN研究所で研究開発されているNGTを採用しています。
一般的にこの規模のデータ数となると、インデックスがメモリに乗り切らなくなりますが、現状はシャーディングすることで解決しています。NGTには直積量子化(PQ)ベースの量子化版(NGTQ)もあるため、こちらを使う選択肢もあるかもしれません。
新しい特徴量モデル
特徴量v2.1は、以下のような2つの特徴量を結合した特徴量としてリリースされました。
- 商品画像と商品タイトルを組み合わせて学習された128次元の特徴量(以下、VSEと表記)
- 個々の商品の違いを区別することに重きを置いた512次元の特徴量(以下、YPIと表記)
VSE特徴量
商品タイトルには、商品の特徴(例えばブランド名や素材など)を表す重要なキーワードが多数含まれています。そこで、商品タイトルをなんらかの特徴量に変換し、画像から得られる特徴量と商品タイトルの特徴量の類似度が大きくなるように学習することができれば、画像から商品の特徴を反映した特徴量を抽出できるようになります。
これを実現するため、下の図のように商品タイトルと商品画像から得られる特徴量を、共通の特徴量空間に埋め込み、それらの類似度が大きくなるようにMetric Learningを行います。
このようにテキストと画像を共通の特徴量空間に埋め込み学習する手法は Visual Semantic Embedding(VSE)と呼ばれています。
VSEモデルで得られる特徴量は、画像からテキストを検索したり、テキストから画像を検索したりすることにも利用できますが、今回は類似画像検索で利用するため、学習後は画像特徴量モデルのみを利用します。
詳細は割愛しますが、画像特徴量モデルにはResNet50を一部改変したもの、テキスト特徴量モデルには単語ベクトルを入力にとる多層ニューラルネットを利用しています。
YPI特徴量
Yahoo!ショッピングの商品画像を『製品』単位で束ねてラベル付けされたYPIデータセットを作成し、このデータセットで学習された特徴量をYPIと呼んでいます。
個々の商品独自の特徴を捉える特徴量モデルを学習するためには、商品カテゴリーのような粗い単位で収集されたようなデータセットでは不十分です。そこで、同じ製品の複数のバリエーションの画像をまとめたようなデータセットを作成しました。
このようなデータセットの構築を人手で行うのはとても大変なので、物体検出や商品情報などを利用して、自動的に収集するようにしています。
さて、データセットが作成できればYPI特徴量モデルの学習自体はシンプルで、一般的なDeep Metric Learningの手法を適用するだけです。
以前はPairwise(Triplet)ベースの手法を使っていましたが、v2.1ではClassificationベース(Normalized SoftmaxやArcFace等)の手法を採用しています。
特徴量v2.1
最終的な特徴量はVSE特徴量とYPI特徴量を結合した特徴量です。結合時の重みは1:1です。
次元数は640次元です。
VSE特徴量だけでも、カテゴリーやブランド、柄などがそろい、一貫性のある綺麗な検索結果が得られるのですが、検索結果上位にクエリと同一製品を引くことが難しい傾向がありました。
YPI特徴量と合わせることで、その傾向が改善されました。
評価
社内で作成したファッションカテゴリー用評価セットで実施された評価結果の一部を掲載します。
各評価指標の数字が高いほど、類似の商品が検索結果の上位に並びやすいことを示します。Dimは特徴量の次元数です。
Model | Dim | R@1 | mAP |
---|---|---|---|
v1.1 | 429 | 0.18 | 0.08 |
v2.0 | 640 | 0.40 | 0.28 |
v2.1 | 640 | 0.54 | 0.35 |
ImageNet | 2048 | 0.20 | 0.09 |
v1.1の説明を省略してしまっているため、比較が難しいですが、v2.1により全体的に改善していることがわかります。(v2.0はリリース時期のタイミングが合わず、本番リリースされなかったモデルです。 “ImageNet”はPyTorchのResNet50 pretrained modelです。)
Yahoo!ショッピングアプリを触ってみたところ、このアップデートにより、以前に比べてハズレと感じる商品が減ったように感じました。
まとめ
Yahoo!ショッピングの類似画像検索で使われている類似画像検索用特徴量について紹介しました。まだ一部のカテゴリーでしか利用できませんが、今後インテリアカテゴリーを中心に拡張していく予定となっています。
ヤフーの類似画像検索は、データ、物体検出、特徴量、近似近傍探索まで、自社で完結している点が珍しく、また面白い点だと思っています。
今後の改善にご期待ください。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました
- 西村 修平
- エンジニア
- 田中 智大
- エンジニア