現在JavaScriptの設定が無効になっています。このページを利用するにはJavaScriptの設定を有効にしてください。Bonfire!!そんな記念すべき初回のイベントレポートを書かせていただきます、Yahoo!ショッピングでサイエンス領域を担当している東孝信です。Scienceは、データとサイエンスに関わる人たちが情報共有できる勉強会/交流会です。今後も定期的に開催される予定ですので、興味のある方は第2回以降もぜひチェックしてください!さて、第1回のテーマは「画像検索」です!最近EC系のサイトで類似画像検索が出来るようになったけどどうやってるの?画像検索のモデルってどうしてるの?画像検索のインフラはどうしてるの?私たちの会社でも画像検索を用いたサービスを構築できるだろうか?こういった疑問に答えたり、いま抱えている悩みを解決するヒントを得る場として開催されました。AIエンジニアリングチームトップバッターは、株式会社メルカリの荒瀬さんです。Customer)のため、投稿される商品画像が必ずしも綺麗とは限りません。テーブルや床の上で撮影されたりします(皆さんも経験あるのでは?)。公式HPから取得されたものも多く、欲しい商品を人が身につけていることもしばしばあるそう。すると、画像上の人情報に引きずられてしまって検索結果に「人の写っている商品」ばかりが並び、業者出品の装いになってしまいます。メルカリとしてはこれを避けたいので、「人が写っていようとなかろうと、注目したい商品が並ぶ世界」の実現を目指しました。カテゴリー単位で「人あり画像」と「人なし画像」データを集めて差分を計算することで、人ベクトルを抽出できると考えました。v2を使っていて、これはエッジデバイスでの処理を見据えての選択だったようです。作成したモデルで評価した結果、クエリが非着用画像の場合は類似商品が並び、逆に着用画像の場合は人が写っていない類似商品が並ぶようになったとのこと。物体検出することでその精度はより向上することが分かったそう。このモデルの優れた点は、「クエリに対して特徴変換するだけで良くて、インデックス側の変更が必要ないのはサービスとして大きな利点」と話されていました。サービスで扱う大量の商品に対して定常的に更新をかけるのは本当に大変なので、この設計はサービスを扱う会社ならではですね。「リアルタイムに画像検索できる世界を」メルカリでは今、物体検出から特徴抽出、そして検索までをリアルタイムに実現できる世界を目指しているそうです。簡単なデモ映像を見ましたが、ユーザーは画像を撮影する必要がなく、カメラで写した物体をそのままクエリとして認識して類似画像を検索していました。(すごい!)これは、物体検出と特徴抽出をエッジで行うことで実現しているそう。エッジで機械学習を行う場合、精度やレイテンシ、エネルギー効率やモデルサイズなどさまざまなトレードオフ問題があり、これらのバランスを考慮するのがとても難しいと話されていました。AIエンジニアリングチーム2番目の登壇者は、株式会社ZOZOテクノロジーズの平田さんです。これらを実現するために、ZOZOではk8sを採用しているとのことでした。k8sのモチベーションとしては、「ポータビリティに優れたコンテナベースのシステムにしたい」「GPUを使いたい(GAEではGPUを使えなかった)」などがあったそうです。システムの監視面では、レスポンスタイムやステータス、ユーザーリクエスト数などを見ているそうです。一方で、k8sはオートスケールできるため、CPU使用率などは見ていないとのことでした。講演では、ZOZOにおける画像検索の課題として以下の2点が挙げられていました。物体検出や特徴量計算の推論に時間がかかり、レイテンシが大きいGPUのスケールアウトに時間がかかるため、急激なトラフィック増加に対応できない1に関しては、シンプルに「推論部分をなくすことはできないか?」と考え、下記の改善を図ったとのこと。フィルタ」ですが、推論部分がネック。実は取り扱う商品についてはインデックスのために毎日推論を行っていたので、この情報を再利用してAPI返却するようにすれば、不要な推論を削除できるのでは?と考えた。そこで、データが登録された時点で推論結果を特徴量DBに保存するようにして、検索時にはそのDBを引きにいくことでレイテンシ改善を実現したそう。2に関しては、常にGPUクラスタに余裕を持っておくことで対応しているそうです。ZOZOでは地理的に離れたメンバーともうまく連携して進めており、新規プロジェクトだからこそ積極的に新しい技術を使うよう意識していると話されていました。われわれも同じIT企業の人間として、新しい技術を積極的に取り入れ、サービス改善に努めていくぞという気持ちになりました。ヤフー株式会社3番目の登壇者は、ヤフーの佐藤です。Yahoo!ショッピングの画像検索について語ってもらいました!「3億商品の中から、自然言語で表現しにくい商品を見つけられるように」Yahoo!ショッピングには3億もの商品があり、その中から自分の欲しいものを見つけるのは至難と言えます。ファッション商品には自然言語で表現しにくいものもあり、それらを画像検索によって見つけられるようにしたいと思っています。現在はiOSアプリにて、一部のファッション商品を対象に画像検索ができるようになっています。画像検索のシステム概要は先の2社とほとんど同様ですが、インデックスにはNGTを使っています(NGTについては次のセクションでも紹介するので割愛します)。ベクトル化/インデックス更新の際には、Kafkaを経由しています。Kafka経由の理由はデータを柔軟に扱える点で、複数種類のインデックスを作ることができたり、offsetを戻してインデックスを作り直すことができます。万が一インデックスが壊れてもすぐ復旧できるように、毎時クラウドストレージ(社内で開発されたDragonという分散ストレージ)に保存しています。その他、計算コスト削減のための差分更新システムや、検索結果改善のためのメンズ/レディースタグによるインデックス管理なども行っています。画像検索システムを新しく開発していくにあたり、佐藤は以下の学びを得たそうです。2つ目はサービス改善の上で重要ですよね。目指すべき世界がブレブレだと何をどう改善していけばいいのか分からなくなってしまうので、サイエンスの人間として肝に命じておきたいと思います。今後の展開についてもいくつか紹介してくれました。現在ファッションカテゴリー限定ですが、インテリアにも拡大していくとのこと。物体検出と特徴量抽出のモデルについて大きな改善ができたようで、近いうちにリリースされるはずと話されていました。画像から認識させる画像をユーザーが明示的に選択して類似画像検索できるシステムを近いうちにリリース予定とのこと。いったユーザーのニーズを満たすことができそうで、楽しみな機能ですね!Valdについて少し紹介します。NGTには、インデックス同期の排他制御やシャーディングなど、運用開発コストが少し高いという欠点があります。これに対し、現在Valdと呼ばれるベクトルの最近傍探索エンジンを開発中です。k8s上で動作し、運用コストの低減が見込めます。最後の登壇者は、ヤフーの岩崎です。略称で、大量の高次元ベクトルデータからクエリとして指定されたベクトルデータの近傍に存在するデータを高速に検索するソフトウエアです。benchmarksの結果、NGTがトップレベルの性能を誇ることが証明されました!その上で、データの追加削除や複数プロセス間でのインデックス共有ができ、サービス利用の面も考慮された設計となっています。速さの理由は、インデックス生成の2構造性と探索方法にあります。グラフで探索起点を決定するためにツリー構造を用意していて、ある1点を取って同心円状に空間分割することをくり返しながらグラフ構造にマッピングします。グラフを作成する際には、ノード作成中に同時に近傍探索することで高速化を実現しています。(こちらの記事もぜひご参照ください)先のセッションで佐藤からもあったように、NGTはYahoo!ショッピングの画像検索で使われており、サービスでの実用性にも優れています。他にもYahoo!ラボのFAVNAVIなどでも利用されていて、今後さらなるサービス利用が期待されています。Scienceでは、サービスにおける「画像検索」の現状についてメルカリ・ヤフー・ZOZOテクノロジーズの開発者の皆さまにお話しいただきました!モデル改善の話からシステム構成の話まで幅広く聞ける機会になり、参加者の皆さんもスライドの写真を撮ったり頷いたりしながら熱心に聴講されていました。JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。JAPANのサービス開発を支える技術やデザイン、文化を発信しています。Reserved.このページの先頭へ。