類似画像検索エンジンを効率的に開発するにはどうすればよいでしょうか?

類似画像検索エンジンを効率的に開発するにはどうすればよいでしょうか?

翻訳者 | 朱 仙中

校正 | 梁哲、孫淑娟

プロジェクト紹介

類似画像検索とは、関連するあらゆる画像を検索するもので、「コンテンツベースの画像検索システム」、略して「CBIR」システムです。

上記の画像は、記事「コンテンツベースの画像検索: 最先端の文献の調査 (2017)」(https://arxiv.org/abs/1706.06064) からの抜粋です。

最近では、画像検索は、特にeコマースサービス(AliExpress、Wildberriesなど)の分野でますます使用されるようになっています。 「キーワード検索」(画像コンテンツの理解を含む)は、GoogleやYandexなどの検索エンジンでは長い間確立されていますが、市場や他の民間検索エンジンでのその応用はまだ比較的限られています。コンピュータービジョンの分野でテキストと画像を結びつける比較言語画像事前学習CLIP(https://openai.com/blog/clip/)は発売以来大きな話題を呼んでおり、グローバル化も加速するだろう。

私たちのチームはコンピュータービジョン用のニューラルネットワークを専門としているので、この記事では画像を検索する方法に焦点を当てます。

1. 基本的なサービス構成要素

ステップ 1: モデルをトレーニングします。モデル部分は、従来のコンピューター ビジョンまたはニューラル ネットワークの基礎に基づいて構築できます。モデルの入力は画像であり、出力は D 次元の記述子/埋め込み層です。従来の実装では、SIFT (スケール不変特徴変換) 記述子と BoW (bag-of-visual-words) アルゴリズムを組み合わせた戦略が使用される場合があります。ただし、ニューラル ネットワーク ソリューションでは、標準アルゴリズム モデル (ResNet、EfficientNet など) を複雑なプーリング レイヤーと組み合わせることができ、さらに優れた学習手法と組み合わせることができます。十分なデータがある場合、またはデータが十分にトレーニングされている場合、ニューラル ネットワーク ソリューションを選択すると、ほぼ常に満足のいく結果が得られます (個人的にテストした例があります)。そのため、この記事ではこのソリューションに焦点を当てます。

ステップ 2: 画像にインデックスを付けます。このステップでは、すべての画像に対してトレーニング済みのモデルを実行し、高速検索のために埋め込みを特別なインデックスに書き込みます。

ステップ3: 検索します。ユーザーがアップロードした画像を使用してモデルを実行し、埋め込みを取得し、その埋め込みをデータベース内の他の埋め込みと比較します。最終的な検索結果は関連性に基づいて並べ替えられます。

2. ニューラルネットワークとメトリック学習

類似点を見つけるタスクでは、ニューラル ネットワークを特徴抽出器 (バックボーン ネットワーク) として使用します。もちろん、バックボーン ネットワークの選択はデータの容量と複雑さによって異なります。開発ニーズに応じて、ReNET18 残差ネットワーク モデルから Visual Transformer モデルまで、すべてのオプションを選択できます。

画像検索モデルの第一の特徴は、ニューラルネットワーク出力部分の実装技術である。画像検索リーダーボードでは、さまざまな画像検索アルゴリズムが最も理想的な記述子を構築することを目指しています。たとえば、並列プーリング層を使用する Combined Global Descriptors アルゴリズムや、出力機能に対するアクティベーションのより均一な分布を実現することを目的とした Batch Remove Block アルゴリズムがあります。

2 番目の主な機能は損失関数です。人工知能の分野ではすでに多くの損失関数が存在します。たとえば、「Deep Image Retrieval Survey」(https://arxiv.org/abs/2101.11282)という記事では、推奨される損失関数アルゴリズムが 12 種類以上紹介されています。同時に、分類機能も相当数存在します。これらすべての損失関数の主な目的は、ニューラル ネットワークをトレーニングして、画像を空間内で線形に分離可能なベクトルに変換し、コサイン距離またはユークリッド距離を使用して比較できるようにすることです。類似の画像には類似した埋め込みがあり、類似しない画像には非常に異なる埋め込みがあります。次に、これらの内容をさらに紹介しましょう。

損失関数

1. コントラスト損失

このアルゴリズムでは二重の損失が発生しますが、これはオブジェクト同士の距離を比較するときによく発生します。

画像 p と q が実際には非常に類似している場合、ニューラル ネットワークは画像 p と q の埋め込みレイヤー間の距離によってペナルティを受けます。同様に、レイヤーに埋め込まれた画像が実際には互いに異なるため、埋め込みレイヤーの適用によりニューラル ネットワークが近接性に対してペナルティを受ける場合があります。後者の場合、ニューラル ネットワークがすでに異なる画像を「分離する」タスクを処理していると想定する考え方を克服するために、境界値 m (たとえば、0.5) を設定できます。

2. 三つ子の喪失

ここでの目標は、アンカー ポイントから正の例までの距離を最小化し、アンカー ポイントから負の例までの距離を最大化することです。トリプレット損失関数は、Google の FaceNet モデルの顔認識に関する記事で初めて登場し、長い間最先端のソリューションとなっています。

3. N倍損失関数

N タプル損失関数は、トリプル損失関数をさらに研究したものです。この関数もアンカー ポイントと正例の概念を使用しますが、単一の負例テクノロジではなく複数の負例テクノロジを使用します。

4. 角度付加マージン(ArcFace とも呼ばれる)

ペアリング損失関数の問題は、正の例、負の例、およびアンカー ポイントの選択の組み合わせにあります。データセットからそれらを均一にランダムに選択すると、「ライト ペアリング」の問題が発生します。この単純な画像ペアリングが発生すると、損失は 0 になります。この場合、ネットワークはバッチ内のほとんどの要素が非常に簡単に処理でき、損失がゼロになる状態に非常に速く収束し、その時点でニューラル ネットワークは学習を停止します。この問題を回避するために、このアルゴリズムの開発者は、ハード負例マイニングとハード正例マイニングという複雑なペアマイニング手法を提案し始めました。関連する問題については、さまざまな損失関数を比較した (https://gombru.github.io/2019/04/03/ranking_loss/) を参照してください。さらに、PML ライブラリ (https://github.com/KevinMusgrave/pytorch-metric-learning) も多くのマイニング手法を実装しています。このリポジトリには、PyTorch フレームワークのメトリック学習タスクに関する有用な情報が多数含まれていることは注目に値します。

上記の問題に対する別の解決策は、分類損失関数を使用することです。 3年前にArcFaceが発表した顔認識アルゴリズムを思い出してみましょう。当時としては最先端のものでしたが、当時よく知られていた「欠陥」の特徴の存在にもつながりました。

アルゴリズムの主なアイデアは、通常のクロスエントロピーにインデント m を追加して、あるクラスの画像の埋め込みをそのクラスの画像の重心領域に分散し、他のクラスの埋め込みのクラスターから少なくとも角度 m だけ分離することです。

これは、特に MegaFace ベンチマーク (https://paperswithcode.com/sota/face-verification-on-megaface) の規模で AI システムを開発する場合に最適な損失関数ソリューションのようです。ただし、このアルゴリズムはカテゴリ ラベルがある場合にのみ機能することに注意してください。そうでない場合は、ペアワイズ損失の問題に直面することになります。

上の図は、単一クラス ラベルとマルチクラス ラベルを使用する場合にどの損失関数が最も適しているかを直感的に示しています (マルチクラス ラベルからペア ラベルを導き出すには、マルチラベル ベクトル サンプル間の交差率を計算します)。

プーリング

ここで、ニューラル ネットワークのアーキテクチャを確認し、画像検索タスクを実行する際にプーリング層のペアを使用する場合を考えてみましょう。

1. R-MACプーリング

R-MAC (Regional Maximal Convolutional Activation) は、ニューラル ネットワークの出力マップ (グローバル プーリング レイヤーまたは分類レイヤーの前) を受け取り、出力マップ内の各ウィンドウのアクティベーションの合計である記述子ベクトルを返すプーリング レイヤーです。ここで、ウィンドウのアクティブ化は、各チャネルごとに個別に取得されたそのウィンドウの最大値として取得されます。

この結果の記述子の計算プロセスでは、さまざまなスケールでの画像のローカル特性が考慮され、豊富な特徴記述が作成されます。この記述子自体が埋め込みレイヤーになる可能性があるため、損失関数に直接送信できます。

2. GeMプーリング

GeM (一般化平均プーリング) は、出力記述子の品質を向上できる単純なプーリング アルゴリズムです。要するに、古典的な平均プーリングはラムダノルムに一般化されます。ラムダ層を追加することで、ニューラル ネットワークが、特定のタスクで重要となる可能性のある画像の重要な部分に焦点を当てるようになります。

距離測定

1. 索引

類似画像を高品質で検索するための鍵は、ランキング、つまり特定のクエリに対して最も関連性の高いサンプルを表示することです。このプロセスの基本的な特性には、記述子インデックスの構築速度、検索速度、および使用されるメモリが含まれます。

最も単純なアプローチは、埋め込みレイヤーを「前面」に向けたままにして、コサイン距離などを使用してブルート フォース検索を実行することです。ただし、埋め込みレイヤーの数が多い場合(数百万、数千万、あるいはそれ以上)は、このアプローチでは問題が生じます。さらに、検索速度が大幅に低下し、占有されるヒープ領域がさらに増加し​​ます。ただし、肯定的な側面もあります。既存の埋め込みレイヤーを使用することで、完璧な検索品質が実現されます。

これらの問題は、埋め込みを生の形式ではなく圧縮(量子化)形式で保存することで、品質を犠牲にして解決できます。また、検索戦略も変更します。ブルート フォース検索を使用する代わりに、最小数の比較を実行して、指定されたクエリに最も近い必要な数の比較を見つけるようにします。最も近いコンテンツを近似的に検索できる効果的な検索フレームワークはすでに多数存在します。この目的のために、特別なベンチマークが作成されました。このベンチマークに基づいて、各ライブラリがさまざまなデータセットでどのように機能するかを観察できます。

その中でも最も人気のあるライブラリは、NMSLIB (非メトリック空間ライブラリ)、Spotify の Have ライブラリ、Facebook の Faiss ライブラリ、Google の Scann ライブラリです。さらに、REST API を使用してインデックスを作成する場合は、Jina アプリケーション (https://github.com/jina-ai/jina) の使用を検討できます。

2. 再ランキング

情報検索分野の研究者は、元の検索結果を受け取った後、何らかの方法で項目を再ランク付けすることで、順序付けられた検索結果を改善できることを長い間理解してきました。

有名なアルゴリズムはクエリ拡張です。アルゴリズムの中心的な考え方は、最も近い要素のセット内の上位 K 個の要素を使用して新しい埋め込みレイヤーを生成することです。最も単純なケースでは、上に示すように平均ベクトルを取ることができます。実際、質問内の距離またはリクエストまでのコサイン距離に基づいて埋め込みレイヤーに重みを付けることもできます。論文「Attention-Based Query Expansion Learning」(https://arxiv.org/abs/2007.08019)に詳細なフレームワークが記載されていますが、クエリ拡張アルゴリズムを再帰的に使用することもできます。

3. k近傍法

上の写真は、人に最も近い物体を認識するアプリケーションのスクリーンショットです。図の上部には、クエリとその 10 個の最近傍データが表示されています。ここで、P1 ~ P4 は正例、NI ~ N6 は負例です。図の下部の 2 列ごとに、サンプルの人物に最も近い 10 人の隣人が表示されます。青いボックスと緑のボックスは、それぞれサンプルの人物と肯定的な例に対応します。サンプルの人物と正の例には、互いに 10 個の最も近い隣人がいることがわかります。

k 最近傍アルゴリズムは、リクエスト自体に最も近い k 要素を含む上位 k 要素に焦点を当てます。

このセットに基づいて、結果を再ランク付けするプロセスが確立されました。その 1 つは、「k 近傍アルゴリズムに基づく人物再 ID 情報の再ランク付けに関する研究」(https://arxiv.org/abs/1701.08398) という記事で説明されています。定義により、k 逆数は k 最近傍数よりもクエリに近くなります。したがって、K 近傍アルゴリズム セット内の要素を大まかに正の例として考えることができ、クエリ拡張などのアルゴリズムの重み付けルールをさらに変更することができます。

本稿では、上位k要素自体のk近傍集合を使用して距離を再計算できるメカニズムを開発しました。この論文には、この記事の範囲外である計算情報が多数含まれています。興味のある読者は、自分で探して読んでみることをお勧めします。

類似画像検索アルゴリズムの効果の分析

次に、この記事で提案した類似画像検索アルゴリズムの品質問題を分析してみましょう。この検索タスクを実装するプロセスには多くの詳細があり、初心者が初めて画像検索プロジェクトを開発するときには気付かない可能性が高いことに注意してください。

1. メトリクス

この記事では、precision@k、recall@k、R-precision、mAP、nDCG など、画像検索の分野で一般的に使用されているいくつかの一般的なメトリック アルゴリズムについて説明します。

[翻訳者注] 一般的に、以下のアルゴリズムにおける精度は、取得されたエントリのうちどれだけが正確であるかを表し、再現率は、すべての正確なエントリのうちどれだけが取得されたかを表します。

(1)precision@Rアルゴリズム

上記の式では、

パラメーター RELk は、上位 k 個の結果に含まれる関連サンプルの数を表します。

パラメーター k は、考慮する必要がある上位位置のサンプルの固定数を表します。

利点: トップ k 内の関連サンプルの割合を表示できます。

欠点:

  • 特定のクエリに関連するサンプルの数に非常に敏感であり、関連するサンプルの数はクエリごとに異なるため、検索品質を客観的に評価することは不可能です。
  • 値 1 は、すべてのクエリ内の関連サンプルの数が k 以上である場合にのみ達成されます。

(2)R精度アルゴリズム

上記の式では、パラメーター RELR は、上位 R 結果内の関連サンプルの数を表します。

パラメーター R は、特定のクエリ内のすべての関連するサンプル項目の数を表します。

アルゴリズム precision@k と同様に、パラメーター k も関連するクエリ サンプルの数に設定されます。

利点: precision@k の数値 k ほど敏感ではないため、メトリックは安定します。

デメリット: リクエストに関連付けられたサンプルの合計数を事前に把握しておく必要があります (関連するすべての数値が最初にマークアップされていない場合、問題が発生する可能性があります)。

(3)Recall@k(再現率)アルゴリズム

上記の式では、パラメータ RELk は、上位 k 個の結果内の関連サンプルの数を表します。

パラメータ k は、考慮する必要がある上位位置のサンプルの固定数を表します。

パラメーター REL は、指定されたクエリ内のすべての関連するサンプル項目の数を示します。

このアルゴリズムは、上位 k 個で見つかった関連サンプル項目の割合を表示できます。

アドバンテージ:

  • トップkが原理的に関連しているかどうかという疑問に答える
  • リクエストに対して安定して平均的

(4)mAP(平均精度)アルゴリズム

このアルゴリズムでは、検索結果の上部に関連サンプルの密度を表示できます。これは、検索エンジンによって読み取られるページ数が最小限のときに、検索エンジンのユーザーが受け取る情報の量と考えることができます。したがって、読んだページ数に対する情報量の比率が大きいほど、メトリックは高くなります。

アドバンテージ:

  • 検索品質の客観的かつ安定した評価
  • 精度再現率曲線の 1 桁表現には、豊富な分析情報が含まれています。

欠点:

  • リクエストに関連付けられたサンプルの総数がわかっている必要があります(関連するすべてのサンプルが最初にマークされていない場合は問題が発生する可能性があります)

ヒント: mAP アルゴリズムの出力の詳細については、https://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-ranked-retrieval-results-1.html を参照してください。

(4)nDCG(正規化累積ゲイン)アルゴリズム

上記の式では、

パラメータ RELk は、位置 k より前の関連サンプル項目のリスト (関連性順にソート) を示します。パラメータ ri は、次のことを示します。

検索結果の i 番目の項目の丸められた真実関連性スコア。

このメトリックは、上位 k の要素がどれだけ正しく順序付けられているかを示します。これは、上記の方法の中で要素の順序を考慮する唯一のメトリック アルゴリズムであるため、その利点と欠点については詳しく説明しません。しかし、研究によれば、順序を考慮する必要がある場合、メトリック アルゴリズムは非常に安定しており、ほとんどの場合に適用可能であることが示されています。

2. アルゴリズムの全体的な評価

(1)マクロ:リクエストごとにメトリックを計算し、すべてのリクエストの平均を算出します。

  • 利点: このクエリに関連付けられたデータの量の違いによる大きな変動はありません。
  • デメリット: 一部のクエリが他のクエリよりも関連性が高い場合でも、すべてのクエリが同等とみなされます。

(2)ミクロ的側面:すべてのクエリにおいて、マークされた関連性の数と個別に見つかった関連性の数を合計し、対応するメトリックの計算に使用します。

  • 利点: クエリを評価するときに、各クエリに関連付けられているタグの数が考慮されます。
  • デメリット: リクエスト内にタグ付けされた関連メトリックが多数あり、システムがそれらを最上位に表示できなかったり、表示に成功しなかったりすると、メトリックの計算結果が非常に低くなったり、非常に高くなったりする可能性があります。

3. システム検証

この記事のアルゴリズムについては、読者は次の 2 つの検証スキームを採用することをお勧めします。

(1)一連のクエリと選択された関連クエリに基づく検証

入力: 画像リクエストとそれに関連する画像、およびこのクエリに関連するタグがリスト形式で存在します。メトリックを計算するには、各要素の相関行列を計算し、要素相関のバイナリ情報に基づいて計算を実行します。

(2)フルベース検証

このアルゴリズムへの入力には、画像リクエストとそれに関連付けられた画像が含まれます。また、画像検証データベースも必要です。理想的には、関連するすべてのクエリがその中でラベル付けされます。さらに、データベースにはクエリ画像が含まれていてはなりません。そうしないと、このクラスの画像がトップ 1 レイヤーでブロックされないように、検索フェーズ中にクリーンアップする必要があります。さらに、検証ベースとして一連の否定例が提供されています。私たちのタスクは、それらに関連するものを見つけることです。

メトリックを計算するには、すべてのリクエストを反復処理し、すべての要素 (依存要素を含む) までの距離を計算して、それらをメトリック計算関数に送信します。

完了したプロジェクトの例

ある企業が別の企業のブランド ロゴ要素を使用するべきかどうかをめぐって、企業間で紛争が発生することがよくあります。この場合、弱いメーカーが成功している大手ブランドに寄生し、同様のシンボルを使用して自社の製品やサービスを宣伝しようとします。しかし、消費者もこれに影響を受けます。信頼できる製造元からチーズを購入したいと思っても、ラベルを注意深く読まず、偽造製造元から偽造品を誤って購入してしまう可能性があります。最近の事例としては、Apple が Prepear のロゴ商標をブロックしようとしたケースがあります (https://www.pcmag.com/news/apple-is-attempting-to-block-a-pear-logo-trademark)。

そのため、違法な移植を取り締まる専門の政府機関や民間企業が存在します。商標登録局は登録商標の登録簿を管理しており、それに基づいて出願された商標が比較され、最終的に商標登録申請を承認するか拒否するかを決定します。上記は、WIPO (https://www3.wipo.int/branddb/en/) システム インターフェースの典型的な使用例です。このようなシステムでは、類似画像検索機能が非常に便利で、関連する専門家が類似画像をより迅速に検索するのに役立ちます。

1. システム応用例

私たちが開発したシステムでは、インデックスされた画像データベースに何百万もの商標が登録されています。以下に示す最初の画像はクエリ結果の表示であり、次の行 (2 番目の画像) は予想される関連画像のリストを示し、残りの行の画像は検索エンジンによって関連性の降順で表示された検索結果です。

翻訳者紹介

Zhu Xianzhong 氏は、51CTO のコミュニティ エディターであり、51CTO の専門ブロガー兼講師であり、濰坊の大学のコンピューター教師であり、フリーランス プログラミング コミュニティのベテランです。初期にはさまざまな Microsoft テクノロジに注力し (ASP.NET AJX および Cocos 2d-X に関連する 3 冊の技術書を編纂)、オープンソースの世界に 10 年近く携わってきました (人気のフルスタック Web 開発テクノロジに精通)。OneNet/AliOS+Arduino/ESP32/Raspberry Pi をベースとした IoT 開発テクノロジや、Scala+Hadoop+Spark+Flink などのビッグデータ開発テクノロジを理解しています。

原題:類似画像を見つけるための画像検索エンジンの構築方法、著者: EORA

<<:  クラウド コンピューティングにおいて人工知能はどのような役割を果たすことができますか?

>>:  AI技術の自立を実現するために、国内のディープラーニングフレームワークは3つの大きな課題に直面している

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

弱電産業におけるAIの応用動向

近年、セキュリティ業界では、デジタル化された人工知能の学習および認識技術の概念がかなり普及しています...

よく使われる4つの推奨アルゴリズムの一覧

[[416976]]この記事はWeChatの公開アカウント「Big Data DT」から転載したもの...

モノのインターネットにおける人工知能の主要技術と手法

人工知能は、IoT の機能を実現する上で重要な役割を果たします。 AI と IoT の融合を推進し、...

防衛分野で人工知能はどのような役割を果たすのでしょうか?

調査によると、人工知能技術は勢いを増しており、防衛産業にとって極めて重要であることが分かっています。...

マイクロソフトの新しい AI テクノロジー: プロフィール写真を動かして感情を「伝える」

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...

7BモデルはGPT4-Vを超えます! HKUST などが「グラフ推論質問回答」データセットを公開 GITQA: 視覚的なグラフは推論能力を向上させることができます

グラフ ニューラル ネットワーク (GNN) は、グラフの構造情報を推論に活用するのに優れていますが...

...

顔認識技術の現状と今後の開発動向

顔認識は、一般的に肖像認識または顔認識とも呼ばれ、顔の特徴に基づいて人物を識別する生体認証技術です。...

電源なしで形を変えるソフトロボット「ロールボット」

海外メディアの報道によると、ハーバード大学ジョン・A・ポールソン工学・応用科学大学院(SEAS)とカ...

人工知能と機械学習の違いは何ですか?

[[197626]]人工知能は新しい用語ではなく、その開発の歴史は数十年にわたります。それは 19...

エッジコンピューティングは産業界でどのような用途に使われていますか?

エッジ コンピューティングは、モバイル コンピューティングとモノのインターネット (IoT) テクノ...

対称暗号化、非対称暗号化、ハッシュアルゴリズムについてお話ししましょう

[[327803]]対称暗号化対称キー暗号化とは何ですか?対称暗号化は、対称暗号コーディング技術を...

データ センターはリモート ワークプレイスをどのようにサポートできるでしょうか?

COVID-19の時代となり、さまざまな業界や組織でリモートワークが始まっています。企業は、遠隔地...

...