(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-12
(45)【発行日】2024-04-22
(54)【発明の名称】テキストおよび画像ベースの検索
(51)【国際特許分類】
G06F 16/532 20190101AFI20240415BHJP
G06F 16/538 20190101ALI20240415BHJP
G06F 16/58 20190101ALI20240415BHJP
G06T 7/00 20170101ALI20240415BHJP
【FI】
G06F16/532
G06F16/538
G06F16/58
G06T7/00 300F
(21)【出願番号】P 2020514552
(86)(22)【出願日】2018-09-19
(86)【国際出願番号】 US2018051823
(87)【国際公開番号】W WO2019060464
(87)【国際公開日】2019-03-28
【審査請求日】2021-08-05
【審判番号】
【審判請求日】2023-07-24
(32)【優先日】2017-09-22
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】512038078
【氏名又は名称】ピンタレスト,インコーポレイテッド
(74)【代理人】
【識別番号】110003018
【氏名又は名称】弁理士法人プロテクトスタンス
(72)【発明者】
【氏名】キスリユク ディミトリー オレゴビッチ
(72)【発明者】
【氏名】ハリス ジェフリー
(72)【発明者】
【氏名】ヘラシメンコ アントン
(72)【発明者】
【氏名】キム エリック
(72)【発明者】
【氏名】ジェン イーミング
【合議体】
【審判長】林 毅
【審判官】脇岡 剛
【審判官】吉田 美彦
(56)【参考文献】
【文献】米国特許出願公開第2010/0205202号明細書(US,A1)
【文献】特開2015-143951号公報(JP,A)
【文献】特表2017-504861号公報(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
計算システムであって、
1つまたはそれ以上のプロセッサと、
前記1つまたはそれ以上のプロセッサによって実行されたときに、前記1つまたはそれ以上のプロセッサに少なくとも、
ユーザ装置からテキストクエリを受信することと、
前記テキストクエリに対応する複数の結果を判定することと、
前記テキストクエリが定義されたカテゴリに対応することを判定することと、
前記テキストクエリが前記定義されたカテゴリに対応するという判定に応じて、画像の絞り込みオプションを前記ユーザ装置に提供させることと、
前記ユーザ装置から前記画像の絞り込みオプションの一部としてのオブジェクトの画像を受信することと、
前記オブジェクトを表すオブジェクト特徴ベクトルを生成することと、
前記オブジェクト特徴ベクトルを、前記複数の結果として返される画像のセグメントに対応する複数の保存された特徴ベクトルと比較し、前記オブジェクト特徴ベクトルと前記複数の保存された特徴ベクトルとのそれぞれの間の類似度を示す複数の類似度スコアを生成することと、
前記複数の類似度スコアに基づいて、前記複数の結果のランク付けされたリストを生成することと、
前記オブジェクトの画像の前記受信に応じて前記ランク付けされたリストを前記ユーザ装置に提示することと、
を引き起こすプログラム命令を保存するメモリと、
を備えた計算システム。
【請求項2】
前記複数の保存された画像セグメントのそれぞれは、画像全体より少ない部分に対応する、請求項1に記載の計算システム。
【請求項3】
コンピュータ実装方法であって、
ユーザ装置からクエリを受信することと、
前記クエリに基づいて第1の複数の画像を判定することと、
定義されたカテゴリに前記クエリが対応することを判定することと、
前記定義されたカテゴリに前記クエリが対応する判定に応じて、視覚的な改良オプションを前記ユーザ装置に提示させることと、
前記ユーザ装置から前記視覚的な改良オプションの一部としてのオブジェクトの画像を受信することと、
前記オブジェクトの前記画像を、前記第1の複数の画像のそれぞれの少なくとも1つの画像セグメントと比較し、 前記オブジェクトの前記画像と前記第1の複数の画像のそれぞれの1つとの間の類似度を示す複数のそれぞれの類似度スコアを生成することと、
前記複数のそれぞれの類似度スコアに基づいて、前記第1の複数の画像の少なくとも一部のランク付けされたリストを判定することと、
前記ランク付けされたリストに従って、前記第1の複数の画像の前記少なくとも一部を前記ユーザ装置に提示することと、
を含む、コンピュータ実装方法。
【請求項4】
前記オブジェクトの画像を処理して、前記オブジェクトの画像に表される前記オブジェクトのオブジェクトタイプを判定することをさらに含み、
前記オブジェクトの画像を比較することは、
前記オブジェクトを表すオブジェクト特徴ベクトルを生成することと、
前記オブジェクト特徴ベクトルを、同じオブジェクトタイプを有する前記第1の複数の画像で表されるオブジェクトに対応する複数の保存された特徴ベクトルと比較することと、
を含む、請求項3に記載のコンピュータ実装方法。
【請求項5】
前記ユーザ装置に、前記ユーザ装置のカメラの視野内の前記オブジェクトを検出させることと、
前記ユーザ装置に、前記オブジェクトに対応するオブジェクトタイプを判定させることと、
前記ユーザ装置に、前記ユーザ装置のディスプレイにオブジェクトタイプ識別子を提示させることと、
をさらに含む、請求項3または4に記載のコンピュータ実装方法。
【請求項6】
オブジェクトタイプに対応するキーワードを生成することと、
クエリの一部としてキーワードを含めることと、
をさらに含む、請求項5に記載のコンピュータ実装方法。
【請求項7】
前記第1の複数の画像の前記一部、前記第1の複数の画像、または前記クエリの少なくとも1つに対応する複数のキーワードを判定することと、
提示および前記ユーザ装置のユーザによる選択のために前記複数のキーワードのそれぞれを提供することと、
をさらに含む、請求項3-6のいずれか一項に記載のコンピュータ実装方法。
【請求項8】
前記オブジェクトの前記画像を比較することは、
前記オブジェクトを表すオブジェクト特徴ベクトルを生成することと、
前記オブジェクトが定義されたカテゴリーの1つのオブジェクトタイプのどれに対応するか判定することと、
前記オブジェクトタイプの種類に対応するラベルを生成することと、
前記ラベルを使用して、
可能性が最も高い位置に基づいて、前記第1の複数の画像内の
画像セグメントに関連付けられた保存された特徴ベクトルを選択することと、
前記オブジェクト特徴ベクトルと、
選択された前記画像セグメントに関連付けられた保存された特徴ベクトルとを比較することと、
をさらに含む、請求項3-7のいずれか一項に記載のコンピュータ実装方法。
【請求項9】
計算システムの少なくとも1つのプロセッサによって実行されたときに、前記計算システムに少なくとも、
ユーザ装置からクエリを受信することと、
定義されたカテゴリに前記クエリが対応することを判定することと、
前記カテゴリに前記クエリが対応することに応じて、前記ユーザ装置において視覚的な改良オプションを有効にさせることと、
前記視覚的改良オプションの一部として、前記ユーザ装置からストリーミングビデオを受信することと、
前記ストリーミングビデオの少なくとも一部を処理して、前記ストリーミングビデオで表される1つまたはそれ以上のオブジェクトのオブジェクトタイプを識別することと、
前記ユーザ装置のディスプレイ上に、前記ストリーミングビデオのプレゼンテーションと同時に、前記1つまたはそれ以上のオブジェクトの前記オブジェクトタイプを提示させることと、
前記ユーザ装置から前記オブジェクトタイプの選択を受け取ることと、
前記クエリと前記選択されたオブジェクトタイプとの両方に対応する複数の保存画像を判定することと、
前記ユーザ装置の前記ディスプレイ上に前記複数の保存された画像を提示させることと、
を実行させる命令を保存する非一時的コンピュータ可読記憶媒体。
【請求項10】
前記定義されたカテゴリは食品であり、
前記ストリーミングビデオは、前記ユーザ装置のカメラの視野内に現在ある食べ物の表現を含む、
請求項9に記載の非一時的コンピュータ可読記憶媒体。
【請求項11】
前記命令は、前記計算システムに少なくとも、
前記定義されたカテゴリに基づいて、前記複数の保存された画像を判定する際に考慮される候補画像を判定させる、
請求項9または10に記載の非一時的コンピュータ可読記憶媒体。
【請求項12】
前記少なくとも1つのプロセッサに前記複数の記憶された画像を判定させる前記命令は、前記計算システムに少なくとも、
前記クエリ、前記少なくとも1つのオブジェクトタイプ、または前記定義されたカテゴリに対応する少なくとも1つのキーワードを判定することと、
前記少なくとも1つのキーワードに基づいて、前記複数の保存された画像を判定することと、
を生じさせる、請求項9-11のいずれか一項に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【背景技術】
【0001】
この出願は、参照によりその全体が本明細書に組み込まれる、「テキストおよび画像ベースの検索」という名称の、2017年9月22日に出願された米国出願第15/713,567号の利益を主張する。
【0002】
ユーザと顧客とが利用できるアクセス可能なデジタルコンテンツはますます増え続けているため、ユーザが検索しているコンテンツを見つけることはますます困難になっている。キーワード検索など、いくつかの異なる検索手法が存在するが、そのようなシステムには多くの非効率性がある。
【図面の簡単な説明】
【0003】
【
図1A】記載された実装による、ユーザ装置によって取得された入力画像を示す。
【
図1B】
図1Aの入力画像の選択されたオブジェクトの視覚的検索結果を示しており、記載された実装によれば、結果は選択されたオブジェクトに視覚的に類似するオブジェクトを含む画像である。
【
図2】記載された実装による、例示的な画像処理プロセスである。
【
図3】実装による、セグメント化された画像の表現である。
【
図4】記載された実装による、例示的なオブジェクト・マッチング・プロセスである。
【
図5】記載された実装による、オブジェクト・マッチング・プロセスの別の例である。
【
図6A】記載された実装に従って、ユーザ装置によって取得された入力画像を示す。
【
図6B】
図6Aの入力画像における関心のあるオブジェクトの視覚的検索結果を示し、記載された実装によれば、結果は関心のあるオブジェクトに関連する画像を含む。
【
図7】記載された実装による、例示的なオブジェクト・カテゴリ・マッチング・プロセスである。
【
図8A】記載された実装に従って、視覚的改良を提供するオプションを伴うクエリを示す。
【
図8B】記載された実装による、視覚的改良入力を示す。
【
図8C】記載された実装による、
図8Bの視覚的改良に基づいて改良された
図8Aのクエリの検索結果を示す。
【
図9】記載された実装による、例示的なテキストおよび画像マッチングプロセスである。
【
図10A】記載された実装による、クエリの例示的な視覚的改良入力を示す。
【
図10B】記載された実装による、
図10Aのクエリの検索結果および視覚的改良を示す。
【
図11】一実装形態による例示的な計算装置を示す。
【
図12】
図11に示すような計算装置の構成要素の例示的な構成を示す。
【
図13】様々な実装に使用できるサーバシステムの例示的な実装の絵図である。
【発明を実施するための形態】
【0004】
本明細書では、より大きな画像および/またはビデオからの1つまたはそれ以上の関心のあるオブジェクトの選択に基づいて情報の検索を容易にするシステムおよび方法について説明する。いくつかの実装では、オブジェクトの画像に、結果を絞り込むためのテキストやキーワードなど、他の形式の検索入力を追加してもよい。他の実装では、オブジェクトの画像を使用して、テキストまたはキーワード検索などの既存の検索を補完または改良してもよい。
【0005】
多くの画像ベースのクエリ(たとえば、ファッションデザイン、インテリアデザインなど)では、ユーザが関心を持っているのは、画像に表される特定のオブジェクト(たとえば、ドレス、カウチ、ランプなど)ではなく、それらのオブジェクトとそれらのオブジェクトの配置方法とを含む画像全体(たとえば、シャツとスカートの間のスタイルの選択、テレビに対するカウチの配置)である。たとえば、ユーザは、1足の靴を含む画像を提供し、関心のあるオブジェクトとして靴を示し、選択した靴と視覚的に類似する靴を含む他の画像と、それらの他の靴とズボン、シャツ、帽子、財布などの他のオブジェクトとのスタイルの組み合わせを表示したい場合がある。
【0006】
一実施形態では、ユーザは、関心のあるオブジェクトを含む画像を提供または選択することにより検索を開始し得る。次に、説明した実装は、画像を処理して、関心のあるオブジェクトを検出し、および/または画像に表されるように関心のあるオブジェクトを示す選択をユーザから受け取ることができる。関心のあるオブジェクトを含む画像の部分は、画像の残り、判定された関心のあるオブジェクト、および/または生成された関心のあるオブジェクトを表すオブジェクト特徴ベクトルからセグメント化されてもよい。判定された関心のあるオブジェクトおよび/またはオブジェクト特徴ベクトルに基づいて、他の保存された画像のセグメントの保存された特徴ベクトルを関心のあるオブジェクトのオブジェクト特徴ベクトルと比較して、関心のあるオブジェクトと視覚的に類似するオブジェクトを含む他の画像を判定することができる。保存された画像は、視覚的に類似する他のオブジェクトの特定の画像、または多くの場合、関心のあるオブジェクトに視覚的に類似する1つまたはそれ以上のオブジェクトを含む複数のオブジェクトの画像であり、それにより関心のあるオブジェクトのようなオブジェクトが他のオブジェクトとどのように結合されるかを示す画像を提供する。ユーザは、提示された画像の1つを選択したり、追加のオブジェクトやその他のオブジェクトを選択したり、他のアクションを実行したりできる。
【0007】
いくつかの実装形態では、保存された画像がさまざまな領域にセグメント化され、それらのセグメントで表されるオブジェクトが判定され、それらのオブジェクトを表す特徴ベクトルが生成されて画像のセグメントに関連付けられ得る。関心のあるオブジェクトに対してオブジェクト特徴ベクトルが生成されると、オブジェクト特徴ベクトルは、視覚的に類似するオブジェクトを含む画像を検出するために、保存画像のさまざまなセグメントの保存特徴ベクトルと比較され得る。オブジェクト特徴ベクトルを画像のセグメントに対応する保存された特徴ベクトルと比較することで、対象の画像に他の多くのオブジェクトの表現が含まれている場合でも、関心のあるオブジェクトに視覚的に類似するオブジェクトを含む画像を特定できる。
【0008】
さらに別の実施形態では、ユーザは複数の関心のあるオブジェクトを選択することができ、および/または選択された関心のあるオブジェクトが肯定的な関心のあるオブジェクトであるか否定的な関心のあるオブジェクトであるかを指定することができる。肯定的な関心のあるオブジェクトは、他の視覚的に類似したオブジェクトの画像を見ることに関心があるユーザが選択したオブジェクトである。否定的な関心のあるオブジェクトは、ユーザが他の画像に含めたくないユーザが選択したオブジェクトである。たとえば、ユーザが画像から椅子とランプの肯定的なオブジェクトと敷物の否定的なオブジェクトとを選択した場合、ここで説明する実装は、選択された椅子およびランプに視覚的に類似した椅子およびランプを含む他の画像を識別し、これには他のオブジェクトの表現が含まれる可能性があるが、選択されたラグに視覚的に類似するラグは含まれない。
【0009】
いくつかの実装形態では、関心のあるオブジェクトの画像を処理して、関心のあるオブジェクトのタイプを検出してもよい。関心のあるオブジェクトの判定されたタイプに基づいて、関心のあるオブジェクトのタイプが定義されたカテゴリ(たとえば、食品、ファッション、家の装飾)に対応するかどうかを判定することができる。関心のあるオブジェクトのタイプが定義されたカテゴリに対応する場合、複数のクエリタイプを選択でき、そこから異なるクエリの結果が返され、入力画像の結果として混合される。たとえば、一部のクエリタイプは、クエリキーワードを受信し、キーワードに基づいて画像結果を提供するように構成できる。他のクエリタイプは、特徴ベクトルなどの画像ベースのクエリを受信し、画像クエリを保存された画像情報と比較して、クエリに対応する結果を返すように構成できる。
【0010】
定義されたカテゴリに対応する結果を提供するために、さまざまなクエリタイプを使用できる。たとえば、関心のあるオブジェクトが食べ物のタイプであると判定された場合、1つのクエリタイプは、関心のあるオブジェクトの視覚的表現に関連しているが、これらを含まないコンテンツ(テキスト、画像、ビデオ、オーディオなど)を返してもよい。別のクエリタイプは、目的のオブジェクトに視覚的に類似したオブジェクトを含む画像やビデオを返し得る。このような例では、さまざまなクエリタイプからの結果を判定および混合して、各クエリタイプからの結果を含むクエリへの単一の応答を提供できる。
【0011】
さらに他の例では、ユーザはテキストベースのクエリを開始してから、関心のあるオブジェクトの画像を使用してテキストベースのクエリを改良することができる。たとえば、ユーザは「夏服」などのテキストベースのクエリを入力でき、説明した実装はテキストベースのクエリを処理して、クエリが定義済みのカテゴリ(ファッションなど)に対応することを判定できる。次に、ユーザは、関心のあるオブジェクトを含む画像を提供し、その関心のあるオブジェクトを使用して、テキストベースのクエリの結果を改良または変更することができる。たとえば、関心のあるオブジェクトが赤いトップスの場合、テキストクエリに一致する検索結果を処理して、関心のあるオブジェクト(この例では赤いトップス)に視覚的に類似する他のトップスの表現を含む結果を検出できる。次いで、結果は、テキストベースの検索に一致し、関心のあるオブジェクトに視覚的に類似するオブジェクトを含む結果が最も高くランク付けされ、最初にユーザに提示されるようにランク付けされてもよい。
【0012】
図1Aは、記載された実装に従って、ユーザ装置100により取得された入力画像を示す。この例では、ユーザは、関心のあるオブジェクト102、この例ではハイヒールの靴に視覚的に類似するオブジェクトを含む画像を検索したい。理解されるように、画像で表され得る任意のオブジェクトは、関心のあるオブジェクトであり得る。関心のあるオブジェクトを提供するために、ユーザは、ユーザ装置100の1つまたはそれ以上のカメラを使用して画像を生成し、ユーザ装置100のメモリから画像を提供し、ユーザ装置100の外部のメモリに保存された画像を提供し、本明細書で説明されるシステムおよび方法によって提供される画像(たとえば、結果として提供される画像)を選択し、および/または別のソースまたは場所から画像を提供または選択することができる。
【0013】
この例では、ユーザはユーザ装置100のカメラを使用して画像101を生成した。画像は、ハイヒールの靴102、ランプ104-2、ボトル104-1、およびテーブル104-3などの複数のオブジェクトを含む。画像を受信すると、画像をセグメント化および処理して、画像内のオブジェクトを検出し、検索を実行する関心のあるオブジェクトを判定することができる。以下でさらに説明するように、画像内のオブジェクトを識別するために、オブジェクト認識、エッジ検出などのさまざまな画像処理技術のいずれか1つまたはそれ以上を使用して画像を処理することができる。
【0014】
関心のあるオブジェクトは、オブジェクトの相対サイズ、オブジェクトが画像内で焦点を合わせているかどうか、オブジェクトの位置などに基づいて判定され得る。図示の例では、ハイヒールの靴102はオブジェクトであると判定される。なぜなら、それは画像101の中心に向かって配置され、画像に表される他のオブジェクト104の物理的に前方にあり、焦点が合っているからである。他の実装では、ユーザは関心のあるオブジェクトを選択または指定できる。
【0015】
関心のあるオブジェクトが判定されると、入力画像がセグメント化され、関心のあるオブジェクトを表す特徴ベクトルが生成される。特徴ベクトルの生成については、以下で詳しく説明する。典型的な画像処理とは対照的に、関心のあるオブジェクトは画像101の他の部分から抽出またはセグメント化され、関心のあるオブジェクト特徴ベクトルは、関心のあるオブジェクト特徴ベクトルが関心のあるオブジェクトのみを表すように生成される。画像全体ではなく、関心のあるオブジェクトのみを表すオブジェクト特徴ベクトルを生成することにより、本明細書で説明するマッチングの品質が向上する。具体的には、以下でさらに説明するように、保存画像をセグメント化し、保存画像のさまざまなセグメントでオブジェクトを検出し、それらの画像で表されるオブジェクトを表すそれぞれの特徴ベクトルを生成する。そのため、保存された各画像には、複数のセグメントと複数の異なる特徴ベクトルとが含まれる場合があり、各特徴ベクトルは画像に表されるオブジェクトを表す。
【0016】
関心のあるオブジェクトを表すオブジェクト特徴ベクトルが生成されると、保存された画像のセグメントに含まれる個々のオブジェクトを表す保存された特徴ベクトルと比較されてもよい。結果として、保存された画像全体が入力画像100とはかなり異なっていても、関心のあるオブジェクトと、保存された画像の画像全体よりも小さいセグメントを表す保存された特徴ベクトルとの比較に基づいて、保存された画像がオブジェクト特徴ベクトルに視覚的に類似するオブジェクトの表現を含むと判定され得る。
【0017】
いくつかの実装形態では、オブジェクト特徴ベクトルと比較される保存された特徴ベクトルの数を制限または削減するために、関心のあるオブジェクトのタイプが判定および使用され得る。たとえば、関心のあるオブジェクトが靴(ハイヒールの靴など)であると判定された場合、オブジェクト特徴ベクトルは、他の靴を表すことがわかっている保存済みの特徴ベクトルとのみ比較され得る。別の例では、保存された特徴ベクトルは、あるタイプのオブジェクトが一般的に位置する画像内の位置に基づいて比較のために選択されてもよい。たとえば、再び、関心のあるオブジェクトが靴のタイプであると判定された場合、靴は典型的に画像の下部3分の1に表されるとさらに判定され得る。このような例では、保存された画像の下部3分の1にある画像のセグメントに対応する保存された特徴ベクトルのみがオブジェクト特徴ベクトルと比較され得る。
【0018】
保存された特徴ベクトルがオブジェクト特徴ベクトルと比較されると、オブジェクト特徴ベクトルと保存された特徴ベクトルとの間の類似性を表す類似性スコアが判定され、最も高い類似性スコアを有すると判定された保存された特徴ベクトルに関連付けられた保存された画像が検索の結果として返される。たとえば、
図1Bは、説明した実装によると、
図1Aの入力画像100のハイヒール靴102である関心のあるオブジェクトの視覚的検索結果を示す。
【0019】
この例では、ハイヒールの靴102を表すオブジェクト特徴ベクトルは、結果画像110として返される保存画像の異なるセグメントで表されるオブジェクトを表す保存特徴ベクトルと比較される。以下で説明するように、保存された画像はセグメント化され、オブジェクトが検出され、オブジェクト特徴ベクトルが生成され、保存された画像、セグメント、保存された画像内のそれらのセグメントの位置、およびデータストアに保持された特徴ベクトル間の関連付けがされ得る。
【0020】
この例では、関心のあるオブジェクト102を表すオブジェクト特徴ベクトルは、オブジェクト113-1、113-2A、113-2B、113-2C、113-3、113-4などを表す保存された特徴ベクトルと比較され、オブジェクト特徴ベクトルと保存された特徴ベクトルとの類似性が判定される。図示されるように、検索に応答して返される画像110は、関心のあるオブジェクトに視覚的に類似すると判定されたオブジェクトに加えてオブジェクトを含む。たとえば、第1の画像110-1は、関心のあるオブジェクト102に視覚的に類似していると判定されたオブジェクト113-1を含むセグメント112-1、ならびに人105、服装などの他のオブジェクトを含む。以下でさらに説明するように、返される保存画像には、いくつかのセグメントおよび/またはオブジェクトが含まれる場合がある。あるいは、返される保存された画像には、視覚的に類似したオブジェクトのみが含まれる場合がある。たとえば、第4の画像110-4は、関心のあるオブジェクト102に視覚的に類似するオブジェクト113-4を含む単一のセグメント112-4を含むが、他のオブジェクトは画像に表されない。
【0021】
第2の画像110-2は、関心のあるオブジェクト102と同じタイプの複数のセグメント112-2A、112-2B、112-2C、および複数のオブジェクト113-2A、113-2B、113-2Cを含む。そのような例では、オブジェクト特徴ベクトルは、第2の画像110-2に関連付けられ、異なるオブジェクトを表す1つまたはそれ以上の特徴ベクトルと比較され得る。いくつかの実装形態では、オブジェクト特徴ベクトルと第2の画像110-2に関連付けられた保存された特徴ベクトルとの間の類似性が平均化され、その平均が第2の画像110-2の類似性として使用される。他の実装では、最高の類似性スコア、最低の類似性スコア、中央値類似性スコア、または他の類似性スコアが、関心のあるオブジェクトと画像との間の視覚的類似性の代表として選択され得る。
【0022】
ユーザは、生成されたオブジェクト特徴ベクトルと保存された特徴ベクトルとの比較から結果を受け取ると、それに応答して提供される画像110を表示および/または対話することができる。画像は、より高い類似性スコアを有する保存された特徴ベクトルに関連する画像がより高いランクになり、より低い類似性スコアを有する特徴ベクトルに関連する画像の前に表示されるようにランク付けおよび提示され得る。
【0023】
図2は、記載された実装に従って、データストアに維持される保存画像のセグメントおよびオブジェクトを表す保存特徴ベクトルおよびラベルを生成するために実行され得る例示的な画像処理プロセスである。例示的なプロセス200は、202のように、処理する画像を選択することから始まる。
図2に関して説明した実装に従って、任意の画像を処理することができる。たとえば、画像データストアに保存された画像、ユーザ装置のカメラによって生成された画像、ユーザ装置のメモリに保持された画像、または例示的なプロセス200に従って処理するための他の画像を選択することができる。場合によっては、画像処理プロセス200を使用して、セグメント、ラベル、および/または特徴ベクトルが保存画像に関連付けられるように、保存画像のすべてのオブジェクトのセグメント、ラベル、および/または対応する特徴ベクトルを生成することができ、関心のあるオブジェクトが保存された画像で表される1つまたはそれ以上のオブジェクトと視覚的に類似しているかどうかを判定する際に使用できる。別の例では、画像処理プロセス200は、判定された関心のあるオブジェクトのラベルおよび/またはオブジェクト特徴ベクトルを生成するために入力画像に対して実行され得る。
【0024】
画像を選択すると、204のように画像が分割される。円パッキングアルゴリズム、スーパーピクセルなど、さまざまなセグメンテーション手法を使用できる。次いで、206のように、画像のセグメントを処理して、画像の背景領域を考慮から除外することができる。背景領域の判定は、たとえば、注意深い制約(たとえば、顕著なオブジェクトが画像セグメントの中心にある可能性が高い)と一意の制約(たとえば、顕著なオブジェクトが背景と異なる可能性が高い)との組み合わせを使用して行うことができる。一実施形態では、各セグメント(S
i)について、色、テクスチャ、形状、および/または他の特徴検出の組み合わせを使用して一意の制約を計算することができる。セグメントのすべてのペアのペアごとのユークリッド距離:L2(S
i、S
j)は、
についても計算される。セグメントS
iの一意制約UまたはU
iは、
として計算できる。各セグメントS
iの注意深い制約は、
として計算できる。ここで、X’およびY’は画像の中心座標である。
【0025】
次に、1つまたはそれ以上のセグメントS’、SのサブセットをU(s)-A(
s)>tのように選択する。tは手動で設定するか、データから学習した閾値である。閾値tは、セグメントを背景情報または潜在的なオブジェクトとして区別するために利用される任意の定義された数または量であり得る。または
、および
、
は、S’の要素でありr
iは要素R-であり、R-は画像の非顕著領域(背景)のセットであり、ラベル付きの突出セグメントと非突出セグメントとのラベル付きデータベースに対する各セグメント間の類似性として計算および使用できる。最終スコアは次のとおりである。
【0026】
別の実施形態では、同じユーザの過去の対話に対する関心のある部分の選択が判定され得る。次に、最終セグメントS’をクラスタ化して1つまたはそれ以上のセグメントを形成する。各セグメントは画像の特徴的な部分である。
【0027】
図2に戻り、背景セグメントを除去すると、208のように、画像に残っているオブジェクトが判定される。画像に残っているオブジェクトは、たとえば、スライドウィンドウアプローチを使用して、オブジェクトの位置の考えられる各仮説のスコアを計算することによって判定できる。Harrのようなウェーブレットのブーストされた選択、または複数パーツベースのモデルなどのアプローチを使用して、各セグメントを処理して、一致する可能性のあるオブジェクトを判定することができる。たとえば、セグメントに対して特徴ベクトルを判定し、オブジェクトに対して保存されている情報と比較することができる。特徴ベクトルおよび保存された情報に基づいて、特定のオブジェクトおよび/または特定のタイプのオブジェクトについて、保存された特徴ベクトルに特徴ベクトルがどの程度類似しているかについて判定が行われ得る。
【0028】
スライディングウィンドウアプローチは、それぞれ異なるトレーニング済みオブジェクト分類子またはラベル(たとえば、人、バッグ、靴、顔、腕、帽子、ズボン、トップスなど)を使用して、N回実行できる。各オブジェクト分類子の仮説を判定すると、出力は各オブジェクトタイプの最適な仮説のセットになる。通常、オブジェクトは画像内でランダムに表示されないため(たとえば、目と鼻は通常一緒に表示される)、位置に依存する制約も考慮することができる。たとえば、ルートオブジェクト(たとえば、人)の位置はW(root)として定義され、各オブジェクトkの各幾何学的制約は、6要素ベクトル
として互いに対して示される。ルートオブジェクトW
rootに対する各オブジェクトW
oiの幾何学的「適合」は、
によって定義される。
ここで、dx、dyは、オブジェクトボックスW
oiの各ピクセルとルートオブジェクトボックスの各ピクセル間の平均幾何学的距離である。最適値
を見つける問題は、arg minλ
i
として定式化できる。ここで、D
train(Θ
i)は、トレーニングまたはその他の保存された画像でのΘ
iの観測値である。
【0029】
この機能を最適化するために、画像内のオブジェクトの位置を判定できる。たとえば、画像内のルートオブジェクト(例:人)の中心は(0、0)としてマークされ、処理された画像内の他のオブジェクトの位置はルートオブジェクトに対してシフトされる。次に、線形サポートベクターマシン(Support Vector Machine:SVM)がΘiをパラメータとして適用される。SVMへの入力はDtrain(Θi)である。線形計画法、動的計画法、凸最適化などの他の最適化手法も、単独で、または本明細書で説明した最適化と組み合わせて使用することができる。トレーニングデータDtrain(Θk)は、ユーザにオブジェクト全体とランドマークの両方の上に境界ボックスを配置させることで収集できる。あるいは、顔検出アルゴリズム、エッジ検出アルゴリズムなどの半自動化アプローチを使用して、オブジェクトを識別してもよい。いくつかの実装形態では、楕円、楕円、および/または不規則な形状など、他の形状を使用してオブジェクトを表すことができる。
【0030】
図2に戻り、210および212のように、特徴ベクトルおよびラベルが生成され、識別された各オブジェクトに関連付けられる。具体的には、オブジェクトを含むバウンディングボックスは、データストア1303(
図13)に保持されているラベルおよびセグメントに対して生成された特徴ベクトルと関連付けに関連付けられる。加えて、画像のセグメントを形成する境界ボックスの位置および/またはサイズが関連付けられ、画像に保存されてもよい。セグメントのサイズおよび/または位置は、たとえば、バウンディングボックスのエッジまたはコーナに対応するピクセル座標(x、y)として保存できる。別の例として、セグメントのサイズおよび/または位置は、列および/または行の位置およびサイズとして保存されてもよい。
【0031】
ラベルは、オブジェクトを表す一意の識別子(キーワードなど)である場合がある。あるいは、ラベルに分類情報またはオブジェクトタイプを含めることができる。たとえば、衣服の表現に関連付けられたラベルには、オブジェクトの一意の識別子に加えて、アパレル分類子(プレフィックス分類子など)が含まれる場合がある。さらに他の実装では、ラベルは画像で表されるオブジェクトの属性を示してもよい。属性には、オブジェクトのサイズ、形状、色、テクスチャ、パターンなどが含まれるが、これらに限定されない。他の実装では、画像内の各オブジェクトに対してオブジェクト属性のセット(たとえば、色、形状、テクスチャ)を判定し、そのセットを連結してオブジェクトを表す単一の特徴ベクトルを形成することができる。次に、特徴ベクトルは、視覚的な語彙を使用して視覚ラベルに変換され得る。視覚的な語彙は、画像の大きなデータセットから生成された特徴に対してクラスタリングアルゴリズム(K平均など)を実行することで生成でき、クラスタの中心が語彙セットになる。各単一の特徴ベクトルは、特徴空間(たとえば、n)に最も類似する1つまたはそれ以上の語彙用語に保存および/または翻訳されてもよい。
【0032】
ラベルと特徴ベクトルを画像で表される各オブジェクトに関連付けた後、214のように、オブジェクトと対応する画像セグメントにインデックスが付けられる。各オブジェクトには、標準のテキストベースの検索手法を使用してインデックスを作成できる。ただし、標準のテキスト検索や視覚検索とは異なり、複数のインデックスをデータストア1303(
図13)に保持し、各オブジェクトを複数のインデックスの1つまたはそれ以上に関連付けることができる。
【0033】
図3は、一実施形態による、データストアに保持され得るセグメント化された画像の表現である。画像300などの画像は、上述のセグメンテーション技術を使用してセグメント化することができる。例示的なルーチン200を使用して、背景セグメントが除去され、画像内の6つのオブジェクトがセグメント化され識別された。具体的には、身体オブジェクト302、頭部オブジェクト304、上部オブジェクト306、ズボンオブジェクト308、バッグオブジェクト310、および靴オブジェクト312である。セグメント化の一部として、ルートオブジェクト(この例では身体オブジェクト302)が判定され、それらの他のオブジェクトを識別するときに、他のオブジェクト304~312の位置が考慮される。オブジェクトタイプが判定されると、ラベルまたはその他の識別子が生成され、画像セグメントと画像に関連付けられる。
【0034】
セグメントのインデックス付け、オブジェクトの判定、ラベルの生成、セグメントとラベルの画像300への関連付けに加えて、画像300内の各オブジェクトを表す特徴ベクトルが生成され、データストアに保存され、画像300、セグメント、およびラベルに関連付けられる。たとえば、財布オブジェクトのサイズ、形状、色などを表す特徴ベクトルを生成し、画像300およびセグメント310に関連付けることができる。画像内で検出された他のオブジェクトを表す特徴ベクトルも同様に生成され、それらのオブジェクト、セグメント、および画像300に関連付けられ得る。
【0035】
他の実装では、画像は、他の分割および識別技術を使用して分割されてもよい。たとえば、クラウドソーシング技術を使用して画像をセグメント化できる。たとえば、ユーザは画像を表示するときに、オブジェクトを含む画像の領域を選択し、それらのオブジェクトにラベルを付けることができる。より多くのユーザが画像内のオブジェクトを識別すると、それらのオブジェクトの識別の信頼性が高まる。ユーザが提供したセグメンテーションと識別に基づいて、画像内のオブジェクトにインデックスを付け、他の画像に含まれる他の視覚的に類似したオブジェクトに関連付けることができる。
【0036】
図4は、記載された実装による、例示的なオブジェクト・マッチング・プロセス400である。例示的なプロセス400は、402のように、1つまたはそれ以上のオブジェクトの表現を含む画像を受け取ることから始まる。本明細書で説明する他の例と同様に、画像はさまざまなソースのいずれかから受け取ることができる。
【0037】
画像を受信すると、画像は、上述の画像処理プロセス200のすべてまたは一部を使用して処理され、404で示すように、画像に表される関心のあるオブジェクトが判定される。いくつかの実装形態では、画像処理プロセス200全体が実行され、その後、例示的なプロセス200の一部として検出されたオブジェクトから関心のあるオブジェクトが判定され得る。他の実装では、1つまたはそれ以上のオブジェクト検出アルゴリズムを実行して画像内の潜在オブジェクトを判定し、次に潜在オブジェクトの1つを関心のあるオブジェクトとして選択し、例示的なプロセス200をその潜在オブジェクトに対して実行することができる。
【0038】
たとえば、エッジ検出またはオブジェクト検出アルゴリズムを実行して、画像内の潜在的なオブジェクトを検出し、潜在的なオブジェクトの位置、潜在的なオブジェクトの明瞭さまたは焦点、および/または他の情報を利用して関心のあるオブジェクトを検出することができる。たとえば、いくつかの実装形態では、関心のあるオブジェクトは、画像の中心に向かって、焦点が合っており、画像の前景に位置していると判定され得る。他の実装では、ユーザは、関心のあるオブジェクトを含む画像のセグメントの指示または選択を提供してもよい。
【0039】
関心のあるオブジェクトが判定されると、画像処理プロセス200は、そのオブジェクトおよび/またはオブジェクトを含む画像のセグメントに対して実行され、オブジェクトを識別し、オブジェクトを表すオブジェクト特徴ベクトルを生成し、406のように、オブジェクトのタイプに対応するラベルを生成する。
【0040】
次に、生成されたオブジェクト特徴ベクトルおよび/またはラベルは、408のように、保存された画像のセグメントで表されるオブジェクトに対応する保存された特徴ベクトルと比較され、オブジェクト特徴ベクトルと各保存された特徴ベクトル間の類似性スコアを生成する。いくつかの実装では、オブジェクト特徴ベクトルをすべての保存された特徴ベクトルと比較するのではなく、オブジェクトの種類を表すラベルを使用して、保存された特徴ベクトルを減らして同じまたは類似のラベルを持つもののみを含めることができる。たとえば、関心のあるオブジェクトが靴であると判定された場合、オブジェクト特徴ベクトルは、靴のラベルを持つ保存された特徴ベクトルとのみ比較され、それによって同じタイプのオブジェクトへの比較が制限される。
【0041】
他の実装では、オブジェクト特徴ベクトルを同じまたは類似のラベルを持つ保存された特徴ベクトルと比較することに加えて、またはその代替として、保存された画像のセグメントの位置は、関心のあるオブジェクトが保存された画像の特定のセグメントに配置されることが期待される。たとえば、関心のあるオブジェクトが靴であると判定された場合、保存された画像の下部3分の1のセグメントに靴オブジェクトが含まれる可能性が最も高いと判定され、特徴ベクトルの比較は保存された画像の下部3分の1のセグメントに限定される可能性がある。あるいは、ルートオブジェクト(人など)と比較したときの関心のあるオブジェクトの位置を判定して利用し、上述したように、ルートオブジェクトに対する相対位置に基づいて、保存された画像のセグメントに対応する特徴ベクトルを選択することができる。
【0042】
オブジェクト特徴ベクトルと保存された特徴ベクトルとの比較は、オブジェクト特徴ベクトルと、比較される保存された特徴ベクトルとの類似性を示す類似性スコアを生成する。より高い類似性スコアを有する保存された特徴ベクトルに関連付けられた画像は、より低い類似性スコアを有する特徴ベクトルに関連付けられた保存された画像よりも、検索および画像マッチングにより敏感であると判定される。保存された画像はオブジェクト特徴ベクトルと比較できる複数の保存された特徴ベクトルに関連付けられるため、一部の実装では、関連付けられた各保存された特徴ベクトルに対して判定された類似性スコアに基づいて、画像の平均類似性スコアが判定される。他の実装では、オブジェクト特徴ベクトルと比較される複数の保存された特徴ベクトルを有する画像の類似度スコアは、中央値類似度スコア、最低類似度スコア、または保存された画像に関連付けられた特徴ベクトルの類似度スコアの他のバリエーションであり得る。
【0043】
各画像について判定された類似性スコアに基づいて、410のように、保存された画像のランク付けされたリストが生成される。一部の実装では、ランク付けされたリストは、類似性スコアのみに基づいている場合がある。他の実装では、保存された画像の人気、ユーザが以前に保存した画像を閲覧および/または対話したかどうか、保存された画像に関連付けられたいくつかの保存された多くの特徴ベクトル、オブジェクト特徴ベクトルと比較された保存された画像に関連付けられた多くの特徴ベクトル、保存された画像に関連付けられ関心のあるオブジェクトと同一または類似のラベルを有する多くの保存された特徴ベクトルなど、他の要因に基づいて、保存された画像の1つまたはそれ以上を高くまたは低く重み付けすることができる。
【0044】
最後に、412のように、ランク付けされた結果リストに基づいて、保存された画像の複数の結果が、たとえばユーザ装置に返される。いくつかの実装形態では、例示的なプロセス400は、ユーザ装置から遠隔のリモート計算リソースによって全体的または部分的に実行され、ランク付けされた結果リストに対応する画像の複数の結果が、ユーザ装置が関心のあるオブジェクトの画像を送信したことに応答してユーザ装置に提示するためにユーザ装置に送信され得る。他の実装形態では、例示的なプロセス400の一部はユーザ装置上で実行されてもよく、例示的なプロセス400の一部はリモート計算リソース上で実行されてもよい。たとえば、ユーザ装置のメモリに保存されたプログラム命令を実行して、ユーザ装置上の1つまたはそれ以上のプロセッサにオブジェクトの画像の受信、関心のあるオブジェクトの判定、および/またはラベルまたは関心のあるオブジェクトを表すオブジェクト特徴ベクトルの生成を実行できる。オブジェクト特徴ベクトルおよび/またはラベルは、ユーザ装置からリモート計算リソースに送信され、リモート計算リソースで実行されるコードは、リモート計算リソースの1つまたはそれ以上のプロセッサに、受信したオブジェクト特徴ベクトルを1つまたはそれ以上と比較させる類似性スコアを生成し、ランク付けされた結果リストを生成し、ランク付けされた結果リストに対応する画像をユーザ装置に送信して、目的のオブジェクトを含む入力画像に応答するようにユーザに提示する。他の実装形態では、例示的なプロセス400の異なる態様は、同じまたは異なる場所で異なる計算システムによって実行され得る。
【0045】
図5は、記載された実装による別の例示的なオブジェクト・マッチング・プロセス500である。例示的なプロセス500は、502のように、1つまたはそれ以上のオブジェクトの表現を含む画像を受信することから始まる。本明細書で説明する他の例と同様に、画像はさまざまなソースのいずれかから受け取ることができる。
【0046】
画像を受信すると、画像は、上記で説明した画像処理プロセス200のすべてまたは一部を使用して処理され、504で示すように、画像で表される1つまたはそれ以上の関心のあるオブジェクトが判定される。いくつかの実装形態では、画像処理プロセス200全体を実行し、例示的なプロセス200の一部として検出されたオブジェクトから関心のある候補オブジェクトを判定することができる。他の実装では、画像内の候補オブジェクトを判定するために1つまたはそれ以上のオブジェクト検出アルゴリズムが実行されてもよい。
【0047】
たとえば、エッジ検出またはオブジェクト検出アルゴリズムを実行して、画像内のオブジェクトを検出し、潜在的なオブジェクトの位置、潜在的なオブジェクトの明瞭さまたは焦点、および/または他の情報を使用して関心のある候補オブジェクトを検出することができる。たとえば、いくつかの実装形態では、関心のある候補オブジェクトは、画像の中心に向かって、焦点が合っている、画像の前景に位置している、および/または互いに近くに位置していると判定され得る。
【0048】
次いで、506のように、画像内に表された関心のある複数の候補オブジェクトがあるかどうかに関して判定が行われる。関心のある複数の候補オブジェクトがないと判定された場合、507のように、単一の検出されたオブジェクトが関心のあるオブジェクトとして利用される。関心のある候補オブジェクトが複数あると判定された場合、508のように、ユーザが1つまたはそれ以上の候補オブジェクトをオブジェクトとして選択できるように、関心のある候補オブジェクトのそれぞれを示す識別子とともに画像がユーザに提示される。たとえば、画像は、各候補オブジェクトに隣接して配置された視覚的識別子とともに、ユーザ装置のタッチベースのディスプレイ上に提示されてもよい。次に、ユーザは、1つまたはそれ以上の候補オブジェクトを関心のあるオブジェクトとして選択することにより、入力を提供できる。次に、510のように、プロセス例によってユーザ入力が受信され、関心のあるオブジェクトを判定するために利用される。
【0049】
いくつかの実装では、ユーザは、関心のあるオブジェクトと関心のないオブジェクトの両方、または検索に一致する画像を判定する際に負の重みが与えられるオブジェクトの両方を指定できる場合がある。たとえば、画像内で複数のオブジェクトが検出され、選択のためにユーザに提示される場合、ユーザは、オブジェクトを関心のあるオブジェクトとして示すポジティブ選択、オブジェクトを関心のないオブジェクトとして示すネガティブ選択、または検索に一致する保存済みの画像を判定する際に考慮されない選択なし、として提供できる。
【0050】
関心のあるオブジェクトの判定時、または関心のあるオブジェクトが1つのみの場合、画像処理プロセス200は、512のように、オブジェクトを識別するそれらのオブジェクトおよび/またはオブジェクトを含む画像のセグメントに対して実行され、オブジェクトを識別する特徴ベクトルを生成し、各オブジェクトのタイプに対応するラベルを作成する。関心のあるオブジェクトと関心のないオブジェクトの両方を含む例では、例示のプロセス200(
図2)は、関心のあるオブジェクトと関心のないオブジェクトの両方に対して作成されたオブジェクトと特徴ベクトル/ラベルの両方のタイプに対して実行され得る。
【0051】
生成されたオブジェクト特徴ベクトルおよび/またはラベルはそれぞれ、514のように、保存された画像のセグメントで表されるオブジェクトに対応する保存された特徴ベクトルと比較され、各オブジェクト特徴ベクトルと各保存された特徴ベクトル間の類似性スコアを生成する。一部の実装では、オブジェクト特徴ベクトルをすべての保存された特徴ベクトルと比較するのではなく、オブジェクトの種類を表すラベルを使用して、保存された特徴ベクトルのみが同じまたは類似のタイプのオブジェクト特徴ベクトルと比較されるように、異なるオブジェクト特徴ベクトルと比較される保存された特徴ベクトルを減らすことができる。たとえば、関心のあるオブジェクトの1つが靴であると判定された場合、そのオブジェクトのオブジェクト特徴ベクトルは、靴のラベルを持つ保存された特徴ベクトルとのみ比較できる。同様に、関心のある第2のオブジェクトがトップスであると判定された場合、そのオブジェクトのオブジェクト特徴ベクトルは、トップスラベルを持つ保存された特徴ベクトルとのみ比較できる。
【0052】
他の実装では、オブジェクト特徴ベクトルを同じまたは類似のラベルを持つ保存された特徴ベクトルと比較することに加えて、またはその代替として、保存された画像のセグメントの位置は、関心のあるオブジェクトが保存された画像の特定のセグメントに配置されることが期待される。たとえば、関心のあるオブジェクトが靴であると判定された場合、保存された画像の下部3分の1のセグメントに靴オブジェクトが含まれる可能性が最も高いと判定され、特徴ベクトルの比較は保存された画像の下部3分の1のセグメントに限定される可能性がある。あるいは、ルートオブジェクト(人など)と比較したときの関心のあるオブジェクトの位置を判定して利用し、上述したように、ルートオブジェクトに対する相対位置に基づいて、保存された画像のセグメントに対応する特徴ベクトルを選択することができる。
【0053】
オブジェクト特徴ベクトルと保存された特徴ベクトルとの比較により、各オブジェクト特徴ベクトルと、比較される保存された特徴ベクトルとの類似性を示す類似性スコアが生成される。より高い類似性スコアを有する保存された特徴ベクトルに関連付けられた画像は、より低い類似性スコアを有する特徴ベクトルに関連付けられた保存された画像よりも、検索および画像マッチングにより敏感であると判定される。保存された画像は、1つまたはそれ以上のオブジェクト特徴ベクトルと比較できる複数の保存された特徴ベクトルに関連付けられることがあるため、一部の実装では、関連付けられた各保存された特徴ベクトルに対して判定された類似性スコアに基づいて、画像の平均類似性スコアが判定される。他の実装では、複数のオブジェクト特徴ベクトルと比較される複数の保存された特徴ベクトルを有する画像の類似性スコアは、各オブジェクト特徴ベクトルに1つずつ、2つの類似性スコアを生成し得る。関心のないオブジェクトの類似性スコアを含む例では、類似性スコアは、関心のないオブジェクト特徴ベクトルを保存された特徴ベクトルと比較することによって同様に判定され得る。
【0054】
各画像について判定された類似性スコアに基づいて、516のように、保存された画像のランク付けされたリストが生成される。一部の実装では、ランク付けされたリストは、類似性スコアのみに基づいている場合がある。複数の類似性スコアが異なる関心のあるオブジェクトに対して判定される実装では、両方の関心のあるオブジェクトの高い類似性スコアに関連付けられた画像が、ただ1つの関心のあるオブジェクトの高い類似性スコアの画像よりも高くランク付けされるように、ランク付けされたリストを判定することができる。同様に、ユーザが関心のないオブジェクトを指定した場合、関心のないオブジェクトに視覚的に類似するオブジェクトを含む画像は、関心および画像に関連付けられた1つまたはそれ以上の保存された特徴ベクトルのランクを下げることができる。実装によっては、保存された画像のランキングに他の要因が考慮される場合がある。たとえば、保存画像の人気度、ユーザが保存画像を以前に閲覧および/または対話したかどうか、保存された画像に関連付けられた多数の特徴ベクトル、オブジェクト特徴ベクトルと比較された保存された画像に関連付けられた多数の特徴ベクトル、保存された画像に関連付けられ、関心のあるオブジェクトの1つと同じまたは類似のラベルを持つ多くの保存された特徴ベクトルなどに基づいて、保存画像の1つまたはそれ以上をより高くまたはより低く重み付けすることができる。
【0055】
最後に、518のように、ランク付けされた結果リストに基づいて、保存された画像の複数の結果が、たとえばユーザ装置に返される。いくつかの実装形態では、例示的なプロセス500は、ユーザ装置から遠隔のリモート計算リソースによって全体的または部分的に実行され、ランク付けされた結果リストに対応する画像の複数の結果が、ユーザ装置が関心のあるオブジェクトの画像を送信したことに応答して、ユーザ装置に提示するためにユーザ装置に送信され得る。他の実装形態では、例示的なプロセス500の一部をユーザ装置上で実行することができ、例示的なプロセス500の一部をリモート計算リソース上で実行することができる。たとえば、ユーザ装置のメモリに保存されたプログラム命令を実行して、ユーザ装置上の1つまたはそれ以上のプロセッサにオブジェクトの画像の受信、関心のあるオブジェクトの判定、および/またはラベルまたは関心のあるオブジェクトを表すオブジェクト特徴ベクトルの生成を実行できる。オブジェクト特徴ベクトルおよび/またはラベルは、ユーザ装置からリモート計算リソースに送信され、リモート計算リソースで実行されるコードは、リモート計算リソースの1つまたはそれ以上のプロセッサに、受信したオブジェクト特徴ベクトルを1つまたはそれ以上と比較させる類似性スコアを生成し、ランク付けされた結果リストを生成し、ランク付けされた結果リストに対応する画像をユーザ装置に送信して、目的のオブジェクトを含む入力画像に応答するようにユーザに提示する。他の実装形態では、例示的プロセス500の異なる態様は、同じまたは異なる場所で異なる計算システムによって実行され得る。
【0056】
図6Aは、記載された実装に従って、検索結果を生成するために使用されるユーザ装置600によって取得された入力画像601を示す。上記の例と同様に、入力画像は任意のソースから受信または取得できる。この例では、入力画像はユーザ装置600のカメラによってキャプチャされ、パイナップル602の表現、水のボトル604-1、および紙のシート604-2を含む。他の実装形態では、ユーザは画像コントロール608を選択し、ユーザ装置のメモリに保存されているか、そうでなければユーザ装置にアクセス可能な画像を選択することができる。あるいは、ユーザは、リモート画像制御606を選択し、ユーザ装置から離れたメモリに保存された複数の画像から画像を表示/選択してもよい。
【0057】
この例では、画像を処理して画像内の1つまたはそれ以上の関心のあるオブジェクトを検出することに加えて、関心のあるオブジェクトが定義されたカテゴリに対応するかどうかを判定することができる。定義されたカテゴリには、食べ物、家の装飾、ファッションなどが含まれるが、これらに限定されない。カテゴリには、複数の異なるタイプのオブジェクトが含まれる場合がある。たとえば、食品には、パイナップルなど、数千種類の食品オブジェクトが含まれる場合がある。
【0058】
関心のあるオブジェクトが定義済みのカテゴリに対応すると判定された場合、複数のクエリタイプを選択および利用して、入力画像のクエリに応答するように混合される結果を生成できる。異なるクエリタイプには、異なるタイプまたはスタイルのクエリが含まれる場合がある。たとえば、1つのクエリタイプは、上述のように、関心のあるオブジェクトに視覚的に類似する画像、または関心のあるオブジェクトに視覚的に類似する画像セグメントを含む視覚ベースの検索であり得る。別のクエリタイプは、関心のあるオブジェクトをどのように使用するか、または他の関心のあるオブジェクトと組み合わせる方法を示すコンテンツを検索および判定するテキストベースのクエリである。たとえば、定義されたカテゴリが食品の場合、第1のクエリタイプは、関心のあるオブジェクトに視覚的に類似した食品の画像を含む結果を返すことがある。第2のクエリタイプは、さまざまな食品の組み合わせの画像を含む結果、または関心のあるオブジェクトであると判定された食品を含むレシピを返すことがある。
【0059】
複数のクエリタイプの例では、各クエリタイプに使用される入力が異なる場合がある。たとえば、視覚または画像ベースの検索を利用する第1のクエリタイプは、関心のあるオブジェクトを表すオブジェクト特徴ベクトルを受信するように構成でき、そのオブジェクト特徴ベクトルは、上記のように、保存された特徴ベクトルと比較して関心のあるオブジェクトに視覚的に類似したオブジェクトを含む保存された画像を検出できる。これに対して、クエリタイプは、テキスト/キーワード入力を受信して、関心のあるオブジェクトと視覚的には類似していないが、キーワードに一致するラベルを含む、または関心のあるオブジェクトに関連する保存画像を判定するように構成できる。
【0060】
クエリタイプの1つがテキスト/キーワード入力を受信して保存された画像のデータストアを検索するように構成されている例では、目的のオブジェクトおよび/またはカテゴリに対応するキーワードまたはラベルが生成され、それぞれの保存された画像のクエリに使用される。
【0061】
一部の実装では、各クエリタイプは同じデータソースに保持されているコンテンツを検索できるが、クエリタイプと保存されたコンテンツのクエリ方法の違いにより、異なる結果を返せる。他の実装では、クエリタイプの1つまたはそれ以上が、同じデータストアまたは異なるデータストアに保持されている異なるコンテンツを検索する場合がある。
【0062】
図6Bには、
図6Aから選択された関心のあるオブジェクトの視覚的検索結果が示されている。ここで、記述された実装によれば、結果は、関心のあるオブジェクト602に関連する複数のクエリタイプから取得された画像を含む。
【0063】
この例では、関心のあるオブジェクトであるパイナップルは食物であり、したがって、食物の定義されたカテゴリに対応すると判定される。さらに、食品カテゴリに関連付けられた2つの異なるクエリタイプがあり、1つは視覚または画像ベースの検索で、もう1つはテキストまたはキーワードベースの検索であると判定される。
【0064】
この例では、第1のクエリタイプはパイナップルを表すオブジェクト特徴ベクトルを生成し、オブジェクト特徴ベクトルを保存された特徴ベクトルと比較して、関心のあるオブジェクト602と視覚的に類似するオブジェクトを含む画像を判定する。第2のクエリタイプは、「パイナップル+レシピ」というキーワードを含むテキストクエリを生成し、パイナップルを使用するレシピに関連する画像を検索する。いくつかの実装形態では、キーワードは、関心のあるオブジェクトおよび/またはカテゴリに基づいて判定され得る。たとえば、画像処理に基づいて、関心のあるオブジェクトがパイナップルであると判定される場合があり、したがって、ラベルの1つが関心のあるオブジェクトタイプ(たとえば、パイナップル)である場合がある。同様に、食品カテゴリには、テキストベースのクエリを作成する際に使用される「レシピ」などのラベルが含まれるか、ラベルが関連付けられている場合がある。
【0065】
他の実装では、テキストベースのクエリによって利用されるキーワードは、画像ベースのクエリから判定された画像に関連付けられたラベルに基づいてもよい。たとえば、第1のクエリタイプが画像ベースの検索で、目的のオブジェクトに類似する、または類似する画像セグメントを含む画像を返す場合、それらの返された画像に関連付けられたラベルが比較され、最も頻繁に使用されるラベルが第2のクエリタイプのキーワードとして使用される。
【0066】
各クエリタイプの結果は、混合され、ユーザ装置600上の画像のランク付けされたリストとして提示されてもよい。この例では、ピナコラーダを作るためのレシピに関連する第1の画像610-1が第2のクエリタイプに対して返され、第2の画像610-2が目的のオブジェクトに視覚的に類似するオブジェクト(パイナップル)を含む第1のクエリタイプに対して602が返され、2つは、ユーザによる画像入力に応じて混合された結果として表示される。
【0067】
いくつかの実装形態では、判定されたキーワード611-1~611-Nなどのキーワードまたはラベルは、ユーザ装置上に提示され、クエリをさらに絞り込むためにユーザが選択可能にすることができる。ユーザは、追加コントロール613を選択して追加のキーワードを入力することにより、独自のキーワードを追加することもできる。同様に、以下で説明するように、この例では、入力画像で複数のオブジェクトが検出され、ユーザが別のまたは追加の関心のあるオブジェクトを指定できるように、インジケータ604-1、604-2も他のオブジェクトに表示される。ユーザが別の、または追加の関心のあるオブジェクトを選択すると、それに応じて検索結果が更新される。
【0068】
ユーザは、ユーザ装置に返されて表示された結果と対話し、検索を絞り込み、追加または異なるキーワードを提供し、追加または異なる関心のあるオブジェクトを選択し、および/または他のアクションを実行できる。
【0069】
図7は、記載された実装による、例示的なオブジェクト・カテゴリ・マッチング・プロセス700である。例示的なプロセス700は、702のように、1つまたはそれ以上のオブジェクトの表現を含む画像を受信することから始まる。本明細書で説明する他の例と同様に、画像はさまざまなソースのいずれかから受け取ることができる。
【0070】
画像を受信すると、画像は、上記で説明した画像処理プロセス200(
図2)のすべてまたは一部を使用して処理され、704で示すように、画像に表される1つまたはそれ以上の関心のあるオブジェクトが判定される。いくつかの実装形態では、画像処理プロセス200全体を実行し、例示的なプロセス200の一部として検出されたオブジェクトから関心のある候補オブジェクトを判定することができる。他の実装では、画像内の候補オブジェクトを判定するために1つまたはそれ以上のオブジェクト検出アルゴリズムが実行されてもよい。
【0071】
たとえば、エッジ検出またはオブジェクト検出アルゴリズムを実行して、画像内のオブジェクトを検出し、潜在的なオブジェクトの位置、潜在的なオブジェクトの明瞭さまたは焦点、および/または他の情報を使用して関心のある候補オブジェクトを検出することができる。たとえば、いくつかの実装形態では、関心のある候補オブジェクトは、画像の中心に向かって、焦点が合っている、画像の前景に位置している、および/または互いに近くに位置していると判定され得る。いくつかの実装では、オブジェクト検出は、1つまたはそれ以上の定義済みカテゴリに対応する特定のタイプのオブジェクトの画像のみをスキャンする。定義されたカテゴリには、食べ物、家の装飾、ファッションなどが含まれるが、これらに限定されない。そのような実装では、画像処理は、定義されたカテゴリの1つに関連付けられたオブジェクトタイプが画像で潜在的に表されるかどうかを判定するために画像を処理するだけである。上述のように、複数のタイプのオブジェクトを各カテゴリに関連付けることができ、一部の実装では、オブジェクトタイプを複数のカテゴリに関連付けることができる。
【0072】
次に、706のように、関心のあるオブジェクトが定義されたカテゴリに対応するかどうか、または定義されたカテゴリに対応するオブジェクトが画像内で識別されたかどうかについて判定が行われる。
【0073】
関心のあるオブジェクトは、関心のあるオブジェクトが特定される(たとえば、プロセス例200の一部として特定される)ときに判定される関心のあるオブジェクトのタイプに基づいて、定義されたカテゴリに対応するように判定され得る。2つ以上のオブジェクトが関心のあるオブジェクトとして判定される実装では、一部の実装では、対象の両方のオブジェクトが同じ定義済みカテゴリに対応することが必要になる場合がある。他の実装では、関心のあるオブジェクトを1つだけ定義済みカテゴリに関連付ける必要がある。
【0074】
関心のあるオブジェクトが定義されたカテゴリに対応していないと判定された場合、707のように、受信した画像は保存されている画像情報と比較される。たとえば、関心のあるオブジェクトではなく、受信した画像を表す特徴ベクトルを生成し、保存された画像に対応する保存された特徴ベクトルと比較することができる。他の実施形態では、受信画像で識別された1つまたはそれ以上のオブジェクトを表すセグメント特徴ベクトルを生成し、
図4に関して上記で論じたように、保存されたセグメント特徴ベクトルと比較することができる。次に、709のように、受信した画像および/または受信した画像のセグメントと視覚的に類似していると判定された保存済みの画像が返される。
【0075】
関心のあるオブジェクトが定義済みのカテゴリに対応すると判定された場合、708のように、定義済みのカテゴリに関連付けられたクエリタイプが判定される。上述のように、複数のクエリタイプを定義済みのカテゴリに関連付けて、検索に応じて異なるタイプまたはスタイルのコンテンツを取得するために利用できる。
【0076】
次に、710のように、1つまたはそれ以上のクエリタイプがコンテンツを検索するためのテキストベースのクエリであるかどうかについて判定がなされる。クエリタイプの1つがテキストベースのクエリであると判定された場合、クエリキーワードは関心のあるオブジェクト、カテゴリ、ユーザ、または712のような他の要因に基づいて判定される。たとえば、上記で説明したように、一部の実装では、視覚ベースまたは画像ベースのクエリに続いてテキストベースのクエリを実行でき、視覚ベースまたは画像ベースのクエリに一致するコンテンツアイテム/画像に関連付けられたラベルからキーワードを判定できる。たとえば、画像ベースのクエリに対して返された画像に関連付けられたラベル内の単語の頻度が判定され、キーワードが最も頻度の高いラベルのそれらの単語として選択されてもよい。
【0077】
次に、キーワードを使用して、保存されたコンテンツに関連付けられたラベルおよび/または注釈を照会し、714のように、キーワードの一致に基づいてランク付けされた結果リストが返される。
【0078】
クエリタイプのいずれもテキストベースのクエリではないと判定された場合、またはテキストクエリの生成と送信に加えて、715のように、受信した画像も保存された画像と比較される。ブロック709と同様に、比較は、受信画像を表す特徴ベクトルと保存画像を表す保存特徴ベクトルとの比較、および/または受信画像(たとえば、関心のあるオブジェクト)内のオブジェクトに対応する1つまたはそれ以上のセグメント特徴ベクトルと保存されたセグメントの特徴ベクトルと間の比較であってもよい。セグメント特徴ベクトルの比較は、
図4に関して上述した方法と同様の方法で実行することができ、目的のオブジェクトに視覚的に類似するオブジェクトを含む画像を判定する。
【0079】
次に、716のように、ユーザに返されるランク付けされた結果に含まれる各クエリタイプによって返されるコンテンツの比率または割合を示す結果比率が判定される。結果の比率または割合は、カテゴリ、ユーザの好み、関心のあるオブジェクト、各クエリタイプから返される結果の量または質、ユーザの場所など、さまざまな要因に基づいて判定できる。
【0080】
結果の比率または割合に基づいて、各クエリタイプのランク付けされた結果が混合され、718のように混合された結果が生成される。最後に、720のように、混合された結果がユーザ装置に返され、関心のあるオブジェクトを含む入力画像に応答するものとしてユーザに提示される。
【0081】
いくつかの実装形態では、例示的なプロセス700は、ユーザ装置から遠隔のリモート計算リソースによって全体的または部分的に実行され、ランク付けされた結果リストに対応する画像の複数の結果が、ユーザ装置が関心のあるオブジェクトの画像を送信したことに応答して、ユーザ装置に提示するためにユーザ装置に送信され得る。他の実装形態では、例示的なプロセス700の一部はユーザ装置上で実行されてもよく、例示的なプロセス700の一部はリモート計算リソース上で実行されてもよい。たとえば、ユーザ装置のメモリに保存されたプログラム命令を実行して、ユーザ装置上の1つまたはそれ以上のプロセッサにオブジェクトの画像の受信、関心のあるオブジェクトの判定、および/またはラベルまたは関心のあるオブジェクトを表すオブジェクト特徴ベクトルの生成を実行できる。オブジェクト特徴ベクトルおよび/またはラベルは、ユーザ装置からリモート計算リソースに送信され、リモート計算リソースで実行されるコードは、リモート計算リソースの1つまたはそれ以上のプロセッサに、受信したオブジェクト特徴ベクトルを1つまたはそれ以上と比較させる類似性スコアを生成し、ランク付けされた結果リストを生成し、ランク付けされた結果リストに対応する画像をユーザ装置に送信して、目的のオブジェクトを含む入力画像に応答するようにユーザに提示する。他の実装形態では、例示的なプロセス700の異なる態様は、同じまたは異なる場所で異なる計算システムによって実行され得る。
【0082】
混合された結果を提供することにより、ユーザは、提供された関心のあるオブジェクトに視覚的に類似するオブジェクトを含む画像と、関心のあるオブジェクトに関連するが必ずしも関心のあるオブジェクトに視覚的に類似するオブジェクトの表現を含まない画像の両方を表示することができる。ユーザは、定義されたカテゴリで、関心のあるオブジェクトの他の画像ではなく、関心のあるオブジェクトに関する情報、関心のあるオブジェクトと他のオブジェクトの組み合わせ、関心のあるオブジェクトに関連するレシピを検索することが多いため、このような混合は有益である。
【0083】
図8Aは、記載された実装による、視覚的改良を提供するオプションを有するユーザ装置上のクエリを示す。図示された例では、ユーザはキーワード「夏服」を含むテキストベースのクエリ807を入力している。この例では、検索入力はテキストベースの入力で始まり、テキストベースの入力が食品、ファッション、家の装飾などの定義されたカテゴリに対応するかどうかが判定される。テキスト入力が定義されたカテゴリに関連する場合、ユーザには視覚的な絞り込みオプションが表示され、ユーザはテキストベースのクエリに一致する結果を絞り込むために使用される関心のあるオブジェクトを含む画像を提供できる。
【0084】
たとえば、テキストベースのクエリ807は、テキストベースのクエリ「夏服」に対応する注釈、キーワード、またはラベルを含むと判定された画像810-1、810-2、810-3~810-Nを返すために使用されてもよい。いくつかの実装形態では、他のキーワードまたはラベル811もユーザに提示して、ユーザがクエリをさらに洗練できるようにすることができる。いくつかの実装形態では、入力キーワードが定義済みカテゴリに対応すると判定された場合、視覚的改良オプション804が提示される。
【0085】
図8Bでは、視覚的改良オプションを選択すると、ユーザ装置のカメラが起動され、カメラおよび/またはカメラの視野によってキャプチャされた画像が処理され、キャプチャされた画像/視野に表されるオブジェクトの形状が検出される。たとえば、カメラがセーター802に向けられている場合、セーターの形状が検出され、提案されたオブジェクトタイプ805がユーザに提示されて、ユーザが関心のあるオブジェクトタイプを確認することができる。同様に、現在選択されているオブジェクトタイプの形状を示すために、形状オーバーレイ803もユーザ装置800のディスプレイ801に提示され得る。
【0086】
この例では、判定されたオブジェクトカテゴリはファッションであり、視野内のオブジェクト802の現在検出されたオブジェクトタイプは、オブジェクトタイプ「トップス」805-3に対応する。ユーザは、「スカート」805-1、「ドレス」805-2、「ジャケット」805-Nなどの異なるインジケータを選択することにより、異なるオブジェクトタイプを選択することができる。理解されるように、より少ない、追加の、および/または異なるオブジェクトの種類やインジケータが表示される場合がある。たとえば、色、生地、スタイル、サイズ、テクスチャ、パターンなどに基づいて選択するオプションがユーザに表示される場合がある。
【0087】
同様に、いくつかの実装形態では、ユーザ装置のカメラからの画像を利用するのではなく、ユーザは画像コントロール808を選択し、ユーザ装置のメモリまたはユーザ装置がアクセス可能な画像から画像を選択してもよい。あるいは、ユーザは、リモート画像制御806を選択し、入力データとしてリモートデータストアから画像を選択してもよい。
【0088】
他の例と同様に、画像が入力されると、画像が処理されて関心のあるオブジェクトが判定され、関心のあるオブジェクトに対応するラベルが生成され、関心のあるオブジェクトを表す特徴ベクトルが生成される。次いで、ラベルおよび/または特徴ベクトルを利用して、キーワード検索に対応すると判定された画像を改良または再ランク付けすることができる。たとえば、
図8Cは、
図8Aのクエリの検索結果を示し、説明される実装によれば、
図8Bの視覚入力に基づいて改良された「夏服」807が上部アイコン821によって示される。他の例と同様に、関心のあるオブジェクトに対して生成されたラベルおよび/またはオブジェクト特徴ベクトルは、元のクエリに一致すると判定された保存画像に含まれるオブジェクトに対応する保存された特徴ベクトルと比較して、類似性スコアを生成するために利用される。この例では、セーター802(
図8B)を表すオブジェクト特徴ベクトルは、テキストクエリに対応すると判定された画像のセグメントに対応する保存された特徴ベクトルと比較される。次に、前述のように、特徴ベクトルの比較から判定された類似性スコアに基づいて、画像のランクが変更される。次に、再ランク付けされた画像がユーザ装置に送信され、入力画像に応じてユーザ装置のディスプレイに表示される。たとえば、保存された画像820-1、820-2、820-3、および820-4は、関心のあるオブジェクトに視覚的に類似し、再ランク付けされたリストの最上位にランク付けされ、ユーザに送信されるオブジェクトを含むように判定され、ユーザ装置のディスプレイに表示され得る。
【0089】
図9は、説明された実装による、例示的なテキストおよび画像マッチングプロセス900である。例示的なプロセス900は、902のように、ユーザ装置上に提示される検索入力ボックスへの1つまたはそれ以上のキーワードの入力などのテキストベースのクエリの受信時に開始する。次に、904のように、保存されたコンテンツを照会して、クエリのテキスト入力に対応する、または一致するラベルまたはキーワードが関連付けられている画像を判定する。さらに、906のように、テキストクエリが定義済みのカテゴリに対応するかどうかが判定される。たとえば、カテゴリを定義し、1つまたはそれ以上のキーワードまたはラベルを含めることができ、テキストベースの入力に「衣装」などのキーワードまたはラベルが含まれる場合、クエリ入力が定義済みのカテゴリに対応すると判定される。クエリが定義されたカテゴリに対応していないと判定された場合、908のようにプロセス例が完了し、ユーザはテキストベースのクエリに応答して提示された結果と対話できる。
【0090】
クエリが定義されたカテゴリに対応すると判定された場合、910のように、検索結果を視覚的に絞り込むためのオプションがユーザに表示される。視覚的改良は、たとえば、画像を生成するため、および/または既存の画像を選択するためにカメラを起動するためにユーザによって選択される検索結果とともに提示されるグラフィカルボタンまたはアイコンであってもよい。いくつかの実装では、クエリが定義されたカテゴリに対応するかどうかの判定を省略でき、プロセス900の各インスタンスで、910のように、検索結果の視覚的改良のオプションをユーザに提示できる。
【0091】
912のように、クエリの結果を絞り込むために使用される画像が受信されたかどうかについても判定される。画像が受信されない場合、例示的なプロセス900は、908のように完了する。しかしながら、画像が受信された場合、画像は、上述の画像処理プロセス200(
図2)の全部または一部を使用して処理され、914のように、画像に表される関心のあるオブジェクトが判定される。いくつかの実装形態では、画像処理プロセス200全体が実行され、その後、例示的なプロセス200の一部として検出されたオブジェクトから関心のあるオブジェクトが判定され得る。他の実装では、1つまたはそれ以上のオブジェクト検出アルゴリズムを実行して画像内の潜在オブジェクトを判定し、次に潜在オブジェクトの1つを関心のあるオブジェクトとして選択し、例示的なプロセス200をその潜在オブジェクトに対して実行することができる。
【0092】
たとえば、エッジ検出またはオブジェクト検出アルゴリズムを実行して、画像内の潜在的なオブジェクトを検出し、潜在的なオブジェクトの位置、潜在的なオブジェクトの明瞭さまたは焦点、および/または他の情報を利用して関心のあるオブジェクトを検出することができる。たとえば、いくつかの実装形態では、関心のあるオブジェクトは、画像の中心に向かって、焦点が合っており、画像の前景に位置していると判定され得る。他の実装では、ユーザは、関心のあるオブジェクトを含む画像のセグメントの指示または選択を提供してもよい。
【0093】
関心のあるオブジェクトが判定されると、画像処理プロセス200は、そのオブジェクトおよび/またはオブジェクトを含む画像のセグメントに対して実行され、オブジェクトを識別し、オブジェクトを表す特徴ベクトルを生成し、916のように、オブジェクトのタイプに対応するラベルを生成する。
【0094】
生成されたオブジェクト特徴ベクトルおよび/またはラベルは、次に、918のように、テキストベースのクエリに一致すると判定された保存画像のオブジェクトに対応する保存された特徴ベクトルと比較され、オブジェクト特徴ベクトルと各保存された特徴ベクトルとの間の類似度スコアを生成する。
【0095】
上述のように、オブジェクト特徴ベクトルと保存された特徴ベクトルとの比較は、オブジェクト特徴ベクトルと、それが比較される保存された特徴ベクトルとの間の類似性を示す類似性スコアを生成する。より高い類似性スコアを有する保存された特徴ベクトルに関連付けられた画像は、より低い類似性スコアを有する特徴ベクトルに関連付けられた記憶された画像よりも視覚的に洗練された検索に応答すると判定される。保存された画像はオブジェクト特徴ベクトルと比較できる複数の保存された特徴ベクトルに関連付けられるため、一部の実装では、関連付けられた各保存された特徴ベクトルに対して判定された類似性スコアに基づいて、画像の平均類似性スコアが判定される。他の実装では、オブジェクト特徴ベクトルと比較される複数の保存された特徴ベクトルを有する画像の類似度スコアは、中央値類似度スコア、最低類似度スコア、または保存された画像に関連付けられた特徴ベクトルの類似度スコアの他のバリエーションであり得る。
【0096】
各画像について判定された類似性スコアに基づいて、テキストベースのクエリの結果は、920のように更新されたランク付けリストに再ランク付けされる。一部の実装では、ランク付けされたリストは、類似性スコアのみに基づいている場合がある。他の実装では、保存された画像の人気、ユーザが以前に保存した画像を閲覧および/または対話したかどうか、保存された画像に関連付けられたいくつかの保存された多くの特徴ベクトル、オブジェクト特徴ベクトルと比較された保存された画像に関連付けられた多くの特徴ベクトル、保存された画像に関連付けられ関心のあるオブジェクトと同一または類似のラベルを有する多くの保存された特徴ベクトルなど、他の要因に基づいて、保存された画像の1つまたはそれ以上を高くまたは低く重み付けすることができる。
【0097】
最後に、ランク付けされたリストで最も高いランクを持つイメージが、922などのように、提示のためにユーザ装置に返される。いくつかの実装形態では、例示的なプロセス900は、ユーザ装置から遠隔のリモート計算リソースによって全体的または部分的に実行され、ランク付けされた結果リストに対応する画像の複数の結果が、ユーザ装置が関心のあるオブジェクトの画像を送信したことに応答して、ユーザ装置に提示するためにユーザ装置に送信され得る。他の実装形態では、プロセス例900の一部はユーザ装置上で実行され、プロセス例900の一部はリモート計算リソース上で実行され得る。たとえば、ユーザ装置のメモリに保存されたプログラム命令を実行して、ユーザ装置上の1つまたはそれ以上のプロセッサにオブジェクトの画像の受信、関心のあるオブジェクトの判定、および/またはラベルまたは関心のあるオブジェクトを表すオブジェクト特徴ベクトルの生成を実行できる。オブジェクト特徴ベクトルおよび/またはラベルは、ユーザ装置からリモート計算リソースに送信され、リモート計算リソースで実行されるコードは、リモート計算リソースの1つまたはそれ以上のプロセッサに、受信したオブジェクト特徴ベクトルを1つまたはそれ以上と比較させる類似性スコアを生成し、ランク付けされた結果リストを生成し、ランク付けされた結果リストに対応する画像をユーザ装置に送信して、目的のオブジェクトを含む入力画像に応答するようにユーザに提示する。他の実装形態では、例示的なプロセス900の異なる態様は、同じまたは異なる場所で異なる計算システムによって実行され得る。
【0098】
図10Aは、記載される実装による、クエリのさらに別の例示的な視覚的改良入力を示す。この例では、ユーザはテキストベースのクエリ「サーモンレシピ」1007を入力している。クエリが定義済みのカテゴリ(レシピなど)に対応しており、ユーザが視覚的な改良を提供していると判定される。この例では、ユーザ装置1000上のカメラの視野のストリーミングビデオがリアルタイムまたはほぼリアルタイムで処理されて、カメラの視野内のオブジェクトが検出される。この例では、ストリーミングビデオ内の視野は冷蔵庫の内部である。他の例では、ストリーミングビデオに他の領域が含まれる場合がある。処理は、ユーザ装置から遠隔にある計算リソース、またはそれらの組み合わせによって、ユーザ装置1000上で実行され得る。
【0099】
ストリーミングビデオ内のオブジェクトが、たとえばエッジ検出アルゴリズムおよび/またはプロセス例200(
図2)の一部またはすべてを使用して検出されると、検出されたオブジェクトのタイプを示すキーワードまたはラベルがストリーミングビデオのプレゼンテーションと同時に装置のディスプレイ1001に提示される。
【0100】
この例では、イチゴ、アボカド、および卵が、ユーザ装置のカメラの視野内の関心のあるオブジェクトの候補として検出されている。オブジェクトが検出されると、ラベル1002がオブジェクトに隣接して視覚的に表示され、オブジェクトが検出されたことを示す。
【0101】
いくつかの実装では、関心のある候補オブジェクトを検出し、キーワードクエリに対応する関心のある候補オブジェクトのみを特定することでユーザエクスペリエンスを向上させるプロセスの速度で、潜在的なオブジェクトのコーパスをテキストクエリに基づいて判定し、コーパスに一致するオブジェクトは、候補オブジェクトとして識別される。たとえば、テキストクエリを処理して、ユーザがサーモンを含むレシピを探していることを判定できる。その情報に基づいて、サーモンも含むレシピに関連する画像に含まれる、または参照される潜在的なオブジェクトのコーパスが判定され、そのコーパスに一致するオブジェクトのみが関心のある候補オブジェクトとして識別される。
【0102】
この例では、ユーザ装置のカメラの視野で検出された候補オブジェクトは、識別子「イチゴ」1002-2、「卵」1002-1、および「アボカド」1002-3によって識別される。ユーザがカメラの視野を移動すると、検出されたオブジェクトの相対位置に対応するように識別子1002の位置が更新され、追加の候補オブジェクトが視野に入ってストリーミングビデオに含まれる場合、それらのオブジェクトの識別子も同様に提示される。
【0103】
ユーザは、識別子の1つを選択して、オブジェクトが関心のあるオブジェクトであることを示すことができる。
図10Bでは、ユーザはオブジェクト卵を関心のあるオブジェクトとして選択している。それに応じて、卵アイコン1001-2で示されるように、キーワード卵がクエリ「サーモンレシピ」1001-1に追加され、画像1010-1、1010-2、1010-3、および1010-Nなどの画像が、「サーモン」、「レシピ」、および「卵」のラベル/キーワードを含む、またはそれらに関連付けられていると判定され、クエリに応答するように表示するためにユーザに返される。いくつかの実装形態では、クエリ結果のさらなる改良のために、他のキーワード1011が同様にユーザ装置1000に提示されてもよい。
【0104】
ユーザが視覚的検索および/または視覚的検索とテキストベースの検索の組み合わせを利用し、入力および/または入力で検出されたオブジェクトから判定された定義済みカテゴリに基づいて結果を生成する機能を提供することにより、ユーザが探索したいコンテンツのタイプを入力することでより良い推論により結果の品質が向上する。説明した実装による柔軟性の向上により、画像全体ではなく、保存された画像のセグメントまたは部分に視覚検索(たとえば、特徴ベクトル)を集中させることで、入力画像に視覚的に類似した画像を提供する視覚検索のみの技術的改良が提供されるおよび/または、視覚検索に異なる形式の検索(キーワードなど)を自動的に追加する。さらに、テキストベースのクエリに、特徴ベクトルまたはキーワードマッチングによる視覚的一致のいずれかまたは両方を利用する視覚的改良を追加することにより、ユーザは異なるコンテキスト(キーワード、視覚的)で入力パラメータを表現することで、目的の情報をより適切に判定および探索できる。
【0105】
図11は、本明細書で説明される様々な実装に従って使用され得る例示的なユーザ装置1100を示す。この例では、ユーザ装置1100は、ディスプレイ1102と同じおよび/または装置の反対側に、ディスプレイ1102およびオプションでカメラなどの少なくとも1つの入力構成要素1104を含む。ユーザ装置1100はまた、スピーカ1106などのオーディオトランスデューサ、およびオプションでマイクロフォン1108を含んでもよい。一般に、ユーザ装置1100は、ユーザがユーザ装置1100と対話することを可能にする任意の形式の入力/出力構成要素を有してもよい。たとえば、装置とのユーザインタラクションを可能にするためのさまざまな入力構成要素には、タッチベースディスプレイ1102(抵抗性、容量性など)、カメラ、マイク、全地球測位システム(GPS)、コンパス、またはそれらの任意の組み合わせが含まれる。これらの入力構成要素の1つまたはそれ以上を装置に含めるか、装置と通信することができる。本明細書に含まれる教示および提案に照らして明らかなはずであるように、さまざまな実装の範囲内で、さまざまな他の入力構成要素および入力構成要素の組み合わせを使用することもできる。
【0106】
本明細書で説明される様々な機能を提供するために、
図12は、
図11に関して説明したユーザ装置1100などの、ユーザ装置1100の基本構成要素1200の例示的なセットを示す。この例では、装置は、少なくとも1つのメモリ装置または要素1204に保存できる命令を実行するための少なくとも1つの中央処理装置1202を備えている。当業者には明らかであるように、装置は、プロセッサ1202による実行のためのプログラム命令のための第1のデータストレージなど、多くのタイプのメモリ、データストレージ、またはコンピュータ可読ストレージ媒体を含むことができる。取り外し可能なストレージメモリは、他の装置などと情報を共有するために使用できる。通常、装置には、タッチベースのディスプレイ、電子インク(e-ink)、有機発光ダイオード(OLED)、または液晶ディスプレイ(LCD)など、何らかのタイプのディスプレイ1206が含まれる。
【0107】
説明したように、多くの実装における装置は、装置の近くにあるオブジェクトを撮像できる1つまたはそれ以上のカメラなど、少なくとも1つの撮像素子1208を含む。撮像素子は、判定された解像度、焦点範囲、可視領域、およびキャプチャレートを有するCCDまたはCMOS撮像素子などの任意の適切な技術を含むか、少なくとも部分的に基づくことができる。装置は、検索用語、ラベルの生成、および/または選択された検索用語に一致する結果の識別および提示のプロセスを実行するための少なくとも1つの検索構成要素1210を含むことができる。たとえば、ユーザ装置は、リモート計算リソースと常時または断続的に通信し、検索プロセスの一部として、選択した検索語、画像、ラベルなどの情報をリモート計算システムと交換できる。
【0108】
装置には、GPS、NFC位置追跡、Wi-Fi位置監視など、少なくとも1つの位置構成要素1212を含めることもできる。位置構成要素1212によって取得された位置情報は、関心のあるオブジェクトに一致する画像を選択する際の要因として、本明細書で説明される様々な実装とともに使用され得る。たとえば、ユーザがサンフランシスコにいて、画像に表示されている橋(オブジェクト)を積極的に選択している場合、ゴールデンゲートブリッジなどの視覚的に類似したオブジェクトを識別する際に、ユーザの位置が要因と見なされる。
【0109】
例示的なユーザ装置はまた、ユーザから従来の入力を受け取ることができる少なくとも1つの追加の入力装置を含んでもよい。この従来の入力には、たとえば、プッシュボタン、タッチパッド、タッチベースのディスプレイ、ホイール、ジョイスティック、キーボード、マウス、トラックボール、キーパッド、またはユーザが装置にコマンドを入力できるその他の装置または要素が含まれる。一部の実装では、これらのI/O装置をワイヤレス、赤外線、Bluetooth、またはその他のリンクで接続することもできる。
【0110】
図13は、本明細書で説明する実装の1つまたはそれ以上で使用することができる、リモート計算リソースなどのサーバシステム1300の例示的な実装の絵図である。サーバシステム1300は、1つまたはそれ以上の冗長プロセッサなどのプロセッサ1301、ビデオディスプレイアダプタ1302、ディスクドライブ1304、入出力インターフェース1306、ネットワークインターフェース1308、およびメモリ1312を含むことができる。プロセッサ1301、ビデオディスプレイアダプタ1302、ディスクドライブ1304、入力/出力インターフェース1306、ネットワークインターフェース1308、およびメモリ1312は、通信バス1310によって互いに通信可能に結合されてもよい。
【0111】
ビデオディスプレイアダプタ1302は、サーバシステム1300の操作者がサーバシステム1300の動作を監視および構成することを可能にする表示信号をローカルディスプレイに提供する。入出力インターフェース1306は、同様に、マウス、キーボード、スキャナ、またはサーバシステム1300の操作者が操作できる他の入出力装置などの外部入出力装置と通信する。ネットワークインターフェース1308は、他の計算装置と通信するためのハードウェア、ソフトウェア、またはそれらの任意の組み合わせを含む。たとえば、ネットワークインターフェース1308は、サーバシステム1300とユーザ装置1100などの他の計算装置との間の通信を提供するように構成されてもよい。
【0112】
メモリ1312は一般に、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、フラッシュメモリ、および/または他の揮発性または永久メモリを含む。メモリ1312は、サーバシステム1300の動作を制御するためのオペレーティングシステム1314を保存するように示されている。サーバシステム1300の低レベル動作を制御するためのバイナリ入出力システム(BIOS)1316もメモリ1312に保存されている。
【0113】
メモリ1312は、ユーザ装置1100および外部ソースが情報およびデータファイルをサーバシステム1300と交換することを可能にするネットワークサービスを提供するためのプログラムコードおよびデータをさらに保存する。したがって、メモリ1312は、ブラウザアプリケーション1318を保存してもよい。ブラウザアプリケーション1318は、プロセッサ1301によって実行されると、ウェブページなどの構成可能なマークアップ文書を生成または取得するコンピュータ実行可能命令を含む。ブラウザアプリケーション1318は、データストアマネージャアプリケーション1320と通信して、データストア1303、ユーザ装置1100などのユーザ装置、外部ソースなどの間のデータ交換およびマッピングを容易にする。
【0114】
本明細書で使用する「データストア」という用語は、データの保存、アクセス、取得が可能な任意の装置または装置の組み合わせを指し、任意の組み合わせおよび任意の数のデータサーバ、データベース、データストレージ装置、およびデータストレージメディアを標準、分散、またはクラスタ環境に含むことができる。サーバシステム1300は、ユーザ装置1100、外部ソースおよび/または検索サービス1305の1つまたはそれ以上のアプリケーションの側面を実行するために必要に応じてデータストア1303と統合するための適切なハードウェアおよびソフトウェアを含むことができる。サーバシステム1300は、データストア1303と連携してアクセス制御サービスを提供し、一致する検索結果、視覚的に類似したオブジェクトを含む画像、視覚的に類似したオブジェクトを含む画像のインデックスなどのコンテンツを生成できる。
【0115】
データストア1303は、いくつかの別個のデータテーブル、データベース、または他のデータストレージメカニズム、および特定の側面に関連するデータを保存するためのメディアを含むことができる。たとえば、図示されたデータストア1303は、デジタルアイテム(たとえば、画像)およびそれらのアイテムに関する対応するメタデータ(たとえば、ラベル、インデックス)を含む。検索履歴、ユーザ設定、プロファイル、その他の情報も同様にデータストアに保存できる。
【0116】
データストア1303に保存され得る他の多くの態様があり得ることを理解すべきであり、それは、適切に上記のリストされたメカニズムのいずれか、またはデータストアの追加のメカニズムに保存され得る。データストア1303は、それに関連付けられたロジックを介して、サーバシステム1300から命令を受信し、それに応答してデータを取得、更新、または処理するように動作可能であってもよい。
【0117】
メモリ1312は、検索サービス1305も含むことができる。検索サービス1305は、サーバシステム1300の機能のうちの1つまたはそれ以上を実装するために、プロセッサ1301によって実行可能であってもよい。一実装では、検索サービス1305は、メモリ1312に保存された1つまたはそれ以上のソフトウェアプログラムに組み込まれた命令を表すことができる。別の実装形態では、検索サービス1305は、ハードウェア、ソフトウェア命令、またはそれらの組み合わせを表すことができる。検索サービス1305は、単独で、またはユーザ装置1100などの他の装置と組み合わせて、本明細書で説明する実装の一部またはすべてを実行することができる。
【0118】
サーバシステム1300は、一実装形態では、1つまたはそれ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続された複数のコンピュータシステムおよび構成要素を利用する分散環境である。しかしながら、そのようなシステムは、
図13に示されているよりも少ないまたは多い数の構成要素を有するシステムにおいて等しく良好に動作できることを当業者は理解するであろう。したがって、
図13の描写は、本質的に例示的であり、本開示の範囲を限定するものではないと解釈されるべきである。
【0119】
本明細書で開示される実装は、1つまたはそれ以上のプロセッサとプログラム命令を保存するメモリとを有する計算システムを含み得る。プログラム命令は、1つまたはそれ以上のプロセッサによって実行されると、1つまたはそれ以上のプロセッサに少なくともユーザ装置からテキストクエリを受信させ、テキストクエリに対応する複数の結果を判定して返すことができる。テキストクエリの受信に続いて、プログラム命令は、1つまたはそれ以上のプロセッサで実行されると、1つまたはそれ以上のプロセッサにユーザ装置からオブジェクトの画像を受信させ、オブジェクトを表すオブジェクト特徴ベクトルを生成し、比較する複数の結果として返される画像のセグメントに対応する複数の保存された特徴ベクトルを有するオブジェクト特徴ベクトルは、オブジェクト特徴ベクトルと複数の保存された画像の比較に少なくとも部分的に基づいて複数の結果のランク付けリストを生成し、および画像の受信に応じてランク付けされたリストを提示する。
【0120】
複数の保存された画像セグメントのそれぞれは、画像全体より少ないものに対応してもよい。画像は、ユーザ装置のカメラによって生成された画像、ユーザ装置のメモリから取得された画像、複数の結果から取得された画像、またはユーザ装置から離れた記憶媒体から取得された画像の少なくとも1つであってもよい。プログラム命令はさらに、1つまたはそれ以上のプロセッサに、テキストクエリが定義済みカテゴリに対応することを少なくとも判定させ、テキストクエリが定義済みカテゴリに対応するという判定に応じて画像改良オプションを提供させてもよい。定義されたカテゴリは、ファッション、衣類、家の装飾、個人、または食品の少なくとも1つであってもよい。
【0121】
本明細書で開示される実装は、コンピュータ実装の方法を含み得る。コンピュータ実装方法は、ユーザ装置からクエリを受信すること、クエリに少なくとも部分的に基づいて第1の複数の画像を判定すること、クエリを受信した後、オブジェクトの画像を受信すること、オブジェクトの画像を第1の複数の画像のそれぞれの少なくとも1つの画像セグメントと比較すること、比較に少なくとも部分的に基づいて第1の複数の画像の少なくとも一部のランク付けされたリストを判定すること、ランク付けされたリストに、第1の複数の画像の少なくとも一部の提示を提供すること、の1つまたはそれ以上を含み得る。
【0122】
オプションとして、コンピュータ実装方法は、画像を処理して画像に表されるオブジェクトのオブジェクトタイプを判定することも含み、画像を比較することは、オブジェクトを表すオブジェクト特徴ベクトルを生成し、オブジェクト特徴ベクトルを同じオブジェクトタイプを有する第1の複数の画像で表されるオブジェクトに対応する保存された特徴ベクトルと比較することを含む。コンピュータ実装方法は、クエリが定義済みカテゴリに対応することを判定し、視覚的改良オプションを提示することも含んでもよい。コンピュータ実装方法は、ユーザ装置のカメラの視野内のオブジェクトを検出し、ユーザ装置でオブジェクトに対応するオブジェクトタイプを判定し、ユーザ装置のディスプレイにオブジェクトタイプ識別子を表示することも含んでもよい。オブジェクトタイプ識別子は、オブジェクトタイプの形状に対応するグラフィック表示、またはオブジェクトタイプの名前の少なくとも1つを含んでもよい。コンピュータ実装方法は、第2のオブジェクトタイプ識別子の選択を可能にし、それによりオブジェクトに対応する第2のオブジェクトタイプを示すことも含んでもよい。コンピュータ実装方法は、オブジェクトの種類に対応し、クエリの一部としてキーワードを含むキーワードを生成することも含んでもよい。コンピュータ実装方法は、第1の複数の画像の一部、第1の複数の画像、またはクエリの少なくとも1つに対応する複数のキーワードを判定し、ユーザによるユーザ装置、複数のキーワードのそれぞれの提示および選択を提供することも含んでもよい。オブジェクトの画像を比較することは、オブジェクトを表すオブジェクト特徴ベクトルを生成すること、第1の複数の画像におけるオブジェクトの予想位置を判定すること、少なくとも一部に基づいて画像セグメントを判定すること、およびオブジェクト特徴ベクトルと画像セグメントに関連付けられた保存された特徴ベクトルとの比較することの1つまたはそれ以上をさらに含んでもよい。コンピュータ実装方法は、オブジェクトのオブジェクトタイプを判定することをさらに含んでもよく、予想位置を判定することは、オブジェクトタイプに少なくとも部分的に基づく。
【0123】
本明細書で開示される実装は、計算システムの少なくとも1つのプロセッサによって実行され得る命令を保存する非一時的なコンピュータ可読記憶媒体を含み得る。命令は、少なくとも1つのプロセッサによって実行されると、計算システムに少なくともユーザ装置でクエリを受信させ、クエリが定義されたカテゴリに対応することを判定し、ユーザ装置の視覚的改良オプションを有効にし、受信する視覚的改良オプションの一部としてのユーザ装置からのストリーミングビデオは、ストリーミングビデオの少なくとも一部を処理して、ユーザ装置のディスプレイ上に存在するストリーミングビデオで表される1つまたはそれ以上のオブジェクトのオブジェクトタイプを識別し、ストリーミングビデオのプレゼンテーションと同時に、1つまたはそれ以上のオブジェクトのオブジェクトタイプ、オブジェクトタイプの選択を受け取り、クエリと選択したオブジェクトタイプの両方に対応する複数の保存画像を判定し、複数の保存された画像をユーザ装置のディスプレイに表示する。
【0124】
定義されたカテゴリは食物であってもよく、ストリーミングビデオは、ユーザ装置のカメラの視野内に現在ある食物の表現を含んでもよい。クエリはテキストベースのクエリであってもよい。命令はさらに、計算システムに、定義されたカテゴリに少なくとも部分的に基づいて、複数の保存された画像を判定する際に考慮される候補画像を少なくとも判定させてもよい。少なくとも1つのプロセッサに複数の保存された画像を判定させる命令は、計算システムに、クエリ、少なくとも1つのオブジェクトタイプ、または定義されたカテゴリに対応する少なくとも1つのキーワードを少なくとも判定させ、少なくとも1つのキーワードに少なくとも部分的に基づいて、複数の保存された画像を判定させてもよい。
【0125】
本明細書で開示される実装は、計算システムを含み得る。計算システムは、複数の画像セグメントおよび/または各画像に対応する画像情報を有する第1の複数の記憶画像の1つまたはそれ以上を記憶できる画像データ記憶装置を含むことができる。画像情報は、各画像について、それぞれの複数の画像セグメントのうちの1つまたはそれ以上を示すことができ、各画像セグメントは、保存された画像全体および複数の保存された特徴ベクトルよりも小さいそれぞれの保存された画像の一部を表すことができ、各保存された特徴ベクトルは、複数の画像セグメントの画像セグメントで表されるオブジェクトに対応する。計算システムは、1つまたはそれ以上のプロセッサと、プログラム命令を保存するメモリも含み得る。プログラム命令は、1つまたはそれ以上のプロセッサによって実行されると、1つまたはそれ以上のプロセッサに、ユーザ装置からの受信、視覚ベースの検索の一部としての画像、画像の処理、画像に表現された関心、関心のあるオブジェクトを表すオブジェクト特徴ベクトルを生成し、オブジェクト特徴ベクトルを複数の保存された特徴ベクトルと比較して、視覚的に類似するオブジェクトの表現を含む第2の複数の保存された特徴ベクトルを判定する関心のあるオブジェクトは、オブジェクト特徴ベクトルと複数の保存された特徴ベクトルの比較に少なくとも部分的に基づいて、第1の複数の保存画像の第2の複数の画像を示すランク付けされたリストを判定する。関心のあるオブジェクトに視覚的に類似していると判定されたオブジェクトの表現を含む少なくとも1つの画像セグメントを含む画像少なくとも部分的に比較に基づいて、第2の複数の画像の各画像を第2の複数の画像の各画像の画像全体が含まれるように、第2の複数の画像の各画像をユーザ装置のディスプレイに送る。
【0126】
画像を処理して関心のあるオブジェクトを判定するプログラム命令は、実行時に1つまたはそれ以上のプロセッサに画像を処理させて、第1の関心のある候補オブジェクトと第2の関心のある候補オブジェクトを判定させ、関心のあるオブジェクトとして関心のある第1の候補オブジェクトを示す入力を受信させてもよい。画像は複数のオブジェクトの表現を含んでもよく、関心のあるオブジェクトは、画像内の関心のあるオブジェクトの位置、焦点が合っている画像の一部、画像内で表される関心のあるオブジェクトのサイズ、または背景色と比較した関心のあるオブジェクトの色に少なくとも部分的に基づいて判定されてもよい。任意選択で、プログラム命令はさらに、1つまたはそれ以上のプロセッサに少なくとも画像を処理させて、画像に表される第2のオブジェクトを判定し、第2のオブジェクトを表す第2のオブジェクト特徴ベクトルを生成し、第2のオブジェクト特徴ベクトルを複数のそれぞれの画像セグメントに対応する保存された特徴ベクトルの中で、第2のオブジェクトに視覚的に類似するオブジェクトの表現を含む第3の複数の保存された特徴ベクトルを判定し、ランク付けされたリストはさらに、少なくとも部分的に比較に基づいて判定される複数の保存された特徴ベクトルを有するオブジェクト特徴ベクトルと、第1の複数の保存画像の第2の複数の画像を識別するための第2のオブジェクト特徴ベクトルと複数の保存された特徴ベクトルとを比較し、視覚的なオブジェクトの表現を含む少なくとも1つの画像セグメントは関心のあるオブジェクトに類似しており、第2のオブジェクトに視覚的に類似するオブジェクトの表現を含む少なくとも1つの第2の画像セグメントをさらに含む。プログラム命令は、実行されると、1つまたはそれ以上のプロセッサに、少なくともユーザ装置から、関心のあるオブジェクトと第2のオブジェクトの選択を少なくとも受信させ得る。
【0127】
本明細書で開示される実装は、コンピュータ実装の方法を含み得る。コンピュータ実装方法は、ユーザ装置から画像の指示を受信すること、画像を処理して画像に表される第1のオブジェクトを判定すること、第1のオブジェクトを表すオブジェクト特徴ベクトルを生成すること、オブジェクト特徴ベクトルを複数の保存された特徴ベクトルと比較することの1つまたはそれ以上を含み得、複数の保存された特徴ベクトルのそれぞれは、第1の複数の画像のそれぞれの画像セグメントを表し、各画像セグメントはそれぞれの画像のすべてよりも少なく、第1の複数の画像からの第2の複数の画像のランク付けリストを生成し、第2の複数の画像の各画像は、比較の少なくとも一部に基づいて、オブジェクトの表現を含むと判定された少なくとも1つのそれぞれの画像セグメントを含み、第1のオブジェクトに視覚的に類似しており、複数の画像がユーザ装置によって提示される。
【0128】
オプションとして、コンピュータ実装方法は、画像の指示を受け取る前に、第2の画像を複数のセグメントにセグメント化すること、複数のセグメントのそれぞれについて、セグメント、各特徴ベクトルのそれぞれを、特徴ベクトルが対応する画像セグメントの少なくとも1つまたは第2の画像と関連付け、第2の画像および各各特徴ベクトルをデータストアに保存し、それぞれの特徴ベクトルは、複数の保存された特徴ベクトルに含まれる。コンピュータ実装方法は、複数のセグメントのそれぞれについて、第2の画像内のそれぞれのセグメントの位置を示す位置情報を保存することの1つまたはそれ以上をさらに含んでもよい。コンピュータ実装方法は、複数の画像セグメントのそれぞれについて、画像セグメントに表されるオブジェクトを判定すること、オブジェクトに対応するラベルを生成すること、および特徴ベクトルがオブジェクトを表すことの1つまたはそれ以上を含んでもよい。オプションで、ラベルはオブジェクトのタイプまたはオブジェクトのカテゴリの少なくとも1つを示すことができる。任意選択で、コンピュータ実装方法は、画像で表される第1のオブジェクトのラベルを判定すること、および第1のオブジェクトのラベルに少なくとも部分的に基づいて複数の保存された特徴ベクトルを判定する1つまたはそれ以上をさらに含んでもよい。任意選択で、画像の処理は、複数の候補オブジェクトを判定するための画像処理、第1候補オブジェクトの選択の受信、および第1候補オブジェクトが第1オブジェクトである1つまたはそれ以上を含み得る。任意選択で、コンピュータ実装方法は、第2の候補オブジェクトの選択の受信、第2の候補オブジェクトを表す第2のオブジェクト特徴ベクトルの生成、第2のオブジェクト特徴ベクトルと複数の少なくとも一部との比較のうちの1つまたはそれ以上をさらに含み得る。第1の複数の画像から第2の複数の画像のランク付けされたリストを生成することは、第2のオブジェクト特徴ベクトルを複数の保存された特徴ベクトルの少なくとも一部と比較することに少なくとも部分的に基づいている。任意選択で、コンピュータ実装方法は、第1のオブジェクトのオブジェクトタイプを判定すること、およびオブジェクトタイプに少なくとも部分的に基づいて複数の保存された特徴ベクトルを判定することの1つまたはそれ以上をさらに含み得る。任意選択で、複数の保存された特徴ベクトルは、第1のオブジェクトのオブジェクトタイプと同じオブジェクトタイプを有してもよい。
【0129】
本明細書で開示される実装は、命令を保存する非一時的なコンピュータ可読記憶媒体を含み得る。命令は、計算システムの少なくとも1つのプロセッサによって実行されると、計算システムに複数の画像に対応する画像情報をデータストアに保持させることがある。画像情報は、各画像について、それぞれの複数の画像セグメントのうちの1つまたはそれ以上を示してもよく、各画像セグメントは、それぞれの画像の一部、それぞれの複数の特徴ベクトルを表し、各特徴ベクトルは、それぞれの画像セグメント内のオブジェクト、およびそれぞれの画像セグメントに対応する複数のラベルを表す。命令はさらに、計算システムに、画像で表されるオブジェクトを判定させ、オブジェクトを表すオブジェクト特徴ベクトルを生成させ、オブジェクトのラベルを判定させ、ラベルに少なくとも部分的に基づいて、複数の特徴ベクトル、オブジェクト特徴ベクトルを複数の特徴ベクトルのそれぞれと比較して類似度スコアを判定し、各類似度スコアはオブジェクト特徴ベクトルと複数の特徴ベクトルのそれぞれの特徴ベクトルとの類似性を表す、および類似性スコアに少なくとも部分的に基づいて、保存された画像のランク付けされたリストを生成する。
【0130】
オプションで、ラベルは、オブジェクトまたはオブジェクトのオブジェクトタイプの少なくとも1つを示してもよい。オプションで、複数の特徴ベクトルのそれぞれは、画像全体よりも小さいそれぞれの保存画像の画像セグメントを表すことができ、命令はさらに、計算システムに、保存のランク付けリストに示された画像を少なくとも提示させることができ、各提示画像は、画像全体よりも小さいそれぞれの画像セグメントを含む。任意選択で、保存された各特徴ベクトルは、画像全体よりも小さい画像セグメントのオブジェクトを表してもよい。任意選択で、類似性スコアは、特徴ベクトルと保存された特徴ベクトルとの間のユークリッド距離を表してもよい。
【0131】
本明細書で開示される実装は、計算システムを含み得る。計算システムは、1つまたはそれ以上のプロセッサと、プログラム命令を保存するメモリとを含み得る。プログラム命令は、1つまたはそれ以上のプロセッサによって実行されると、1つまたはそれ以上のプロセッサに少なくともユーザ装置からオブジェクトの画像を受信させ、画像を処理して画像に表されるオブジェクトを判定し、オブジェクトは定義済みカテゴリに対応し、オブジェクトまたは定義済みカテゴリに少なくとも部分的に基づいて第1クエリタイプと第2クエリタイプを判定し、第1クエリタイプで使用するオブジェクトに対応するキーワードを生成し、キーワードに少なくとも部分的に基づく第1のクエリタイプ、第2のクエリタイプで使用するオブジェクトを表す特徴ベクトルの生成、特徴ベクトルに少なくとも部分的に基づく第2のクエリタイプの第2の結果の判定、第1の結果の混合2つ目の結果は、1つ目の結果の1つ目の割合と2つ目の結果の2つ目の割合を含む混合結果を生成し、および/またはオブジェクトの画像。
【0132】
任意選択で、プログラム命令はさらに、1つまたはそれ以上のプロセッサに、第1の割合および第2の割合を示す混合結果の結果比を判定させてもよい。オプションで、結果の比率は、オブジェクト、定義済みカテゴリ、第1クエリタイプ、第2クエリタイプ、オブジェクトの画像を送信したユーザ、ユーザ装置、またはユーザ設定に少なくとも部分的に基づいてもよい。オプションで、キーワードは、オブジェクト、定義されたカテゴリ、または第2の結果に含まれる画像に関連付けられたラベルに少なくとも部分的に基づいて生成され得る。任意選択で、第1の結果は、オブジェクトを利用または含むアイテムに対応するコンテンツを含むことができ、第2の結果は、オブジェクトの表現を含むコンテンツを含むことができる。
【0133】
本明細書で開示される実装は、コンピュータ実装の方法を含み得る。コンピュータ実装方法は、ユーザ装置からオブジェクトの画像を受信すること、定義されたカテゴリにオブジェクトが対応することを判定すること、少なくとも一部に基づいて第1のクエリタイプおよび第2のクエリタイプを判定することの1つまたはそれ以上を含み得る。定義されたカテゴリまたはオブジェクト、オブジェクトに対応する第1クエリタイプの第1クエリ結果の取得、オブジェクトに対応する第2クエリタイプの第2クエリ結果の取得、第1クエリ結果の少なくとも第1部分と少なくとも第2のクエリ結果の第2の部分は、混合された結果を生成し、ユーザ装置によるプレゼンテーションのために、オブジェクトの画像に応じて、混合された結果を送信する。
【0134】
必要に応じて、定義されたカテゴリは、食品、家の装飾、またはファッションの少なくとも1つである場合がある。任意選択で、コンピュータ実装方法は、画像に表されるオブジェクトのオブジェクトタイプを判定するために画像を処理する1つまたはそれ以上をさらに含むことができ、そのオブジェクトは、少なくともオブジェクトタイプに部分的に基づいて定義されたカテゴリに対応すると判定される。オプションで、第1のクエリタイプはテキストベースのクエリであり、第2のクエリタイプは画像ベースのクエリである。オプションで、コンピュータ実装方法は、定義済みカテゴリに関連付けられた第3のクエリタイプの判定、オブジェクトに対応する第3のクエリの結果の取得、および第3のクエリタイプに一致する少なくとも1つのオブジェクト識別子をさらに含む。オプションで、第1のクエリタイプはオブジェクトに関連するコンテンツを返し、第2のクエリタイプはオブジェクトと同じオブジェクトタイプのオブジェクトの表現を含むコンテンツを返す。任意選択で、コンピュータ実装方法は、オブジェクトまたはオブジェクトのオブジェクトタイプに少なくとも部分的に基づいてキーワードを生成する1つまたはそれ以上を含むことができ、第1のクエリ結果を取得することは、少なくとも部分的にキーワードに基づいて第1のクエリ結果を判定することを含むことができる。任意選択で、コンピュータ実装方法は、混合結果に含める第1のクエリ結果の第1の割合と第2のクエリ結果の第2の割合を示す結果比率を判定する1つまたはそれ以上をさらに含むことができ、混合は少なくとも部分的に結果の比率に基づく。任意選択で、コンピュータ実装方法は、オブジェクトのオブジェクトタイプを判定すること、およびオブジェクトタイプに少なくとも部分的に基づいて複数の保存された特徴ベクトルを判定することの1つまたはそれ以上をさらに含み得る。オプションとして、第1のクエリ結果の取得は、オブジェクトに対して判定されたキーワードに少なくとも部分的に基づいてもよく、オブジェクトをテキストで表すキーワードと、第2のクエリ結果の取得は、オブジェクトの表現から生成された特徴ベクトルに少なくとも部分的に基づいてもよく、特徴ベクトルは、オブジェクトを視覚的に表す。
【0135】
本明細書で開示される実装は、命令を保存する非一時的なコンピュータ可読記憶媒体を含み得る。命令は、計算システムの少なくとも1つのプロセッサによって実行されると、計算システムに少なくとも画像に表されるオブジェクトを判定させ、オブジェクトが定義されたカテゴリに対応することを判定させ、第1のクエリタイプおよび第2のクエリを判定させ得る定義されたカテゴリに関連付けられたタイプ、第1のクエリタイプで使用するオブジェクトに対応するキーワードを生成、オブジェクトを表す特徴ベクトルを生成、キーワードに少なくとも部分的に基づいて第1のクエリタイプの第1の結果を取得、第2の取得特徴ベクトルに少なくとも部分的に基づいて第2のクエリタイプの結果を取得し、第1の結果から少なくとも1つの結果と第2の結果から少なくとも1つの結果を提示する命令を送信する。
【0136】
オプションとして、命令はさらに、計算システムに、画像を少なくとも複数の画像セグメントにセグメント化し、複数の画像セグメントのそれぞれを処理して、画像に表されるオブジェクトを判定させることができる。任意選択で、第1の結果は、キーワードと保存された画像に関連付けられたラベルとの比較に少なくとも部分的に基づいて取得されてもよい。任意選択で、第2の結果は、特徴ベクトルと、保存された画像に表されるオブジェクトを表す保存された特徴ベクトルとの比較に少なくとも部分的に基づいて取得され得る。オプションで、第1の結果にはオブジェクトを説明するコンテンツが含まれ、第2の結果にはオブジェクトに視覚的に類似したコンテンツが含まれる。
【0137】
本明細書で開示される概念は、たとえば、汎用計算システムおよび分散計算環境を含む、いくつかの異なる装置およびコンピュータシステム内で適用され得る。
【0138】
本開示の上記態様は、例示的であることを意図している。それらは、開示の原則と適用を説明するために選択されたものであり、網羅的であったり、開示を制限したりするものではない。開示された態様の多くの修正および変形は、当業者には明らかであり得る。当業者は、本明細書に記載の構成要素およびプロセスステップは、他の構成要素またはステップ、または構成要素またはステップの組み合わせと交換可能であり、それでも本開示の利益および利点を達成できることを認識するはずである。さらに、本明細書に開示された特定の詳細およびステップの一部またはすべてがなくても本開示を実施できることは当業者には明らかなはずである。
【0139】
開示されたシステムの態様は、コンピュータ方法として、またはメモリ装置または非一時的なコンピュータ可読記憶媒体などの製品として実装され得る。コンピュータ可読記憶媒体は、コンピュータによって読み取り可能であってもよく、コンピュータまたは他の装置に本開示で説明されるプロセスを実行させるための命令を含んでもよい。コンピュータ可読記憶媒体は、揮発性コンピュータメモリ、不揮発性コンピュータメモリ、ハードドライブ、ソリッドステートメモリ、フラッシュドライブ、リムーバブルディスクおよび/または他の媒体によって実装され得る。さらに、1つまたはそれ以上のモジュールおよびエンジンの構成要素は、ファームウェアまたはハードウェアで実装できる。
【0140】
特に明記されていない限り、「a」や「an」などの文字は、一般に1つまたはそれ以上の説明された項目を含むと解釈されるべきである。したがって、「に構成された装置」などのフレーズは、列挙された1つまたはそれ以上の装置を含むことを意図している。そのような1つまたはそれ以上の列挙された装置は、述べられた列挙を実行するように集合的に構成することもできる。たとえば、「列挙A、B、およびCを実行するように構成されたプロセッサ」には、列挙BおよびCを実行するように構成された第2のプロセッサと連携して動作する列挙Aを実行するように構成された第1プロセッサを含めることができる。
【0141】
本明細書で使用される用語「約」、「およそ」、「概ね」、「ほぼ」、「類似する」、または「実質的に」などの本明細書で使用される程度の言語は、記載に近い値、量、または特性を表す目的の機能を実行するか、目的の結果を達成する値、量、または特性を表す。たとえば、「約」、「およそ」、「概ね」、「ほぼ」、「同様の」、または「実質的に」という用語は、記載された量の10%未満、5%未満、1%未満、0.1%未満、0.01%未満の量を表し得る。
【0142】
主題は、構造的特徴および/または方法論的行為に特有の言語で説明されているが、添付の特許請求の範囲で定義される主題は、説明された特定の特徴または行為に必ずしも限定されないことを理解されたい。むしろ、特定の特徴および行為は、特許請求の範囲を実施する例示的な形態として開示されている。