iYUNDONGスポーツアプリを使用してイベントのハイライトを抽出する
iYUNDONGは、より多くのスポーツ愛好家やマラソンなどのイベント参加者を巻き込むことを目指すインターネット企業である。人工知能(AI)](https://en.wikipedia.org/wiki/Artificial_intelligence)ツールを構築し、スポーツイベント中に撮影されたメディアを分析し、ハイライトを自動的に生成することができる。例えば、スポーツイベントに参加したiYUNDONG sports Appのユーザーは、自撮り写真をアップロードすることで、そのイベントの膨大なメディアデータセットから自分の写真やビデオクリップを瞬時に取り出すことができる。
iYUNDONGアプリの重要な機能の1つは、"Find me in motion "と呼ばれるものです。 カメラマンは通常、マラソンレースなどのスポーツイベント中に大量の写真やビデオを撮影し、iYUNDONGメディアデータベースにリアルタイムで写真やビデオをアップロードする。自分のハイライトを見たいマラソンランナーは、自撮り写真をアップロードするだけで、自分自身を含む写真を取り出すことができる。iYUNDONGアプリ内の画像検索システムがすべての画像マッチングを行うため、ランナーは多くの時間を節約できる。Milvusは、検索プロセスを大幅に高速化し、精度の高い結果を返すことができるため、iYUNDONGはこのシステムにMilvusを採用しています。
<br
**ジャンプ
- 難点と解決策](#難点と解決策)
- ミルバスとは](#what-is-milvus)
- なぜMilvusなのか](#why-milvus)
- システムとワークフロー](#system-and-workflow)
- iYUNDONGアプリインタフェース](#iYUNDONG-app-interface)
- 結論](#conclusion)
問題点と解決策
iYUNDONGは画像検索システムを構築するにあたり、以下のような問題に直面し、その解決策を見出すことに成功しました。
- イベント写真がすぐに検索できること。
iYUNDONGでは、イベント写真をアップロード後すぐに検索できるよう、InstantUploadという機能を開発しました。
- 膨大なデータセットの保存
iYUNDONGのバックエンドには写真や動画のような膨大なデータがミリ秒単位でアップロードされます。そこでiYUNDONGはAWS、S3、Alibaba Cloud Object Storage Service (OSS)を含むクラウドストレージシステムに移行し、膨大な量の非構造化データを安全、高速、かつ信頼性の高い方法で扱うことにしました。
- インスタント・リーディング
即時読み込みを実現するために、iYUNDONGは独自のシャーディングミドルウェアを開発し、水平スケーラビリティを容易に実現し、ディスク読み込みによるシステムへの影響を軽減しました。また、キャッシュ層としてRedisを利用し、並行性が高い状況でも安定したパフォーマンスを確保します。
- 顔の特徴の即時抽出
ユーザがアップロードした写真から顔の特徴を正確かつ効率的に抽出するために、iYUNDONGは画像を128次元の特徴ベクトルに変換する独自の画像変換アルゴリズムを開発しました。もう一つの問題は、多くのユーザーや写真家が同時に画像や動画をアップロードすることでした。そのため、システムエンジニアはシステムを展開する際に動的なスケーラビリティを考慮する必要がありました。具体的には、iYUNDONGはクラウド上のエラスティック・コンピュート・サービス(ECS)をフルに活用し、動的なスケーリングを実現しました。
- 迅速かつ大規模なベクトル検索
iYUNDONGは、AIモデルによって抽出された大量の特徴ベクトルを保存するためのベクトルデータベースを必要としていました。独自のビジネスアプリケーションのシナリオに基づき、iYUNDONGはベクトルデータベースに以下の機能を求めました: 1.超大規模なデータセットに対して、高速なベクトル検索を実行する。 2.低コストでの大量保存の実現
当初、年間平均100万枚の画像を処理していたため、iYUNDONGは検索用のデータをすべてRAMに保存していた。しかし、過去2年間で、同社のビジネスは急成長を遂げ、非構造化データが指数関数的に増加した。iYUNDONGのデータベース内の画像数は、2019年には6000万枚を超え、保存が必要な特徴ベクトルは10億を超えたことになる。膨大な量のデータは必然的にiYUNDONGのシステムを重くし、リソースを消費させた。そのため、高いパフォーマンスを確保するためにハードウェア設備に継続的に投資する必要があった。具体的には、iYUNDONGはより多くの検索サーバ、より大きなRAM、より性能の良いCPUを配置し、より高い効率性と水平方向のスケーラビリティを実現した。しかし、このソリューションの欠点は、運用コストが法外に高くなってしまうことでした。そのため、iYUNDONGはこの問題に対するより良い解決策を模索し始め、Faissのようなベクトルインデックスライブラリを活用することでコストを削減し、より良いビジネスの舵取りをしようと考えました。最終的にiYUNDONGはオープンソースのベクトルデータベースMilvusを選択しました。
<br
Milvusとは
Milvusは、使いやすく、柔軟性、信頼性が高く、高速なオープンソースのベクトルデータベースです。写真認識、音声認識、ビデオ処理、自然言語処理などの様々なディープラーニングモデルと組み合わせることで、Milvusは様々なAIアルゴリズムを用いてベクトル化された非構造化データを処理・分析することができます。以下は、Milvusがすべての非構造化データを処理するワークフローである:
非構造化データは、ディープラーニングモデルやその他のAIアルゴリズムによって埋め込みベクトルに変換されます。
その後、埋め込みベクトルはMilvusに挿入され、保存される。Milvusはまた、それらのベクトルのインデックスを構築する。
Milvusは類似検索を行い、さまざまなビジネスニーズに基づいた正確な検索結果を返します。
Milvusの概要](https://assets.zilliz.com/i_YUNDONG_Blog_1_d8abe065ae.png)
なぜMilvusなのか
2019年末より、iYUNDONGはMilvusを使った画像検索システムの一連のテストを実施した。テストの結果、Milvusは複数のインデックスをサポートし、RAM使用量を効率的に削減できるため、ベクトル類似検索のタイムラインを大幅に圧縮することができ、他の主流のベクトルデータベースを凌駕することが判明した。
さらに、Milvusの新バージョンは定期的にリリースされている。テスト期間中、Milvusはv0.6.0からv0.10.1まで複数回のバージョンアップを経ている。
さらに、活発なオープンソースコミュニティと、すぐに使える強力な機能により、MilvusはiYUNDONGが少ない開発予算で運用することを可能にしています。
<br
システムとワークフロー
iYUNDONGのシステムは、まずカメラマンによってアップロードされたイベント写真から顔を検出し、顔の特徴を抽出します。その顔の特徴を128次元のベクトルに変換し、Milvusのライブラリに格納します。Milvusはそのベクトルに対してインデックスを作成し、瞬時に精度の高い結果を返します。
その他、写真IDや写真内の顔の位置を示す座標などの付加情報は、サードパーティのデータベースに保存される。
各特徴ベクトルはMilvusライブラリに固有のIDを持っています。iYUNDONGはMeituanの基本研究開発プラットフォームで開発された分散ID生成サービスであるLeafアルゴリズムを採用し、MilvusのベクトルIDと別のデータベースに保存されている対応する付加情報を関連付けます。特徴ベクトルと付加情報を組み合わせることで、iYUNDONGシステムはユーザ検索時に類似した結果を返すことができる。
<br
iYUNDONG アプリのインタフェース
トップページには最新のスポーツイベントが表示される。イベントの一つをタップすると、詳細が表示されます。
フォトギャラリーページの上部にあるボタンをタップすると、ユーザーは自分の写真をアップロードして、ハイライト画像を取り出すことができる。
iYUNDONGアプリのインターフェース](https://assets.zilliz.com/iyundong_interface_3da684d206.jpg)
まとめ
この記事では、iYUNDONG Appが、解像度、サイズ、鮮明度、角度、その他類似検索を複雑にする様々な方法でユーザがアップロードした写真に基づいて、正確な検索結果を返すことができるインテリジェントな画像検索システムを構築する方法を紹介した。Milvusの助けを借りて、iYUNDONG Appは6000万枚以上の画像データベースに対してミリ秒レベルのクエリを実行することができる。そして、写真検索の精度は常に92%を超えています。Milvusのおかげで、iYUNDONGは限られたリソースで短時間にエンタープライズグレードの強力な画像検索システムを簡単に構築できるようになりました。
Milvusを使ったものづくりについては、他のユーザーストーリーをお読みください。
読み続けて

Zilliz Cloud Launches in AWS Australia, Expanding Global Reach to Australia and Neighboring Markets
We're thrilled to announce that Zilliz Cloud is now available in the AWS Sydney, Australia region (ap-southeast-2).

How to Use Anthropic MCP Server with Milvus
MCP + Milvus: Streamline AI agent development with standardized data access, eliminating integration hassles while enhancing context and flexibility.

Building RAG Pipelines for Real-Time Data with Cloudera and Milvus
explore how Cloudera can be integrated with Milvus to effectively implement some of the key functionalities of RAG pipelines.
