(57)【特許請求の範囲】
【請求項１】
コンテンツ認識型ハッシュ関数に少なくとも部分的に基づいて、１以上のコンピューティングデバイスが、第１のイメージに関連付けられるラージハッシュ値を生成する工程と、
前記ラージハッシュ値および局所性鋭敏型ハッシュ関数に少なくとも部分的に基づいて、１以上のコンピュータが、スモールハッシュ値を生成する工程と、
１以上のコンピューティングデバイスが、前記スモールハッシュ値と、１以上のイメージに関連付けられている第１のクラスタセンタとの間の距離を計算する工程と、
計算された前記距離がしきい値の距離よりも長い場合、１以上のコンピューティングデバイスが、前記第１のイメージと前記１以上のイメージとが類似しないと決定する工程と、を含む、方法。
【請求項２】
決定された前記距離が前記しきい値の距離よりも長い場合、第２のクラスタセンタを作成する工程をさらに含む、請求項１に記載の方法。
【請求項３】
決定された前記距離が前記しきい値の距離よりも長い場合、前記第１のイメージを前記第２のクラスタセンタに関連付ける工程をさらに含む、請求項２に記載の方法。
【請求項４】
決定された前記距離が前記しきい値の距離よりも短い場合、前記第１のイメージと前記１以上のイメージとが類似すると決定する工程をさらに含む、請求項１に記載の方法。
【請求項５】
決定された前記距離が前記しきい値の距離よりも短い場合、前記第１のイメージを前記第１のクラスタセンタに関連付ける工程をさらに含む、請求項４に記載の方法。
【請求項６】
前記スモールハッシュ値が関連付けられているバケットを識別する工程と、
前記バケットに関連付けられている１以上のクラスタセンタを識別する工程であって、前記１以上のクラスタセンタは前記第１のクラスタセンタを含む、工程と、
前記スモールハッシュ値を前記１以上のクラスタセンタと比べて評価する工程と、をさらに含む、請求項１に記載の方法。
【請求項７】
複数のバケットを識別する工程と、
前記複数のバケットに関連付けられている１以上のクラスタセンタを識別する工程であって、前記１以上のクラスタセンタは前記第１のクラスタセンタを含む、工程と、
前記スモールハッシュ値を前記１以上のクラスタセンタと比べて評価する工程と、をさらに含む、請求項１に記載の方法。
【請求項８】
前記複数のバケットは、前記スモールハッシュ値に隣接する所定の数のバケットを含む、請求項７に記載の方法。
【請求項９】
隣接するバケットの前記所定の数は２ｄであり、ｄは、前記スモールハッシュ値に関する座標系の次元数である、請求項８に記載の方法。
【請求項１０】
前記局所性鋭敏型ハッシュ関数によって、前記ラージハッシュ値の次元数が所定の次元数へ減少される、請求項１に記載の方法。
【請求項１１】
前記しきい値の距離はプログラム可能である、請求項１に記載の方法。
【請求項１２】
バケットを複数のクラスタセンタに関連付ける工程と、
前記複数のクラスタセンタの各クラスタセンタを、類似すると判断された１以上のイメージに関連付ける工程と、をさらに含む、請求項１に記載の方法。
【請求項１３】
決定された前記距離が前記しきい値の距離よりも短い場合、前記第１のイメージを前記第１のクラスタセンタに関連付ける工程と、
前記第１のクラスタセンタの識別に基づいて前記第１のイメージおよび前記１以上のイメージの使用を制限する工程と、をさらに含む、請求項１に記載の方法。
【請求項１４】
１以上のプロセッサと、
前記１以上のプロセッサに結合されるメモリであって、前記１以上のプロセッサによって実行可能な命令を含む前記メモリと、を備え、
前記命令を実行すると、前記１以上のプロセッサは、
コンテンツ認識型ハッシュ関数に少なくとも部分的に基づいて、第１のイメージに関連付けられるラージハッシュ値を生成し、
前記ラージハッシュ値および局所性鋭敏型ハッシュ関数に少なくとも部分的に基づいて、スモールハッシュ値を生成し、
前記スモールハッシュ値と、１以上のイメージに関連付けられている第１のクラスタセンタとの間の距離を計算し、
計算された前記距離がしきい値の距離よりも長い場合、前記第１のイメージと前記１以上のイメージとが類似しないと決定するように動作する、システム。
【請求項１５】
ソフトウェアを具現化する１以上の非一時的コンピュータ可読記憶媒体であって、実行されると、
コンテンツ認識型ハッシュ関数に少なくとも部分的に基づいて、第１のイメージに関連付けられるラージハッシュ値を生成し、
前記ラージハッシュ値および局所性鋭敏型ハッシュ関数に少なくとも部分的に基づいて、スモールハッシュ値を生成し、
前記スモールハッシュ値と、１以上のイメージに関連付けられている第１のクラスタセンタとの間の距離を計算し、
計算された前記距離がしきい値の距離よりも長い場合、前記第１のイメージと前記１以上のイメージとが類似しないと決定するように動作する、媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、とりわけソーシャルネットワーキングシステム上のイメージ同士の間におけるイメージの類似性の決定のための方法、システムおよびコンピュータ記憶媒体に関する。
【背景技術】
【０００２】
ソーシャルネットワーキングウェブサイトまたはシステムは、メンバがその他のメンバとつながり、互いに通信する動的な環境を提供する。これらのウェブサイトは一般に、メンバ同士が、自らの既存のソーシャルネットワーク内で対話すること、ならびに新たなソーシャルネットワークを作成することを可能にするオンライン機構を提供する。メンバは、任意の個人またはその他のエンティティ、たとえば組織もしくは企業を含む。数ある属性の中でも、ソーシャルネットワーキングウェブサイトは、メンバ同士が、関連する情報を自らのソーシャルネットワークに効果的に効率よく通信することを可能にする。たとえば、メンバは、個人情報、職業情報、経歴情報、およびその他のパーソナライズされたコンテンツを、ウェブサイトのうちでそのメンバの専用とされている領域に投稿する。その他のメンバは、メンバのプロフィールを閲覧すること、または専用の検索を実行することによって、投稿されたコンテンツにアクセスする。
【０００３】
ソーシャルネットワーキングウェブサイトに投稿される１つのよくあるタイプのコンテンツは、イメージ、たとえば写真または任意の種類の絵であり、それらのイメージは通常、デジタルファイル、またはデジタル化された形式である。メンバは、個人情報を自分のソーシャルネットワークに通信するためにイメージをしばしば投稿する。たとえば、投稿されたイメージは、家族、友達、ロケーション、アイテム、および、メンバが関心を有するその他の任意の主題を示す場合がある。ソーシャルネットワーキングウェブサイトは通常、イメージの投稿を奨励し、それは個人情報の共有が、メンバ同士の間における通信を促進し、よって、ウェブサイトの潜在能力を実現する上で役立つからである。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特定のイメージは、ソーシャルネットワーキングウェブサイトが無数の理由から特別な関心を持つコンテンツを含む場合がある。たとえば、ソーシャルネットワーキングウェブサイトは、そのウェブサイトの利用規約またはその他のガイドラインに違反して別々のメンバによって同じ写真が繰り返し投稿されている場合には介入しようとする。別の例として、ソーシャルネットワーキングウェブサイトは、不適切なコンテンツを含んでいることがそのウェブサイトによって知られているイメージの投稿を制限しようとする。これらの種類の不適切なイメージを識別するために、不適切であると知られているイメージとの類似性または同一性を探してイメージ同士が比較される。不適切なイメージに類似するイメージが識別された場合、ソーシャルネットワーキングウェブサイトは、それらのイメージに対して適切なアクションを取る。しかしながら、ソーシャルネットワーキングウェブサイトによって維持されている多数のイメージ、および処理されるべき膨大なイメージデータ（たとえばピクセル）に起因して、イメージ比較を実行する際の計算費用は、かなりの額であり、ソーシャルネットワーキングウェブサイトおよびシステムは、類似するイメージを効率よく識別する際の技術的な難題に直面している。
【０００５】
したがって、本発明の目的は、イメージ比較における計算労力および計算リソースを減少させることである。とりわけ、本発明の目的は、たとえばソーシャルネットワーキングシステムにおけるような多数のイメージの類似性の比較および識別を、類似するイメージ
を見つけ出す際の十分な正確さを維持しながら可能にすることである。
【課題を解決するための手段】
【０００６】
この目的は、本発明の一態様において、請求項１の特徴を有する方法によって、本発明の別の態様において、請求項１４の特徴を有するシステムによって、本発明のさらなる態様において、請求項１５に記載のコンピュータ記憶媒体によって達成される。
【０００７】
とりわけソーシャルネットワーキングシステム上のイメージ同士の間における、イメージの類似性を決定するための請求項１に記載のコンピュータ実装された方法が提供され、少なくとも、１以上のプロセッサ、そしてまた通常は１以上のメモリを含むコンピュータシステムが、第１のイメージに関連付けられている第１の値と、１以上のイメージに関連付けられている第１のクラスタセンタとの間の距離を決定する工程と、決定された距離がしきい値の距離よりも長い場合、コンピュータシステムが、第１のイメージと１以上のイメージとが類似しないと決定する工程とを含む。
【０００８】
とりわけソーシャルネットワーキングシステム上のイメージ同士の間における、イメージの類似性を決定するための請求項１４に記載のシステムが提供され、１以上のプロセッサを有する１以上のコンピュータシステムと、本発明による方法を実行するよう１以上のプロセッサに指示するように構成される命令を記憶しているメモリとを含む。
【０００９】
実行されると、本発明によるコンピュータ実装された方法をコンピュータシステムまたはコンピュータシステムの１以上のプロセッサに実行させるコンピュータ実行可能命令を記憶するための請求項１５に記載のコンピュータ記憶媒体が提供される。
【００１０】
特許請求される本発明のさらなる実施形態において、１以上のプロセッサと、同１以上のプロセッサに、第１のイメージに関連付けられている第１の値と、１以上のイメージに関連付けられている第１のクラスタセンタとの間における距離を決定する工程、および決定された距離がしきい値の距離よりも長い場合、第１のイメージおよび１以上のイメージが類似しないと決定する工程を行うよう指示するように構成されている命令を記憶しているメモリとを含むシステムのうち、とりわけコンピュータシステムが提供される。
【００１１】
同様に特許請求される本発明のさらなる実施形態において、実行されると、コンピュータシステムに、第１のイメージに関連付けられている第１の値と、１以上のイメージに関連付けられている第１のクラスタセンタとの間における距離を決定する工程と、決定された距離がしきい値の距離よりも長い場合、第１のイメージおよび１以上のイメージが類似しないと決定する工程とを含むコンピュータ実装された方法を実行させるコンピュータ実行可能命令を記憶しているコンピュータ記憶媒体が提供される。
【００１２】
「クラスタセンタ」とは、詳細には、類似すると判断されたイメージ同士が関連付けられている座標系における点である。たとえば、空間検索モジュールは、類似する可能性のあるイメージに関連付けられたクラスタセンタを検索するために座標系における空間を決定する。「第１の値」とは、詳細には、ハッシュ値などの座標系における点である。「距離」は、詳細には、この座標系におけるノルムまたはメトリック、たとえばユークリッド距離またはノルム（ただし、それらには限定されない）に基づいて決定され、たとえば負の数以外の実数である。
【００１３】
コンテンツにおいて類似するまたは同じイメージの識別および管理を可能にするために、本発明の実施形態は、ソーシャルネットワーキングシステムによるイメージ同士の効率的な比較を提供する。イメージ同士が類似するとソーシャルネットワーキングシステムが決定した場合、それらの類似するイメージ同士が関連付けられる。類似するイメージ同士
の関連付けは、それらのイメージ上での管理アクションの実行を容易にする。管理アクションは、ソーシャルネットワーキングシステムによる特別な取り扱いを受けるコンテンツを有する特定のイメージの制御を含む。たとえば、別々のメンバが、特定の状況において、パーソナライズされた一意のコンテンツのみの投稿を奨励するまたは命じるソーシャルネットワーキングシステムのガイドラインに違反して、同じイメージを投稿する、または投稿しようと試みる場合がある。ソーシャルネットワーキングシステムは、そのガイドラインに従って、そのようなイメージの投稿を制限する。別の例として、あるイメージが、不適切なコンテンツを含んでいると判明した場合、ソーシャルネットワーキングシステムは、そのイメージのすべての投稿を防止または削除する。これらの管理アクションの有効性は、イメージの類似性の決定を通じてイメージのすべてのインスタンスを識別できることに基づく。
【００１４】
有利な、好ましい、および／または特定の実施形態は、とりわけ従属請求項において特許請求されている。従属請求項のすべての特徴は、本発明のいずれの態様に従っても、方法に関して、システムに関して、ならびに手段に関して等しく特許請求される。
【００１５】
本発明の一実施形態において、決定された距離がしきい値の距離よりも長い場合、第２のクラスタセンタが作成される。とりわけ、決定された距離がしきい値の距離よりも長い場合、第１のイメージが、第２のクラスタセンタに関連付けられる。
【００１６】
好ましい一実施形態において、決定された距離がしきい値の距離よりも短い場合、第１のイメージおよび１以上のイメージが類似すると決定される、または判断される。とりわけ、決定された距離がしきい値の距離よりも短い場合、第１のイメージが、第１のクラスタセンタに関連付けられる。
【００１７】
別の有利な実施形態において、第１の値が関連付けられているバケットが識別され、そのバケットに関連付けられた少なくとも１つのクラスタセンタが識別され、１以上のクラスタセンタは、第１のクラスタセンタを含み、第１の値は、１以上のクラスタセンタと比べて評価される。
【００１８】
「バケット」とは、詳細には、ある座標系または上記の座標系の最小単位である。たとえば、バケットは、一次元座標系における最小セグメント、二次元座標系における最小正方形、または三次元座標系における最小立方体である。
【００１９】
さらなる一実施形態において、複数のバケットが識別され、それらの複数のバケットに関連付けられた少なくとも１つのクラスタセンタが識別され、その少なくとも１つのクラスタセンタは、第１のクラスタセンタを含み、第１の値は、少なくとも１つのクラスタセンタと比べて評価される。
【００２０】
複数のバケットは、とりわけ、第１の値のスモールハッシュ値に隣接する所定の数のバケットを含み、とりわけ、隣接するバケットの所定の数は２ｄであり、ｄは、第１の値に関する座標系の次元数である。
【００２１】
好ましい一実施形態において、第１のイメージに関連付けられた第１の値のスモールハッシュ値を量子化する工程、その量子化されたスモールハッシュ値に基づいて少なくとも１つのバケットを識別する工程、およびその少なくとも１つのバケットに基づいて第１のイメージに類似するイメージを検索する工程という特徴が提供される。
【００２２】
第１のイメージに関連付けられた第１の値は、ラージハッシュ値およびスモールハッシュ値のうちの少なくとも１つである。
とりわけイメージ比較のために、およびとりわけラージハッシングモジュールを用いて、イメージに関する「ラージ」ハッシュ値（これは、その他のイメージとの類似性について検査される）が計算される。ラージハッシュ値とは、ビットによって表されるピクセルを含むイメージの表現である。ラージハッシュ値は、値のセットを含む。本発明の一実施形態において、第１のイメージに関するラージハッシュ値は、第１のイメージに適用されるコンテンツ認識型ハッシュ関数に基づいて決定または計算される。
【００２３】
好ましくは、第１のイメージに関するスモールハッシュ値の決定は、第１のイメージに関するラージハッシュ値に適用されるスモールハッシュ関数に基づき、とりわけ、そのスモールハッシュ関数は、ラージハッシュ値の次元数を所定の次元数へ減少させる。好ましくは、スモールハッシュ関数は、局所性鋭敏型ハッシュ関数である。
【００２４】
「ハッシュ関数」とは、詳細には、（多くの情報ビットを含む）入力値を受け取って、その入力値を（その入力値よりも少ないビットを含む）ハッシュ値にマッピングする関数である。イメージに関して使用されるいくつかのハッシュ関数は、「コンテンツ認識型」である。コンテンツ認識型であるハッシュ関数が有する特徴としては、２つのイメージがコンテンツにおいて類似する場合、それらのイメージと、類似したハッシュ値とのマッピングが行われる。
【００２５】
したがって、本発明の一実施形態において、あり得るイメージの類似性を決定するために、新たなイメージに関するラージハッシュ値が、たとえば、そのイメージにコンテンツ認識型ハッシュ関数を適用することによって生成される。次いで、そのイメージに関するスモールハッシュ値が、ラージハッシュ値に局所性鋭敏型ハッシュを適用することによって生成される。
【００２６】
「局所性鋭敏型ハッシュ」は、対応する座標系にマッピングする１つまたは複数のベクトル上へのラージハッシュ値の射影を含む。そのような射影は、次元数ｋから次元数ｄへのラージハッシュ値の減少を含む。ｄ次元座標系のそれぞれのベクトルは、スモールハッシュ値が収められるバケットを形成する複数のセグメントへと分けられる。計算費用に対処するために、局所性鋭敏型ハッシュが使用される。より少ない次元を有する「スモール」ハッシュ値を得るために、相対的に多数の次元を有するラージハッシュ値に局所性鋭敏型ハッシュが適用される。たとえば、局所性鋭敏型ハッシュは、数百の次元を有するラージハッシュ値をハッシュして、少ない（たとえば、２または３の）次元を有するスモールハッシュ値を得る。スモールハッシュ値は、少ない値を含むことができ、その一方でラージハッシュ値は、多くの値を含む。
【００２７】
局所性鋭敏型ハッシュにおける次元数の減少は、情報の喪失をもたらし、スモールハッシュ値の対応するイメージ同士が実際には異なっていても、スモールハッシュ値同士が類似する確率が増大する。したがって、別々のイメージが類似すると誤って判断される場合があり、それは、それらのスモールハッシュ値同士が類似するか、または同じバケット内に収まるからである。このタイプの誤りは、しばしば「フォルスポジティブ」と呼ばれる。さらに、バケットの境界を決定する任意の座標定義に基づいて、類似するイメージ同士が異なると誤って判断される場合があり、それは、それらのスモールハッシュ値同士が、別々のバケット内に収まるからである。このタイプの誤りは、しばしば「フォルスネガティブ」と呼ばれる。
【００２８】
本発明の一実施形態において、フォルスポジティブの問題に対処する。スモールハッシュ値が収まるバケットに関連付けられた既存のクラスタセンタが識別される。既存のクラスタセンタとは、とりわけソーシャルネットワーキングシステムによって、既存のイメージに関して既に作成されて記憶されているクラスタセンタである。とりわけソーシャルネ
ットワーキングシステムによって、記憶されているすべてのクラスタセンタを考慮する代わりに、そのバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。検索空間の減少は、イメージ同士の比較における計算効率を提供する。
【００２９】
そのバケットに関連付けられた既存のクラスタセンタがない場合、新たなイメージに関する新たなクラスタセンタが作成され、スモールハッシュ値の座標を与えられる。次いで、新たなイメージが、その新たなクラスタセンタに関連付けられる。逆に、そのバケットに関連付けられた少なくとも１つの既存のクラスタセンタがある場合、スモールハッシュ値と、それぞれの既存のクラスタセンタとの間における距離が決定される。スモールハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも長い場合、新たなイメージは、その既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いで、新たなイメージに関する新たなクラスタセンタが作成され、新たなイメージが、その新たなクラスタセンタに関連付けられる。したがって、イメージ同士が類似すると判断されない場合、複数のクラスタセンタが作成されて、そのバケットに関連付けられる。スモールハッシュ値から少なくとも１つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短い場合、新たなイメージのスモールハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断され、その新たなイメージは、識別された既存のクラスタセンタに関連付けられる。
【００３０】
本発明の一実施形態において、フォルスネガティブの問題に対処する。スモールハッシュ値に近いバケットが識別される。識別されるバケットは、スモールハッシュ値に隣接しているバケットで、かつスモールハッシュ値に最も近い座標系における交点をその交点のうちの１つとして有するバケットである。スモールハッシュ値に近いバケットは、その他の様式で識別されることも可能である。識別されたバケットに関連付けられているすべての既存のクラスタセンタが識別される。ソーシャルネットワーキングシステムによって記憶されているすべてのクラスタセンタを考慮する代わりに、スモールハッシュ値に近いバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。検索空間の減少は、イメージ同士の比較におけるさらなる計算効率を提供する。
【００３１】
識別されたバケットのうちのいずれかに関連付けられた既存のクラスタセンタがない場合、新たなイメージに関する新たなクラスタセンタが作成され、スモールハッシュ値の座標を与えられる。次いで、新たなイメージが、その新たなクラスタセンタに関連付けられる。逆に、識別されたバケットに関連付けられた少なくとも１つの既存のクラスタセンタがある場合、スモールハッシュ値と、それぞれの既存のクラスタセンタとの間における距離が決定される。スモールハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも長い場合、新たなイメージは、その既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いで、新たなイメージに関する新たなクラスタセンタが作成され、新たなイメージが、その新たなクラスタセンタに関連付けられる。スモールハッシュ値から少なくとも１つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短い場合、新たなイメージのスモールハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。新たなイメージは、識別された既存のクラスタセンタに関連付けられることが可能であり、その新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断される。
【００３２】
一実施形態において、スモールハッシュ値を用いて、関連するバケットが識別されると、クラスタセンタを作成するために、またはイメージの類似性の評価において、識別されたバケットに関連付けられた既存のクラスタセンタと比較するために、スモールハッシュ
値の代わりにラージハッシュ値が使用される。
【００３３】
一実施形態において、バケットを複数のクラスタセンタに関連付ける工程、およびそれらの複数のクラスタセンタのそれぞれのクラスタセンタを、類似すると判断された少なくとも１つのイメージに関連付ける工程という特徴が提供される。しきい値の距離は、プログラムできること、またはさまざまな値に設定される。
【００３４】
本発明の好ましい一実施形態において、決定された距離がしきい値の距離よりも短い場合、第１のイメージを第１のクラスタセンタに関連付ける工程、ならびに、第１のクラスタセンタの識別に基づいて第１のイメージおよび少なくとも１つのイメージの、とりわけソーシャルネットワーキングシステム内における使用を制限する、たとえば、ソーシャルネットワーキングシステムにおけるイメージの投稿を制限、防止、または削除する工程という特徴が提供される。
【００３５】
本発明の一実施形態において、関連付けられたクラスタセンタの識別に基づいてイメージの使用を制限するために管理アクションが取られる。たとえば、あるイメージが不適切である、またはその他の形でソーシャルネットワーキングシステムによる特別な取り扱いを受けると判断された場合、そのイメージに関連付けられたクラスタセンタが識別される。次いで、そのクラスタセンタに関連付けられたすべてのイメージが識別される。そのように識別されると、それらのイメージは、ソーシャルネットワーキングシステムから取り下げられる。別の例として、あるイメージが不適切であると判断された場合、そのイメージに関連付けられたクラスタセンタが識別される。そのクラスタセンタがそのように識別されると、そのクラスタセンタに関連付けられるその後のすべてのイメージが、ソーシャルネットワーキングシステムにアップロードされることが不可能となる。
【００３６】
本発明のその他の多くの特徴および実施形態は、添付の図面から、および下記の詳細な説明から明らかになるであろう。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施形態によるソーシャルネットワーキングシステムに関連したイメージの類似性を決定するためのシステムのネットワークを示す図。
【図２】本発明の一実施形態によるソーシャルネットワーキングシステムを示す図。
【図３Ａ】本発明の一実施形態による、ベクトル上へのイメージのラージハッシュ値の射影を示す図。
【図３Ｂ】本発明の一実施形態による、ベクトル上へのイメージのラージハッシュ値の射影を示す図。
【図４Ａ】本発明の一実施形態による、フォルスポジティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図４Ｂ】本発明の一実施形態による、フォルスポジティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図４Ｃ】本発明の一実施形態による、フォルスポジティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図４Ｄ】本発明の一実施形態による、フォルスポジティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図４Ｅ】本発明の一実施形態による、フォルスポジティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図５】本発明の一実施形態による、図４Ａ〜図４Ｅに関連して記述されているバケット、クラスタセンタ、およびイメージに関する関連付けを表す図。
【図６】本発明の一実施形態による、フォルスポジティブを減少させるようにイメージの類似性を決定するためのプロセス。
【図７Ａ】本発明の一実施形態による、フォルスネガティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図７Ｂ】本発明の一実施形態による、フォルスネガティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図７Ｃ】本発明の一実施形態による、フォルスネガティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図７Ｄ】本発明の一実施形態による、フォルスネガティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図７Ｅ】本発明の一実施形態による、フォルスネガティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図７Ｆ】本発明の一実施形態による、フォルスネガティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図７Ｇ】本発明の一実施形態による、フォルスネガティブを考慮するためのイメージの局所性鋭敏型ハッシュおよび関連するマッピングのグラフ表示。
【図８】本発明の一実施形態による、図７Ａ〜図７Ｇに関連して記述されているバケット、クラスタセンタ、およびイメージに関する関連付けを表す図。
【図９】本発明の一実施形態による、フォルスネガティブを減少させるようにイメージの類似性を決定するためのプロセス。
【図１０Ａ】本発明の一実施形態によるソーシャルネットワーキングシステムによって実行される管理アクションを示す図。
【図１０Ｂ】本発明の一実施形態によるソーシャルネットワーキングシステムによって実行される管理アクションを示す図。
【図１１】本発明の一実施形態による、イメージの使用を制限するためのプロセス。
【図１２】本発明の一実施形態によるコンピュータシステムを示す図。
【発明を実施するための形態】
【００３８】
これらの図は、例示のみの目的で本発明のさまざまな実施形態を示しており、これらの図は、同様の要素を識別するために同様の参照番号を使用している。本明細書において記述されている本発明の原理から逸脱することなく、本明細書に示される構造および方法の代替実施形態が採用されることを当業者であれば下記の記載から容易に認識されるであろう。
【００３９】
ソーシャルネットワーキングシステム−概略紹介
図１は、本発明の一実施形態によるソーシャルネットワーキングシステム１３０に関連したイメージの類似性を決定するためのシステム１００のネットワークを示す図である。システム１００は、１つまたは複数のユーザデバイス１１０と、１つまたは複数の外部システム１２０と、ソーシャルネットワーキングシステム１３０と、ネットワーク１４０とを含む。例示の目的で、図１によって示されるシステム１００の実施形態は、単一の外部システム１２０と、単一のユーザデバイス１１０とを含んでいる。しかしながら、その他の実施形態において、システム１００は、より多くのユーザデバイス１１０、および／またはより多くの外部システム１２０を含む。特定の実施形態において、ソーシャルネットワーキングシステム１３０は、ソーシャルネットワークプロバイダによって運営され、その一方で外部システム１２０は、異なるエンティティによって運営されるという点でソーシャルネットワーキングシステム１３０とは別個のものである。しかしながら、さまざまな実施形態において、ソーシャルネットワーキングシステム１３０および外部システム１２０は、ソーシャルネットワーキングサービスをソーシャルネットワーキングシステム１３０のユーザ（またはメンバ）に提供するために連携して機能する。この意味において、ソーシャルネットワーキングシステム１３０は、プラットフォームまたはバックボーンを提供し、外部システム１２０などのその他のシステムは、そのプラットフォームまたはバックボーンを使用して、インターネットを通じてソーシャルネットワーキングサービスお
よび機能をユーザに提供する。
【００４０】
ユーザデバイス１１０は、ユーザから入力を受け取ることが可能な、ならびにネットワーク１４０を通じてデータを送ることおよび受け取ることが可能な１つまたは複数のコンピューティングデバイスを含む。一実施形態において、ユーザデバイス１１０は、たとえば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）に準拠したオペレーティングシステム（ＯＳ）、Ａｐｐｌｅ（登録商標）ＯＳ  Ｘ、および／またはＬｉｎｕｘ（登録商標）ディストリビューションを実行する従来のコンピュータシステムである。別の実施形態において、ユーザデバイス１１０は、コンピュータ機能を有するデバイス、たとえば、スマートフォン、タブレット、携帯情報端末（ＰＤＡ）、移動体電話などである。ユーザデバイス１１０は、ネットワーク１４０を通じて通信を行うように構成されている。ユーザデバイス１１０は、ユーザデバイス１１０のユーザがソーシャルネットワーキングシステム１３０と対話することを可能にするアプリケーション、たとえば、ブラウザアプリケーションを実行する。別の実施形態において、ユーザデバイス１１０は、ｉＯＳおよびＡＮＤＲＯＩＤ（登録商標）など、ユーザデバイス１１０のネイティブオペレーティングシステム上で動作するアプリケーションプログラミングインタフェース（ＡＰＩ）を通じてソーシャルネットワーキングシステム１３０と対話する。ユーザデバイス１１０は、ネットワーク１４０を通じて外部システム１２０およびソーシャルネットワーキングシステム１３０と通信するように構成されており、ネットワーク１４０は、有線通信システムおよび／または無線通信システムを使用する、ローカルエリアネットワークおよび／またはワイドエリアネットワークの任意の組合せを含む。
【００４１】
一実施形態において、ネットワーク１４０は、標準通信技術および／または標準プロトコルを使用する。したがって、ネットワーク１４０は、イーサネット（登録商標）、８０２．１１、ワールドワイドインターオペラビリティーフォーマイクロウェーブアクセス（ＷｉＭＡＸ）、３Ｇ、４Ｇ、ＣＤＭＡ、ＧＳＭ（登録商標）、ＬＴＥ、デジタルサブスクライバーライン（ＤＳＬ）等などの技術を使用するリンクを含む。同様に、ネットワーク１４０上で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）、トランスミッション制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、ハイパーテキストトランスポートプロトコル（ＨＴＴＰ）、シンプルメールトランスファープロトコル（ＳＭＴＰ）、およびファイルトランスファープロトコル（ＦＴＰ）を含む。ネットワーク１４０を通じてやり取りされるデータは、ハイパーテキストマークアップ言語（ＨＴＭＬ）および拡張マークアップ言語（ＸＭＬ）を含む技術および／または形式を使用して表される。加えて、すべてまたはいくつかのリンクは、セキュアソケットレイヤ（ＳＳＬ）、トランスポートレイヤセキュリティ（ＴＬＳ）、およびインターネットプロトコルセキュリティ（ＩＰｓｅｃ）などの従来の暗号化技術を使用して暗号化される。
【００４２】
一実施形態において、ユーザデバイス１１０は、ブラウザアプリケーション１１２を使用して外部システム１２０から、およびソーシャルネットワーキングシステム１３０から受け取られたマークアップ言語ドキュメント１１４を処理することによって、外部システム１２０からの、および／またはソーシャルネットワーキングシステム１３０からのコンテンツを表示する。マークアップ言語ドキュメント１１４は、コンテンツ、およびそのコンテンツの形式または提示の体裁について記述する１つまたは複数の命令を識別する。マークアップ言語ドキュメント１１４内に含まれている命令を実行することによって、ブラウザアプリケーション１１２は、マークアップ言語ドキュメント１１４によって記述されている形式または提示の体裁を使用して、識別されたコンテンツを表示する。たとえば、マークアップ言語ドキュメント１１４は、外部システム１２０およびソーシャルネットワーキングシステム１３０から取り出されたテキストおよび／またはイメージデータを含む複数のフレームを有するウェブページを生成および表示するための命令を含む。さまざま
な実施形態において、マークアップ言語ドキュメント１１４は、拡張マークアップ言語（ＸＭＬ）データ、拡張ハイパーテキストマークアップ言語（ＸＨＴＭＬ）データ、またはその他のマークアップ言語データを含むデータファイルを含む。加えて、マークアップ言語ドキュメント１１４は、外部システム１２０とユーザデバイス１１０との間におけるデータ交換を容易にするために、ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔ（登録商標）Ｏｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）データ、ＪＳＯＮＰ（ＪＳＯＮ  ｗｉｔｈ  ｐａｄｄｉｎｇ）、およびＪａｖａＳｃｒｉｐｔデータを含む。ユーザデバイス１１０上のブラウザアプリケーション１１２は、そのようなマークアップ言語ドキュメント１１４をデコードするためにＪａｖａＳｃｒｉｐｔコンパイラを使用する。
【００４３】
一実施形態において、ユーザデバイス１１０はまた、ユーザデバイス１１０のユーザがソーシャルネットワーキングシステム１３０内に記録されているか否かを示すデータを含む１つまたは複数のクッキー１１６を含み、それは、ソーシャルネットワーキングシステム１３０からユーザデバイス１１０へ通信されるデータのカスタム化を可能にする。
【００４４】
外部システム１２０は、ネットワーク１４０を使用してユーザデバイス１１０へ通信される１つまたは複数のウェブページ１２２ａ、１２２ｂを含む１つまたは複数のウェブサーバを含む。外部システム１２０は、ソーシャルネットワーキングシステム１３０とは別個のものである。たとえば、外部システム１２０は、第１のドメインに関連付けられており、その一方で、ソーシャルネットワーキングシステム１３０は、別のソーシャルネットワーキングドメインに関連付けられている。外部システム１２０内に含まれているウェブページ１２２ａ、１２２ｂは、コンテンツを識別する、および識別されたコンテンツの形式または提示の体裁を明示する命令を含むマークアップ言語ドキュメントを含む。
【００４５】
ソーシャルネットワーキングシステム１３０は、１つまたは複数のコンピューティングデバイスを含み、複数のユーザを含むソーシャルネットワークまたは「ソーシャルグラフ」を記憶し、ソーシャルネットワークのユーザが、ソーシャルネットワークのその他のユーザと通信および対話をすることができるようにする。ソーシャルネットワーキングシステム１３０について、以下にさらに記述する。使用に際して、ユーザは、ソーシャルネットワーキングシステム１３０に加入し、次いで、自らがつながりたいと望むソーシャルネットワーキングシステム１３０のその他の任意の数のユーザにつながりを付加する。本明細書において使用される場合、「友達」という用語は、ユーザがソーシャルネットワーキングシステム１３０を通じて、つながり、関連付け、または関係を形成するソーシャルネットワーキングシステム１３０のその他の任意のユーザを示す。
【００４６】
つながりは、ユーザによって明示的に付加されることが可能であり、またはユーザ同士の共通の特徴（たとえば、同じ教育機関の卒業生であるユーザ同士）に基づいてソーシャルネットワーキングシステム１３０によって自動的に作成される。たとえば、第１のユーザが、その他の特定のユーザを、友達であるとして特に選択する。ソーシャルネットワーキングシステム１３０におけるつながりは、通常は双方向であるが、そうである必要はなく、したがって「ユーザ」および「友達」という用語は、参照構造に依存する。ソーシャルネットワーキングシステム１３０のユーザ同士の間におけるつながりは、通常は双方向の（「二方向の」）、または「相互の」ものであるが、つながりは、一方的な、または「一方向の」ものであることも可能である。たとえば、ボブとジョーが両方ともソーシャルネットワーキングシステム１３０のユーザであって、互いにつながっている場合、ボブとジョーは、互いにとってのつながりである。その一方で、ボブが、ジョーによってソーシャルネットワーキングシステムに通信されたデータを見るためにジョーにつながりたいと望んでいるが、ジョーは、相互のつながりを形成することを望んでいない場合、一方的なつながりが確立される。ユーザ同士の間におけるつながりは、直接のつながりであるが、ソーシャルネットワーキングシステムのいくつかの実施形態は、つながりが、１つもしく
は複数のレベルのつながりまたは１つもしくは複数の度合いの分離を通じて間接的であることを可能にする。
【００４７】
ユーザ同士の間におけるつながりを確立することおよび維持すること、ならびにユーザ同士の間における対話を可能にすることに加えて、ソーシャルネットワーキングシステム１３０は、ソーシャルネットワーキングシステム１３０によってサポートされるさまざまなタイプのアイテムに関してユーザがアクションを取るようにする。これらのアイテムは、ソーシャルネットワーキングシステムのユーザが属するグループまたはネットワーク（この場合、ここでの「ネットワーク」とは、物理的な通信ネットワークではなく、むしろ人々、エンティティ、およびコンセプトのソーシャルネットワークを示す）、ユーザが関心を抱くイベントまたはカレンダへのエントリ、ユーザがソーシャルネットワーキングシステム１３０を通じて使用するコンピュータベースのアプリケーション、ユーザがサービスを通じてアイテムを購入または販売することを可能にする取引、ならびにユーザがソーシャルネットワーキングシステムの上でまたは外で実行する広告との対話を含む。これらは、ユーザがソーシャルネットワーキングシステム上で作用するアイテムのうちのほんの数例であり、その他の多くのアイテムが可能である。ユーザは、ネットワーク１４０を通じてソーシャルネットワーキングシステム１３０に結合されている、ソーシャルネットワーキングシステム１３０において、またはソーシャルネットワーキングシステム１３０とは別個の外部システム１２０において表される任意のものと対話する。
【００４８】
ソーシャルネットワーキングシステム１３０は、さまざまなエンティティ同士をリンクさせることも可能である。たとえば、ソーシャルネットワーキングシステム１３０は、ユーザがＡＰＩまたはその他の通信チャネルを通じて互いにおよび外部システム１２０またはその他のエンティティと対話することを可能にする。ソーシャルネットワーキングシステム１３０は、複数のエッジによって相互につながっている複数のノードを含む「ソーシャルグラフ」を生成および維持する。ソーシャルグラフ内のそれぞれのノードは、別のノードに作用することが可能な、および／または別のノードによって作用されることが可能なエンティティを表す。ソーシャルグラフは、さまざまなタイプのノードを含む。ノードのタイプの例として、ユーザ、人間以外のエンティティ、コンテンツアイテム、ウェブページ、グループ、イベント、メッセージ、コンセプト、および、ソーシャルネットワーキングシステム１３０内のオブジェクトによって表されるその他の任意のものが含まれる。ソーシャルグラフ内のノードのその他のタイプは、ソーシャルネットワーキングシステム１３０によるイメージの類似性の決定に関連する。以下にさらに詳細に記述されるように、これらのノードタイプは、イメージ、イメージのハッシュ値が収まる座標系におけるバケット、類似するイメージ同士をグループ化するクラスタセンタ、ならびにイメージにリンクされているユーザを含む。ソーシャルグラフ内の２つのノードの間におけるエッジは、それらの２つのノードの間における特定の種類のつながりまたは関連付けを表し、そのつながりまたは関連付けは、ノードの関係から、またはそれらのノードのうちの一方によって他方のノードに対して実行されたアクションから生じる。たとえば、第１のユーザが第２のユーザを友達として識別した場合、第１のユーザを表すノードと、第２のユーザを表す第２のノードとをつなげるソーシャルグラフ内のエッジが生成される。さまざまなノード同士は互いに関係または対話するため、ソーシャルネットワーキングシステム１３０は、それらのさまざまなノード同士をつなげているエッジを修正して、それらの関係および対話を反映する。
【００４９】
ノードの関係のさらなる例は、イメージの類似性の決定に関連するため、バケットは、クラスタセンタに関連付けられることが可能であり、クラスタセンタは、イメージに関連付けられることが可能であり、イメージは、ユーザに関連付けられる。これらの関連付けは、一方向または二方向である。本発明の一実施形態において、バケットとクラスタセンタとの間における関連付けは、バケットからクラスタセンタへの一方向であり、クラスタ
センタとイメージとの間における関連付けは、二方向であり、イメージとユーザとの間における関連付けは、二方向である。ソーシャルネットワーキングシステム１３０は、それらの関連付けを使用して、たとえば、以下にさらに詳細に記載されるように、類似するイメージを識別すること、およびそれらのイメージに関して特定の管理アクションを実行する。別の例として、ユーザが、ソーシャルネットワーキングシステム１３０への特定の新たなイメージの投稿を提案した場合、ソーシャルネットワーキングシステム１３０は、その新たなイメージと、ソーシャルネットワーキングシステム１３０によって維持されているその他のイメージとのあり得る類似性を決定する。ユーザおよびその新たなイメージは、それらのつながりを表すそれらの間におけるエッジを伴ってノードとして取り扱われる。
【００５０】
ソーシャルネットワーキングシステム１３０はまた、ユーザによって生成されるコンテンツを含み、このコンテンツは、ソーシャルネットワーキングシステム１３０とのユーザの対話を向上させる。ユーザによって生成されるコンテンツは、ユーザがソーシャルネットワーキングシステム１３０に付加、アップロード、送信、または「投稿」する任意のものを含む。たとえば、ユーザは、ユーザデバイス１１０からソーシャルネットワーキングシステム１３０へ投稿を通信する。投稿は、状況の更新またはその他のテキストデータ、ロケーション情報、写真などのイメージ、ビデオ、リンク、音楽、またはその他の類似したデータなどのデータおよび／もしくは媒体を含む。コンテンツは、サードパーティによってソーシャルネットワーキングシステム１３０に付加されることも可能である。コンテンツ「アイテム」は、ソーシャルネットワーキングシステム１３０においてオブジェクトとして表される。この方法において、ソーシャルネットワーキングシステム１３０のユーザは、さまざまな通信チャネルを通じてさまざまなタイプの媒体のテキストおよびコンテンツアイテムを投稿することによって互いに通信して、ユーザ同士の相互の対話を増大させ、ユーザがソーシャルネットワーキングシステム１３０と対話する頻度を増大させるように奨励される。
【００５１】
ユーザは、自分自身または自分の関心に関する情報を共有するためにイメージをソーシャルネットワーキングシステム１３０に投稿したいと望む場合がある。そのようなイメージは、写真またはその他の任意のタイプのコンテンツアイテムである。ユーザ同士の間における通信を増大させるために、ソーシャルネットワーキングシステム１３０は、ユーザに、自分の個性および一意の関心を示すまたはその他の形で適切に反映するイメージを投稿するように奨励または勧誘する。アップロードされるイメージが、ソーシャルネットワーキングシステム１３０にとって一意であることおよびその他の形で適切であることの両方を確実にするために、ソーシャルネットワーキングシステム１３０は、いくつかの状況においてユーザによるイメージの公開を制御または制限する。たとえば、あるユーザに関連付けられたイメージが、別のユーザに関連付けられた別のイメージとあまりにも類似するかまたは同じである場合、ソーシャルネットワーキングシステム１３０は、そのイメージの公開を制御または制限する。別の例として、ソーシャルネットワーキングシステム１３０は、ある特定のイメージのコンテンツがガイドラインまたはその他の標準に違反しているため、そのイメージは公開するのに不適切であると決定する。その状況において、ソーシャルネットワーキングシステム１３０は、そのイメージおよびすべての類似するまたは同じイメージの公開を制御または制限する。イメージの公開を管理するために、ソーシャルネットワーキングシステム１３０は、以下にさらに詳細に記載されるイメージの類似性解析モジュール１３２を含む。
【００５２】
図２は、本発明の一実施形態による図１のソーシャルネットワーキングシステム１３０の図である。図２に示される実施形態において、ソーシャルネットワーキングシステム１３０は、イメージの類似性解析モジュール１３２、ウェブサーバ２１０、アクションロガー２２４、ＡＰＩリクエストサーバ２２０、アクティビティログ２２６、ユーザプロフィ
ールストア２１２、つながりストア２１４、および認証サーバ２２８を含む。イメージの類似性解析モジュール１３２は、ラージハッシングモジュール２４０、スモールハッシングモジュール２４２、空間検索モジュール２４４、クラスタセンタ作成モジュール２４６、近接性決定モジュール２４８、および管理アクションモジュール２７０を含む。本発明の一実施形態において、図２に示されるモジュールによって実行される機能は、その他のモジュールもしくは構成要素によってさまざまに置き換えられること、その他のモジュールもしくは構成要素と結合されること、またはその他のモジュールもしくは構成要素へと統合されてもよい。本発明の一実施形態において、ソーシャルネットワーキングシステム１３０は、さまざまなアプリケーションに関するさらなる、より少ない、または別のモジュールを含む。その他のモジュール、たとえば、ネットワークインタフェース、セキュリティ機構、ロードバランサ、フェイルオーバサーバ、管理およびネットワークオペレーションコンソールなどは、このシステムの詳細をわかりにくくすることのないように示されない。
【００５３】
ユーザプロフィールは、ユーザによって言明されている、またはソーシャルネットワーキングシステム１３０によって推測されている、経歴情報、人口統計学的情報、およびその他のタイプの記述的情報、たとえば、職業経験、学歴、趣味または好み、ロケーションなどを含む。この情報は、ユーザプロフィールストア２１２内に記憶され、それによって、それぞれのユーザは一意に識別される。ソーシャルネットワーキングシステム１３０はまた、別々のユーザの間における１つまたは複数のつながりについて記述するデータをつながりストア２１４内に記憶する。つながり情報は、類似するまたは共通の職業経験、グループメンバシップ、趣味、または学歴を有するユーザを示す。加えて、ソーシャルネットワーキングシステム１３０は、別々のユーザの間におけるユーザ定義のつながりを含み、ユーザがその他のユーザとの自分の関係を明示することを可能にする。たとえば、ユーザ定義のつながりは、ユーザが、友達、同僚、パートナ等など、ユーザの実生活の関係に似ているその他のユーザとの関係を生成することを可能にする。ユーザは、事前に定義されたタイプのつながりから選択を行うこと、または必要に応じて自分自身のつながりタイプを定義する。ソーシャルネットワーキングシステム１３０内のその他のノード、たとえば、人間以外のエンティティ、バケット、クラスタセンタ、イメージ、関心、ページ、外部システム、コンセプトなどとのつながりも、つながりストア２１４内に記憶される。
【００５４】
ソーシャルネットワーキングシステム１３０は、ユーザが対話するオブジェクトに関するデータを維持する。このデータを維持するために、ユーザプロフィールストア２１２およびつながりストア２１４は、ソーシャルネットワーキングシステム１３０によって維持されている対応するタイプのオブジェクトのインスタンスを記憶する。それぞれのオブジェクトタイプは、そのタイプのオブジェクトにとって適切な情報を記憶するのに適している情報フィールドを有する。たとえば、ユーザプロフィールストア２１２は、ユーザのプロフィールについて記述するのに適したフィールドを伴うデータ構造を含む。特定のタイプの新たなオブジェクトが作成された場合、ソーシャルネットワーキングシステム１３０は、対応するタイプの新たなデータ構造を初期化し、一意のオブジェクト識別子をそのデータ構造に割り振り、必要に応じてそのオブジェクトにデータを付加することを開始する。これは、たとえば、ユーザがソーシャルネットワーキングシステム１３０のユーザになった場合に生じることが可能であり、ソーシャルネットワーキングシステム１３０は、ユーザプロフィールストア２１２においてユーザプロフィールの新たなインスタンスを生成し、一意の識別子をそのユーザプロフィールに割り振り、ユーザによって提供された情報をユーザプロフィールのフィールドに入力することを開始する。
【００５５】
つながりストア２１４は、ユーザのその他のユーザへのつながり、外部システム１２０へのつながり、またはその他のエンティティへのつながりについて記述するのに適したデータ構造を含む。つながりストア２１４は、つながりタイプをユーザのつながりに関連付
けることもでき、つながりタイプは、ユーザに関する情報へのアクセスを規制するためにユーザのプライバシ設定とともに使用される。本発明の一実施形態において、ユーザプロフィールストア２１２およびつながりストア２１４は、連合データベースとして実装される。
【００５６】
つながりストア２１４、ユーザプロフィールストア２１２、およびアクティビティログ２２６内に記憶されているデータは、ソーシャルネットワーキングシステム１３０が、別々のオブジェクトの間における関係を識別する目的で、ノード同士をつなげているさまざまなオブジェクトおよびエッジを識別するためにノードを使用するソーシャルグラフを生成することを可能にする。たとえば、第１のユーザが、ソーシャルネットワーキングシステム１３０内の第２のユーザとのつながりを確立した場合、ユーザプロフィールストア２１２からの第１のユーザおよび第２のユーザのユーザプロフィールは、ソーシャルグラフ内のノードとして機能する。つながりストア２１４によって記憶されている第１のユーザと第２のユーザとの間におけるつながりは、第１のユーザに関連付けられたノードと、第２のユーザに関連付けられたノードとの間におけるエッジである。この例を続けると、第２のユーザは次いで、ソーシャルネットワーキングシステム１３０内でメッセージを第１のユーザに送信する。メッセージを送信するというアクションは、記憶されてもよく、第１のユーザおよび第２のユーザを表すソーシャルグラフ内の２つのノードの間における別のエッジである。加えて、メッセージそのものが識別されて、第１のユーザおよび第２のユーザを表すノードにつながっている別のノードとしてソーシャルグラフ内に含まれる。
【００５７】
別の例において、第１のユーザは、ソーシャルネットワーキングシステム１３０によって維持されているイメージ内に（または、代替として、ソーシャルネットワーキングシステム１３０の外部の別のシステムによって維持されているイメージ内に）第２のユーザをタグ付けする。イメージは、それ自体がソーシャルネットワーキングシステム１３０内のノードとして表される。このタグ付けアクションは、第１のユーザと第２のユーザとの間におけるエッジを作成すること、およびユーザのうちのそれぞれとイメージ（これも、ソーシャルグラフ内のノードである）との間におけるエッジを作成する。さらに別の例において、あるユーザが、あるイベントに参加することを確認した場合、そのユーザおよびそのイベントは、ユーザプロフィールストア２１２から得られるノードであり、そのイベントの参加は、アクティビティログ２２６から取り出されるそれらのノードの間におけるエッジである。ソーシャルグラフを生成することおよび維持することによって、ソーシャルネットワーキングシステム１３０は、多くの異なるタイプのオブジェクト、ならびにそれらのオブジェクトの間における対話およびつながりについて記述するデータを含み、社交上関連する情報の豊かな源を提供する。
【００５８】
ウェブサーバ２１０は、ネットワーク１４０を通じてソーシャルネットワーキングシステム１３０を１つもしくは複数のユーザデバイス１１０および／または１つもしくは複数の外部システム１２０にリンクさせる。ウェブサーバ２１０は、ウェブページ、およびその他のウェブ関連コンテンツ、たとえばＪａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ、Ｆｌａｓｈ、ＸＭＬなどを供給する。ウェブサーバ２１０は、ソーシャルネットワーキングシステム１３０と１つまたは複数のユーザデバイス１１０との間におけるメッセージを受け取って回送するためのメールサーバまたはその他のメッセージング機能を含む。それらのメッセージは、インスタントメッセージ、キューに入れられたメッセージ（たとえば、Ｅメール）、テキストおよびＳＭＳメッセージ、またはその他の任意の適切なメッセージング形式である。
【００５９】
ＡＰＩリクエストサーバ２２０は、１つまたは複数の外部システム１２０およびユーザデバイス１１０が１つまたは複数のＡＰＩを呼び出すことによってソーシャルネットワーキングシステム１３０からの情報にアクセスすることを可能にする。ＡＰＩリクエストサ
ーバ２２０は、外部システム１２０がＡＰＩを呼び出すことによってソーシャルネットワーキングシステム１３０へ情報を送信することも可能にする。外部システム１２０は、一実施形態において、ネットワーク１４０を通じてソーシャルネットワーキングシステム１３０へＡＰＩ要求を送信し、ＡＰＩリクエストサーバ２２０は、そのＡＰＩ要求を受け取る。ＡＰＩリクエストサーバ２２０は、そのＡＰＩ要求に関連付けられたＡＰＩを呼び出すことによってその要求を処理して、適切な応答を生成し、その応答を、ＡＰＩリクエストサーバ２２０がネットワーク１４０を通じて外部システム１２０へ通信する。たとえば、ＡＰＩ要求に応答して、ＡＰＩリクエストサーバ２２０は、外部システム１２０にログインしているユーザのつながりなど、ユーザに関連付けられたデータを収集し、それらの収集されたデータを外部システム１２０へ通信する。別の実施形態において、ユーザデバイス１１０は、外部システム１２０と同じ様式でＡＰＩを通じてソーシャルネットワーキングシステム１３０と通信する。
【００６０】
アクションロガー２２４は、ソーシャルネットワーキングシステム１３０内のおよび／またはソーシャルネットワーキングシステム１３０の外のユーザアクションに関するウェブサーバ２１０からの通信を受け取る。アクションロガー２２４は、ユーザアクションに関する情報をアクティビティログ２２６に入力し、ソーシャルネットワーキングシステム１３０が、ソーシャルネットワーキングシステム１３０内で、およびソーシャルネットワーキングシステム１３０の外でそのユーザによって取られたさまざまなアクションを見つけることを可能にする。特定のユーザがソーシャルネットワーキングシステム１３０上の別のノードに関して取るアクションは、アクティビティログ２２６内に、または類似したデータベースもしくはその他のデータリポジトリ内に維持されている情報を通じて、それぞれのユーザのプロフィールに関連付けられる。識別および記憶されるソーシャルネットワーキングシステム１３０内のユーザによって取られるアクションの例として、たとえば、別のユーザへのつながりを付加すること、メッセージを別のユーザへ送信すること、別のユーザからのメッセージを読み取ること、別のユーザに関連付けられたコンテンツを閲覧すること、別のユーザによって投稿されたイベントに参加すること、イメージを投稿すること、イメージを投稿しようと試みること、または別のユーザもしくは別のオブジェクトと対話するその他のアクションを含む。ユーザがソーシャルネットワーキングシステム１３０内でアクションを取った場合、そのアクションは、アクティビティログ２２６内に記録される。一実施形態において、ソーシャルネットワーキングシステム１３０は、エントリのデータベースとしてアクティビティログ２２６を維持する。ソーシャルネットワーキングシステム１３０内でアクションが取られた場合、そのアクションに関するエントリが、アクティビティログ２２６に付加される。アクティビティログ２２６は、アクションログと呼ばれる場合がある。
【００６１】
加えて、ユーザアクションは、ソーシャルネットワーキングシステム１３０とは別個の外部システム１２０など、ソーシャルネットワーキングシステム１３０外のエンティティ内で生じるコンセプトおよびアクションに関連付けられる。たとえば、アクションロガー２２４は、外部システム１２０とのユーザの対話について記述するデータをウェブサーバ２１０から受け取る。この例において、外部システム１２０は、ソーシャルグラフ内の構造化されたアクションおよびオブジェクトに従ってユーザの対話を報告する。ユーザが外部システム１２０と対話するアクションのその他の例として、ユーザが外部システム１２０もしくは別のエンティティへの関心を示すこと、ユーザが、外部システム１２０、もしくは外部システム１２０内のウェブページ１２２ａについて論じるコメントをソーシャルネットワーキングシステム１３０に投稿すること、ユーザが、外部システム１２０に関連付けられたユニフォームリソースロケータ（ＵＲＬ）もしくはその他の識別子をソーシャルネットワーキングシステム１３０に投稿すること、ユーザが、外部システム１２０に関連付けられたイベントに参加すること、または外部システム１２０に関連しているユーザによるその他の任意のアクションが含まれる。したがって、アクティビティログ２２６は
、ソーシャルネットワーキングシステム１３０のユーザと、ソーシャルネットワーキングシステム１３０とは別個の外部システム１２０との間における対話について記述するアクションを含む。
【００６２】
認証サーバ２２８は、ソーシャルネットワーキングシステム１３０のユーザの１つまたは複数のプライバシ設定を実施する。ユーザのプライバシ設定は、ユーザに関連付けられた特定の情報がどのように共有されるかを決定する。プライバシ設定は、ユーザに関連付けられた特定の情報の指定、およびその情報を共有する１つまたは複数のエンティティの指定を含む。情報を共有するエンティティの例として、その他のユーザ、アプリケーション、外部システム１２０、または、その情報にアクセスするであろう任意のエンティティを含む。ユーザによって共有される情報は、プロフィール写真のようなユーザプロフィール情報、ユーザに関連付けられた電話番号、ユーザのつながり、ユーザによって取られたアクション、たとえば、つながりを付加すること、ユーザプロフィール情報を変更することなどを含む。
【００６３】
プライバシ設定の指定は、さまざまなレベルの細かさで提供される。たとえば、プライバシ設定は、その他のユーザと共有される特定の情報を識別する。たとえば、プライバシ設定は、職場の電話番号、または関連した情報の特定のセット、たとえば、プロフィール写真、自宅の電話番号、および状況を含む個人情報を識別する。あるいは、プライバシ設定は、ユーザに関連付けられたすべての情報に適用されることも可能である。特定の情報にアクセスするエンティティのセットの指定は、さまざまなレベルの細かさで指定されることも可能である。情報を共有するエンティティのさまざまなセットは、たとえば、ユーザのすべての友達、友達のすべての友達、すべてのアプリケーション、またはすべての外部システム１２０を含む。一実施形態は、エンティティのセットの指定がエンティティの列挙を含むことを可能にする。たとえば、ユーザは、特定の情報にアクセスすることを許可されている外部システム１２０の一覧を提供する。別の実施形態は、指定が、情報にアクセスすることを許可されていない例外とともにエンティティのセットを含むことを可能にする。たとえば、ユーザは、すべての外部システム１２０がそのユーザの職業情報にアクセスすることを許可する一方で、それらの職業情報にアクセスすることを許可されていない外部システム１２０の一覧を指定する。特定の実施形態は、特定の情報にアクセスすることを許可されていない例外の一覧を「ブロックリスト」と呼ぶ。ユーザによって指定されたブロックリストに属している外部システム１２０は、プライバシ設定内に指定されている情報にアクセスすることをブロックされる。情報の指定の細かさと、情報を共有するエンティティの指定の細かさとのさまざまな組合せが可能である。たとえば、すべての個人情報は友達と共有されることができ、その一方で、すべての職業情報は友達の友達と共有される。
【００６４】
認証サーバ２２８は、ユーザに関連付けられた特定の情報がユーザの友達、外部システム１２０、ならびに／またはその他のアプリケーションおよびエンティティによってアクセスされるか否かを決定するための論理部を含む。外部システム１２０は、ユーザの職場の電話番号など、ユーザのさらにプライベートな保護すべき情報にアクセスするためには、認証サーバ２２８からの認証を必要とする場合がある。ユーザのプライバシ設定に基づいて、認証サーバ２２８は、別のユーザ、外部システム１２０、アプリケーション、または別のエンティティが、ユーザによって取られたアクションに関する情報を含む、ユーザに関連付けられた情報にアクセスすることを許可されているか否かを決定する。
【００６５】
イメージの類似性解析モジュール１３２は、ソーシャルネットワーキングシステム１３０に提供されたイメージ同士の類似性を決定すること、および管理アクションを実行するためにそれらの類似性に基づいてイメージ同士を関連付ける。本明細書において使用される場合、２つ以上のイメージの間における類似性とは、しきい値に従って同じまたはほぼ
同じであるイメージコンテンツを示す。イメージ比較のために、ラージハッシングモジュール２４０は、イメージに関する「ラージ」ハッシュ値を計算し、そのラージハッシュ値は、ソーシャルネットワーキングシステム１３０内のその他のイメージとの類似性について検査される。ラージハッシュ値とは、ビットによって表されるピクセルを含むイメージの表現である。ラージハッシュ値は、値のセットを含む。本発明の一実施形態において、ラージハッシングモジュール２４０は、イメージに関するラージハッシュ値を計算するためにコンテンツ認識型ハッシュ関数を使用する。
【００６６】
イメージ同士の間における比較を容易にするために、スモールハッシングモジュール２４２は、ラージハッシュ値を、減少した次元を有するｄ次元の（ｄ次元）座標系（ｄは、座標系の次元数であり、１以上の任意の整数値である）上に射影することによって、ラージハッシュ値の「スモール」ハッシュ値を計算する。スモールハッシュ値は、イメージのさらに小型の表現であり、値のセットを含む。本発明の一実施形態において、スモールハッシングモジュール２４２は、スモールハッシュ値を計算するためにラージハッシュ値に局所性鋭敏型ハッシュ関数を適用する。ラージハッシュ値の射影の結果、スモールハッシュ値は、座標系のバケット内に収まる。バケットは、座標系の最小単位である。たとえば、バケットは、一次元座標系における最小セグメント、二次元座標系における最小正方形、または三次元座標系における最小立方体である。
【００６７】
空間検索モジュール２４４は、あり得る類似するイメージに関連付けられたクラスタセンタを検索するために座標系における空間を決定する。クラスタセンタは、類似すると判断されたイメージ同士が関連付けられている座標系における点である。本発明の一実施形態において、空間検索モジュール２４４は、スモールハッシュ値が収まるバケット内でのみクラスタセンタを検索する。類似する可能性のあるイメージを探して同じバケット内で検索を行うことは、同じバケット内に収まるスモールハッシュ値に関連付けられたすべてのイメージは類似するという誤った想定を回避する。本発明の一実施形態において、空間検索モジュール２４４は、隣接するバケットを識別すること、およびそれらの隣接するバケット内の類似するイメージに関連付けられたクラスタセンタを検索することも可能である。隣接するバケットは、スモールハッシュ値に最も近い座標系の交点と重なるバケットを含む。類似する可能性のあるイメージを探して複数のバケット内で検索を行うことは、別々のバケット内に収まるスモールハッシュ値に関連付けられたイメージ同士は異なるという誤った想定を回避する。空間検索モジュール２４４は、座標系のバケットのうちのすべてにおいてクラスタセンタを検索しないことによって、計算効率を達成する。
【００６８】
クラスタセンタ作成モジュール２４６は、バケットおよびイメージに関連付けられたクラスタセンタを作成する。ソーシャルネットワーキングシステム１３０によって受け取られた第１のイメージに関して、クラスタセンタ作成モジュール２４６は、その第１のイメージに関連付けられた第１のクラスタセンタを作成する。第２のイメージに関連付けられたスモールハッシュ値と、第１のクラスタセンタとの間における距離（たとえば、ユークリッド距離）が、しきい値の距離を超えていると決定された場合、クラスタ作成モジュール２４６は、第２のイメージに関する第２のクラスタセンタを作成する。そうでない場合、第２のイメージは、第１のクラスタセンタに関連付けられ、第２のイメージに関する新たなクラスタセンタは作成されない（これについて、以下にさらに詳細に記述する）。それぞれのクラスタセンタは、類似すると判断された１つまたは複数のイメージを表す。
【００６９】
近接性決定モジュール２４８は、入ってくるイメージに関連付けられたスモールハッシュ値と、ソーシャルネットワーキングシステム１３０内に維持されている１つまたは複数の既存のイメージに関するクラスタセンタとの間における距離を決定する。イメージが類似するか否かを解析するために、近接性決定モジュール２４８は、（ｉ）入ってくるイメージのスモールハッシュ値と、既存のイメージのクラスタセンタとの間における距離を計
算すること、および（ｉｉ）その計算された距離をしきい値の距離と比較する。近接性決定モジュール２４８は、スモールハッシュ値を中心にして半径を効果的に適用し、その半径は、しきい値の距離によって決定されている。しきい値の距離（および半径）の値は、構成可能であり、たとえば、近接性決定モジュール２４８、またはソーシャルネットワーキングシステム１３０の管理者によって決定される。近接性決定モジュール２４８は、クラスタセンタが半径内に収まる場合、および半径の外へ出る場合を決定する。計算された距離が、しきい値の距離よりも短い場合、入ってくるイメージは、既存のイメージのクラスタセンタに関連付けられる。逆に、計算された距離が、しきい値の距離よりも長い場合、クラスタセンタ作成モジュール２４６は、入ってくるイメージのスモールハッシュ値に関連付けられた新たなクラスタセンタを作成する。
【００７０】
管理アクションモジュール２７０は、ソーシャルネットワーキングシステム１３０の管理者が、類似するイメージ同士の関連付けに基づいてイメージを管理することを可能にする。たとえば、管理アクションモジュール２７０は、類似するイメージ同士の取り下げおよびブロックを可能にする。
【００７１】
ラージハッシングモジュール２４０、スモールハッシングモジュール２４２、空間検索モジュール２４４、クラスタセンタ作成モジュール２４６、近接性決定モジュール２４８、および管理アクションモジュール２７０の特徴および機能について、以下にさらに詳細に記述する。
【００７２】
ハッシュ関数
特定の状況において、ソーシャルネットワーキングシステム１３０は、複製されたイメージの公開を制御または防止したいと望む場合がある。たとえば、ソーシャルネットワーキングシステム１３０は、それぞれのユーザが、そのユーザにとって一意のコンテンツを投稿することを奨励または要求する。別の例として、ソーシャルネットワーキングシステム１３０は、不適切なイメージおよびすべての類似するイメージの投稿を限定または制限する。特定のイメージに類似するイメージの識別は、そのイメージを、ソーシャルネットワーキングシステム１３０内に記憶されている既存のイメージのうちのそれぞれと比較することによって達成される。しかしながら、既存のイメージの数が多い場合があり、また、それぞれのイメージが多くのピクセルを含んでいる場合があるため、特定のイメージをそれぞれの既存のイメージと比較することは、計算集約的である場合があり、したがって実用的でない場合がある。
【００７３】
イメージは、１つまたは複数のハッシュ関数を適用することによって類似性を探して解析される。ハッシュ関数は、（多くの情報ビットを含む）入力値を受け取って、その入力値を（その入力値よりも少ないビットを含む）ハッシュ値にマッピングする関数である。イメージに関して使用されるいくつかのハッシュ関数は、「コンテンツ認識型」である。コンテンツ認識型であるハッシュ関数が有する特徴としては、２つのイメージがコンテンツにおいて類似する場合、それらのイメージと、類似したハッシュ値とのマッピングが行われる。２つのイメージの２つのハッシュ値の間における距離が相対的に短い場合、それらのイメージは、類似すると判断される。たとえば、コンテンツ認識型ハッシュ関数は、第１のハッシュ値を得るためにりんごの第１のイメージに適用され、第２のハッシュ値を得るために別のりんごの第２のイメージに適用され、および第３のハッシュ値を得るために犬の第３のイメージに適用される。この例において、第１のイメージの第１のハッシュ値と、第２のイメージの第２のハッシュ値とは、距離において近い可能性が高く、それは第１のイメージおよび第２のイメージにおいて示されるコンテンツが類似するからである。対照的に、第１のイメージの第１のハッシュ値と、第３のイメージの第３のハッシュ値とは、距離において近い可能性が低く、それは第１のイメージおよび第３のイメージにおいて示されるコンテンツが異なるからである。同様に、第２のイメージの第２のハッシュ
値と、第３のイメージの第３のハッシュ値とは、距離において近い可能性が低く、それは第２のイメージおよび第３のイメージにおいて示されるコンテンツが異なるからである。
【００７４】
イメージは、コンテンツ認識型ハッシュ関数を用いてハッシュされ、これらのイメージに関する「ラージ」ハッシュ値が得られる。たとえば、コンテンツ認識型ハッシュ関数は、数千または数百万のピクセルを含むイメージをハッシュして、数百の値を含むラージハッシュ値を得る。したがってラージハッシュ値は、値のセットによって表され、そのセット内の値の数は、コンテンツ認識型ハッシュ関数の次元数に対応する。コンテンツ認識型ハッシュ関数は、イメージを表すために使用される情報の量を大幅に減少させるが、ラージハッシュ値は、依然として相対的に多くの量の情報を含む。したがって、類似するイメージを識別するために多数のイメージのラージハッシュ値同士の間における距離を比較する、すなわち算出することは、計算的に不経済である。イメージ同士の間におけるあり得る類似性の決定は、ラージハッシュ値の次元数が多い場合、またはかなりの数のイメージが比較を必要とする場合、計算リソースの点で特に不経済である。たとえば、特定のイメージがソーシャルネットワーキングシステムのその他の任意のイメージに類似するか否かを決定するためには、数百万または数十億のイメージに関するラージハッシュ値が計算され、次いで比較されることが必要となり、かなりの計算負担が課される場合がある。
【００７５】
計算負担に対処するために、局所性鋭敏型ハッシュ（ｌｓｈ）が使用される。より少ない次元を有する「スモール」ハッシュ値を得るために、相対的に多数の次元を有するラージハッシュ値に局所性鋭敏型ハッシュが適用される。たとえば、局所性鋭敏型ハッシュは、数百の次元を有するラージハッシュ値をハッシュして、少ない（たとえば、２または３の）次元を有するスモールハッシュ値を得る。スモールハッシュ値は、少ない値を含むことができ、その一方でラージハッシュ値は、多くの値を含む。
【００７６】
イメージｘおよびイメージｙに関して、局所性鋭敏型ハッシュは、下記のプロパティを伴ってラージハッシュ値からスモールハッシュ値を生成する：
ｌｓｈ（ｈｘ）＝ｌｓｈ（ｈｙ）である場合：
ｄ（ｈｘ，ｈｙ）＜高い確率を伴うＲ；
ｄ（ｈｘ，ｈｙ）＞低い確率を伴うｃＲ
この場合
ｈｘは、イメージｘのラージハッシュ値であり、
ｈｙは、イメージｙのラージハッシュ値であり、
ｌｓｈ（ｈｘ）は、ｈｘのスモールハッシュ値であり、
ｌｓｈ（ｈｙ）は、ｈｙのスモールハッシュ値であり、
ｄ（ｈｘ，ｈｙ）は、ｈｘとｈｙとの間におけるユークリッド距離である。
スモールハッシュ値ｌｓｈ（ｈｘ）およびｌｓｈ（ｈｙ）は、それぞれラージハッシュ値ｈｘおよびｈｙの局所性鋭敏型ハッシュから生じる。局所性鋭敏型ハッシュのプロパティによれば、スモールハッシュ値ｌｓｈ（ｈｘ）およびｌｓｈ（ｈｙ）が等しい場合、ラージハッシュ値ｈｘとｈｙとの間におけるユークリッド距離は、たとえば、高い確率を伴う適切な値Ｒよりも短い。また、スモールハッシュ値ｌｓｈ（ｈｘ）およびｌｓｈ（ｈｙ）が等しい場合、ラージハッシュ値ｈｘとｈｙとの間におけるユークリッド距離は、たとえば、低い確率を伴う係数ｃをかけた適切な値Ｒよりも長い。これらのプロパティは、スモールハッシュ値ｌｓｈ（ｈｘ）およびｌｓｈ（ｈｙ）が等しい場合のイメージｘとｙとの間における類似性を反映する。
【００７７】
局所性鋭敏型ハッシュは、ラージハッシュ値を、それらのラージハッシュ値よりも少ない次元数を有する座標系の１つまたは複数のベクトル上へ射影することによって、ラージハッシュ値の次元数を減少させる。それぞれのベクトルは、座標系の別々の軸を表し、座標系の１つの次元に対応する。座標系のベクトル同士は、互いに直交することが可能であ
り、または直交しないことも可能である。射影を通じてラージハッシュ値の次元数を減少させることは、イメージの類似性を決定するためにスモールハッシュ値同士をより効率的に比較することを可能にする。局所性鋭敏型ハッシュにおいて、ラージハッシュ値は、１つまたは複数のベクトルのセグメントへ射影される。スモールハッシュ値が収まるベクトルのセグメントを、対応する座標系におけるバケットにマッピングする。したがって、イメージに関連付けられたラージハッシュ値の射影の結果、スモールハッシュ値は、特定のバケットへと収まる。
【００７８】
図３Ａは、一次元座標系の単一のベクトル３１２上への４つのラージハッシュ値の射影３１０を示す。ベクトル３１２は、複数のセグメントへと分けられ、４つのセグメント３１４、３１６、３１８、３２０が、図３Ａに示される。一次元座標系において、それぞれのセグメントは、バケットと判断される。４つのイメージを表す４つのラージハッシュ値３３０、３３２、３３４、３３６が、ベクトル３１２上へ射影され、そのベクトル３１２の特定のバケット内に収まる。ラージハッシュ値３３０は、ベクトル３１２上へ射影され、バケット３１６内に収まる。ラージハッシュ値３３２、３３４、３３６は、ベクトル３１２上へ射影され、バケット３１８内に収まる。図３Ａにおいてラベル付けされていないが、４つのラージハッシュ値３３０、３３２、３３４、３３６に対応する４つのスモールハッシュ値が、４つの破線が終端しているベクトル３１２上の４つの点によって表されている。
【００７９】
従来、同じバケット上へ射影するラージハッシュ値に関連付けられたイメージ同士は、類似すると判断され、別々のバケット上へ射影するラージハッシュ値に関連付けられたイメージ同士は、異なる（すなわち、類似しない）と判断される。図３Ａに示される例において、ラージハッシュ値３３２、３３４、３３６は、同じバケット３１８上へ射影しており、それらの対応するイメージ同士は、類似すると判断される。逆に、ラージハッシュ値３３０、３３２は、それぞれ別々のバケット３１６、３１８上へ射影しており、それらの対応するイメージ同士は、異なると判断される。イメージ同士が類似するか否かを、それらのイメージのラージハッシュ値が射影するバケットのみに基づいて決定することは、以下に記述されるように、誤った結果にしばしばつながる。
【００８０】
図３Ａに示される例において、ラージハッシュ値３３４は、ラージハッシュ値３３０、３３２、３３６から相対的に離れている。ラージハッシュ値３３０、３３２、３３６の間における相対的に小さな分離は、これらのラージハッシュ値同士の対応するイメージ同士が類似する可能性が高いことを示す。ラージハッシュ値３３４と、ラージハッシュ値３３０、３３２、３３６との間における相対的に大きな分離は、ラージハッシュ値３３４の対応するイメージが、ラージハッシュ値３３０、３３２、３３６の対応するイメージとは異なる可能性が高いことを示す。したがって、ラージハッシュ値３３２、３３６と同じバケット３１８内に収まるラージハッシュ値３３４の射影は、それらの対応するイメージ同士が類似することを最終的に示すべきでない。別の例として、ラージハッシュ値３３０は、ラージハッシュ値３３２に相対的に近い。ラージハッシュ値３３０、３３２の間における相対的に小さな分離は、それらの対応するイメージ同士が類似する可能性が高いことを示す。したがって、別々のバケット（すなわち、それぞれバケット３１６およびバケット３１８）内に収まるラージハッシュ値３３０およびラージハッシュ値３３２、３３６の射影は、それらの対応するイメージ同士が異なることを最終的に示すべきでない。
【００８１】
図３Ａにおける例によって示されるように、ラージハッシュ値３３４に関連付けられたイメージは、ラージハッシュ値３３２、３３６に関連付けられたイメージに類似すると誤って決定される場合がある。なぜなら、これらのラージハッシュ値は、同じバケット３１８に射影されるからである。さらに、ラージハッシュ値３３０に関連付けられたイメージは、ラージハッシュ値３３２に関連付けられたイメージとは異なると誤って決定される場
合がある。なぜなら、これらのラージハッシュ値は、別々のバケット３１６、３１８に射影されるからである。これらの誤りは、たとえば、（ｉ）おそらくは多くの次元を有するラージハッシュ値を、図３Ａの一次元座標系における１つだけの次元を有するスモールハッシュ値にマッピングすること、および（ｉｉ）スモールハッシュ値をベクトル３１２のセグメントのうちの１つへと量子化することから生じる。
【００８２】
一般には、ラージハッシュ値は、ｄ次元座標系におけるｄ個のベクトル上へ射影されることが可能であり、ｄは、任意の整数値である。局所性鋭敏型ハッシュを含む射影において１つのベクトルの代わりに複数のベクトルを使用することは、類似するイメージおよび異なるイメージのさらに正確な識別を提供する。一般に、より多くのベクトルが射影において使用される場合、イメージの類似性および相違性に関する決定は、より正確になる。
【００８３】
図３Ｂは、イメージの類似性および相違性をよりよく決定するための二次元座標系の２つのベクトル３１２、３５２上へのラージハッシュ値の射影３５０を示す。ベクトル３１２は、複数のセグメントへと分けられ、４つのセグメント３１４、３１６、３１８、３２０が、図３Ｂに示される。ベクトル３５２もまた、複数のセグメントへと分けられ、３つのセグメント３６０、３６２、３６４が、図３Ｂに示される。４つのラージハッシュ値３３０、３３２、３３４、３３６は、ベクトル３１２上へ、さらにベクトル３５２上へも射影され、それぞれのベクトルの特定のセグメント内に収まる。ラージハッシュ値３３４は、ベクトル３５２上へ射影され、セグメント３６４内に収まる。ラージハッシュ値３３０、３３２、３３６は、ベクトル３５２上へ射影され、セグメント３６２内に収まる。図３Ｂにおいてラベル付けされていないが、それぞれのラージハッシュ値に対応するスモールハッシュ値が、（ｉ）そのラージハッシュ値に関する第１の破線が終端しているベクトル３１２上の第１の点と、（ｉｉ）そのラージハッシュ値に関する第２の破線が終端しているベクトル３５２上の第２の点とによって表されている。それぞれのスモールハッシュ値は、ベクトル３１２、３５２上の２つの値を含む。バケットは、ベクトル３１２上のセグメントによって形成されている１つの辺と、ベクトル３５２上のセグメントによって形成されている別の辺とを有する四角形である。
【００８４】
特定の例において、ベクトル３５２の別々のセグメント（すなわち、それぞれセグメント３６４およびセグメント３６２）内に収まるラージハッシュ値３３４およびラージハッシュ値３３０、３３２、３３６の射影は、ラージハッシュ値３３４の対応するイメージが、ラージハッシュ値３３０、３３２、３３６の対応するイメージとは異なることをさらに正確に示す。同様に、特定の例において、同じセグメント３６２内に収まるラージハッシュ値３３０、３３２、３３６の射影は、ラージハッシュ値３３０、３３２、３３６の対応するイメージ同士が類似することをさらに正確に示す。
【００８５】
別々のバケットへと射影されるラージハッシュ値同士は、それらの対応するイメージ同士が異なることを意味し、同じバケットへと射影されるラージハッシュ値同士は、それらのイメージ同士が類似することを意味すると想定される場合が多い。しかしながら、（図３Ｂに示される）複数のベクトルを含む射影に関しても、これらの想定は、しばしば誤っている。ラージハッシュ値の局所性鋭敏型ハッシュは、そのラージハッシュ値の次元数を減少させる。この減少は、情報の喪失をもたらす。次元数における減少が大きい場合、情報の喪失が大きくなる可能性があり、スモールハッシュ値の対応するイメージ同士が実際には異なっていても、スモールハッシュ値同士が類似する確率が増大する。したがって、別々のイメージが類似すると誤って判断される場合があり、それは、それらのスモールハッシュ値同士が類似するか、または同じバケット内に収まるからである。このタイプの誤りは、しばしば「フォルスポジティブ」と呼ばれる。さらに、バケットの境界を決定する任意の座標定義に基づいて、類似するイメージ同士が異なると誤って判断される場合があり、それは、それらのスモールハッシュ値同士が、別々のバケット内に収まるからである
。このタイプの誤りは、しばしば「フォルスネガティブ」と呼ばれる。
【００８６】
フォルスポジティブの決定
図４Ａ〜図４Ｅは、本発明の一実施形態による、１つのバケットに関連付けられた複数のクラスタセンタの作成をグラフに示す。それぞれのクラスタセンタは、類似すると判断される１つまたは複数のイメージに関連付けられる。本発明の一実施形態において、それぞれのクラスタセンタは、１つまたは複数のバケットに関連付けられることも可能である。複数のクラスタセンタを１つのバケットに関連付けることは、同じバケット内に収まるすべてのスモールハッシュ値が、類似するイメージ同士に対応するという想定における誤りを回避する。１つのバケットに関連付けられた複数のクラスタセンタは、同じバケット内に収まるスモールハッシュ値同士に関連付けられた類似するイメージ同士および類似しないイメージ同士の間における区別を可能にする。このようにして、フォルスポジティブの問題に対処する。
【００８７】
本発明の一実施形態において、はじめに、イメージに関するラージハッシュ値が、そのイメージにコンテンツ認識型ハッシュ関数を適用することによって生成される。次いで、そのイメージに関するスモールハッシュ値が、ラージハッシュ値に局所性鋭敏型ハッシュを適用することによって生成される。局所性鋭敏型ハッシュは、１つまたは複数のベクトルへのラージハッシュ値の射影を含む。そのような射影は、次元数ｋから次元数ｄへのラージハッシュ値の減少を含む。この減少は、下記のようなマトリックス乗算によって実行される：
ｕ＝Ｈｖ
この場合、ｖは、ラージハッシュ値を表すｋ個の値のセットを示しており、Ｈは、次元（ｄ×ｋ）を有するマトリックスを示しており、ｕは、スモールハッシュ値を表すｄ個の値のセットを示す。本発明の一実施形態において、ｋ個の値のセットおよびｄ個の値のセットは、実数、整数、それらの組合せ、またはその他の任意の適切なタイプの値である。上記の方程式によって示されるように、ラージハッシュ値に（ｄ×ｋ）マトリックスＨをかけて、スモールハッシュ値を得る。実際には、ラージハッシュ値を表すセットｖと、マトリックスＨのそれぞれの行との間においてドット積を実行して、スモールハッシュ値を表すセットｕ内の対応する値を得る。マトリックスＨのそれぞれの行は、ｄ次元座標系における１つのベクトルに対応する。このマトリックス乗算は、次元数ｄに等しい複数のベクトル上へのラージハッシュ値の射影をもたらす。本発明の一実施形態において、射影において複数のベクトルが使用されている場合、それらの複数のベクトルは、互いに直交している。ｄ次元座標系のそれぞれのベクトルは、複数のセグメントへと分けられる。バケットは、ｄ次元座標系のｄ個のベクトルのｄ個のセグメント（すなわち、それぞれのベクトルの１つのセグメント）によって形成される。
【００８８】
本発明の一実施形態において、次元数ｄは、３という値を有するように選択され、バケットの総数は１０９である。本発明の別の実施形態において、次元数ｄは、３以外の値を有するように選択される。本発明の一実施形態において、１つのベクトルに関するセグメントの総数は１０３であり、したがって、バケットの総数は１０３＊ｄである。例示の目的で、ここで示される射影は、二次元における、すなわち、次元数ｄが、２という値を有するように選択されている場合の局所性鋭敏型ハッシュの簡略化された例である。
【００８９】
図４Ａは、本発明の一実施形態による、新たなイメージに関連付けられた第１のクラスタセンタの作成を示す、局所性鋭敏型ハッシュに関する射影４１０および二次元座標系における関連したマッピング４５０のグラフ表示である。図２におけるラージハッシングモジュール２４０は、（図４Ａに示されず）新たなイメージｐ１に関連付けられたラージハッシュ値４０８を生成する。新たなイメージは、たとえば、ソーシャルネットワーキングシステム１３０への投稿用に提案されたイメージである。図２におけるスモールハッシン
グモジュール２４２は、ラージハッシュ値４０８をベクトル４１２およびベクトル４２４上へ射影する。ベクトル４１２は、複数のセグメントへと分けられ、４つのセグメント４１４、４１６、４１８、４２０が、図４Ａに示される。ベクトル４２４は、複数のセグメントへと分けられ、４つのセグメント４２６、４２８、４３０、４３２が、図４Ａに示される。スモールハッシングモジュール２４２は、ラージハッシュ値４０８を、ベクトル４１２のセグメント４１８内に収まるように射影する。スモールハッシングモジュール２４２はまた、ラージハッシュ値４０８を、ベクトル４２４のセグメント４２８内に収まるように射影する。
【００９０】
二次元座標系におけるマッピング４５０は、射影４１０のグラフ表現を示す。この二次元座標系は、ベクトル４２４に対応するｘ軸４６０と、ベクトル４１２に対応するｙ軸４６２とを含む。ｘ軸４６０は、ベクトル４２４の複数のセグメントに対応する複数の単位へと分けられている。ｙ軸４６２も、ベクトル４１２の複数のセグメントに対応する複数の単位へと分けられている。ベクトル４１２、４２４のセグメントは、この二次元座標系におけるバケットを形成している。たとえば、ベクトル４１２のセグメント４１８、およびベクトル４２４のセグメント４２８は、この二次元座標系におけるバケット４４０を形成している。イメージｐ１に関連付けられたスモールハッシュ値４３４は、バケット４４０内に収まる。スモールハッシュ値４３４は、（ｉ）ラージハッシュ値４０８からの破線がベクトル４２４上で終端している点に対応するｘの値と、（ｉｉ）ラージハッシュ値４０８からの破線がベクトル４１２上で終端している点に対応するｙの値とを含む。
【００９１】
イメージｐ１に類似するイメージを検索するために、図２における空間検索モジュール２４４は、いずれかのクラスタセンタがバケット４４０に関連付けられているか否かをはじめに決定する。いずれのクラスタセンタもバケット４４０に関連付けられていないため、クラスタセンタ作成モジュール２４６は、スモールハッシュ値４３４に基づいて第１のクラスタセンタ４２２を作成する。本発明の一実施形態において、新たなイメージに関連付けられたスモールハッシュ値が、あるバケット内に収まることをスモールハッシングモジュール２４２が決定した場合、空間検索モジュール２４４は、その同じバケット内で、その新たなイメージに類似するイメージに関連付けられたクラスタセンタを探す検索を実行する。検索を１つのバケット内のクラスタセンタに限定することによって、空間検索モジュール２４４は、検索プロセスを最適化して、検索がより迅速に効率よく行われることを可能にする。本発明の別の実施形態において、空間検索モジュール２４４は、以下にさらに詳細に記載されるように、新たなイメージのスモールハッシュ値が収まるバケットに加えて、座標系におけるその他のバケットを含むように検索のパラメータを定義する。
【００９２】
図４Ｂは、本発明の一実施形態による、既存のクラスタセンタへの新たなイメージの関連付けを示す、局所性鋭敏型ハッシュに関する射影４７０および二次元座標系における関連したマッピング４７２のグラフ表示である。ラージハッシングモジュール２４０は、新たなイメージｐ２に関連付けられたラージハッシュ値４４８を生成する。スモールハッシングモジュール２４２は、ラージハッシュ値４４８をベクトル４１２およびベクトル４２４上へ射影する。スモールハッシングモジュール２４２は、ベクトル４１２のセグメント４１８内に、およびベクトル４２４のセグメント４２８内に収まるようにラージハッシュ値４４８を射影する。
【００９３】
二次元座標系におけるマッピング４７２は、射影４７０のグラフ表現を示す。スモールハッシングモジュール２４２は、イメージｐ２に関連付けられたスモールハッシュ値４３６がバケット４４０内に収まることを決定する。イメージｐ２に類似するイメージを検索するために、空間検索モジュール２４４は、いずれかのクラスタセンタがバケット４４０に関連付けられているか否かをます決定する。クラスタセンタ４２２がバケット４４０に関連付けられているため、図２における近接性決定モジュール２４８は、クラスタセンタ
４２２がスモールハッシュ値４３６に十分に近い距離にあるか否かを決定する。近接性決定モジュール２４８は、スモールハッシュ値４３６とクラスタセンタ４２２との間における距離を計算する。次いで近接性決定モジュール２４８は、計算された距離が、しきい値の距離よりも短いか否かを決定する。計算された距離が、しきい値の距離よりも短い場合（図４Ｂの場合）、イメージｐ２は、イメージｐ１に類似すると判断され、イメージｐ２は、クラスタセンタ４２２に関連付けられる。図４Ｃにおいて示されるように、新たなクラスタセンタは作成されない。逆に、計算された距離が、しきい値の距離を超えている場合（図４Ｂに示されず）、イメージｐ２は、イメージｐ１とは異なると判断され、クラスタセンタ作成モジュール２４６は、イメージｐ２に関する新たなクラスタセンタを作成する。実際には、半径４６６を有する円４６８が、スモールハッシュ値４３６を中心にして描かれる。半径４６６は、しきい値の距離に対応する。クラスタセンタ４２２が、円４６８の内側に収まる場合、イメージｐ２は、イメージｐ１に類似すると判断され、クラスタセンタ４２２に関連付けられる。逆に、クラスタセンタ４２２が、円４６８の外側に存在する場合、イメージｐ２は、イメージｐ１とは異なると判断され、イメージｐ２に関する新たなクラスタセンタが作成される。
【００９４】
本発明の一実施形態において、しきい値の距離（すなわち、半径４６６）は、任意の適切な値である。しきい値の距離の値は、イメージ同士が類似すると判断される前のイメージ同士の間における可能な実際の類似性の所望の度合いに基づいて選択される。たとえば、イメージ同士が、相対的に高い度合いの可能な実際の類似性がある場合にのみ、類似すると判断されるべきであるコンテキストにおいて、しきい値の距離は、相対的に小さな値に設定される。別の例として、イメージ同士が、あまり高くない度合いの可能な実際の類似性しかない場合でも、類似すると判断されるコンテキストにおいて、しきい値の距離は、相対的に大きな値に設定される。さらに別の例として、あるイメージが特に不適切なコンテキストにおいて、しきい値の距離は、その不適切なイメージに類似するイメージをより多く識別するために相対的に大きな値に設定される。したがって、しきい値の距離は、ソーシャルネットワーキングシステム１３０の所与のコンテキスト、たとえば、特定のアプリケーション、モジュール、キャンペーン、グループ、ユーザ、イメージなどにとって適切な任意の値を有するように、ソーシャルネットワーキングシステム１３０の管理者によって構成され、プログラムされることが可能である。
【００９５】
図４Ｄは、本発明の一実施形態による、バケットに関連付けられている複数のクラスタセンタを示す、局所性鋭敏型ハッシュに関する射影４８０および二次元座標系における関連したマッピング４８２のグラフ表示である。ラージハッシングモジュール２４０は、新たなイメージｐ３に関連付けられたラージハッシュ値４８８を生成する。スモールハッシングモジュール２４２は、ラージハッシュ値４８８をベクトル４１２およびベクトル４２４上へ射影する。スモールハッシングモジュール２４２は、ベクトル４１２のセグメント４１８内に、およびベクトル４２４のセグメント４２８内に収まるようにラージハッシュ値４８８を射影する。二次元座標系におけるマッピング４８２は、射影４８０のグラフ表現を示す。スモールハッシングモジュール２４２は、イメージｐ３に関連付けられたスモールハッシュ値４９２がバケット４４０内に収まることを決定する。
【００９６】
イメージｐ３に類似するイメージを検索するために、空間検索モジュール２４４は、いずれかのクラスタセンタがバケット４４０に関連付けられているか否かをはじめに決定する。クラスタセンタ４２２がバケット４４０に関連付けられているため、近接性決定モジュール２４８は、クラスタセンタ４２２がスモールハッシュ値４９２に十分に近い距離にあるか否かを決定する。近接性決定モジュール２４８は、スモールハッシュ値４９２とクラスタセンタ４２２との間における距離を計算する。次いで近接性決定モジュール２４８は、計算された距離が、しきい値の距離よりも短いか否かを決定する。計算された距離が、（図４Ｄに示されるように）しきい値の距離を超えている場合、イメージｐ３は、イメ
ージｐ１とは異なると判断され、クラスタセンタ作成モジュール２４６は、図４Ｅにおいて示されるように、イメージｐ３に関する新たなクラスタセンタ４１４を作成する。逆に、計算された距離が、しきい値の距離よりも短い場合、イメージｐ３は、イメージｐ１に類似すると判断され、イメージｐ３は、クラスタセンタ４２２に関連付けられ（図４Ｄまたは図４Ｅに示されず）、新たなクラスタセンタは作成されない。実際には、半径４６６を有する円４９０が、スモールハッシュ値４９２を中心にして描かれる。クラスタセンタ４２２が、円４９０の内側に収まる場合、イメージｐ３は、イメージｐ１およびイメージｐ２に類似すると判断され、イメージｐ３は、クラスタセンタ４２２に関連付けられる。逆に、クラスタセンタ４２２が、円４９０の外側に存在する場合、イメージｐ３は、イメージｐ１およびイメージｐ２とは異なると判断され、イメージｐ３に関する新たなクラスタセンタが作成される。
【００９７】
さらなるイメージに関連付けられたスモールハッシュ値が、上述の様式と同様の様式で考慮される。たとえば、さらに別のイメージｐ４に関連付けられたスモールハッシュ値が、あるバケット内に収まる場合がある。そのバケットは、類似するイメージを検索するための検索空間を構成する。そのバケットに関連付けられたすべてのクラスタセンタが識別される。スモールハッシュ値と、それぞれの識別されたクラスタセンタとの間における距離が計算され、しきい値の距離と比較される。いずれかの識別されたクラスタセンタに関する計算された距離が、しきい値の距離よりも短い場合、イメージｐ４は、イメージｐ４に関するスモールハッシュ値までの最短距離を有する識別されたクラスタセンタ（たとえば、図５に示される識別されたクラスタセンタ４１４）に関連付けられる。逆に、すべての識別されたクラスタセンタに関する計算された距離が、しきい値の距離よりも長い場合、イメージｐ４に関する新たなクラスタセンタが作成される。実際には、所定の半径の円が、スモールハッシュ値を中心にして描かれる。その円の中にクラスタセンタが見つかった場合、イメージｐ４は、そのクラスタセンタに関連付けられ、そのクラスタセンタに既に関連付けられているイメージに類似すると判断される。逆に、その円の中にクラスタセンタが見つからなかった場合、スモールハッシュ値に基づいて新たなクラスタセンタが作成され、イメージｐ４は、その他のクラスタセンタに関連付けられたその他のイメージとは異なると判断される。イメージｐ１、ｐ２、ｐ３、ｐ４に加えてさらに別のイメージを考慮することも、同様の様式で進行する。一般には、任意の数のクラスタセンタが、所与のバケットに関連付けられる。
【００９８】
図５は、本発明の一実施形態による、図４Ａ〜図４Ｅに関連して記述されているバケット、クラスタセンタ、およびイメージの間における関連付けを表す図である。バケット４４０は、クラスタセンタ４２２、４１４に関連付けられている。クラスタセンタ４２２、４１４のそれぞれは、類似すると判断された１つまたは複数のイメージに関連付けられている。イメージｐ１  ４００、ｐ２  ４０２、ｐ３  ４０４、ｐ４  ４０６は、クラスタセンタ４２２、４１４に従ってグループ化されている。詳細には、イメージｐ１  ４００およびイメージｐ２  ４０２は、類似すると判断されており、クラスタセンタ４２２に関連付けられている。イメージｐ３  ４０４およびイメージｐ４  ４０６は、類似すると判断されており、クラスタセンタ４１４に関連付けられている。バケット４４０、クラスタセンタ４２２、４１４、およびイメージｐ１  ４００、ｐ２  ４０２、ｐ３  ４０４、ｐ４  ４０６、ならびにそれらの関連付けは、ソーシャルネットワーキングシステム１３０のソーシャルグラフの一部を形成する。
【００９９】
図６は、本発明の一実施形態による、フォルスポジティブを減少させるようにイメージの類似性を決定するためのプロセス６００を示す。はじめに、ブロック６１０において、新たなイメージが受け取られる。ブロック６１２において、その新たなイメージに関するラージハッシュ値が決定される。ラージハッシュ値は、たとえば、コンテンツ認識型のラージハッシュ関数を使用して決定される。次いでブロック６１４において、ラージハッシ
ュ値に基づいて新たなイメージに関するスモールハッシュ値が決定される。スモールハッシュ値は、たとえば、局所性鋭敏型ハッシュ関数を使用して決定される。スモールハッシュ値に関するハッシュ関数は、たとえば、二次元座標系の例に関して上で図４Ａ〜図４Ｅにおいて示されるように、ラージハッシュ値をｄ次元座標系におけるｄ個のベクトル上へ効果的に射影する。スモールハッシュ値は、ｄ次元座標系を形成するｄ個のベクトルに関するｄ個の値を含む。ブロック６１６において、スモールハッシュ値が収まる（ｄ次元座標系における）バケットが決定される。そのバケットは、（ｉ）スモールハッシュ値のｄ個の値を量子化すること、および（ｉｉ）それらのｄ個の量子化された値によって形成されるｄ次元座標系におけるバケットを識別することによって決定される。
【０１００】
ブロック６２０において、そのバケットに関連付けられているすべての既存のクラスタセンタが識別される。既存のクラスタセンタとは、既存のイメージに関して既に作成されているクラスタセンタである。その他のバケットに関連付けられたすべてのクラスタセンタを考慮する代わりに、そのバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。次いでブロック６２２において、そのバケットに関連付けられたいずれかの既存のクラスタセンタがあるか否かの決定が行われる。ブロック６２２に関する回答が「いいえ」である場合、新たなイメージのスモールハッシュ値が、そのバケット上へ射影される最初のスモールハッシュ値である。次いでブロック６３６において、新たなイメージに関する新たなクラスタセンタが作成され、スモールハッシュ値の座標を与えられる。次いでブロック６３８において、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【０１０１】
逆に、そのバケットに関連付けられた少なくとも１つの既存のクラスタセンタがあり、ブロック６２２に関する回答が「はい」である場合、ブロック６２４において、スモールハッシュ値と、そのバケットに関連付けられたそれぞれの既存のクラスタセンタとの間における距離が決定される。次いでブロック６２６において、スモールハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも短いか否かの決定が行われる。ブロック６２６に関する回答が「いいえ」である場合、ブロック６３４において、新たなイメージは、そのバケットに関連付けられている既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いでブロック６３６において、新たなイメージに関する新たなクラスタセンタが作成され、ブロック６３８において、新たなイメージが、その新たなクラスタセンタに関連付けられる。したがって、イメージ同士が類似すると判断されない場合、複数のクラスタセンタが作成されて、そのバケットに関連付けられる。
【０１０２】
しかしながら、スモールハッシュ値から少なくとも１つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短く、ブロック６２６に関する回答が「はい」である場合、ブロック６２８において、新たなイメージのスモールハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。スモールハッシュ値までのしきい値の距離よりも短い距離を有する別の既存のクラスタセンタが選択されることも可能である。いずれの場合においても、ブロック６３０において、新たなイメージは、識別された既存のクラスタセンタに関連付けられる。ブロック６３２において、新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断される。
【０１０３】
本発明の一実施形態において、プロセス６００は、全体的にまたは部分的にイメージの類似性解析モジュール１３２によって実行される。本発明の一実施形態において、プロセス６００は、少なくとも部分的にソーシャルネットワーキングシステム１３０によって実行される。
【０１０４】
フォルスネガティブの決定
図７Ａ〜図７Ｇは、本発明の一実施形態による、イメージの類似性を決定する際の複数のバケットの説明をグラフに示す。２つの類似するイメージの２つのスモールハッシュ値は、ｄ次元座標系において互いに対して相対的に近くに存在する場合があるが、量子化に起因して別々のバケット上へ射影される場合がある。たとえば、図３Ｂにおけるラージハッシュ値３３０および３３２に対応するスモールハッシュ値同士は、互いに対して相対的に近くに存在するが、量子化に起因して２つの異なるバケット上へ射影される。複数のバケットにおいて類似するイメージを検索することは、量子化の影響を考慮する。複数のバケットを考慮することは、別々のバケット内に偶然に収まるスモールハッシュ値同士が別々のイメージに対応するという想定における誤りを回避する。このようにして、フォルスネガティブの問題に対処する。
【０１０５】
図７Ａは、本発明の一実施形態による、新たなイメージに関連付けられた第１のクラスタセンタの作成を示す、局所性鋭敏型ハッシュに関する射影７１０および二次元座標系における関連するマッピング７５０のグラフ表示である。図２におけるラージハッシングモジュール２４０は、新たなイメージｐ５に関連付けられたラージハッシュ値７０８を生成する。図２におけるスモールハッシングモジュール２４２は、ラージハッシュ値７０８をベクトル７１２およびベクトル７２４上へ射影する。ベクトル７１２は、複数のセグメントへと分けられ、４つのセグメント７１４、７１６、７１８、７２０が、図７Ａに示される。ベクトル７２４は、複数のセグメントへと分けられ、４つのセグメント７２６、７２８、７３０、７３２が、図７Ａに示される。ラージハッシュ値７０８は射影され、ベクトル７１２のセグメント７１８内に、およびベクトル７２４のセグメント７２８内に収まる。
【０１０６】
二次元座標系におけるマッピング７５０は、射影７１０のグラフ表現を示す。この二次元座標系は、ベクトル７２４に対応するｘ軸７６０と、ベクトル７１２に対応するｙ軸７６２とを含む。ｘ軸７６０は、ベクトル７２４の複数のセグメントに対応する複数の単位へと分けられている。ｙ軸７６２も、ベクトル７１２の複数のセグメントに対応する複数の単位へと分けられている。ベクトル７１２、７２４のセグメントは、この二次元座標系におけるバケットを形成している。たとえば、ベクトル７１２のセグメント７１８、およびベクトル７２４のセグメント７２８は、この二次元座標系におけるバケット７８２を形成する。イメージｐ５に関連付けられたスモールハッシュ値７３４は、バケット７８２内に収まる。
【０１０７】
イメージｐ５に類似するイメージを検索するために、空間検索モジュール２４４は、バケット７８２だけでなく、隣接するバケットを考慮する。本発明の一実施形態において、空間検索モジュール２４４は、新たなイメージに関連付けられたスモールハッシュ値に最も近い交点をはじめに見つけることによって、隣接するバケットを決定する。交点とは、バケットのセットの角に対応するｄ次元座標系における点である。本発明の一実施形態において、イメージのスモールハッシュ値が量子化されることが可能であり、その量子化されたスモールハッシュ値は、交点と判断される。その交点と重なる（すなわち、その交点のところに角を有する）バケット同士は、隣接するバケット同士と判断される。一般には、１つの交点を共有する隣接するバケットの数は、ｄ次元座標系における次元数（ｄ）に依存する。ｄ次元座標系において、１つの交点を共有する２ｄ個の隣接するバケットが存在する。
【０１０８】
本発明の一実施形態において、三次元座標系では、隣接するバケットの数は８であり、二次元座標系では、隣接するバケットの数は４である。一般には、類似するイメージを探して任意の数の隣接するバケットが検索される。検索するための隣接するバケットの数は、さまざまな要素、たとえば、類似するイメージを識別するために使用されるしきい値の距離、それぞれのバケットを形成するセグメントのサイズ、フォルスネガティブの所望の
確率などに依存する。例示の目的で、ここで示される射影は、二次元における、すなわち、次元数ｄが、２という値を有するように選択されている場合の局所性鋭敏型ハッシュの簡略化された例である。したがって、この簡略化された例に基づいて、検索するための隣接するバケットの数は、ここで示されるように、４である。
【０１０９】
図７Ａにおいて示されるように、交点７９０は、スモールハッシュ値７３４に最も近い。次いで交点７９０の観点から、バケット７８２、７８４、７８６、７８８が、スモールハッシュ値７３４に関する隣接するバケットであると判断される。いずれかのクラスタセンタがバケット７８２、７８４、７８６、７８８に関連付けられているか否かに関する決定が行われる。クラスタセンタを探す検索を、限定された数のバケットに限定することによって、空間検索モジュール２４４は、検索プロセスを最適化して、検索がより迅速に効率よく行われることを可能にする。いずれのクラスタセンタもバケット７８２、７８４、７８６、７８８に関連付けられていないため、クラスタセンタ作成モジュール２４６は、スモールハッシュ値７３４に基づいて第１の新たなクラスタセンタ７１２を作成する。イメージｐ５が、クラスタセンタ７１２に関連付けられる。本発明の一実施形態において、第１のクラスタセンタ７１２は、４つの隣接するバケット７８２、７８４、７８６、７８８に関連付けられる。
【０１１０】
図７Ｂは、本発明の一実施形態による、既存のクラスタセンタへの新たなイメージの関連付けを示す、局所性鋭敏型ハッシュに関する射影７７０および二次元座標系における関連するマッピング７７２のグラフ表示である。ラージハッシングモジュール２４０は、新たなイメージｐ６に関連付けられたラージハッシュ値７４８を生成する。スモールハッシングモジュール２４２は、ラージハッシュ値７４８をベクトル７１２およびベクトル７２４上へ射影する。ラージハッシュ値７４８は射影され、ベクトル７１２のセグメント７１８内に、およびベクトル７２４のセグメント７２８内に収まる。
【０１１１】
二次元座標系におけるマッピング７７２は、射影７７０のグラフ表現を示す。スモールハッシングモジュール２４２は、イメージｐ６に関連付けられたラージハッシュ値７４８に基づいてスモールハッシュ値７３６を生成する。スモールハッシングモジュール２４２は、スモールハッシュ値７３６がバケット７８２内に収まることを決定する。イメージｐ６に類似するイメージを検索するために、空間検索モジュール２４４は、バケット７８２だけでなく、隣接するバケットを考慮する。図７Ｂにおいて示されるように、交点７９０は、スモールハッシュ値７３６に最も近い。次いで交点７９０の観点から、バケット７８２、７８４、７８６、７８８が、スモールハッシュ値７３４と同様に、スモールハッシュ値７３６に関する隣接するバケットであると判断される。空間検索モジュール２４４は、いずれかのクラスタセンタが、隣接するバケット７８２、７８４、７８６、７８８のいずれかまたはすべてに関連付けられているか否かを決定する。本発明の一実施形態において、スモールハッシュ値７３６に関する隣接するバケット７８２、７８４、７８６、７８８の４つすべてに関連付けられたそれぞれのクラスタセンタが考慮される。別の実施形態において、スモールハッシュ値７３６に関する４つの隣接するバケット７８２、７８４、７８６、７８８のいずれか１つに関連付けられたそれぞれのクラスタセンタが考慮される。クラスタセンタ７１２が、バケット７８２、７８４、７８６、７８８に関連付けられているため、近接性決定モジュール２４８はさらに、クラスタセンタ７１２が、ユークリッド距離においてスモールハッシュ値７３６に十分に近いか否かを決定する。スモールハッシュ値７３６と、クラスタセンタ７１２との間における距離が、近接性決定モジュール２４８によって計算され、しきい値の距離と比較される。計算された距離が、しきい値の距離よりも短い場合（図７Ｂの場合）、イメージｐ６は、イメージｐ５に類似すると判断され、イメージｐ６は、クラスタセンタ７１２に関連付けられる。図７Ｃに示されるように、イメージｐ６に関する新たなクラスタセンタは作成されない。逆に、計算された距離が、しきい値の距離を超えている場合（図７Ｂに示されず）、イメージｐ６は、イメージｐ５
とは異なると判断され、クラスタセンタ作成モジュール２４６は、イメージｐ６に関する新たなクラスタセンタを作成する。実際には、半径７６６を有する円７６８が、スモールハッシュ値７３６を中心にして描かれる。クラスタセンタ７１２が、円７６８の内側に収まる場合、イメージｐ６は、イメージｐ５に類似すると判断され、イメージｐ６は、クラスタセンタ７１２に関連付けられる。クラスタセンタ７１２が、円７６８の外側に存在する場合、イメージｐ６は、イメージｐ５とは異なると判断され、クラスタセンタ作成モジュール２４６は、バケット７８２、７８４、７８６、７８８に関連付けられた新たなクラスタセンタを作成する。
【０１１２】
しきい値の距離は、任意の適切な値であり、その値は、上で図４Ｂ〜図４Ｅに関連して記述されている考慮に基づいて選択される。図７Ｂ〜図７Ｆにおけるしきい値の距離は、図４Ｂ〜図４Ｅにおけるしきい値の距離よりも長い。本発明の一実施形態において、フォルスポジティブを決定するためのしきい値の距離は、フォルスネガティブを決定するためのしきい値の距離とは異なる。
【０１１３】
図７Ｄは、本発明の一実施形態による、新たなクラスタセンタへの新たなイメージの関連付けを示す、局所性鋭敏型ハッシュに関する射影７７４および二次元座標系における関連するマッピング７７６のグラフ表示である。ラージハッシングモジュール２４０は、新たなイメージｐ７に関連付けられたラージハッシュ値７９２を生成する。スモールハッシングモジュール２４２は、ラージハッシュ値７９２をベクトル７１２およびベクトル７２４上へ射影する。ラージハッシュ値７９２は射影され、ベクトル７１２のセグメント７１８内に、およびベクトル７２４のセグメント７３０内に収まる。
【０１１４】
二次元座標系におけるマッピング７７６は、射影７７４のグラフ表現を示す。スモールハッシングモジュール２４２は、イメージｐ７に関連付けられたラージハッシュ値７９２に基づいてスモールハッシュ値７９４を生成する。スモールハッシュ値７９４は、バケット７８４内に収まる。イメージｐ７に類似するイメージを検索するために、空間検索モジュール２４４は、バケット７８４だけでなく、隣接するバケットを考慮する。図７Ｄにおいて示されるように、交点７９０は、スモールハッシュ値７９４に最も近い。次いで交点７９０の観点から、バケット７８２、７８４、７８６、７８８が、スモールハッシュ値７３４およびスモールハッシュ値７３６と同様に、スモールハッシュ値７９４に関する隣接するバケットであると判断される。空間検索モジュール２４４は、いずれかのクラスタセンタが、たとえば、バケット７８２、７８４、７８６、７８８のすべてまたはいずれかに関連付けられているか否かを決定する。クラスタセンタ７１２が、バケット７８２、７８４、７８６、７８８に関連付けられているため、近接性決定モジュール２４８はさらに、クラスタセンタ７１２が、ユークリッド距離においてスモールハッシュ値７９４に十分に近いか否かを決定する。スモールハッシュ値７９４と、クラスタセンタ７１２との間における距離が、近接性決定モジュール２４８によって計算され、しきい値の距離と比較される。計算された距離が、しきい値の距離を超えている場合（図７Ｄに示される）、イメージｐ７は、イメージｐ５とは異なると判断され、クラスタセンタ作成モジュール２４６は、図７Ｅに示されるように、イメージｐ７に関する新たなクラスタセンタ７９６を作成する。逆に、計算された距離が、しきい値の距離よりも短い場合（図７Ｄの場合ではない）、イメージｐ７は、イメージｐ５に類似すると判断され、イメージｐ７は、クラスタセンタ７１２に関連付けられる（図７Ｄに示されず）。実際には、半径７６６を有する円７６８が、スモールハッシュ値７９４を中心にして描かれる。クラスタセンタ７１２が、円７６８の内側に収まる場合、イメージｐ７は、イメージｐ５に類似すると判断され、イメージｐ７は、クラスタセンタ７１２に関連付けられる。クラスタセンタ７１２が、円７６８の外側に存在する場合、イメージｐ７は、イメージｐ５とは異なると判断され、クラスタセンタ作成モジュール２４６は、バケット７８２、７８４、７８６、７８８に関連付けられた新たなクラスタセンタ７９６を作成する（図７Ｅに示される）。
【０１１５】
図７Ｆは、本発明の一実施形態による、新たなイメージおよび既存のクラスタセンタに関連付けられたスモールハッシュ値が、別々の隣接するバケット内に収まる場合の既存のクラスタセンタへの新たなイメージの関連付けを示す、局所性鋭敏型ハッシュに関する射影７７８および二次元座標系における関連するマッピング７８０のグラフ表示である。ラージハッシングモジュール２４０は、新たなイメージｐ８に関連付けられたラージハッシュ値７９８を生成する。スモールハッシングモジュール２４２は、ラージハッシュ値７９８をベクトル７１２およびベクトル７２４上へ射影する。ラージハッシュ値７９８は射影され、ベクトル７１２のセグメント７１８内に、およびベクトル７２４のセグメント７２６内に収まる。
【０１１６】
二次元座標系におけるマッピング７８０は、射影７７８のグラフ表現を示す。スモールハッシングモジュール２４２は、イメージｐ８に関連付けられたラージハッシュ値７９８に基づいてスモールハッシュ値７４６を生成する。スモールハッシュ値７４６は、バケット８１２内に収まる。イメージｐ８に類似するイメージを検索するために、空間検索モジュール２４４は、バケット８１２だけでなく、隣接するバケットを考慮する。図７Ｆにおいて示されるように、交点８３０は、スモールハッシュ値７４６に最も近い。次いで交点８３０の観点から、バケット８１２、７８２、８１６、７８６が、スモールハッシュ値７４６に関する隣接するバケットであると判断される。
【０１１７】
空間検索モジュール２４４は、いずれかのクラスタセンタが、たとえば、バケット８１２、７８２、８１６、７８６のすべてまたはいずれかに関連付けられているか否かを決定する。クラスタセンタ７１２およびクラスタセンタ７９６が、バケット８１２、７８２、８１６、７８６に関連付けられているため、近接性決定モジュール２４８はさらに、クラスタセンタ７１２およびクラスタセンタ７９６のいずれかが、ユークリッド距離においてスモールハッシュ値７４６に十分に近いか否かを決定する。スモールハッシュ値７４６と、クラスタセンタ７１２および７９６のそれぞれとの間における距離が、近接性決定モジュール２４８によって計算され、しきい値の距離と比較される。いずれかの計算された距離が、しきい値の距離よりも短い場合（図７Ｆの場合）、スモールハッシュ値７４６は、最も近いクラスタセンタ７１２に関連付けられ、イメージｐ８は、図７Ｇにおいて示されるように、クラスタセンタ７１２に関連付けられたイメージｐ５に類似すると判断される。逆に、すべてのクラスタセンタに関する計算された距離が、しきい値の距離を超えている場合（図７Ｆに示されず）、イメージｐ８は、これらのクラスタセンタのイメージとは異なると判断され、クラスタセンタ作成モジュール２４６は、イメージｐ８に関する新たなクラスタセンタを作成する。実際には、半径７６６を有する円７６８が、スモールハッシュ値７４６を中心にして描かれる。クラスタセンタ７１２またはクラスタセンタ７９６が、円７６８の内側に収まる場合、イメージｐ８は、それぞれイメージｐ５またはイメージｐ７に類似すると判断され、イメージｐ８は、それぞれクラスタセンタ７１２またはクラスタセンタ７９６のうちの近い方に関連付けられる。クラスタセンタ７１２およびクラスタセンタ７９６が、円７６８の外側に存在する場合、イメージｐ８は、それぞれイメージｐ５およびイメージｐ７とは異なると判断され、クラスタセンタ作成モジュール２４６は、バケット８１２、７８２、８１６、７８６に関連付けられた新たなイメージｐ８に関する新たなクラスタセンタを作成する。
【０１１８】
本発明の別の実施形態において、クラスタセンタは、隣接するバケットのグループの代わりに、単一のバケットに関連付けられる。新たなイメージに類似するイメージを検索するために、その新たなイメージに関するスモールハッシュ値に最も近い交点が、空間検索モジュール２４４によって決定される。この交点を共有するすべての隣接するバケットが識別されることが可能であり、これらの隣接するバケットに関連付けられたすべてのクラスタセンタが識別される。次いで、新たなイメージに関するスモールハッシュ値が、識別
されたクラスタセンタのうちのいずれかに十分に近いか（たとえば、しきい値の距離内にあるか）否かの決定が、近接性決定モジュール２４８によって行われる。
【０１１９】
さらなるイメージに関連付けられたスモールハッシュ値は、上述の様式と同様の様式で考慮される。たとえば、さらに別のイメージｐ９に関連付けられたスモールハッシュ値が、あるバケット内に収まる場合がある。そのスモールハッシュ値に最も近い交点が識別されることが可能であり、隣接するバケットが識別される。それらの隣接するバケットは、類似するイメージに関する検索空間を構成する。それらの隣接するバケットに関連付けられたすべてのクラスタセンタが識別される。スモールハッシュ値と、それぞれの識別されたクラスタセンタとの間における距離が計算され、しきい値の距離と比較される。いずれかの識別されたクラスタセンタに関する計算された距離が、しきい値の距離よりも短い場合、イメージｐ９は、識別されたクラスタセンタ（たとえば、イメージｐ９に関するスモールハッシュ値までの最短距離を有すると識別されたクラスタセンタ）に関連付けられる。逆に、すべての識別されたクラスタセンタに関する計算された距離が、しきい値の距離よりも長い場合、イメージｐ９に関する新たなクラスタセンタが作成される。実際には、適切な半径の円が、スモールハッシュ値を中心にして描かれる。その円の中にクラスタセンタが見つかった場合、たとえそのクラスタセンタが、異なるバケット内で見つかったとしても、イメージｐ９は、そのクラスタセンタに関連付けられ、そのクラスタセンタに既に関連付けられているイメージに類似すると判断される。その円の中にクラスタセンタが見つからなかった場合、スモールハッシュ値に基づいて新たなクラスタセンタが作成され、イメージｐ９は、その他のクラスタセンタに関連付けられたその他のイメージとは異なると判断される。イメージｐ５、ｐ６、ｐ７、ｐ８、ｐ９に加えてさらに別のイメージを考慮することも、同様の様式で進行する。
【０１２０】
上述の実施形態において、隣接するバケットは、共通の交点を共有するバケットのみを含むように形成されている。この実施形態において、交点を囲むバケットの１つの「層（レイヤ）」のみが考慮される。隣接するバケットは、その他の様式で形成されることも可能である。たとえば、隣接するバケットは、スモールハッシュ値に最も近い交点を囲むバケットの２つのレイヤを含むように形成される。この実施形態において、隣接するバケットは、スモールハッシュ値と同じ交点を共有する「内側」バケット、ならびに内側バケットのうちのいずれかと交点を共有する「外側」バケットを含む。一般には、フォルスネガティブの確率は、より多くの隣接するバケットを考慮することによって減少するが、それと引き換えに、検索空間および関連した計算が増大する。
【０１２１】
図８は、本発明の一実施形態による、図７Ａ〜図７Ｇに関連して記述されているバケット、クラスタセンタ、およびイメージの間における関連付けを表す図である。グラフ８５０は、バケット７８２、７８４、７８６、７８８、８１２、８１６を含む。クラスタセンタ７１２は、隣接するバケット７８２、７８４、７８６、７８８に関連付けられている。クラスタセンタｃ７  ７９６は、隣接するバケット７８２、７８４、７８６、７８８に関連付けられている。クラスタセンタ７１２、７９６のそれぞれは、類似すると判断されている１つまたは複数のイメージに関連付けられている。イメージｐ５  ８４０、ｐ６  ８４２、ｐ８  ８４６は、類似すると判断されており、クラスタセンタ７１２に関連付けられている。イメージｐ７  ８４４は、クラスタセンタ７９６に関連付けられている。バケット７８２、７８４、７８６、７８８、８１２、８１６、クラスタセンタｃ５  ７１２、ｃ７  ７９６、およびイメージｐ５  ８４０、ｐ６  ８４２、ｐ７  ８４４、ｐ８  ８４６、ならびにそれらの関連付けは、ソーシャルネットワーキングシステム１３０のソーシャルグラフの一部を形成する。
【０１２２】
図９は、本発明の一実施形態による、フォルスネガティブを減少させるようにイメージの類似性を決定するためのプロセス９００を示す。はじめに、ブロック９１０において、
新たなイメージが受け取られる。ブロック９１２において、その新たなイメージのラージハッシュ値が決定される。ラージハッシュ値は、たとえば、コンテンツ認識型のラージハッシュ関数を使用して決定される。次いでブロック９１４において、新たなイメージのラージハッシュ値からスモールハッシュ値が決定される。スモールハッシュ値は、たとえば、局所性鋭敏型ハッシュ関数を使用することによって決定される。ブロック９１６において、スモールハッシュに最も近いｄ次元座標系の交点が決定される。その最も近い交点は、（ｉ）スモールハッシュ値のｄ個の値を量子化すること、および（ｉｉ）それらのｄ個の量子化された値によって形成されるｄ次元座標系における交点を識別することによって決定される。
【０１２３】
ブロック９１８において、交点に基づいて、スモールハッシュ値に近いバケットが識別される。識別されるバケットは、スモールハッシュ値に隣接しているバケットで、かつブロック９１６において決定された交点をその交点のうちの１つとして有するバケットである。スモールハッシュ値に近いバケットは、その他の様式で識別されることも可能である。いずれの場合においても、ブロック９２０において、識別されたバケットに関連付けられているすべての既存のクラスタセンタが識別される。すべてのバケットに関連付けられたすべてのクラスタセンタを考慮する代わりに、スモールハッシュ値に近いバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。次いでブロック９２２において、識別されたバケットのうちのいずれかに関連付けられたいずれかの既存のクラスタセンタがあるか否かの決定が行われる。ブロック９２２に関する回答が「いいえ」である場合、新たなイメージのスモールハッシュ値が、識別されたバケットのうちの１つの上へ射影される最初のスモールハッシュ値である。次いでブロック９３６において、新たなイメージに関する新たなクラスタセンタが作成され、スモールハッシュ値の座標を与えられる。次いでブロック９３８において、新たなイメージは、その新たなクラスタセンタに関連付けられる。
【０１２４】
逆に、それらの識別されたバケットに関連付けられた少なくとも１つの既存のクラスタセンタがあり、ブロック９２２に関する回答が「はい」である場合、ブロック９２４において、スモールハッシュ値と、いずれかの識別されたバケットに関連付けられたそれぞれの既存のクラスタセンタとの間における距離が決定される。次いでブロック９２６において、スモールハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも短いか否かの決定が行われる。ブロック９２６に関する回答が「いいえ」である場合、ブロック９３４において、新たなイメージは、既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いでブロック９３６において、新たなイメージに関する新たなクラスタセンタが作成され、ブロック９３８において、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【０１２５】
しかしながら、スモールハッシュ値から少なくとも１つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短く、ブロック９２６に関する回答が「はい」である場合、ブロック９２８において、新たなイメージのスモールハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。スモールハッシュ値までのしきい値の距離よりも短い距離を有する別の既存のクラスタセンタが選択されることも可能である。いずれの場合においても、ブロック９３０において、新たなイメージは、識別された既存のクラスタセンタに関連付けられる。ブロック９３２において、新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断される。
【０１２６】
本発明の一実施形態において、プロセス９００は、全体的にまたは部分的にイメージの類似性解析モジュール１３２によって実行される。本発明の一実施形態において、プロセス９００は、少なくとも部分的にソーシャルネットワーキングシステム１３０によって実行される。
【０１２７】
さまざまな実施形態において、本明細書における前述の図およびそれらの関連した論考は、関連するバケットを識別するために、およびクラスタセンタを作成するために、または識別されたバケットに関連付けられた既存のクラスタセンタと比較するために、イメージのラージハッシュ値のスモールハッシュ値を使用することについて記述している。別の実施形態において、スモールハッシュ値を用いて、関連するバケットが識別されると、クラスタセンタを作成するために、または識別されたバケットに関連付けられた既存のクラスタセンタと比較するために、スモールハッシュ値の代わりにラージハッシュ値が使用される。たとえば、フォルスポジティブの決定に関しては、新たなイメージに関するラージハッシュ値が決定される。ラージハッシュ値は、たとえば、コンテンツ認識型のラージハッシュ関数を使用して決定される。次いで、ラージハッシュ値に基づいて新たなイメージに関するスモールハッシュ値が決定される。スモールハッシュ値は、たとえば、局所性鋭敏型ハッシュ関数を使用して決定される。スモールハッシュ値に関するハッシュ関数は、ラージハッシュ値をｄ次元座標系におけるｄ個のベクトル上へ効果的に射影する。スモールハッシュ値は、ｄ次元座標系を形成するｄ個のベクトルに関するｄ個の値を含む。スモールハッシュ値が収まる（ｄ次元座標系における）バケットが決定される。
【０１２８】
そのバケットに関連付けられているすべての既存のクラスタセンタが識別される。既存のクラスタセンタとは、既存のイメージに関して既に作成されているクラスタセンタである。その他のバケットに関連付けられたすべてのクラスタセンタを考慮する代わりに、そのバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。そのバケットに関連付けられたいずれかの既存のクラスタセンタがあるか否かに関する決定が行われる。存在しない場合、新たなイメージのラージハッシュ値が、そのバケット上へ射影される最初のラージハッシュ値である。次いで、新たなイメージに関する新たなクラスタセンタが作成されることが可能であり、ラージハッシュ値の座標を与えられる。次いで、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【０１２９】
逆に、そのバケットに関連付けられた少なくとも１つの既存のクラスタセンタがある場合、ラージハッシュ値と、そのバケットに関連付けられたそれぞれの既存のクラスタセンタとの間における距離が決定される。次いで、ラージハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも短いか否かの決定が行われる。短くない場合、新たなイメージは、そのバケットに関連付けられている既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いで、新たなイメージに関する新たなクラスタセンタが作成されることが可能であり、新たなイメージが、その新たなクラスタセンタに関連付けられる。したがって、イメージ同士が類似すると判断されない場合、複数のクラスタセンタが作成されて、そのバケットに関連付けられる。
【０１３０】
しかしながら、ラージハッシュ値から少なくとも１つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短い場合、新たなイメージのラージハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。ラージハッシュ値までのしきい値の距離よりも短い距離を有する別の既存のクラスタセンタが選択されることも可能である。いずれの場合においても、新たなイメージは、識別された既存のクラスタセンタに関連付けられる。新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断される。
【０１３１】
別の例として、フォルスネガティブの決定に関して、新たなイメージのラージハッシュ値が決定される。ラージハッシュ値は、たとえば、コンテンツ認識型のラージハッシュ関数を使用して決定される。次いで、新たなイメージのラージハッシュ値からスモールハッシュ値が決定される。スモールハッシュ値は、たとえば、局所性鋭敏型ハッシュ関数を使
用することによって決定される。スモールハッシュに最も近いｄ次元座標系の交点が決定される。その最も近い交点は、（ｉ）スモールハッシュ値のｄ個の値を量子化すること、および（ｉｉ）それらのｄ個の量子化された値によって形成されるｄ次元座標系における交点を識別することによって決定される。
【０１３２】
交点に基づいて、スモールハッシュ値に近いバケットが識別される。識別されるバケットは、スモールハッシュ値に隣接しているバケットで、かつ以前に決定された交点をその交点のうちの１つとして有するバケットである。スモールハッシュ値に近いバケットは、その他の様式で識別されることも可能である。いずれの場合においても、識別されたバケットに関連付けられているすべての既存のクラスタセンタが識別される。すべてのバケットに関連付けられたすべてのクラスタセンタを考慮する代わりに、スモールハッシュ値に近いバケットに関連付けられているクラスタセンタのみを考慮することによって、新たなイメージに関する検索空間は、大幅に減少する。次いで、識別されたバケットのうちのいずれかに関連付けられたいずれかの既存のクラスタセンタがあるか否かの決定が行われる。存在しない場合、新たなイメージのラージハッシュ値が、識別されたバケットのうちの１つの上へ射影される最初のラージハッシュ値である。次いで、新たなイメージに関する新たなクラスタセンタが作成されることが可能であり、ラージハッシュ値の座標を与えられる。次いで、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【０１３３】
逆に、それらの識別されたバケットに関連付けられた少なくとも１つの既存のクラスタセンタがある場合、ラージハッシュ値と、いずれかの識別されたバケットに関連付けられたそれぞれの既存のクラスタセンタとの間における距離が決定される。次いで、ラージハッシュ値からいずれかの既存のクラスタセンタまでの距離が、しきい値の距離よりも短いか否かの決定が行われる。短くない場合、新たなイメージは、既存のクラスタセンタに関連付けられたイメージとは異なると判断される。次いで、新たなイメージに関する新たなクラスタセンタが作成されることが可能であり、新たなイメージが、その新たなクラスタセンタに関連付けられる。
【０１３４】
しかしながら、ラージハッシュ値から少なくとも１つの既存のクラスタセンタまでの距離が、しきい値の距離よりも短い場合、新たなイメージのラージハッシュ値までの最短距離を有する既存のクラスタセンタが識別される。ラージハッシュ値までのしきい値の距離よりも短い距離を有する別の既存のクラスタセンタが選択されることも可能である。いずれの場合においても、新たなイメージは、識別された既存のクラスタセンタに関連付けられる。新たなイメージは、識別された既存のクラスタセンタに関連付けられたイメージに類似すると判断される。
【０１３５】
管理アクション
イメージをクラスタセンタに関連付けることは、類似するイメージに関してソーシャルネットワーキングシステム１３０によって取られる管理アクションを容易にする。図２における管理アクションモジュール２７０は、類似するイメージに関する取り下げおよびブロック機能を実行するようにプログラムされる。取り下げまたはブロック機能は、たとえば、あるイメージが、特定の状況において好ましくないと判断され、またはその他の形で不適切であると判断され、すべての類似するイメージが、ソーシャルネットワーキングシステム１３０から取り下げまたはブロックされるべきである場合に実行される。これらの機能は、クラスタセンタと、それらの対応する類似するイメージとの間における関連付けの経路をたどること、または「クローリング」によって実行される。
【０１３６】
図１０Ａ〜図１０Ｂにおいて、クラスタセンタ１０１０は、イメージｐ１０  １０１４、ｐ１１  １０１６と相互に（すなわち、二方向に）関連付けられている。クラスタセンタ１０１２は、イメージｐ１２  １０１８と相互に（すなわち、二方向に）関連付けられ
ている。図１０Ａは、本発明の一実施形態による管理アクションモジュール２７０によって実行される取り下げ機能を示す。たとえば、イメージｐ１０  １０１４が不適切であると判断されている場合、イメージｐ１０  １０１４に関連付けられたクラスタセンタ１０１０が、それらの関連付けの経路をイメージｐ１０  １０１４からクラスタセンタ１０１０へたどることによって識別される。次いで、クラスタセンタ１０１０に関連付けられたイメージｐ１１  １０１６は、それらの関連付けの経路をクラスタセンタ１０１０からイメージｐ１１  １０１６へたどることによって識別される。類似した様式で、イメージｐ１１  １０１６のように、イメージｐ１０  １０１４に類似していて、かつクラスタセンタ１０１０に関連付けられているすべてのイメージが識別される。したがって、クラスタセンタ１０１０が識別されると、管理アクションは、すべての関連付けの経路をクラスタセンタ１０１０からすべての関連付けられたイメージ（たとえば、イメージｐ１０  １０１４、ｐ１１  １０１６）へたどって、それらのイメージをソーシャルネットワーキングシステム１３０から取り下げる。
【０１３７】
図１０Ｂは、本発明の一実施形態による管理アクションモジュール２７０によって実行されるブロック機能を示す。たとえば、イメージｐ１２  １０１８が不適切であると判断されている場合、イメージｐ１２  １０１８に関連付けられたクラスタセンタ１０１２が、それらの関連付けの経路をイメージｐ１２  １０１８からクラスタセンタ１０１２へたどることによって識別される。イメージｐ１２  １０１８に類似したすべてのイメージが、クラスタセンタ１０１２に関連付けられる。したがって、クラスタセンタ１０１２が識別されると、クラスタセンタ１０１２は、管理アクションによって制御されることが可能であり、それにより、管理アクションによって制御されなければクラスタセンタ１０１２に関連付けられるであろうその後のすべての類似するイメージがソーシャルネットワーキングシステム１３０に投稿されることが不可能となる。
【０１３８】
本発明の一実施形態において、管理アクションモジュール２７０は、その他の機能を実行する。たとえば、ソーシャルネットワーキングシステム１３０が、類似するイメージの投稿を許可する場合、類似するイメージを投稿したまたは投稿するユーザに対して、メッセージが配信されることが可能であり、またはアクションが取られる。対象のイメージに対応するクラスタセンタが、それらの関連付けの経路を、対象のイメージから、関連付けられたクラスタセンタへたどることによって識別される。次いで、対象のイメージに類似したすべてのイメージが、それらの関連付けの経路をそのクラスタセンタからたどることによって識別される。次いで、類似するイメージに関連付けられているソーシャルネットワーキングシステム１３０のユーザが、それらの関連付けの経路を、類似するイメージのうちのそれぞれから、それらの関連付けられたユーザへたどることによって識別される。ユーザが識別されると、それらのユーザへメッセージが配信されることが可能であり、またはそれらのユーザに関してアクションが取られる。
【０１３９】
図１１は、本発明の一実施形態による、イメージの使用を制限するためのプロセス１１００を示す。はじめに、ブロック１１１２において、第１のイメージに関するラージハッシュ値が決定される。ブロック１１１４において、そのラージハッシュ値に基づいて、第１のイメージに関するスモールハッシュ値が決定される。ブロック１１１６において、第１のイメージに関連付けられた第１の値（たとえば、スモールハッシュ値）と、少なくとも１つのイメージに関連付けられた第１のクラスタセンタとの間における距離が決定される。ブロック１１１８において、決定された距離がしきい値の距離よりも長い場合、第１のイメージおよび少なくとも１つのイメージは類似しないと決定される。ブロック１１２０において、決定された距離がしきい値の距離よりも長い場合、第２のクラスタセンタが作成される。ブロック１１２２において、決定された距離がしきい値の距離よりも長い場合、第１のイメージが、第２のクラスタセンタに関連付けられる。ブロック１１２４において、決定された距離がしきい値の距離よりも短い場合、第１のイメージおよび少なくと
も１つのイメージは類似すると決定される。ブロック１１２６において、決定された距離がしきい値の距離よりも短い場合、第１のイメージが、第１のクラスタセンタに関連付けられる。ブロック１１２８において、第１のクラスタセンタの識別に基づいて、第１のイメージおよび少なくとも１つのイメージの使用が制限される。
【０１４０】
本発明の一実施形態において、プロセス１１００は、全体的にまたは部分的にイメージの類似性解析モジュール１３２によって実行される。本発明の一実施形態において、プロセス１１００は、少なくとも部分的にソーシャルネットワーキングシステム１３０によって実行される。
【０１４１】
まとめ
前述のプロセスおよび特徴は、さまざまなマシンおよびコンピュータシステムアーキテクチャによって、およびさまざまなネットワークおよびコンピューティング環境において実装される。図１２は、上で識別されたコンピューティングデバイスのうちの１つまたは複数を実装するために使用されるコンピュータシステム１２００の一例を示す。コンピュータシステム１２００は、本明細書において論じられているプロセスおよび特徴をコンピュータシステム１２００に実行させるための命令のセットを含む。コンピュータシステム１２００は、その他のマシンに接続される（たとえば、ネットワーク接続される）。ネットワーク接続された展開において、コンピュータシステム１２００は、クライアント−サーバネットワーク環境におけるサーバマシンもしくはクライアントマシンの許容能力内で、またはピアツーピア（もしくは分散）ネットワーク環境におけるピアマシンとして機能する。本発明の一実施形態において、コンピュータシステム１２００は、ソーシャルネットワーキングシステム１３０、ユーザデバイス１１０、および外部システム１２０、またはそれらの構成要素である。本発明の一実施形態において、コンピュータシステム１２００は、ソーシャルネットワーキングシステム１３０のすべてまたは一部を構成する多くのサーバのうちの１つのサーバである。
【０１４２】
コンピュータシステム１２００は、本明細書において記述されているプロセスおよび特徴を対象とする、プロセッサ１２０２、キャッシュメモリ１２０４、ならびに、コンピュータ可読媒体上に記憶されている１つまたは複数の実行可能なモジュールおよびドライバを含む。加えて、コンピュータシステム１２００は、ハイパフォーマンス入出力（Ｉ／Ｏ）バス１２０６および標準Ｉ／Ｏバス１２０８を含む。ホストブリッジ１２１０は、プロセッサ１２０２をハイパフォーマンスＩ／Ｏバス１２０６に結合しており、その一方で、Ｉ／Ｏバスブリッジ１２１２は、２つのバス１２０６および１２０８を互いに結合している。システムメモリ１２１４および１つまたは複数のネットワーク／通信インタフェース１２１６は、バス１２０６に結合している。コンピュータシステム１２００はさらに、ビデオメモリと、そのビデオメモリに結合されているディスプレイデバイス（図示せず）とを含む。マスストレージ１２１８、およびＩ／Ｏポート１２２０は、バス１２０８に結合している。コンピュータシステム１２００は、バス１２０８に結合されているキーボードおよびポインティングデバイス、ディスプレイデバイス、またはその他のＩ／Ｏデバイス（図示せず）を任意選択で含む。集合的に、これらの要素は、広いカテゴリのコンピュータハードウェアシステムを表すことを意図されており、それらのコンピュータハードウェアシステムは、インテルコーポレーション（Ｉｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎ）［米国カリフォルニア州サンタクララ（Ｓａｎｔａ  Ｃｌａｒａ）所在］によって製造されたｘ８６互換プロセッサ、およびアドバンストマイクロデバイセズインコーポレイティッド（Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏ  Ｄｅｖｉｃｅｓ（ＡＭＤ），Ｉｎｃ．）［米国カリフォルニア州サニーベール（Ｓｕｎｎｙｖａｌｅ）所在］によって製造されたｘ８６互換プロセッサ、ならびにその他の任意の適切なプロセッサに基づくコンピュータシステムを含むが、それらには限定されない。
【０１４３】
オペレーティングシステムは、ソフトウェアアプリケーション（図示せず）との間におけるデータの入力および出力を含む、コンピュータシステム１２００のオペレーションを管理および制御する。オペレーティングシステムは、システム上で実行されるソフトウェアアプリケーションと、システムのハードウェア構成要素との間におけるインタフェースを提供する。任意の適切なオペレーティングシステム、たとえば、ＬＩＮＵＸオペレーティングシステム、アップルコンピュータインコーポレイティッド（Ａｐｐｌｅ  Ｃｏｍｐｕｔｅｒ  Ｉｎｃ．）［米国カリフォルニア州クパチーノ（Ｃｕｐｅｒｔｉｎｏ）所在］から利用可能なＡｐｐｌｅ  Ｍａｃｉｎｔｏｓｈオペレーティングシステム、ＵＮＩＸ（登録商標）オペレーティングシステム、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム、ＢＳＤオペレーティングシステムなどが使用される。その他の実装態様も可能である。
【０１４４】
コンピュータシステム１２００の要素について、以下にさらに詳細に記載する。とりわけ、ネットワークインタフェース１２１６は、コンピュータシステム１２００と、イーサネット（たとえば、ＩＥＥＥ８０２．３）ネットワーク、バックプレーン等などの広範囲のネットワークのうちのいずれかとの間における通信を提供する。マスストレージ１２１８は、上で識別されたそれぞれのコンピューティングシステムによって実装される上述のプロセスおよび特徴を実行するためのデータおよびプログラミング命令のための永続的なストレージを提供し、その一方で、システムメモリ１２１４（たとえば、ＤＲＡＭ）は、プロセッサ１２０２によって実行される場合のデータおよびプログラミング命令のための一時的なストレージを提供する。Ｉ／Ｏポート１２２０は、コンピュータシステム１２００に結合されるさらなる周辺デバイス同士の間における通信を提供する１つまたは複数のシリアルおよび／またはパラレル通信ポートである。
【０１４５】
コンピュータシステム１２００は、さまざまなシステムアーキテクチャを含むことができ、コンピュータシステム１２００のさまざまな構成要素は、再構成され得る。たとえば、キャッシュ１２０４は、プロセッサ１２０２とともにオンチップである。あるいは、キャッシュ１２０４およびプロセッサ１２０２がともに「プロセッサモジュール」としてパッケージ化されて、プロセッサ１２０２が「プロセッサコア」と呼ばれることも可能である。さらに、本発明の特定の実施形態は、上述の構成要素のうちのすべてを必要とするとも、または含むとも限らない場合がある。たとえば、標準Ｉ／Ｏバス１２０８に結合される周辺デバイスが、ハイパフォーマンスＩ／Ｏバス１２０６に結合することも可能である。加えて、いくつかの実施形態において、単一のバスのみが存在して、コンピュータシステム１２００の構成要素が、その単一のバスに結合されることも可能である。さらに、コンピュータシステム１２００は、さらなるプロセッサ、ストレージデバイス、またはメモリなどのさらなる構成要素を含む。
【０１４６】
一般には、本明細書において記述されているプロセスおよび特徴は、オペレーティングシステムもしくは特定のアプリケーション、コンポーネント、プログラム、オブジェクト、モジュール、または、「プログラム等」と呼ばれる一連の命令の一部として実装される。たとえば、本明細書において記述されている特定のプロセスを実行するために、１つまたは複数のプログラムが使用される。これらのプログラムは、典型的には、コンピュータシステム１２００内のさまざまなメモリおよびストレージデバイス内に１つまたは複数の命令を含み、それらの命令は、１つまたは複数のプロセッサによって読み取られて実行されたときに、本明細書において記述されているプロセスおよび特徴を実行するためのオペレーションをコンピュータシステム１２００に実行させる。本明細書において記述されているプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア（たとえば、特定用途向け集積回路）、またはそれらの任意の組合せにおいて実装される。
【０１４７】
一実装態様において、本明細書において記述されているプロセスおよび特徴は、コンピ
ュータシステム１２００によって分散コンピューティング環境において個別にまたは集合的に実行される一連の実行可能なモジュールとして実装される。前述のモジュールは、ハードウェア、コンピュータ可読媒体（もしくはマシン可読媒体）上に記憶されている実行可能なモジュール、または両方の組合せによって実現される。たとえば、それらのモジュールは、プロセッサ１２０２など、ハードウェアシステム内のプロセッサによって実行される複数のまたは一連の命令を含む。はじめに、それらの一連の命令は、マスストレージ１２１８などのストレージデバイス上に記憶される。しかしながら、それらの一連の命令は、任意の適切なコンピュータ可読記憶媒体上に記憶される。さらに、それらの一連の命令は、ローカルに記憶される必要はなく、ネットワーク／通信インタフェース１２１６を通じてネットワーク上のサーバなどの遠隔のストレージデバイスから受け取られる。それらの命令は、マスストレージ１２１８などのストレージデバイスからメモリ１２１４へとコピーされ、次いでプロセッサ１２０２によってアクセスされ実行される。
【０１４８】
コンピュータ可読媒体の例として、記録可能なタイプの媒体、たとえば、揮発性メモリデバイスおよび不揮発性メモリデバイス、ソリッドステートメモリ、フロッピー（登録商標）およびその他の取り外し可能なディスク、ハードディスクドライブ、磁気媒体、光ディスク（たとえば、コンパクトディスク読み取り専用メモリ（ＣＤ  ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ））、その他の類似した非一時的な（もしくは一時的な）、有形の（もしくは無形の）記憶媒体、または、本明細書において記述されているプロセスおよび特徴のうちの任意の１つもしくは複数を実行するためにコンピュータシステム１２００によって実行するための一連の命令を記憶、エンコード、もしくは搬送するのに適した任意のタイプの媒体が含まれるが、それらには限定されない。
【０１４９】
説明の目的から、この記述の徹底的な理解を提供するために、多くの特定の詳細が示される。しかしながら、これらの特定の詳細を伴わずに本開示の実施形態が実施されることは、当業者にとって明らかであろう。いくつかの例において、この記述をわかりにくくすることを回避するために、モジュール、構造、プロセス、特徴、およびデバイスが、ブロック図の形式で示される。その他の例において、データおよび論理フローを表すために、機能ブロック図およびフローチャートが示される。ブロック図およびフローチャートの構成要素（たとえば、モジュール、ブロック、構造、デバイス、特徴など）は、本明細書において明示的に記述され示される以外の様式で、さまざまに結合されること、切り離されること、取り外されること、並べ替えられること、および置き換えられる。
【０１５０】
本明細書における、「一実施形態」、「一実施形態」、「その他の実施形態」などへの言及は、その実施形態に関連して記述されている特定の機能、設計、構造、または特徴が、本開示の少なくとも一実施形態に含まれていることを意味する。たとえば、「一実施形態において（における）」または「一実施形態において（における）」という語句が、本明細書におけるさまざまな個所に登場しても、それらは、必ずしもすべて同じ実施形態を示しているとは限らず、また、その他の実施形態に対して相互に排他的な別々のまたは代替の実施形態であるとも限らない。その上、「実施形態」などへの明示的な言及があるか否かを問わず、いくつかの実施形態においてさまざまに結合されることおよび含まれること、さらにまた、その他の実施形態においてさまざまに省略されるさまざまな特徴が記述されている。同様に、いくつかの実施形態にとっては好ましいことまたは必要なことかもしれないが、その他の実施形態にとってはそうではないかもしれないさまざまな特徴が記述されている。
【０１５１】
本明細書において使用されている言葉は、主として読みやすさおよび教示上の目的で選択されており、本発明の主題に関する線引きまたは画定を行うために選択されてはいない場合がある。したがって、本発明の範囲は、この詳細な記述によってではなく、本明細書に基づく出願上で生じるあらゆる請求項によって限定されることが意図されている。した
がって、本発明の実施形態の開示は、本発明の範囲を例示するものであり、本発明の範囲を限定するものではないことが意図されており、本発明の範囲は、添付の特許請求の範囲において示される。
【要約】  イメージの類似性を決定するための技術である。一実施形態において、あるイメージに関連付けられているスモールハッシュ値が、バケット内に収まると決定される。そのバケットに既存のクラスタセンタが関連付けられている場合、スモールハッシュ値と、そのクラスタセンタとの間における距離が決定される。スモールハッシュ値からそのクラスタセンタまでの距離が、しきい値の距離よりも長い場合、そのイメージは、そのクラスタセンタに関連付けられたその他のイメージとは異なると判断される。次いで、新たなクラスタセンタが作成されて、そのバケットに関連付けられ、そのイメージは、その新たなクラスタセンタに関連付けられる。そのバケット内に収まるスモールハッシュ値を有するイメージが類似すると判断されない場合、そのバケットに複数のクラスタセンタが関連付けられる。別の実施形態において、バケットが識別されると、イメージの類似性を評価するために、スモールハッシュ値の代わりに、ラージハッシュ値と、クラスタセンタとの間における距離が決定される。【図３Ａ】
0005784865.tif 000002
【図３Ｂ】
0005784865.tif 000003
【図１】
0005784865.tif 000004
【図２】
0005784865.tif 000005
【図４Ａ】
0005784865.tif 000006
【図４Ｂ】
0005784865.tif 000007
【図４Ｃ】
0005784865.tif 000008
【図４Ｄ】
0005784865.tif 000009
【図４Ｅ】
0005784865.tif 000010
【図５】
0005784865.tif 000011
【図６】
0005784865.tif 000012
【図７Ａ】
0005784865.tif 000013
【図７Ｂ】
0005784865.tif 000014
【図７Ｃ】
0005784865.tif 000015
【図７Ｄ】
0005784865.tif 000016
【図７Ｅ】
0005784865.tif 000017
【図７Ｆ】
0005784865.tif 000018
【図７Ｇ】
0005784865.tif 000019
【図８】
0005784865.tif 000020
【図９】
0005784865.tif 000021
【図１０Ａ】
0005784865.tif 000022
【図１０Ｂ】
0005784865.tif 000023
【図１１】
0005784865.tif 000024
【図１２】
0005784865.tif 000025