🚀 Zilliz Cloudを無料で試す、完全管理型のMilvus—10倍の高速パフォーマンスを体験しよう!今すぐ試す>>

milvus-logo
LFAI

HomeBlogsシステム概要

システム概要

  • Scenarios
July 09, 2021
Yu Fang

stylepedia-1.png スタイルペディア-1.png

2003年に設立されたMozatは、シンガポールに本社を置き、中国とサウジアラビアにオフィスを構える新興企業だ。同社はソーシャルメディア、コミュニケーション、ライフスタイル・アプリケーションの構築を専門としている。StylepediaはMozatによって作られたワードローブアプリで、ユーザーが新しいスタイルを発見し、ファッションに情熱を注ぐ他の人々とつながるのを助ける。主な機能には、デジタルクローゼットをキュレーションする機能、パーソナライズされたおすすめスタイル、ソーシャルメディア機能、オンラインや実生活で見たものと似たアイテムを見つけるための画像検索ツールなどがある。

Milvusは、Stylepediaの画像検索システムに使用されている。このアプリは、ユーザー画像、商品画像、ファッション写真の3種類の画像を扱います。各画像には1つ以上のアイテムが含まれるため、各クエリがさらに複雑になります。画像検索システムを有用なものにするためには、正確で、高速で、安定したものでなければなりません。

システム概要

stylepedia-system-process.png スタイルペディアシステムプロセス.png

画像検索システムは、オフラインとオンラインのコンポーネントに分かれています。

オフラインでは、画像はベクトル化され、ベクトルデータベース(Milvus)に挿入されます。データワークフローでは、関連する商品画像やファッション写真が、オブジェクト検出と特徴抽出モデルを使用して512次元の特徴ベクトルに変換されます。その後、ベクトルデータはインデックス化され、ベクトルデータベースに追加される。

オンラインでは、画像データベースが照会され、類似画像がユーザーに返される。オフラインの場合と同様に、クエリ画像はオブジェクト検出と特徴抽出モデルによって処理され、特徴ベクトルが得られる。特徴ベクトルを使って、MilvusはTopK類似ベクトルを検索し、対応する画像IDを取得する。最後に、後処理(フィルタリング、ソートなど)の後、クエリ画像に類似した画像のコレクションが返される。

実装

実装は4つのモジュールに分かれている:

  1. 衣服の検出
  2. 特徴抽出
  3. ベクトル類似度検索
  4. 後処理

衣服検出

衣服検出モジュールでは、1段階のアンカーベースのターゲット検出フレームワークであるYOLOv5が、小型でリアルタイム推論が可能なオブジェクト検出モデルとして使用されている。YOLOv5には4つのモデルサイズ(YOLOv5s/m/l/x)があり、それぞれのサイズには長所と短所がある。大きいモデルは性能が良い(精度が高い)が、より多くの計算能力を必要とし、動作が遅くなる。今回の対象物は比較的大きなもので、検出が容易なため、最小モデルのYOLOv5sで十分です。

各画像内の衣服アイテムは認識され、切り出され、その後の処理で使用される特徴抽出モデル入力となる。同時に、物体検出モデルは、事前に定義されたクラス(トップス、アウターウェア、ズボン、スカート、ドレス、ロンパース)に従って衣服の分類も予測する。

特徴抽出

類似検索の鍵は特徴抽出モデルである。切り取られた衣服画像は、機械可読な数値データ形式で属性を表す512次元浮動小数点ベクトルに埋め込まれる。EfficientNetを基幹モデルとして、ディープメトリック学習(DML)手法を採用する。

メトリック学習は、CNNベースの非線形特徴抽出モジュール(またはエンコーダ)を訓練して、同じクラスのサンプルに対応する特徴ベクトル間の距離を短くし、異なるクラスのサンプルに対応する特徴ベクトル間の距離を長くすることを目的とする。このシナリオでは、同じクラスのサンプルは同じ服を指します。

EfficientNetは、ネットワークの幅、深さ、解像度を均一にスケーリングする際に、速度と精度の両方を考慮します。EfficientNet-B4は特徴抽出ネットワークとして使用され、究極の完全接続層の出力はベクトル類似性検索を行うために必要な画像特徴である。

Milvusはオープンソースのベクトルデータベースで、作成、読み込み、更新、削除(CRUD)操作と、1兆バイトのデータセットに対するほぼリアルタイムの検索をサポートしています。Stylepedia では、高い伸縮性、安定性、信頼性、そして高速性を持つ Milvus を大規模なベクトル類似性検索に使用しています。Milvusは、広く使用されているベクトルインデックスライブラリ(Faiss、NMSLIB、Annoyなど)の機能を拡張し、シンプルで直感的なAPIセットを提供することで、ユーザーは与えられたシナリオに理想的なインデックスタイプを選択することができます。

シナリオの要件とデータ規模を考慮し、Stylepediaの開発者はMilvusのCPUのみのディストリビューションとHNSWインデックスを組み合わせました。インデックス化された2つのコレクションは、1つは商品、もう1つはファッション写真で、異なるアプリケーション機能を提供するために構築されています。各コレクションはさらに、検索範囲を狭めるために、検出と分類の結果に基づいて6つのパーティションに分割される。Milvusは数千万のベクトルに対して数ミリ秒で検索を実行し、開発コストを抑えながら最適なパフォーマンスを提供し、リソースの消費を最小限に抑えます。

後処理

画像検索結果とクエリ画像の類似性を向上させるために、カラーフィルタリングとキーラベル(袖丈、着丈、襟型など)フィルタリングを使用して、不適格な画像をフィルタリングします。さらに、画質評価アルゴリズムを使用して、より高品質な画像がユーザーに最初に提示されるようにします。

アプリケーション

ユーザーは自分の洋服を撮影し、Stylepedia デジタルクローゼットにアップロードすることで、アップロードした画像に最も近い商品画像を検索することができます。

stylepedia-search-results.png スタイルペディア検索結果.png

着こなし提案

Stylepedia データベース上で類似検索を行うことで、特定のファッションアイテムを含むファッション写真を見つけることができます。これらは、誰かが購入を考えている新しい洋服であったり、自分のコレクションにあるものであったりします。そして、そのアイテムがよく組み合わされるアイテムのクラスタリングを通して、着こなしの提案が生成される。例えば、黒のバイカージャケットは、黒のスキニージーンズなど、様々なアイテムと合わせることができる。ユーザーは、選択された公式の中で、このマッチングが起こる関連するファッション写真を閲覧することができます。

stylepedia-jacket-outfit.png スタイルペディア-ジャケット-アウトフィット.png

stylepedia-jacket-snapshot.png スタイルペディア・ジャケット・スナップショット.png

ファッション写真のレコメンデーション

ユーザーの閲覧履歴、「好きなもの」、デジタル・クローゼットの内容に基づいて、類似度を計算し、興味のありそうなファッション写真をカスタマイズしてレコメンドします。

stylepedia-user-wardrobe.png スタイルペディア-ユーザー-ワードローブ.png

stylepedia-streetsnap-rec.png stylepedia-streetsnap-rec.png

ディープラーニングとコンピュータービジョンの手法を組み合わせることで、Mozatは、Stylepediaアプリの様々な機能をパワーアップさせるためにMilvusを使用して、高速で安定した正確な画像類似検索システムを構築することができました。

見知らぬ人にならない

  • GitHubでMilvusを見つける、またはMilvusに貢献する。
  • Slackでコミュニティと交流する。
  • Twitterで私たちとつながりましょう。

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

続けて読む