(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-09-28
(45)【発行日】2023-10-06
(54)【発明の名称】画像照合システム
(51)【国際特許分類】
G06T 7/00 20170101AFI20230929BHJP
【FI】
G06T7/00 610C
【外国語出願】
(21)【出願番号】P 2022029654
(22)【出願日】2022-02-28
【審査請求日】2022-03-01
(32)【優先日】2021-05-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】399037405
【氏名又は名称】楽天グループ株式会社
(74)【代理人】
【識別番号】100099623
【氏名又は名称】奥山 尚一
(74)【代理人】
【識別番号】100125380
【氏名又は名称】中村 綾子
(74)【代理人】
【識別番号】100142996
【氏名又は名称】森本 聡二
(74)【代理人】
【識別番号】100166268
【氏名又は名称】田中 祐
(74)【代理人】
【氏名又は名称】有原 幸一
(72)【発明者】
【氏名】エニュアン・ウー
(72)【発明者】
【氏名】ルイス・ベルナルド
【審査官】小池 正彦
(56)【参考文献】
【文献】米国特許第8885994(US,B2)
【文献】特開平10-260983(JP,A)
【文献】国際公開第2010/116885(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
複数の画像の情報を記憶する非一時的なコンピュータ可読媒体と、
プロセッサと
を備え、
前記プロセッサは、
元の画像において物体を示す物体領域を特定し、
前記物体領域を正規化して正規化画像を得て、
前記正規化画像から形状ベクトル及び色ベクトルを計算し、
前記形状ベクトル及び前記色ベクトルを用いて
、前記元の画像と前記非一時的なコンピュータ可読媒体に記憶された前記複数の画像の各々との一致度を計算し、
前記一致度に基づき、前記非一時的なコンピュータ可読媒体が前記元の画像と一致するものを記憶しているかどうかを判定する、
画像照合システム。
【請求項2】
前記プロセッサは、
前記元の画像からスケッチ画像を生成し、
前記スケッチ画像において外接矩形を特定し、
前記外接矩形により前記スケッチ画像のクロッピングを行い、クロッピングがなされた前記スケッチ画像のサイズ変更及びパディングを行って、前記正規化画像を得て、
前記正規化画像から前記形状ベクトルを計算する、
請求項1に記載の画像照合システム。
【請求項3】
前記プロセッサは、
前記物体の主軸に基づいて前記スケッチ画像を予め回転させ、
予め回転された前記スケッチ画像から前記正規化画像を生成する、
請求項2に記載の画像照合システム。
【請求項4】
前記プロセッサは、
予め回転された前記スケッチ画像を更に回転させることにより、1つ以上の正規化画像を生成し、
各々の前記正規化画像から前記形状ベクトルを計算する、
請求項3に記載の画像照合システム。
【請求項5】
前記プロセッサは、
前記元の画像からシルエット画像を生成し、
前記シルエット画像のサイズ変更を行い、前記正規化画像を得て、
色及び前記正規化画像から前記色ベクトルを計算する、
請求項1に記載の画像照合システム。
【請求項6】
前記プロセッサは、誤一致かどうかの検査を行うことにより、前記一致するものが誤って特定されているかどうかを判定する、請求項1に記載の画像照合システム。
【請求項7】
前記プロセッサは、エッジ検出により、前記元の画像から前記スケッチ画像を生成する、請求項2に記載の画像照合システム。
【請求項8】
前記プロセッサは、3つの閾値集合によるエッジ検出を用い、高解像度のエッジ画像と、中間解像度のエッジ画像と、低解像度のエッジ画像とにつき異なる反復回数による膨張処理を行い、3つのエッジ画像を論理和演算により組み合わせる、請求項7に記載の画像照合システム。
【請求項9】
前記プロセッサは、画像のセグメンテーションにより主たる物体を背景とは分けることで、前記元の画像から前記シルエット画像を生成する、請求項5に記載の画像照合システム。
【請求項10】
前記プロセッサは、
いずれの前記形状ベクトルが計算されるかに基づき、前記元の画像からスケッチ画像を生成し、
前記シルエット画像と前記スケッチ画像との論理和演算を行う、
請求項5に記載の画像照合システム。
【請求項11】
前記プロセッサは、前記外接矩形により前記スケッチ画像のクロッピングを行って、前記物体が、前記外接矩形に囲まれ、前記外接矩形の上縁及び下縁の両方と左縁及び右縁の両方とのいずれかに接することとなる、請求項2に記載の画像照合システム。
【請求項12】
前記プロセッサは、クロッピングがなされた前記スケッチ画像を標準サイズへサイズ変更する、請求項2に記載の画像照合システム。
【請求項13】
前記プロセッサは、サイズ変更がなされた前記スケッチ画像を正方形となるようにパディングする、請求項2に記載の画像照合システム。
【請求項14】
前記プロセッサは、正規化された前記スケッチ画像を複数のセルに分割することにより前記形状ベクトルを計算する、請求項2に記載の画像照合システム。
【請求項15】
前記プロセッサは、明度の高いピクセルをセルごとにカウントする、請求項14に記載の画像照合システム。
【請求項16】
前記プロセッサは、各前景ピクセルにつきループ処理を行うことにより前記色ベクトルを計算し、前記色ベクトルを64個のバケットのうちの1つに割り当てる、請求項1に記載の画像照合システム。
【請求項17】
前記プロセッサが前記色ベクトルの正規化を行う、請求項1に記載の画像照合システム。
【請求項18】
前記プロセッサは、前記形状ベクトル及び前記色ベクトルの両方に対して4つの局所性鋭敏型ハッシュ値を計算する、請求項1に記載の画像照合システム。
【請求項19】
プロセッサが、元の画像において物体を示す物体領域を特定するステップと、
前記プロセッサが、前記物体領域を正規化し正規化画像を得るステップと、
前記プロセッサが、前記正規化画像から形状ベクトル及び色ベクトルを計算するステップと、
前記プロセッサが、前記形状ベクトル及び前記色ベクトルを用いて
、前記元の画像と非一時的なコンピュータ可読媒体に記憶された複数の画像の各々との一致度を計算するステップと、
前記プロセッサが、前記一致度に基づき、
前記複数の画像の情報を記憶する
前記非一時的なコンピュータ可読媒体が前記元の画像と一致するものを記憶しているかどうかを判定するステップと
を含む画像照合方法。
【請求項20】
プロセッサが、元の画像において物体を示す物体領域を特定するステップと、
前記プロセッサが、前記物体領域を正規化し正規化画像を得るステップと、
前記プロセッサが、前記正規化画像から形状ベクトル及び色ベクトルを計算するステップと、
前記プロセッサが、前記形状ベクトル及び前記色ベクトルを用いて
、前記元の画像と非一時的なコンピュータ可読媒体に記憶された複数の画像の各々との一致度を計算するステップと、
前記プロセッサが、前記一致度に基づき、
前記複数の画像の情報を記憶する
前記非一時的なコンピュータ可読媒体が前記元の画像と一致するものを記憶しているかどうかを判定するステップと
を行うためのコンピュータプログラムコードを有する
、画像照合のためのコンピュータプログラ
ム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、特に商品画像の照合を行う画像照合システムに関する。
【背景技術】
【0002】
画像の大きな集合から、視覚的に類似する複数の画像を、他のいかなる情報(すなわち、テキストラベル、タグ)も用いずに見つける画像照合(image matching:画像マッチング)は、魅力的で難しい研究分野となっている。今日の電子商取引の時代では、画像照合アルゴリズムは、例えば、同じ画像かどうかの照合、同種商品の検出、類似商品の提案、及びカテゴリによる画像分類といった高度な特徴及び機能性を提供するための基本である。
【0003】
任意の画像などの実際の画像は、対象とその背景とに概念的に分けることができる。目的は、同じ対象を含む複数の画像を見つけることである。優れた画像照合アルゴリズムは、以下の特徴を有することが求められる。すなわち、(1)サイズ不変性-対象が同じで相対的なサイズが異なる場合は、アルゴリズムにより、同じものとみなされるべきである-と、(2)位置不変性すなわち平行移動不変性-対象が同じでその画像内位置が異なる複数の画像は、同じものとみなされるべきである-と、(3)回転不変性-2次元の平面上で回転した画像は、同じものとみなされるべきである-とである。優れた画像照合アルゴリズムには他の要件がある。例えば、1つの要件は3D回転不変性を有することである。これは、対象が同じで見る視点が異なる複数の画像が同じものとして認識されるべきであるということを意味する。
【0004】
画像照合は、深く理論的な重要性及び様々な実用的応用を有する。この分野において、ハンドクラフト(handcrafted:手作業で作られた)照合アルゴリズムと機械学習ベースのアルゴリズムとにカテゴリ分けをすることができる、多くの先行する研究が注目されている。
【0005】
ハンドクラフトによる照合アルゴリズムは、通常、信頼性の高い照合を行うために生のピクセル値から特有の不変的特徴を抽出する。いくつかの既知のアルゴリズムとしては、スケール不変性特徴変換(SIFT:scale-invariant feature transform)と、スピードアップロバスト特徴(SURF:speeded-up robust features)と、最大安定外部領域(MSER:maximally stable external regions)とが挙げられる。しかし、これらの「特徴」は、通常、複数の線によるシャープな角部又は接合点である。野球用のボール又は無地のTシャツ等、滑らかな曲線の物体は、いかなる「特徴」も有しておらず、このため、こうした物体を照合することはできない。さらに、物体の全体形状は考慮されず、それにより、照合アルゴリズムは汎用的な画像照合には適していない。
【0006】
機械学習アルゴリズムは、特徴抽出のために畳込みニューラルネットワーク(CNN)を使用する。CNNは、当初、画像分類のために設計され、後に、画像探索に採用された。正解率に関して、CNNベースの機械学習アルゴリズムは、旧式のハンドクラフトアルゴリズムと同等である。画像照合は今もなお、機械学習アルゴリズムが従来のアルゴリズムに対してそれほど優れてはいない最後のいくつかの分野である。その理由は、画像照合の問題を機械学習が依存する目的関数に定式化することができないためである。
【0007】
既存の画像照合アルゴリズムには主な欠点がいくつかある。例えば、ハンドクラフトアルゴリズムは、滑らかな曲線のみを有する単純な物体では機能せず、物体の全体形状を無視してしまう。その一方で、機械学習アルゴリズムは、色に関する物体情報を逃し、パッチ色差及びサブ領域差のような特定の問題を修正すべく容易に変更することができない。複数の画像がいくつかの小さい領域を除いてほぼ同じである場合、非常に多くの誤一致がある。モデルを修正し再トレーニングする以外に、アルゴリズムを微調整し改善する方法はない。
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述したことを考慮して、既存のアルゴリズムの上記欠点を解決する画像照合システムが必要とされている。画像照合プロセス中に3つの不変性、すなわち、サイズ不変性、位置不変性及び2D回転不変性を達成する画像照合システムも必要とされる。本開示の実施形態は、この考慮事項及び他の考慮事項を対象とする。
【課題を解決するための手段】
【0009】
開示する技術の態様には、画像照合のためのシステム及び方法が含まれる。開示する実施の形態に合わせて、画像照合システムは、非一時的なコンピュータ可読媒体とプロセッサとを含む。非一時的なコンピュータ可読媒体は、複数の画像の情報を記憶する。プロセッサは、元の画像において物体を示す物体領域を特定する。プロセッサは、物体領域を正規化し正規化画像をもたらす。プロセッサは、正規化画像から形状ベクトル及び色ベクトルを計算する。プロセッサは、形状ベクトル及び色ベクトルを用いて一致度を計算する。プロセッサは、一致度に基づき、非一時的なコンピュータ可読媒体が元の画像と一致するものを記憶しているかどうかを判定する。
【0010】
開示する技術の別の態様は、画像照合方法に関する。本方法は、プロセッサが、元の画像において物体を示す物体領域を特定するステップを含むことができる。本方法は、プロセッサが、物体領域を正規化し正規化画像を得るステップを含むことができる。本方法は、プロセッサが、正規化画像から形状ベクトル及び色ベクトルを計算するステップを含むことができる。本方法は、プロセッサが、形状ベクトル及び色ベクトルを用いて一致度を計算するステップを含むことができる。本方法は、プロセッサが、一致度に基づき、複数の画像の情報を記憶する非一時的なコンピュータ可読媒体が元の画像と一致するものを記憶しているかどうかを判定するステップを含むことができる。
【0011】
本開示の技術の更なる態様は、画像照合のコンピュータプログラム製品に関する。本コンピュータプログラム製品は、コンピュータプログラムコードを含むコンピュータ可読記憶媒体を備える。コンピュータプログラムコードは、プロセッサに、元の画像において物体を示す物体領域を特定させることができる。コンピュータプログラムコードは、プロセッサに、物体領域を正規化し正規化画像を取得させることができる。コンピュータプログラムコードは、プロセッサに、正規化画像から形状ベクトル及び色ベクトルを計算させることができる。コンピュータプログラムコードは、プロセッサに、形状ベクトル及び色ベクトルを用いて一致度を計算させることができる。コンピュータプログラムコードは、プロセッサに対し、一致度に基づき、複数の画像の情報を記憶する非一時的なコンピュータ可読媒体が元の画像と一致するものを記憶しているかどうかの判定を行わせることができる。
【0012】
本開示の更なる特徴とそれによって提供される利点とは、同様の要素を同様の符号により示している添付図面に示す具体的な実施形態を参照して、以下でより詳細に説明する。
【0013】
必ずしも正確な尺度で描かれておらず、本開示に組み込まれるとともに本開示の一部を構成し、開示する技術の様々な実施態様及び態様を例示し、説明とともに、開示する技術の原理を説明する添付図面を参照する。
【図面の簡単な説明】
【0014】
【
図1】本開示の1つ以上の実施形態を実装するために使用することができる一例示の環境の図である。
【
図2】本開示の1つの態様による画像照合システムによって実施されるプロセスの一例示のフローチャートである。
【
図3】本開示の1つの態様による、エッジ検出を用いてスケッチ画像を作成するプロセス300を示す図である。
【
図4】本開示の1つの態様による、元の画像からスケッチ画像がいかに生成されるかのプロセスを示す図である。
【
図5】本開示の1つの態様による、元の画像をシルエット画像に変換するいくつかのサンプル結果を示す図である。
【
図6】本開示の1つの態様による、シルエット作成のいくつかの例を示す図である。
【
図7】本開示の1つの態様による、画像を回転させるいくつかの例を示す図である。
【
図8】本開示の1つの態様による、スケッチ画像において外接矩形を特定する一例を示す図である。
【
図9】本開示の1つの態様による、スケッチ画像のクロッピング、サイズ変更及びパディングのいくつかの例を示す図である。
【
図10】本開示の1つの態様による、正規化されたスケッチ画像を複数のセルに分割することを示す図である。
【
図11】本開示の1つの態様による、正規化されたスケッチ画像から形状ベクトルを計算するフローチャートである。
【
図12】本開示の1つの態様による、色ベクトルを計算するフローチャートである。
【
図13】本開示の1つの態様による、2つの画像に対する色分布ヒストグラムである。
【
図14】本開示の1つの態様による、ベクトル化に基づいて一致画像を特定するフローチャートである。
【
図15A】本開示の1つの態様による、探索対象としてのリモコンを示す図である。
【
図15B】本開示の1つの態様による、
図15Aのリモコンに対して得られた照合結果を示す図である。
【
図16】本開示の1つの態様による、パッチ色差問題に対処するフローチャートを示す。
【
図17】本開示の1つの態様による、入力画像及び結果画像を示す図である。
【
図18A】本開示の1つの態様による、探索対象としてのビール瓶を示す図である。
【
図18B】本開示の1つの態様による、
図18Aのビール瓶に対して得られた照合結果を示す図である。
【
図19】本開示の1つの態様による、サブ領域差を修復するフローチャートである。
【
図20】本開示の1つの態様による、サブ領域差を修復するプロセスを示す図である。
【
図21A】本開示の1つの態様による、探索対象としてのロゴを示す図である。
【
図21B】本開示の1つの態様による、
図21Aのロゴと比較される他のロゴを示す図である。
【発明を実施するための形態】
【0015】
開示する技術の幾つかの実施態様について、添付図面を参照してより詳細に説明する。しかしながら、この開示する技術は、多くの異なる形態で具現化することができ、本明細書に示す実施態様に限定されるものとして解釈されるべきではない。以降、開示する技術の様々な要素を構成するものとして記載する構成要素は、限定的ではなく例示的であるように意図されている。本明細書に記載する構成要素と同じか又は同様の機能を実施する多くの好適な構成要素は、開示する電子デバイス及び方法の範囲内に包含されているように意図されている。本明細書に記載しない他のこうした構成要素は、限定されないが、例えば、開示する技術の開発後に開発される構成要素を含むことができる。
【0016】
1つ以上の方法ステップの言及は、追加の方法ステップ又は明示的に特定するそれらのステップの間の介在する方法ステップの存在を排除しないこともまた理解されるべきである。
【0017】
ここで、開示する技術の例示的な実施形態について詳細に言及し、その例を添付図面に示すとともに本明細書に開示する。好都合な場合はいつでも、図面を通して同じか又は同様の部分に言及するために同じ参照番号を使用する。
【0018】
「インデックス」及び「ベクトル」等の用語は、同義で用いる場合があり、それらのそれぞれが浮動小数点数の配列を指すことができる。
【0019】
図1に、本開示の或る特定の態様を実施することができる一例示の環境100を示す。開示するプロセス及び特徴を実装するために使用される構成要素は変更することができるため、
図1に示す構成要素及び配置は、開示する実施形態の限定を目的とするものではない。
図1に示すように、いくつかの実施態様では、環境100は、以下、すなわち、画像照合システム110と、ネットワーク180と、クライアントコンピュータ160とのうちの1つ以上を含むことができる。画像照合システム100は、プロセッサ120と非一時的コンピュータ可読媒体140とを含むことができる。クライアントコンピュータ160は、画像照合システム110に入力画像を送ることができる。クライアントコンピュータ160は、画像照合システム110から画像照合結果を受信し、確認し、又は表示することができる。
【0020】
プロセッサ120は、2次元平面上にある大部分が明瞭な背景と対象とを含む、商品画像等の画像の下位カテゴリを対象とすることができる。プロセッサ120によって処理される画像は、明瞭な又は滑らかな背景を有する可能性がある。いくつかの実施形態では、プロセッサ120によって処理される画像は、対象及び背景が分離可能ではないノイズの多い背景を有する可能性がある。プロセッサ120は、対象のみではなく画像全体に基づいて照合を行うことができる。
【0021】
画像照合を行うとき、プロセッサ120は、サイズ不変性、位置不変性及び2-d回転不変性を扱うことができる。
【0022】
プロセッサ120は、準備プロセスと照合プロセスとを含む2つのプロセスを実施することができる。準備プロセスでは、何百万もの画像等、多くの画像を処理することができ、クライアントコンピュータ160は関与しないものとすることができる。準備が完了すると、各画像は、1つの形状ベクトル及び1つの色ベクトルに関連付けることができる。これらのベクトルは、Elasticsearchインデックス等のデータベーステーブルに格納するのに用いることができる。これらのベクトルは、非一時的なコンピュータ可読媒体140に記憶することができる。照合プロセスでは、入力画像をクライアントコンピュータ160からプロセッサ120に送ることができる。入力画像は、ベクトル作成プロセスを経ることができる。少数の候補に絞り込むために、高速探索を行うことができる。各候補に対して、一致度(あるいは一致スコア)を計算することができ、閾値を超えた一致度を返すことができる。1つの例では、結果としての形状ベクトル及び色ベクトルを用いて、Elasticsearchインデックスにおいて同様のベクトルを見つけることができる。プロセッサ120は、形状ベクトル及び色ベクトルに基づいて誤一致かどうかの検査を行うことができる。閾値内に収まる何らかの同様のベクトルが見つかった場合、一致度とともに対応する画像をクライアントコンピュータ160に返すことができる。一致するものが見つからなった場合、クライアントコンピュータ160に空の結果集合を送り、一致するものが見つからなかったことを示すことができる。
【0023】
図2に、プロセッサ120によって行われる画像照合の準備プロセスの一例示のフローチャートを示す。
【0024】
210において、プロセッサ120は、スケッチ画像の作成を行うことができる。220において、プロセッサ120は、シルエット画像の作成を行うことができる。230において、プロセッサ120は、主軸を見つけ、シルエット画像を予め回転させることができる。240において、プロセッサ120は、スケッチ画像において外接矩形を見つけることができる。250において、プロセッサ120は、スケッチ画像のクロッピング、サイズ変更及びパディングを行うことができる。260において、プロセッサ120は、スケッチ画像から形状ベクトルを計算することができる。270において、プロセッサ120は、色及びシルエット画像から色ベクトルを計算することができる。280において、プロセッサ120は、元の色画像、スケッチ画像及びシルエット画像のクロッピング、サイズ変更及びパディングを含む、誤一致かどうかの検査の準備を行うことができる。
【0025】
210において、プロセッサ120は、最初に、エッジ検出により元の画像をスケッチ表現に変換することができる。プロセッサ120は、エッジ検出を用いて、「スケッチ」画像と呼ぶことができる、物体のスケッチ図のように見える抽象画像を作ることができる。
図3に、エッジ検出によりスケッチ画像を作成するプロセス300を示す。エッジ検出は、3つの閾値集合、すなわち、高(閾値1=150、閾値2=300)と、中(閾値1=100、閾値2=200)と、低(閾値1=50、閾値2=100)とを用いて行うことができる。エッジ検出プロセスは、John Canny教授にちなんで命名された「キャニー(Canny)エッジ検出」等、任意の利用可能なエッジ検出アルゴリズムを実装することができる。キャニーエッジ検出アルゴリズムは2つの閾値を用いるが、他のエッジ検出アルゴリズムは1つ又は2つの閾値を用いる。エッジ検出アルゴリズムは全て、或る種の閾値を用いて、結果としてのエッジ画像に詳細情報がどの程度あるかを判定する。
【0026】
エッジ画像は、高解像度のエッジ画像及び中間解像度のエッジ画像のそれぞれに対して反復回数2及び反復回数1により膨張させることができる。膨張処理(dilation)は、処理の際にスケッチ画像における線を太くするプロセスを意味しうる。低解像度のエッジ画像では膨張処理を行わないとすることができる。最後に、論理和演算により、3つの膨張画像を組み合わせることができる。
図4に、上記プロセスの結果として元の画像からスケッチ画像をどのようにして生成することができるかを示す。
図4において、元の画像は色付きの可能性があるが、
図4の残りの図は白黒の可能性がある。
【0027】
図2に戻ると、220において、プロセッサ120は、元の画像をシルエット画像に変換することができる。プロセッサ120は、Scikit-image又はOpenCVのいずれかの画像セグメンテーションアルゴリズムを使用して、背景から主たる物体を分けることができる。対象と背景とのコントラストが十分でないためにシルエット画像がさほど良好ではない場合、プロセッサ120は、シルエット画像とスケッチ画像との論理和を取ること(論理和演算)により、この問題を部分的に修復することができる。
図5にいくつかのサンプル結果を示す。
図5において、元の画像は色付きの可能性があるが、
図5の残りの画像は白黒の可能性がある。
【0028】
シルエット作成のための汎用の機械学習アルゴリズムは、一般的に、前景物体が何である可能性があるかに依存する。最も近い機械学習アルゴリズムは画像のセグメンテーションである可能性があり、画像のセグメンテーションは、物体が予め定められたカテゴリ内にある場合は適切に機能する可能性があり、物体が予め定められたカテゴリ内にない場合は適切に機能しない可能性があるか、又は、時として全く機能しない可能性がある。
図6にいくつかの例を示す。
図6において、元の画像は色付きの可能性があるが、
図6のシルエット及び修正図は白黒の可能性がある。
図6の機械学習シルエットは色付きの可能性がある。
【0029】
図2に戻ると、プロセッサ120は、シルエット画像における物体の質量中心、すなわち主軸を見つけ、シルエット画像を予め回転させることができる。プロセッサ120は、主軸が上方向、右方向、下方向及び左方向となるよう物体を予め回転させ、任意の2次元方向において物体を比較できるようにすることができる。プロセッサ120は、主成分分析(PCA)を行うことができる。PCAは、データセットの最も重要な特徴を抽出する統計的な処理である。データセットは、シルエット画像等の画像を参照することができる。プロセッサ120は、OpenCVによる実装を用いて、質量中心の位置と、主軸及び副軸の向きとを計算することができる。副軸は、主軸に対して垂直とすることができる。プロセッサ120は、主軸が直立するようにシルエット画像を回転させることができる。このとき、元の向きとは無関係に画像を比較することができる。時として、物体がおよそ対角線方向に位置合せされているとき、小さな変化によって物体が直立又は水平等、全く違うものになる可能性がある。こうした問題を回避するために、プロセッサ120は、考えられる4つの主な方向の全てを包含できるように、最初に位置合せされた画像を90度、180度及び270度にわたり回転させることができる。回転の処理は、スケッチ画像においても同様に行われる必要がある可能性がある。
図7にいくつかの例を示す。
図7において、元の画像は色付きの可能性があるが、
図7の残りの画像は白黒の可能性がある。1つの実施形態では、プロセッサ120が回転不変性照合を行った場合を示すフラグを設定することができる。フラグが真である場合、プロセッサ120は、4つの画像を全て使用することができる。回転画像から4つの形状ベクトルを計算することができる。元の向きにある画像から、1つの色ベクトルを計算することができる。回転画像から色ベクトルを計算することができるが、4つの回転画像の結果は同じである可能性がある。1つの実施形態では、プロセッサ120は、予め回転された(最初に位置合せされた)スケッチ画像を用いて、元の向きにおける1つの形状ベクトル及びシルエット画像を計算し、1つの色ベクトルを計算することができる。フラグが偽である場合、プロセッサ120は、
図2に示すステップ230をスキップし、元の向きにおけるスケッチ画像及びシルエット画像のみを使用することができる。フラグのデフォルト値は偽とすることができる。
【0030】
図2に戻ると、プロセッサ120は、ステップ240にて、スケッチ画像における外接矩形を特定することができる。
図8に一例を示す。
【0031】
図2に戻ると、250において、プロセッサ120は、スケッチ画像のクロッピング、サイズ変更及びパディングを行うことができ、それらの全てを正規化と呼ぶことができる。これらの処理の後、全ての画像は同じサイズとなることができ、それにより、プロセッサ120は、これらの画像をピクセルごとに、又は
図10に示すようにセルごとに比較することができる。1つの実施形態では、プロセッサ120は、外接四角形を用いてスケッチ画像をクロッピングすることができ、それにより、物体は、正方形の外接四角形で囲まれ、外接四角形の上縁及び下縁の両方、又は左縁及び右縁の両方のいずれかに接する。
【0032】
続いてプロセッサ120は、画像間の比較が可能となるように、クロッピングされたスケッチ画像を標準サイズにサイズ変更することができる。プロセッサ120は、入力画像とともにシルエット画像も同様に標準サイズにサイズ変更することができる。1つの例では、プロセッサ120は、クロッピングされたスケッチ画像を最大寸法にサイズ変更することができる。1つの例では、Elasticsearchにおける最大ベクトル寸法は、1024である。1024の平方根は32であり、これは、32×32セルを意味する。各セルが10×10=100ピクセルを有する場合、画像サイズは320×320(32×10=320)である。各セルが12×12=144ピクセルを有する場合、画像サイズは384×384(32×12=384)である。1つの例では、プロセッサ120は、物体が正方形である場合、クロッピングされたスケッチ画像を384×384ピクセルにサイズ変更することができ、あるいは、物体が正方形でない場合は、幅又は高さのいずれかが384ピクセルである。次いでプロセッサ120は、スケッチ画像を正方形となるようにパディングすることができ、それにより正規化されたスケッチ画像がもたらされる。
図9にいくつかの結果例を示す。高さのある物体は、上の境界及び下の境界の両方に接することができ、幅の広い物体は、左の境界及び右の境界の両方に接することができる。
【0033】
図2に戻ると、プロセッサ120は、260において、正規化されたスケッチ画像から形状ベクトルを計算することができる。各画像は、1024次元の形状ベクトルによって表すことができる。非一時的なコンピュータ可読媒体140は、1000万個の形状ベクトル等、複数の商品画像の情報を記憶することができる。形状ベクトルが1次元ベクトルである場合、二分探索木(binary search tree, BST)を用いて、最適な一致結果を見つけることができる。例えば、一致するものが見つかるまで、範囲を反復して半分に切断することができる。多次元ベクトルの場合、k-d木(k次元探索木)、ボールツリー(ball tree)、(Google BigQueryのような)データベース又はElasticsearchインデックスを用いて、探索を行うことができる。1つの例では、Elasticsearchは、最も性能が良く、最も費用対効果が高い。
【0034】
プロセッサ120は、正規化されたスケッチ画像を
図10に示すような複数のセルに(各次元において32ブロック等)分割することにより、形状ベクトルを計算することができる。
図10に10×10のセルを示す。プロセッサ120は、セルごとに明るい(bright:明度が高い)ピクセルをカウントすることができる。プロセッサ120は、各セルにおいて明るいピクセルの割合を計算することができる。
【0035】
画像サイズが384×384ピクセルである場合、プロセッサ120は、それを32×32のブロックに分割して、合計1024(32×32)のセルを得ることができる。各セルは、12×12ピクセルとすることができる。384ピクセルを32ブロックで除すると、12ピクセルとなる。
図11に、nが32である場合の計算のフローチャートを示す。
図11は、二重ループの場合のフローチャートを示す。最初に、2次元ベクトルであるvector[32][32](n=32)が初期化される。次に、ループカウンタとして「i」を用い行ごとに画像をループすることができる。各行内で、ループカウンタとして「j」を用いて、各列をループすることができる。二重ループの本体を、下側の3つのボックスとすることができる。例えば、i=3及びj=5(第4行の第6セル)である場合、開始点は(96,128)とすることができ、終了点は(127,159)とすることができ、ここで、96=32×3であり、127=32×4-1である。このセルは、左上のコーナーが(96,128)であり右下のコーナーが(127,159)である矩形内に144個のピクセルの全てを含む。明度の高いピクセル数が53である場合、明るいセルの割合は53/144=0.368であるため、vector[3][5]=0.368である。二重ループが終了すると、(各次元が32個の要素を有する)2次元ベクトルを、1024個の要素を有する1次元ベクトルに変換することができる。このようなプロセスを「一次元化(あるいは平坦化)」と呼ぶことができる。
【0036】
図2に戻ると、プロセッサ120は、270において、色及びシルエット画像から色ベクトルを計算することができる。1つの実施形態では、ステップ270は、ステップ260に依存しない場合がある。ステップ270は、ステップ220の後に分岐することができ、それにより、ステップ270はステップ230~ステップ280と並行して行うことができる。ステップ270は、正規化されたスケッチ画像に依存しない場合がある。
【0037】
プロセッサ120は、RGB色空間全体を64個のバケット(4×4×4)に(例えば256×256×256等)分割することができる。プロセッサ120は、シルエットにおいて明度の高いピクセルである前景ピクセルの各々をループし、64個のバケットのうちの1つに割り当てることができる。1つの実施形態では、前景ピクセルはシルエット画像における白色ピクセルである一方、黒色ピクセルは画像の背景であり無視される。
図7のシルエットにおいて、前景ピクセルは靴の形をした白色の領域であり、残りの黒い部分は背景ピクセルを表す。
【0038】
最後に、プロセッサ120は、色ベクトルを正規化することができる。プロセッサ120は、色分布ヒストグラムを導入し、物体の色情報を取り込んで比較を可能にすることができる。
図12に、n=4、w=384、h=384であるフローチャートを示す。
【0039】
図12に、行ごとの外側ループと、列ごとの内側ループとの二重ループを示す。変数「n」は、RGB色空間の1つの次元における値の数を表すことができる。n=4である場合、64個のバケットが存在する可能性がある。変数「w」は、w=384等のように、画像の幅を表すことができる。変数「w」は、画像の行数も表すことができる。変数「h」は、h=384等のように、画像の高さを表すことができる。変数「h」は、行ごとの列数も表すことができる。まずベクトルが初期化されて結果が記憶される。ベクトルは1次元であり、要素の数は64であり、初期値は0である。二重ループの本体は、条件判定とフローチャートの下半分における2つのボックスとすることができる。1つの例では、i=123及びj=97である場合、マスクはシルエット画像でありグレースケールである。各ピクセルは、1次元であるか又は単にスカラー量の可能性がある。値が0に等しい場合は暗いピクセルである。値が0よりも大きい場合は明るいピクセルである。mask[123][97]が0を上回らない(つまり0である)場合、暗いピクセルであり、いかなるプロセスも行われない。明るいピクセルである場合、下の2つのボックスにて計算が行われる。
図12における変数「image」は、サイズとして384×384を有する正規化された色画像を指すことができる。各ピクセルは、3つの要素を有する1次元配列、例えば、赤色=201、緑色=87、及び青色=149を意味するimage[123][97]=(201,87,149)となり得る。RGB値をn3(すなわち、64)で割り、整数部分が得られる。すなわち、r=int(201/64)=int(3.14)=3であり、g=int(87/64)=int(1.36)=1であり、b=int(149/64)=int(2.33)=2である。次に、index=n*n*r+n*g+b=4*4*3+4*1+2=48+4+2=54となる。次いで、vector[54]の値が1つインクリメントされる。二重ループが終了したのち、ベクトルは、(27,5,235,0,14,...)等の値を含むことができる。和を取ることができる。各要素を和で除することができる。分布を得ることができ、最後のステップを「正規化」と呼ぶことができる。
【0040】
図13に、2つの画像及びそれらのヒストグラム等、いくつかのサンプル結果を示す。2つの画像におけるTシャツは赤色の可能性がある。
【0041】
図2に戻ると、プロセッサ120は、280において、元の色画像、スケッチ画像及びシルエット画像のクロッピング、サイズ変更及びパディングを含む、誤一致かどうかの検査の準備を行うことができる。プロセッサは、元の色画像、エッジ検出された画像及びシルエット画像に対して、ステップ250と同じ処理を繰り返し、それらを将来使用する(誤一致を削除する)ために保存することができる。プロセッサ120は、画像のベクトル表現を用いて画像を照合することができる。
【0042】
プロセッサ120は、Elasticsearchを用いて大規模な探索を行うことができる。Elasticsearchは、インデックス格納及び探索性能の両方に関して探索木よりも優れている。プロセッサ120は、画像間の類似度を計算することができる。元の画像において、プロセッサ120は、CNNベクトル、形状ベクトル及び色ベクトルに対する探索ソフトウェアとしてElasticsearchを用いることができる。Elasticsearchでは、数値ベクトルがデータ型である。例えば、「dense_vector」は、数値ベクトルの1つの型である。
【0043】
局所性鋭敏型ハッシュ(locality sensitive hashing, LSH)は、探索効率を向上させる方法である。LSHは、形状ベクトルから整数等のハッシュ値を、同様のベクトルが同じハッシュ値を有し当該ハッシュ値を用いてElasticsearchインデックスがフィルタリングされるように、計算する。10,000,000個のベクトルの例では、画像照合が実施されるたびにこれらの10,000,000個の形状ベクトルをループするのを回避するために、LSHは、これらの10,000,000個のベクトルを10,000個のバケットに分割することができ、各バケットは、整数等の1つの一意のハッシュ値を有することができる。靴の場合のハッシュ値は、テレビのハッシュ値とは大きく異なる可能性がある。したがって、テレビを探索するためにLSHを用いる場合、残りの9999個のバケットを無視しながら、テレビのバケットのみが探索される。
【0044】
Elasticsearchインデックスのスキーマを以下に示す。
"mappings": {
"properties": {
"img_name": {
"type": "keyword"
},
"cnn_signature_256_0": {
"type": "long"
},
"cnn_signature_256_1": {
"type": "long"
},
"cnn_signature_256_2": {
"type": "long"
},
"cnn_signature_256_3": {
"type": "long"
},
"cnn_vector_256": {
"type": "dense_vector",
"dims": 256
},
"cnn_vector_1024": {
"type": "dense_vector",
"dims": 1024
},
"shape_signature_256_0": {
"type": "long"
},
"shape_signature_256_1": {
"type": "long"
},
"shape_signature_256_2": {
"type": "long"
},
"shape_signature_256_3": {
"type": "long"
},
"shape_vector_256": {
"type": "dense_vector",
"dims": 256
},
"shape_vector_1024": {
"type": "dense_vector",
"dims": 1024
},
"color_vector_64": {
"type": "dense_vector",
"dims": 64
}
}
}
【0045】
以下の表は、このスキーマに関する説明を提供する。
【0046】
【0047】
表1において、「cnn_signature_256_0」等のシグネチャは、対応するベクトルから計算される。上記LSH(局所性鋭敏型ハッシュ)に関する説明を参照されたい。バケット化により何らかの喪失を回避するために、4つの異なる方法を用いてLSHを行うことができる。探索を実施するとき、探索画像から4つのLSHシグネチャを作成することができる。4つの探索は、各LSHシグネチャを用いて実施することができる。これらの4つの探索から、探索結果の集合を組み合わせることができる。「cnn_vector_256」ベクトルは、本開示の方法を機械学習法と比較できるように、畳込みニューラルネットワーク(CNN)の機械学習モデルによって作成することができる。CNNモデルは、オープンソースとして入手可能である。
【0048】
プロセッサ120は、CNNベクトル(1024-d)又は形状ベクトル(1024-d)のいずれであっても画像ベクトルを256次元まで低減させることができる。プロセッサ120は、CNNベクトル256-d及び形状ベクトル256-dの両方に対して4つのLSH値を計算することができる。表における全てのフィールドが、1つの画像に対するデータからなることができ、全ての画像に対するデータは、Elasticsearchインデックスに格納することができる。
【0049】
探索段階において、入力画像を同様に処理することができる。探索に対して、ハッシュ値とともに、cnn_vector_256又はshape_vector_256のいずれかを使用することができる。全ての商品画像に対して、表1に列挙した全てのフィールドが作成される。基本の値は、shape_vector_1024であり、これは、全ての画像処理から計算される。shape_vector_1024が1024次元を有し、これらの多くの次元における探索が幾分か低速であるため、隣接する4つの値を1つに平均する(1024/4=256)ことにより、256次元を有するshape_vector_256を作成することができる。探索プロセスを高速化するために、LSHを用いて、小さく且つ関連するサブセットに対して探索される。このバケット化に起因するいかなる照合結果の喪失も回避するために、4つの異なるLSHが用いられる。そして、(shape_vector_256に対する)これらの4つのLSHフィルタリング探索から、全ての結果が組み合わせられる。照合結果のそれぞれに対して、探索すべき画像と照合画像との距離(又はスコア)を、shape_vector_1024及び閾値を用いることにより計算し、相対的に低いスコア(又は相対的に大きい距離)を有する照合結果を除去することができる。次いで、color_vector_64を用いて、スコアを計算し、相対的に低いスコアの照合結果を更に除去することができる。最後に、誤一致かどうかの検査が行われ、誤った一致結果が除去される。次いで、一致画像を決定し、返すことができる。これらのステップの全てを、単なる比較として、CNN_*値が使用されるCNN_vector_1024から始めて行うことができる。これらのステップは任意である。
【0050】
具体的には、サービスを呼び出すために、4つの探索要求を送ることができ、それぞれが1つのハッシュ値を有する。ハッシュ値を用いて、探索すべき画像のサブセットをフィルタリング除去することができる。4つのハッシュ値を用いて、フィルタリングに起因していかなる照合結果も喪失しないことを確実にすることができる。探索が行われた後、CNNベクトル1024次元及び形状ベクトル1024次元を用いて、コサイン類似度を、コサイン類似度を用いて計算された色一致度とともに用いることにより、一致度を計算することができる。距離及びスコアは2つの関連する概念である。2次元のv0(x0,y0)及びv1(x1,y1)のみがある場合、距離はsqrt((x0-x1)
2+(y0-y1)
2)である。これが小さいほど一致度が高い。2つの同一ベクトルの距離は0となり得る。スコアすなわちコサイン類似度は、(x0*x1+y0*y1)/(sqrt(x0
2+y0
2)*sqrt(x1
2+y1
2))として定めることができる。スコアが高いほど一致度が高い。2つの同一ベクトルは、スコア1となり得る。これらのスコアを用いて、それが一致するか否かを判定することができる。プロセッサ120は、2つのCNNモデルMobileNet及びNASNetを用いることができる。MobileNetスコア≧0.90であり、NASNetスコア≧0.88である。これらのモデルに対して、形状スコア≧0.92及び色スコア≧0.965である。
図14に探索段階のフローチャートを示す。
図14において、「閾値を適用する」ステップと「一致した画像を得る」ステップとの間で、誤一致かどうかを検査するステップが行われる。
【0051】
誤一致の問題がある可能性がある。例えば、1つの問題は、パッチ色差と呼ぶことができる。複数の画像の全体的な形状及び色が、全て類似度の閾値を上回るものの、画像に色の異なるパッチがある。
【0052】
図15Aに示すような淡青色のボタンを有するリモコンを探索した場合、
図15Bに示すように、ベクトル類似度に基づく一致結果として4つの一致結果が返される場合がある。
図15Aにおいて、リモコンは淡青色のボタンを有し、ディスプレイ内の漫画キャラクタは、緑色の耳を有する可能性がある。
図15Bにおいて、左上の一致結果は青色のボタンを有する可能性があり、ディスプレイ内の漫画キャラクタは緑色の耳を有する可能性がある。右上の一致結果は紫色のボタンを有する可能性があり、ディスプレイ内の漫画キャラクタはオレンジ色の耳を有する可能性がある。下の2つの一致結果はピンク色のボタンを有する可能性があり、ディスプレイ内の漫画キャラクタはオレンジ色の耳を有する可能性がある。明らかに、最初の1つのみが一致している(ちなみに、最初の照合画像はその画像そのものではない)。最後の3つの結果画像は、閾値を強化することにより排除することはできず、閾値を強化した場合、他の多くの対象として認められる一致結果が削除され、一致正解率が低下することになる。モデル又は方法がいかに優れているかについて表すために、3つの概念、すなわち、適合率、再現率及び正解率がある。探索により10個の一致結果が返されたが、8個のみが正しい場合、適合率は、8/10=80%である。データセットに10個の実際の一致結果があり、本探索により7個の一致が返された場合、再現率は7/10=70%である。正解率又は「F1スコア」と呼ばれるものは、2*適合率*再現率/(適合率+再現率)=2*80%*70%/(80%+70%)=74.7%として定められる。良好な候補が喪失した場合、再現率が低下し、このためF1スコア(正解率)が低下する。
【0053】
パッチ色差の問題に対処するために、プロセッサ120は、
図16に示すようにこうした色差を測定するために「色差パーセント」を計算することができる。各結果画像に対して、プロセッサ120は、シルエット内の明るい各ピクセルに対して、同じ位置における結果画像の色及び入力画像の色が同じであるか否かを判定することにより、色差マップを作成することができる。同じ色である場合、値は0に設定される。異なる色である場合、値は1に設定される。ここでの「色」は、64個の色バケットにおけるインデックスである。次いで、プロセッサ120は、非常に高い閾値(h=50)でのノイズ低減を用いて、小さいパッチを除去することができる。プロセッサ120は、色差マップにおける1ビットの和、すなわち、シルエット画像における明るいピクセルの和を得て、その割合を計算することができる。この値が閾値(5%)よりも大きい場合、2つの画像は異なるとみなすことができる。色差は、2つの異なる理由から生じる可能性がある。第1に、同じ商品の場合、画像は別々の人によって取得される可能性がある。照明、角度又は解像度の差は、ランダムなピクセル及び小さいスポットとして現れる可能性がある。第2に、リモコンのボタンのような、実際の著しい差がある。この場合、差は、より大きいスポットとして現れる。プロセッサ120は、ノイズ及び小さいスポットを除去し、ボタンのようなより大きいスポットのみを保存することができる。プロセッサ120は、パラメータ(閾値h)を有することができる。パラメータは、実際にはノイズではない小さいスポットを除去するために、非常に大きく設定することができる。その後、プロセッサ120は、明るいピクセルがどれくらい残っているかをカウントしたのち、それをピクセルの総数で除することができる。値が0.05(5%)よりも大きい場合、プロセッサ120は、異なる画像であると判定することができ、そうでない場合は、「同一の」画像であると判定することができる。
図17に入力画像及び結果画像を示す。
図17において、上の列は、異なる色の例示のリモコンを示す。左側から1番目のリモコン及び2番目のリモコンは、青色のキーパッド又はボタンを有する可能性があり、ディスプレイ内の漫画キャラクタは緑色の耳を有する可能性がある。残りの3つのリモコンでは、漫画キャラクタはオレンジ色の耳を有する可能性がある。真中のリモコン及び最右のリモコンは、ピンク色のキーパッドを有する可能性がある。右側から2番目のリモコンは、紫色のキーパッドを有する可能性がある。
【0054】
第2の誤一致の問題は、サブ領域差と呼ぶことができる。物体は、いくつかの小さい領域における差を除き非常に類似している。第2の誤一致の問題は、サブ領域における差によってもたらされる可能性がある。画像は、入力画像と非常に類似しているが、画像の内側の小さい領域、通常、或る種のロゴのみが異なる。例えば、
図18Aに示すようなNFLのニューオリンズ・セインツ(New Orleans Saints)のロゴの付いたビール瓶を探索すると、
図18Bに示すような異なるロゴの付いたいくつかの類似画像が返される可能性がある。
【0055】
この種の問題は、機械学習モデルによっても、形状ベクトル及び色ベクトルによっても、修正することが困難な可能性がある。その理由は、全体的な形状が同一であり、色差が非常に小さいためである。この問題に対処するために、プロセッサ120は、スケッチ差マップを作成し、実際の差領域を目立たせるように全ての差画像を平均し、平均差画像を閾値処理し、クラスタリング手法を用いて平均差画像をクラスタに分け、最後に、結果群における全ての元画像に対してクロッピングされた領域を比較することができる。
【0056】
図19に高レベルステップを示す。2002において、プロセッサ120は、エッジ差画像を作成することができる。2004において、プロセッサ120は、エッジ差画像の平均を作ることができる。2006において、プロセッサ120は、平均差画像を閾値処理することができる。2008において、プロセッサ120は、平均差画像をクラスタリングすることができる。2010において、プロセッサ120は、サイズで上位n個のクラスタに対して、外接矩形を得ることができる。2012において、プロセッサ120は、各外接矩形をループさせてサブ画像を作成し、対象画像と候補画像との間において色ベクトル及び形状ベクトルを比較することができる。
【0057】
図20に上記アルゴリズムを示す。
図20において、第1の列は、候補画像に対するエッジ検出画像である(誤一致)。第2の列は、入力画像に対するエッジ検出画像である。第3の列は、第1の列と第2の列との差画像である。(1行のみの)第4の列は、第3の列の平均化である。第5の列は、平均画像の閾値処理である。最後の列は、閾値処理画像からの最大クラスタの外接矩形を示す。
【0058】
上記アルゴリズムは、以下の仮定の下で機能することができる。第1に、ロゴ領域を画像の残りの部分とは分けることができる。第2に、差ステップにおいて無関係のエッジの大半が除去されるように、候補画像を入力画像と十分に位置合わせすることができる。第3に、平均化によりノイズをなくすことができるように、十分な候補画像がある可能性がある。
図20において、最も上にある差画像は、多くの無関係の差を有するが、平均化及び閾値処理の後、ロゴ領域は、多数の候補があるため、依然として良く目立っている。第4に、ロゴ領域は、大き過ぎるか又は小さ過ぎる可能性はない。大き過ぎる場合、後続の比較によりそれらが識別される可能性は低い。小さ過ぎる場合もまた、良好な比較を行うことが困難である。
【0059】
平均差画像の閾値処理が行われた後、プロセッサ120は、更なる比較のために、クラスタリングを行い、ピクセルをばらばらの領域に分割することができる。プロセッサ120は、DBSCAN(Density-Based Spatial Clustering of Applications with Noise(ノイズのあるアプリケーションの密度ベースの空間クラスタリング))等の、クラスタリングアルゴリズムを実装することができる。
【0060】
最後のステップにて、プロセッサ120はロゴ領域を比較することができる。ビール瓶の例の場合、プロセッサ120は、
図21Aに示すようなニューオリンズ・セインツロゴを、
図21Bに示すような他のロゴと比較することができる。プロセッサ120は、サブ比較のために組合せに係る形状ベクトル及び色ベクトルを用いることができる。
【0061】
一つの例において、1040万個の商品画像が、2つの異なるCNNモデルとMobileNetモデルとNASNetモデルと形状及び色のベクトル化とを用いて、処理される。Elasticsearchインデックスへの格納が行われる。1040万個の画像の画像集合全体に対して探索するために、1270個の画像がランダムに選択される。上位の探索結果が、手動で検査されラベル付けされ、正解率が計算される。以下の表は、ミクロの平均結果を列挙したものである。すなわち、全てのポジティブ(positive)の場合及びネガティブ(negative)の場合をカウントしたのち、正解率を計算する。
【0062】
【0063】
表2において、「基準」は、一致しているかどうかを決めるために用いられる類似度の閾値である。例えば、第1行のMobilNetモデルにおいて、「MobileNetスコア≧0.90」は、スコアが≧0.90である場合に一致しているとみなすことを意味する。
【0064】
開示対象の技術は、既存の機械学習アルゴリズムよりも性能が優れている。例えば、開示対象の技術の平均正解率は87%であり、これは、機械学習アルゴリズムの約58%よりも優れている。
【0065】
画像照合システム110は、アフィリエイト・マーケティング・プラットフォームにおけるブラウザ拡張の一部として使用することができる。例えば、画像照合システム110は、Home Depotのような非会員登録制のウェブサイトにおける買物の一部として使用することができる。これは、会員登録制のウェブサイトにある低価格の代替品の、画像による検索及び照合をもたらすことになる。冷蔵庫等の大型の品目は、ユーザが見る前に予め探索及び照合を行うことができ、これにより、代替品をほぼリアルタイムでユーザに提示することができる。画像の照合は、布地又は靴等の商品において使用することができる。
【0066】
画像照合システム110は、単一商品に関する2つのエントリなどの重複の検出を行うために用いることができる。プロセッサ120によって行われる画像照合プロセスを用いて、システムのデータベースにおける重複を除去又は特定することができる。重複しているエントリをまとめて品質管理を向上させることができる。
【0067】
図1に戻ると、プロセッサ120は、記憶された命令を実行するとともに記憶されたデータに対して動作することができる、マイクロプロセッサ、マイクロコントローラ、デジタル信号プロセッサ、コプロセッサ等のうちの1つ以上、又はそれらの組合せを含むことができる。プロセッサ120は、Intel(商標)によって製造されたPentium(商標)ファミリ又はAMD(商標)によって製造されたTurion(商標)ファミリからのマイクロプロセッサ等、1つ以上の既知の処理デバイとすることができる。プロセッサ120は、シングルコアプロセッサ、又は並列プロセスを同時に実行するマルチコアプロセッサを構成することができる。例えば、プロセッサ120は、仮想処理技術で構成されるシングルコアプロセッサとすることができる。或る特定の実施形態では、プロセッサ120は、複数のプロセスを同時に実行及び制御する論理プロセッサを用いることができる。プロセッサ120は、複数のソフトウェアプロセス、アプリケーション、プログラム等を実行し、制御し、動作させ、操作し、記憶する等の能力を提供する、仮想マシン技術又は他の同様の既知の技術を実装することができる。当業者であれば、本明細書に開示する能力を提供する他のタイプのプロセッサ構成を実装することができることが理解されよう。
【0068】
非一時的なコンピュータ可読媒体140は、オペレーティングシステム(「OS」)及びプログラムを含むことができる。非一時的コンピュータ可読媒体140は、いくつかの実施態様では、オペレーティングシステム、(例えば、必要に応じて、ウェブブラウザアプリケーション、ウィジェット又はガジェットエンジン及び/又は他のアプリケーションを含む)アプリケーションプログラム、実行可能命令及びデータを含むファイルを記憶する、1つ以上の好適なタイプのメモリ(例えば、揮発性又は不揮発性メモリ、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルリードオンリメモリ(PROM)、消去可能プログラマブルリードオンリメモリ(EPROM)、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、磁気ディスク、光ディスク、フロッピディスク、ハードディスク、リムーバブルカートリッジ、フラッシュメモリ、独立ディスク冗長アレイ(RAID)等)を含むことができる。1つの実施形態では、本明細書に記載した処理技法は、非一時的コンピュータ可読媒体140内の実行可能命令及びデータの組合せとして実装される。非一時的コンピュータ可読媒体140は、開示した実施形態の1つ以上の特徴を実施するために用いられるデータ及び命令を記憶する1つ以上のメモリデバイスを含むことができる。非一時的コンピュータ可読媒体140は、文書管理システム、Microsoft(商標)SQLデータベース、SharePoint(商標)データベース、Oracle(商標)データベース、Sybase(商標)データベース又は他のリレーショナル若しくは非リレーショナルデータベース等、メモリコントローラデバイス(例えば、(複数の)サーバ等)又はソフトウェアによって制御される1つ以上のデータベースの任意の組合せも含むことができる。非一時的コンピュータ可読媒体140は、プロセッサ120によって実行されると、開示する実施形態と一貫する1つ以上のプロセスを実施するソフトウェアコンポーネントを含むことができる。いくつかの実施形態では、非一時的コンピュータ可読媒体140は、開示した実施形態に関連するプロセス及び機能性のうちの1つ以上を実施するためのデータベースを含むことができる。非一時的コンピュータ可読媒体140は、開示した実施形態の1つ以上の機能を実施する1つ以上のプログラムを含むことができる。さらに、プロセッサ120は、画像照合システム110からリモートに位置する1つ以上のプログラムを実行することができる。例えば、画像照合システム110は、実行されると、開示した実施形態に関連する機能を実施する1つ以上のリモートプログラムにアクセスすることができる。
【0069】
図1に戻ると、ネットワーク180は、より一般にはインターネットと称される相互接続されたコンピューティングデバイスのネットワークを含むことができる。ネットワーク180は、セルラネットワーク又はWiFiネットワーク等、インターネットを介する個々の接続を含む任意の好適なタイプとすることができる。いくつかの実施形態では、ネットワーク180は、無線自動識別(RFID)、近距離無線通信(NFC)、Bluetooth(商標)、low-energey Bluetooth(商標)(BLE)、WiFi(商標)、ZigBee(商標)、周囲後方散乱通信(ambient backscatter communications, ABC)プロトコル、USB、WAN又はLAN等の直接接続を用いて、端末、サービス及びモバイルデバイスを接続することができる。送信される情報は、個人的又は機密である可能性があるため、セキュリティに関係する問題は、これらのタイプの接続のうちの1つ以上を暗号化するか又は他の方法でセキュアにすることを必要とする場合がある。しかしながら、いくつかの実施形態では、送信されている情報はそれほど個人的ではない可能性があり、したがって、セキュリティよりも便宜を考慮して、ネットワーク接続が選択される場合がある。ネットワーク180は、データを交換するために用いられる任意のタイプのコンピュータネットワーク化構成を備えることができる。例えば、ネットワーク180は、インターネット、プライベートデータネットワーク、公衆ネットワークを用いる仮想プライベートネットワーク、及び/又はシステム環境100のコンポーネントを使用可能にする他の好適な接続(複数の場合もある)とすることができる。ネットワーク180はまた、公衆交換電話網(「PSTN」)及び/又はワイヤレスネットワークも含むことができる。ネットワーク180はまた、WiFi、Bluetooth(商標)Ethernet、及びシステム環境100のコンポーネントが互いに相互作用することができるようにする他の好適なネットワーク接続等、局所エリアでデータを交換するために用いられる任意のタイプのコンピュータネットワーク化構成を含むローカルネットワークも含むことができる。
【0070】
開示した技術の或る特定の実施態様について、現時点で最も実際的であり且つ様々な実施態様であるとみなされるものに関連して説明したが、開示した技術は、開示した実施態様に限定されるべきではなく、反対に、添付の請求項の範囲内に含まれる様々な変更形態及び均等構成を包含するように意図されていることが理解されるべきである。本明細書では具体的な用語を採用しているが、それらは、限定を目的とするのではなく単に包括的且つ説明的な意味で用いている。
【0071】
開示した技術の或る特定の実施態様について、開示した技術の例示の実施態様に従ってシステム及び方法及び/又はコンピュータプログラム製品のブロック図及びフロー図を参照して上述している。ブロック図及びフロー図の1つ以上のブロック、並びにブロック図及びフロー図それぞれにおけるブロックの組合せを、コンピュータ実行可能プログラム命令によって実装することができることが理解されよう。同様に、ブロック図及びフロー図のいくつかのブロックは、開示した技術のいくつかの実施態様に従って、必ずしも提示されている順序で実施される必要はない場合があり、又は、必ずしも実施される必要はない場合がある。
【0072】
これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能データ処理装置に特定の方法で機能するように指示することができるコンピュータ可読メモリにも記憶することができ、コンピュータ可読メモリに記憶された命令が、フロー図の単数又は複数のブロックで指定された1つ以上の機能を実装する命令手段を含む製品をもたらすようにすることができる。
【0073】
開示した技術の実施態様は、コンピュータ可読プログラムコード又はプログラム命令が具現化されるコンピュータ使用可能媒体を備える、コンピュータプログラム製品を提供することができ、上記コンピュータ可読プログラムコードは、フロー図の単数又は複数のブロックで指定された1つ以上の機能を実装するように実行されるように適合されている。コンピュータプログラム命令はまた、コンピュータ又は他のプログラム可能データ処理装置にロードすることもでき、それにより、一連の動作要素又はステップがコンピュータ又は他のプログラム可能装置において実施されて、コンピュータ又は他のプログラム可能装置で実行される命令が、フロー図の単数又は複数のブロックで指定された機能を実装する要素又はステップを提供するようにコンピュータ実施プロセスを生成することもできる。
【0074】
したがって、ブロック図及びフロー図のブロックは、指定された機能を実施する手段の組合せ、指定された機能を実施する要素又はステップの組合せ、及び、指定された機能を実施するプログラム命令手段をサポートする。ブロック図及びフロー図の各ブロック、並びにブロック図及びフロー図のブロックの組合せは、専用ハードウェア及びコンピュータ命令の指定された機能、要素若しくはステップ又は組合せを実施する、専用のハードウェアベースのコンピュータシステムによって実装することができることも理解されよう。
【0075】
これまでに述べた説明は、例を用いて、最良の形態を含む開示した技術の或る特定の実施態様を開示し、且つ、当業者が、任意のデバイス又はシステムを作成及び使用することと任意の組み込まれた方法を実施することとを含む、開示した技術の或る特定の実施態様を実施することができるようにする。開示した技術の或る特定の実施態様の特許を受け得る範囲は、特許請求の範囲に定められており、当業者が想到する他の例を含み得る。こうした他の例は、特許請求の範囲の文字通りの表現から異なることのない構造的要素を有する場合、又は、特許請求の範囲の文字通りの表現からごくわずかな相違がある均等な構造的要素を含む場合に、権利範囲に含まれることが意図されている。