(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-02-15
(45)【発行日】2023-02-24
(54)【発明の名称】深層学習に基づく店舗リアログラム
(51)【国際特許分類】
G06Q 10/087 20230101AFI20230216BHJP
【FI】
G06Q10/087
(21)【出願番号】P 2021504467
(86)(22)【出願日】2019-07-25
(86)【国際出願番号】 US2019043522
(87)【国際公開番号】W WO2020023798
(87)【国際公開日】2020-01-30
【審査請求日】2022-07-20
(32)【優先日】2018-07-26
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-01-24
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】518394684
【氏名又は名称】スタンダード コグニション コーポレーション
(74)【代理人】
【識別番号】100114476
【氏名又は名称】政木 良文
(72)【発明者】
【氏名】フィッシャー, ジョーダン イー.
(72)【発明者】
【氏名】フィシェッティ, ダニエル エル.
(72)【発明者】
【氏名】サスワル, マイケル エス.
(72)【発明者】
【氏名】ロカスチオ, ニコラス ジェイ.
【審査官】松田 岳士
(56)【参考文献】
【文献】国際公開第2017/163909(WO,A1)
【文献】国際公開第2015/173869(WO,A1)
【文献】国際公開第2015/040661(WO,A1)
【文献】国際公開第2015/033577(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06Q 10/00-99/00
(57)【特許請求の範囲】
【請求項1】
実空間のエリア内の在庫商品を追跡するためのシステムであって、
複数のセンサ、及び、前記複数のセンサに結合した処理システムを備え、
前記複数のセンサの内のセンサは、前記実空間内の対応する視野のそれぞれの画像シーケンスを生成し、前記複数のセンサにおいて、各センサの前記視野は、少なくとも1つの他のセンサの前記視野と重なり、
前記処理システムは、前記複数のセンサの内の少なくとも2つのセンサによって生成された前記画像シーケンスを使用して、在庫イベントを識別し、前記在庫イベントに応答して、前記実空間のエリア内の在庫商品の位置を追跡
するロジック
と、在庫商品の位置を前記実空間のエリア内に座標を有する複数のセル内のセルの座標とマッチングさせ、前記複数のセル内のセルとマッチングする在庫商品を表すデータを維持するロジックと、特定のセルにマッチングする位置を有する在庫商品について、スコアリング時に、在庫イベントのカウントに基づくスコアを計算するロジックを含むシステム。
【請求項2】
前記在庫イベントが、商品識別子、置くまたは取るインジケータ、前記実空間のエリアの3次元内の位置によって表される位置、及びタイムスタンプを含む請求項1に記載のシステム。
【請求項3】
前記実空間のエリアが複数の在庫位置を含み、
在庫位置を
、複数のセル内のセルの座標とマッチングさせるロジックを含む請求項
1に記載のシステム。
【請求項4】
セルのスコアを計算する前記ロジックは、在庫商品を置くこと及び取ることのタイムスタンプと前記スコアリング時との間の分離によって重み付けされた前記在庫商品を置くこと及び取ることの合計を使用する請求項
1に記載のシステム。
【請求項5】
前記処理システムが、前記複数のセル内のセル及び前記セルの前記スコアを表す表示画像をレンダリングするロジックを含む請求項
1に記載のシステム。
【請求項6】
前記処理システムが、前記スコアに基づいてセル毎の在庫商品のセットを選択するロジックを含む請求項
1に記載のシステム。
【請求項7】
前記実空間のエリアが複数の在庫位置を含み、前記複数のセル内のセルの前記座標が、前記複数の在庫位置内の在庫位置と相関し、
前記実空間のエリア内の在庫位置における在庫商品の配置を指定するプラノグラムをメモリ内に含み、
前記複数のセル内のセルとマッチングする在庫商品を表す前記データを維持するロジックが、セルとマッチングする在庫
商品を表す前記データを前記プラノグラム内で指定された在庫位置内の在庫商品の配置と比較することによって、誤配置された商品を決定するロジックを含む請求項
1に記載のシステム。
【請求項8】
前記実空間のエリアが複数の在庫位置を含み、前記複数のセル内のセルの前記座標が、前記複数の在庫位置内の在庫位置と相関し、
前記複数のセル内のセルとマッチングする在庫商品を表す前記データを維持するロジックが、特定のセルとマッチングした特定の在庫商品に対して、そのセル内の前記特定の在庫商品のカウントが、前記特定のセルと相関する在庫位置上の前記在庫商品を再ストックするための閾値より低いかどうかを決定するロジックを含む請求項
1に記載のシステム。
【請求項9】
コンピュータ・システムによって実行される、実空間のエリア内の在庫商品を追跡するための方法であって、
複数のセンサを用いて、各センサの視野が少なくとも1つの他のセンサの前記視野と重なる、前記実空間内の対応する前記視野のそれぞれの画像シーケンスを生成すること、
前記複数のセンサの内の少なくとも2つのセンサによって生成された前記画像シーケンスを使用して、在庫イベントを識別すること、
前記在庫イベントの前記識別に応答して、前記実空間のエリア内の在庫商品の位置を追跡すること、
在庫商品の位置を前記実空間のエリア内に座標を有する複数のセル内のセルの座標とマッチングさせること、及び、前記複数のセル内のセルとマッチングする在庫商品を表すデータを維持すること、及び、
特定のセルにマッチングする位置を有する在庫商品について、スコアリング時に、在庫イベントのカウントを使用してスコアを計算すること、を含む方法。
【請求項10】
前記在庫イベントが、商品識別子、置くまたは取るインジケータ、前記実空間のエリアの3つの軸に沿った位置によって表される位置、及びタイムスタンプを含む請求項
9に記載の方法。
【請求項11】
前記実空間のエリアが複数の在庫位置を含み、
前記複数のセル内のセルの座標が、前記複数の在庫位置内の在庫位置と相関する請求項
9に記載の方法。
【請求項12】
在庫商品を置くこと及び取ることのタイムスタンプと前記スコアリング時との間の分離によって重み付けされた前記在庫商品を置くこと及び取ることの合計を使用して、セルのスコアを計算すること、及び、前記スコアをメモリ内に記憶すること、を更に含む請求項
9に記載の方法
【請求項13】
前記複数のセル内のセル及び前記セルの前記スコアを表す表示画像をレンダリングすることを更に含む請求項
9に記載の方法。
【請求項14】
前記スコアに基づいてセル毎の在庫商品のセットを選択することを更に含む請求項
9に記載の方法。
【請求項15】
前記実空間のエリアが複数の在庫位置を含み、前記複数のセル内のセルの前記座標が、前記複数の在庫位置内の在庫位置と相関し
、
前記実空間のエリア内の在庫位置における在庫商品の配置をプラノグラムとして指定し、前記プラノグラムをメモリ内に記憶すること
、及び、
セルとマッチングする在庫
商品を表す前記データを前記在庫位置内の在庫商品の配置と比較することによって、誤配置された商品を決定すること、を更に含む請求項
9に記載の方法。
【請求項16】
前記実空間のエリアが複数の在庫位置を含み、前記複数のセル内のセルの前記座標が、前記複数の在庫位置内の在庫位置と相関し、
特定のセルとマッチングした
特定の在庫商品に対して、そのセル内の前記特定の在庫商品のカウントが、前記特定のセルと相関する在庫位置上の前記在庫商品を再ストックするための閾値より低いかどうかを決定すること、を更に含む請求項9に記載の方法。
【請求項17】
実空間のエリア内の在庫商品を追跡するためのコンピュータ・プログラム命令を記憶した非一時的コンピュータ可読記憶媒体であって、
前記命令がプロセッサ上で実行されると実施される方法が、
複数のセンサを用いて、各センサの視野が少なくとも1つの他のセンサの前記視野と重なる、前記実空間内の対応する前記視野のそれぞれの画像シーケンスを生成すること、
前記複数のセンサの内の少なくとも2つのセンサによって生成された前記画像シーケンスを使用して、在庫イベントを識別すること
、
前記在庫イベントの前記識別に応答して、前記実空間のエリア内の在庫商品の位置を追
跡すること
、
在庫商品の位置を前記実空間のエリア内に座標を有する複数のセル内のセルの座標とマッチングさせること、及び、前記複数のセル内のセルとマッチングする在庫商品を表すデータを維持すること、及び、
特定のセルにマッチングする位置を有する在庫商品について、スコアリング時に、在庫イベントのカウントを使用してスコアを計算すること、を備える非一時的コンピュータ可読記憶媒体。
【請求項18】
前記在庫イベントが、商品識別子、置くまたは取るインジケータ、前記実空間のエリアの3つの軸に沿った位置によって表される位置、及びタイムスタンプを含む請求項
17に記載の非一時的コンピュータ可読記憶媒体。
【請求項19】
前記実空間のエリアが複数の在庫位置を含み、
前記複数のセル内のセルの座標が、前記複数の在庫位置内の在庫位置と相関する請求項
17に記載の非一時的コンピュータ可読記憶媒体。
【請求項20】
前記方法の実施が、
在庫商品を置くこと及び取ることのタイムスタンプと前記スコアリング時との間の分離によって重み付けされた前記在庫商品を置くこと及び取ることの合計を使用して、セルのスコアを計算すること、及び、前記スコアをメモリ内に記憶すること、を更に備える請求項
17に記載の非一時的コンピュータ可読記憶媒体。
【請求項21】
前記方法の実施が、
前記複数のセル内のセル及び前記セルの前記スコアを表す表示画像をレンダリングすることを更に備える請求項
17に記載の非一時的コンピュータ可読記憶媒体。
【請求項22】
前記方法の実施が、
前記スコアに基づいてセル毎の在庫商品のセットを選択することを更に備える請求項
17に記載の非一時的コンピュータ可読記憶媒体。
【請求項23】
前記実空間のエリアが複数の在庫位置を含み、前記複数のセル内のセルの前記座標が、前記複数の在庫位置内の在庫位置と相関し、
前記方法の実施が
、
前記実空間のエリア内の在庫位置における在庫商品の配置をプラノグラムとして指定し、前記プラノグラムをメモリ内に記憶すること
、及び、
セルとマッチングする在庫
商品を表す前記データを前記在庫位置内の在庫商品の配置と比較することによって、誤配置された商品を決定すること、を更に備える請求項
17に記載の非一時的コンピュータ可読記憶媒体。
【請求項24】
前記実空間のエリアが複数の在庫位置を含み、前記複数のセル内のセルの前記座標が、前記複数の在庫位置内の在庫位置と相関し、
前記方法の実施が、
特定のセルとマッチングした
特定の在庫商品に対して、そのセル内の前記特定の在庫商品のカウントが、前記特定のセルと相関する在庫位置上の前記在庫商品を再ストックするための閾値より低いかどうかを決定すること、を更に備える請求項17に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【優先出願】
【0001】
本出願は、参照により本明細書に組み込まれる2018年7月26日出願の米国仮特許出願第62/703,785号(代理人整理番号STCG 1006-1)、及び、2019年1月24日出願の米国特許出願第16/256,355号(代理人整理番号STCG 1007-1)の利益を主張する。該米国特許出願第16/256,355号は、2017年8月7日出願の米国仮特許出願第62/542,077号(代理人整理番号STCG 1000-1)の利益を主張する、2017年12月19日出願の米国特許出願第15/847,796(代理人整理番号STCG 1001-1)(現在は米国特許第10,055,853号、8月21日発行)の一部継続出願である、2018年2月27日出願の米国特許出願第15/907,112号(代理人整理番号STCG 1002-1)(現在は米国特許第10,133,933号、2018年11月20日発行)の一部継続出願である、2018年4月4日出願の米国特許出願第15/945,473号(代理人整理番号STCG 1005-1)の一部継続出願である。これらの米国特許出願は参照により本明細書に組み込まれる。
【技術分野】
【0002】
本発明は、在庫陳列構造を含む実空間のエリア内の在庫商品を追跡するシステムに関する。
【背景技術】
【0003】
ショッピングストア等の実空間のエリア内の在庫陳列構造にストックされる様々な在庫商品の数量及び位置を決定することは、ショッピングストアの効率的な業務のために必要とされる。顧客等の実空間のエリア内にいる被写体は、棚から商品を取り、その商品をそれぞれのショッピングカートまたはバスケット内に置く。また、顧客は、商品を購入したくない場合にはその商品を同じ棚または別の棚に置いて戻すこともできる。従って、ある期間にわたって、在庫商品は、棚上の指定された位置から取り出され、ショッピングストア内の他の棚に分散し得る。幾つかのシステムでは、ストックされた商品の数量は、領収書とストック在庫とを連結する必要があるため、かなりの遅延の後に利用可能である。ショッピングストアにストックされる商品の数量に関する情報の利用可能性の遅延は、顧客の購入決定、並びに、高需要の在庫商品をより多く注文するための店舗管理者の行動に影響を及ぼす可能性がある。
【0004】
棚にストックされた商品の量をリアルタイムでより効果的且つ自動的に提供し、棚上の商品の位置を識別することができるシステムを提供することが望ましい。
【発明の概要】
【0005】
実空間のエリアの在庫商品を追跡するためのシステム及びシステムの動作方法が提供される。複数のカメラまたはその他のセンサは、実空間内の対応する視野のそれぞれの画像シーケンスを生成する。このシステムは、複数のセンサに結合され、少なくとも2つのセンサによって生成された画像シーケンスを使用して、在庫イベントを識別する処理ロジックを含む。システムは、在庫イベントに応答して、実空間のエリア内の在庫商品を追跡する。
【0006】
実空間のエリア内の在庫商品を追跡するためのシステム及び方法が提供される。複数のカメラまたはその他のセンサは、実空間内の対応する視野のそれぞれの画像シーケンスを生成する。各センサの視野は、複数のセンサにおける少なくとも1つの他のセンサの視野と重なる。システムは、複数のセンサ内の少なくとも2つのセンサによって生成された画像のシーケンスを使用して、在庫イベントを識別する。システムは、在庫イベントに応答して、実空間のエリア内の在庫商品の位置を追跡する。
【0007】
一実施形態では、在庫イベントは、商品識別子、置くまたは取るインジケータ、実空間のエリアの3つの軸に沿った位置によって表される位置、及びタイムスタンプを含む。システムは、実空間のエリア内に座標を有する複数のセルを規定するデータセットを格納するメモリを含むか、またはアクセスを有することができる。システムは、在庫商品の位置をセルの座標とマッチングさせるロジックを含み、複数のセル内のセルとマッチングする在庫商品を表すデータを維持する。実空間のエリアは、複数の在庫位置を含むことができる。複数のセル内のセルの座標は、複数の在庫位置内の在庫位置または在庫位置の一部と相関することができる。システムは、在庫イベントのそれぞれのカウントを使用して、特定のセルにマッチングする位置を有する在庫商品について、スコアリング時にスコアを計算するロジックを含む。セルのスコアを計算するロジックは、置くこと及び取ることのタイムスタンプとスコアリング時との間の分離によって重み付けされた在庫商品を置くこと及び取ることの合計を使用する。システムは、スコアをメモリに格納するロジックを含む。
【0008】
一実施形態では、システムが、複数のセル内のセル及び該セルのスコアを表す表示画像をレンダリングするロジックを含む。本実施形態では、セルを表す表示画像における色の変化によってスコアが表される。システムは、スコアに基づいてセル毎の在庫商品のセットを選択するロジックを含んでいる。一実施形態では、実空間のエリアが複数の在庫位置を含み、複数のセル内のセルの座標は複数の在庫位置内の在庫位置と相関する。この実施形態では、メモリ内のデータセットが、実空間のエリア内に座標を有する複数のセルを規定する。
【0009】
システムは、実空間のエリア内の在庫位置及び在庫位置に配置される在庫商品を識別するプラノグラムを格納するメモリを含むか、またはメモリへのアクセスを有することができる。プラノグラムは、また、特定の在庫商品に対して指定された在庫位置の部分に関する情報を含むことができる。プラノグラムは、実空間のエリア内の在庫位置上の在庫商品の配置のためのプランに基づいて生成することができる。
【0010】
システムは、複数のセル内のセルとマッチングする在庫商品を表すデータを維持するロジックを含む。システムは、また、セルとマッチングする在庫商品を表すデータをプラノグラムと比較することによって、誤配置された商品を決定するロジックを含むことができる。
【0011】
システムは、ここで議論されたように、検出された在庫イベントにおける商品及びその位置ついてのデータの蓄積に基づいて、実空間のエリア内の在庫商品の位置を識別する、本明細書で「リアログラム」と呼ばれるデータ構造を、メモリ内に生成し格納することができる。リアログラム内のデータは、誤配置された商品の位置を見つける等、在庫商品が計画と比較してエリア内にどのように配置されているかを決定するために、プラノグラム内のデータと比較することができる。また、リアログラムは、例えば、在庫位置のプラノグラムまたは他のマップから決定され得るように、3次元セル内の在庫商品の位置を見つけ、それらのセルを店舗内の在庫位置と相関させるために処理され得る。また、リアログラムを処理して、エリア内の様々な位置にある特定の在庫商品に関連する活動を追跡することができる。リアログラムの他の使用も可能である。
【0012】
在庫陳列構造を含む実空間のエリア内の在庫商品を追跡するためのシステム及び方法が提供される。システムは、在庫陳列構造の上方に配置された複数のカメラを含む。カメラは、実空間内の対応する視野内に在庫陳列構造のそれぞれの画像シーケンスを生成する。各カメラの視野は、複数のカメラ内の少なくとも1つの他のカメラの視野と重なる。データセットは、実空間のエリア内に座標を有する複数のセルを規定する。データセットはメモリに保存される。システムは、実空間のエリア内の3次元における在庫イベントの位置を見つけるために、複数のカメラによって生成された画像シーケンスを処理する。在庫イベントに応答して、システムは、在庫イベントの位置に基づいてデータセット内の最も近いセルを決定するロジックを含む。システムは、在庫イベントのそれぞれのカウントを使用して特定のセルにマッチングする位置を有する在庫イベントに関連する在庫商品についてスコアをスコアリング時に計算するロジックを含む。
【0013】
一実施形態では、システムは、スコアに基づいてセル毎の在庫商品のセットを選択するロジックを含んでいる。一実施形態では、在庫イベントは、商品識別子、置くまたは取るインジケータ、実空間のエリアの3つの軸に沿った位置によって表される位置、及びタイムスタンプを含む。一実施形態では、システムは、実空間のエリア内の座標を有する2次元グリッドとして表される複数のセルを規定するデータセットを含む。セルは、在庫位置の前面図の部分と相関することができる。処理システムは、在庫イベントの位置に基づいて最も近いセルを決定するロジックを含む。一実施形態では、システムは、実空間のエリア内の座標を有する3次元グリッドとして表される複数のセルを規定するデータセットを含む。セルは、在庫位置上の容積の部分と相関することができる。処理システムは、在庫イベントの位置に基づいて最も近いセルを決定するロジックを含む。置くインジケータは、商品が在庫位置に置かれたことを識別し、取るインジケータは、商品が在庫位置から取り出されたことを識別する。
【0014】
一実施形態では、複数のカメラによって生成された画像シーケンスを処理するロジックは、画像認識エンジンを備える。画像認識エンジンは、手に対応する画像内の要素を表すデータセットを生成する。システムは、少なくとも2つのカメラからの画像シーケンスからのデータセットの分析を実行して、3次元における在庫イベントの位置を決定するロジックを含む。画像認識エンジンは、畳み込みニューラル・ネットワークを備える。
【0015】
一実施形態において、システムは、置くこと及び取ることのタイムスタンプとスコアリング時との間の分離によって重み付けされた在庫商品を取ること及び置くことの合計を使用してセルのスコアを計算するロジックを含む。スコアはメモリに記憶される。一実施形態では、在庫イベントの位置に基づいてデータセット内の最も近いセルを決定するロジックは、在庫イベントの位置からデータセット内のセルまでの距離を計算することと、計算された距離に基づいて在庫イベントをセルとマッチングさせることとを含む。
【0016】
コンピュータ・システムによって実行することができる方法及びコンピュータ・プログラム製品も、本明細書において説明されている。
【0017】
本明細書で説明される機能は、在庫イベントに関連する商品を含む在庫イベントを識別し、実空間のエリア内の座標を有する複数のセル内のセルにリンクすること、及び、店舗リアログラムを更新することを含み、これらに限定されないが、例えば、処理される画像データのタイプ、画像データのどの処理を実行すべきか、及び、画像データからどのように動作を高い信頼性で決定するかに関する、コンピュータ・エンジニアリングの複雑な問題を提示する。
【0018】
本発明の他の態様及び利点は、以下の図面、詳細な説明、及び特許請求の範囲を検討することによって理解することができる。
【図面の簡単な説明】
【0019】
【
図1】店舗在庫エンジン及び店舗リアログラム・エンジンが在庫陳列構造を含む実空間のエリア内の在庫商品を追跡するシステムのアーキテクチャ・レベルの概略図を示す。
【0020】
【
図2A】ショッピングストア内の被写体、在庫陳列構造、及びカメラア配置を示すショッピングストア内の通路の側面図である。
【0021】
【
図2B】在庫陳列構造内の棚から商品を取り出す被写体を示す
図2Aの通路内の在庫陳列構造の斜視図である。
【0022】
【
図3】在庫陳列構造における棚の2D及び3Dマップの例を示す。
【0023】
【
図4】被写体の関節情報を記憶するための例示的なデータ構造を示す。
【0024】
【
図5】関連する関節の情報を含む被写体を記憶するための例示的なデータ構造を示す。
【0025】
【
図6】棚から取り出された商品を示す在庫イベントの位置に基づく在庫陳列構造内の棚の選択を示す、ショッピングストア内の
図2Aの通路内の棚ユニットの在庫陳列構造の上面図である。
【0026】
【
図7】被写体のショッピングカート、または、棚上またはショッピングストア内にストックされている在庫商品を格納するために利用可能なログ・データ構造の例を示す。
【0027】
【
図8】在庫商品を置くこと及び取ることの位置に基づいて棚上及びショッピングストア内の在庫商品を決定する処理ステップを示すフローチャートである。
【0028】
【
図9A】
図8のフローチャートに示された技術を使用して、実空間のエリア内の棚上の在庫商品を決定することができる例示的なアーキテクチャである。
【0029】
【
図9B】
図8のフローチャートに示された技術を使用して、店舗在庫データ構造を更新することができる例示的なアーキテクチャである。
【0030】
【
図10】2次元(2D)グリッドを使用した在庫陳列構造内の部分における棚の離散化を示す。
【0031】
【
図11A】在庫陳列構造内の棚の部分上の指定された位置から、同じ棚上の他の位置へ、及び、1日後にショッピングストア内の他の在庫陳列構造内の異なる棚上の位置へ分散した在庫商品の位置を示す、棚の3次元(3D)グリッドを使用したリアログラムの例示である。
【0032】
【
図11B】コンピューティング・デバイスのユーザ・インタフェース上に表示される
図11Aのリアログラムを示す一例である。
【0033】
【
図12】在庫商品を置くこと及び取ることの位置に基づいて、ショッピングストア内の在庫陳列構造の棚にストックされている在庫商品のリアログラムを算出するための処理ステップを示すフローチャートである。
【0034】
【
図13A】リアログラムを用いて在庫商品の再ストックを決定する処理ステップを示すフローチャートである。
【0035】
【
図13B】在庫商品に対する再ストック通知を表示する例示的なユーザ・インタフェースである。
【0036】
【
図14A】リアログラムを用いて、プラノグラムのコンプライアンスを判定する処理ステップを示すフローチャートである。
【0037】
【
図14B】在庫商品に対する誤配置商品通知を表示する例示的なユーザ・インタフェースである。
【0038】
【
図15】リアログラムを使用して在庫商品予想の信頼度スコア確率を調整するための処理ステップを示すフローチャートである。
【0039】
【
図16】
図1の在庫統合エンジン及び店舗リアログラム・エンジンをホストするように構成されたカメラ及びコンピュータ・ハードウェア構成である。
【発明を実施するための形態】
【0040】
以下の説明は、当業者が本発明を作成し使用することを可能にするために提示され、特定の用途及びその要件に即して提供される。開示された実施態様に対する様々な修正は、当業者には容易に明らかであり、本明細書で定義される一般原則は、本発明の精神及び範囲から逸脱することなく、他の実施態様及び用途に適用され得る。従って、本発明は、示された実施態様に限定されることを意図するものではなく、本明細書に開示された原理及び特徴と一致する最も広い範囲が与えられるべきである。
[システム概要]
【0041】
図1~
図13を参照して、対象技術のシステム及び様々な実施態様を説明する。システム及び処理は、本実施態様によるシステムのアーキテクチャ・レベル概略図である
図1を参照して説明される。
図1は、アーキテクチャ図であるため、説明の明確性を向上させるために、特定の詳細は省略されている。
【0042】
図1の説明は、以下のように編成される。最初に、システムの要素を説明し、次にそれらの相互接続を説明する。次に、システムにおける要素の使用についてより詳細に説明する。
【0043】
図1は、システム100のブロック図レベルの説明図を提供する。本システム100は、カメラ114、ネットワーク・ノードがホストする画像認識エンジン112a、112b及び112n、ネットワーク上のネットワーク・ノード(または、ノード)104内に配置された店舗在庫エンジン180、ネットワーク上のネットワーク・ノード(または、ノード)104内に配置された店舗リアログラム・エンジン190、被写体追跡エンジンをホストするネットワーク・ノード102、マップ・データベース140、在庫イベント・データベース150、プラノグラム及び在庫データベース160、リアログラム・データベース170、及び、1または複数の通信ネットワーク181を含む。ネットワーク・ノードは、1つの画像認識エンジンのみ、または、本明細書で説明されるように、複数の画像認識エンジンをホストすることができる。システムは、また、被写体データベース、及び、他のサポートデータを含むことができる。
【0044】
本明細書で使用されるように、ネットワーク・ノードは、ネットワークに接続され、通信チャネルを介して他のネットワーク・ノードとの間で情報を送信、受信、または転送することができる、アドレス可能なハードウェア・デバイスまたは仮想デバイスである。ハードウェア・ネットワーク・ノードとして配置することができる電子デバイスの例には、あらゆる種類のコンピュータ、ワークステーション、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、及びスマートフォンが含まれる。ネットワーク・ノードは、クラウドベースのサーバ・システムで実施することができる。ネットワーク・ノードとして構成された複数の仮想デバイスを、単一の物理デバイスを使用して実施することができる。
【0045】
明確性のために、画像認識エンジンをホストする3つのネットワーク・ノードのみがシステム100に示されている。しかしながら、画像認識エンジンをホストする任意の数のネットワーク・ノードを、ネットワーク181を介して被写体追跡エンジン110に接続することができる。同様に、本明細書で説明する画像認識エンジン、被写体追跡エンジン、店舗在庫エンジン、店舗リアログラム・エンジン、及び、他の処理エンジンは、分散アーキテクチャ内の複数のネットワーク・ノードを使用して実行することができる。
【0046】
次に、システム100の要素の相互接続について説明する。ネットワーク181は、画像認識エンジン112a、112b、及び112nをそれぞれホストするネットワーク・ノード101a、101b、及び101n、店舗在庫エンジン180をホストするネットワーク・ノード104、店舗リアログラム・エンジン190をホストするネットワーク・ノード106、追跡エンジン110をホストするネットワーク・ノード102、マップ・データベース140、在庫イベント・データベース150、在庫データベース160、及び、リアログラム・データベース170を結合する。カメラ114は、画像認識エンジン112a、112b、及び112nをホストするネットワーク・ノードを介して被写体追跡エンジン110に接続される。一実施形態では、カメラ114がショッピングストア(スーパーマーケット等)に設置され、重なり合う視野を有するカメラ114のセット(2つ以上)が各通路の上に配置されて、店舗内の実空間の画像を取得する。
図1では、2つのカメラが通路116aの上に配置され、2つのカメラが通路116bの上に配置され、3つのカメラが通路116nの上に配置されている。カメラ114は、重なり合う視野を有する通路上に設置される。斯かる実施形態では、カメラは、ショッピングストアの通路内を移動する顧客がいつの時点でも2つ以上のカメラの視野内に存在することを目標として構成される。
【0047】
カメラ114は、互いに時間的に同期させることができ、その結果、画像は、同時にまたは時間的に近く、かつ同じ画像キャプチャレートで取得される。カメラ114は、画像認識エンジン112a~112nをホストするネットワーク・ノードに、所定のレートでそれぞれの継続的な画像ストリームを送ることができる。同時にまたは時間的に近くに、実空間のエリアをカバーする全てのカメラにおいて取得された画像は、同期された画像が実空間において固定された位置を有する被写体の異なる光景を表すものとして処理エンジンにおいて識別され得るという意味で、同期している。例えば、一実施形態では、カメラが、30フレーム/秒(fps)のレートで、画像認識エンジン112a~112nをホストするそれぞれのネットワーク・ノードに画像フレームを送信する。各フレームは、画像データと共に、タイムスタンプ、カメラの識別情報(「カメラID」と略される)、及びフレーム識別情報(「フレームID」と略される)を有する。開示された技術の他の実施形態は、このデータを生成するために、赤外線イメージ・センサ、高周波イメージ・センサ、超音波センサ、熱センサ、ライダ(Lidar)等の様々なタイプのセンサを使用することができる。RGBカラー出力を生成するカメラ114に追加して、例えば、赤外線または高周波イメージ・センサを含む、複数タイプのセンサが使用され得る。複数のセンサは互いに時間的に同期され、その結果、フレームは、センサによって同時または時間的に近接して、同じフレーム・キャプチャレートで取得される。明細書に開示される全ての実施形態において、カメラ以外のセンサ、または、複数タイプのセンサが、使用される画像シーケンスを生成するために使用され得る。
【0048】
通路上に設置されたカメラは、それぞれの画像認識エンジンに接続される。例えば、
図1において、通路116a上に設置された2つのカメラは、画像認識エンジン112aをホストするネットワーク・ノード101aに接続される。同様に、通路116b上に設置された2つのカメラは、画像認識エンジン112bをホストするネットワーク・ノード101bに接続される。ネットワーク・ノード101a~101n内でホストされる各画像認識エンジン112a~112nは、図示の例ではそれぞれ1つのカメラから受信した画像フレームを別々に処理する。
【0049】
一実施形態では、各画像認識エンジン112a、112b、及び112nは、畳み込みニューラル・ネットワーク(CNNと略す)などの深層学習アルゴリズムとして実装される。斯かる実施形態では、CNNがトレーニング・データベース150を使用してトレーニングされる。本明細書で説明される実施形態では、実空間内の被写体の画像認識が、画像内で認識可能な関節を識別しグループ化することに基づいており、関節のグループは個々の被写体に帰属することができる。この関節ベースの分析のために、トレーニング・データベース150は、被写体のための異なるタイプの関節の各々に対して膨大な画像を収集している。ショッピングストアの例示的な実施形態では、被写体は、棚の間の通路を移動する顧客である。例示的な実施形態では、CNNのトレーニング中に、システム100は「トレーニング・システム」と呼ばれる。トレーニング・データベース150を使用してCNNをトレーニングした後、CNNは、プロダクション・モードに切り替えられ、ショッピングストア内の顧客の画像をリアルタイムで処理する。
【0050】
例示的な実施形態では、プロダクション中に、システム100はランタイム・システムと呼ばれる(推論システムとも呼ばれる)。それぞれの画像認識装置のCNNは、それぞれの画像ストリーム中の画像に対して関節データ構造の配列を生成する。本明細書に記載される実施形態では、関節データ構造の配列が、各処理された画像に対して生成されることで、各画像認識エンジン112a~112nが、関節データ構造の配列の出力ストリームを生成する。重なり合う視野を有するカメラからの関節データ構造のこれらの配列は、関節のグループを形成し、斯かる関節のグループを被写体として識別するために、更に処理される。システムは、被写体が実空間のエリア内に存在している間、識別子「被写体ID」を使用して被写体を識別及び追跡することができる。
【0051】
被写体追跡エンジン110は、ネットワーク・ノード102上でホストされ、この例では、 画像認識エンジン112a~112nから被写体の関節データ構造の配列の継続的なストリームを受信する。被写体追跡エンジン110は、関節データ構造の配列を処理し、様々なシーケンスの画像に対応する関節データ構造の配列内の要素の座標を、実空間内の座標を有する候補関節に変換する。同期画像の各セットについて、実空間全体にわたって識別された候補関節の組み合わせは、類推目的のために、候補関節の銀河に似ていると考えることができる。後続の各時点において、銀河が経時的に変化するように、候補関節の動きが記録される。被写体追跡エンジン110は、ある時点での実空間のエリア内の被写体を識別する。
【0052】
追跡エンジン110は、実空間内の座標を有する候補関節のグループまたはセットを、実空間内の被写体として識別するロジックを使用する。類推目的のために、候補点の各セットは、各時点における候補関節の星座(コンステレーション)に似ている。候補関節のコンステレーションは、時間とともに移動することができる。ある期間にわたる被写体追跡エンジン110の出力の時系列分析は、実空間のエリア内の被写体の動きを識別する。
【0053】
例示的な実施形態では、候補関節のセットを識別するロジックが、実空間内の被写体の関節間の物理的関係に基づくヒューリスティック関数を含む。これらのヒューリスティック関数は、候補関節のセットを被写体として識別するために使用される。候補関節のセットは、他の個々の候補関節とのヒューリスティック・パラメータに基づく関係を有する個々の候補関節、及び、個々の被写体として識別された、または識別され得る特定され得る所与のセット内の候補関節のサブセットを含む。
【0054】
ショッピングストアの例では、顧客(上記の被写体とも呼ばれる)が通路内及びオープンスペース内を移動する。顧客は、在庫陳列構造内の棚上の在庫位置から商品を取り出す。在庫陳列構造の一例では、棚はフロアから様々なレベル(または高さ)に配置され、在庫商品は棚上にストックされる。棚は、壁に固定されるか、または、ショッピングストア内の通路を形成する自立棚として配置され得る。在庫陳列構造の他の例には、ペグボード棚、マガジン棚、回転式棚、倉庫棚、及び、冷蔵棚ユニットが含まれる。在庫商品は、積み重ねワイヤバスケット、ダンプビン等の他のタイプの在庫陳列構造にストックすることもできる。また、顧客は商品を、それらが取り出された棚から同じ棚に、または別の棚に戻すこともできる。
【0055】
システムは、顧客が棚に物品を置き、棚から物品を取り出すときに、ショッピングストア内の在庫位置における在庫を更新するために、(ネットワーク・ノード104上でホストされる)店舗在庫エンジン180を含む。店舗在庫エンジンは、在庫位置に置かれた在庫商品の識別子(在庫管理単位またはSKU等)を示すことによって、在庫位置の在庫データ構造を更新する。在庫統合エンジンは、また、ショッピングストアにストックされたそれらの数量を更新することによって、ショッピングストアの在庫データ構造を更新する。在庫位置及び店舗在庫データは、顧客の在庫データ(在庫商品のログ・データ構造、または、ショッピングカート・データ構造とも呼ばれる)とともに、在庫データベース160に格納される。
【0056】
店舗在庫エンジン180は、在庫位置における在庫商品の状態を提供する。しかしながら、どの在庫商品が棚のどの部分に置かれているかを、何時でも決定することは困難である。これは、ショッピングストアの管理者や従業員にとって重要な情報である。在庫商品は、棚及び在庫商品がストックされることが計画されている棚上の位置を識別するプラノグラムに基づいて、在庫位置に配置することができる。例えば、ケチャップボトルは、列状の配置を形成する在庫陳列構造において、全ての棚の所定の左側部分にストックされてもよい。時間の経過につれて、顧客は棚からケチャップボトルを取り出し、それぞれのバスケットまたはショッピングカートに入れる。一部の顧客は、ケチャップボトルを、同じ在庫陳列構造内の同じ棚の別の部分に戻すかもしれない。また、顧客は、ショッピングストア内の他の在庫陳列構造の棚にケチャップボトルを戻すこともあり得る。店舗リアログラム・エンジン190(ネットワーク・ノード106上でホストされる)は、ケチャップボトルが時間「t」に配置される棚の部分を識別するために使用できるリアログラムを生成する。この情報は、誤配置されたケチャップボトルの位置を有する従業員への通知を生成するために、システムによって使用され得る。
【0057】
また、この情報は、実空間のエリア内の在庫商品の位置を遅れずに追跡する、本明細書でリアログラムと呼ばれるデータ構造を生成するために、実空間のエリア内の在庫商品にわたって使用され得る。在庫商品の現在の状態を反映し、幾つかの実施形態では、ある時間間隔にわたって指定された時間「t」における在庫商品の状態を反映する、店舗リアログラム・エンジン190によって生成されたショッピングストアのリアログラムは、リアログラム・データベース170に保存することができる。
【0058】
ネットワーク181を介した、店舗在庫エンジン170をホストするネットワーク・ノード104、及び、店舗リアログラム・エンジン190をホストするネットワーク・ノード106への実際の通信経路は、公衆ネットワーク及び/またはプライベート・ネットワーク上のポイント・ツー・ポイントとすることができる。通信は、プライベート・ネットワーク、VPN、MPLS回路、またはインターネットなどの様々なネットワーク181を介して行うことができ、適切なアプリケーション・プログラミング・インターフェース(API)及びデータ交換フォーマット、例えば、REST(Representational State Transfer)、JSON(JavaScript(商標)Object Notation)、XML(Extensible Markup Language)、SOAP(Simple Object Access Protocol)、JMS(Java(商標)Message Service)、及び/またはJavaプラットフォーム・モジュール・システム等を使用することができる。全ての通信は、暗号化することができる。通信は、一般に、EDGE、3G、4GLTE、Wi-Fi、及びWiMAX等のプロトコルを介して、LAN(ローカル・エリア・ネットワーク)、WAN(ワイド・エリア・ネットワーク)、電話ネットワーク(公衆交換電話網(PSTN))、セッション開始プロトコル(SIP)、無線ネットワーク、ポイント・ツー・ポイント・ネットワーク、星型ネットワーク,トークンリング型ネットワーク,ハブ型ネットワーク、インターネット(モバイルインターネットを含む)等のネットワーク上で行われる。更に、ユーザ名/パスワード、オープン許可(OAuth)、Kerberos、SecureID、デジタル証明書などの様々な承認及び認証技術を使用して、通信を保護することができる。
【0059】
本明細書に開示される技術は、データベース・システム、マルチテナント環境、または、Oracle(商標)と互換性のあるデータベース実施態様、IBM DB2 Enterprise Server(商標)と互換性のあるリレーショナル・データベース実施態様、MySQL(商標)またはPostgreSQL(商標)と互換性のあるリレーショナル・データベース実施態様またはMicrosoft SQL Server(商標)と互換性のあるリレーショナル・データベース実施態様等のリレーショナル・データベース実施態様、または、Vampire(商標)と互換性のある非リレーショナル・データベース実施態様、Apache Cassandra(商標)と互換性のある非リレーショナル・データベース実施態様、 BigTable(商標)と互換性のある非リレーショナル・データベース実施態様、またはHBase(商標)またはDynamoDB(商標)と互換性のある非リレーショナル・データベース実施態様、等のNoSQL(商標)の非リレーショナル・データベース実施態様を含む何かのコンピュータ実装システムという状況下で実施され得る。更に、開示された技術は、MapReduce(商標)、バルク同期プログラミング、MPIプリミティブ等の様々なプログラミングモデル、または、Apache Storm(商標)、Apache Spark(商標)、Apache Kafka(商標)、Apache Flink(商標)、Truviso(商標)、Amazon Elasticsearch Service(商標)、Amazon Web Services(AWS)(商標)、IBM Info‐Sphere(商標)、Borealis(商標)、及びYahoo! S4(商標)等の様々なスケーラブルなバッチ及びストリーム管理システムを使用して実施され得る。
[カメラ配置]
【0060】
カメラ114は、3次元(3Dと略される)実空間において多関節被写体(または存在物)を追跡するように配置される。ショッピングストアの例示的な実施形態では、実空間は、販売用の商品が棚に積み重ねられるショッピングストアのエリアを含むことができる。実空間内の点は、(x,y,z)座標系で表すことができる。システムが適用される実空間のエリア内の各点は、2つ以上のカメラ114の視野によってカバーされる。
【0061】
ショッピングストアでは、棚及び他の在庫陳列構造は、ショッピングストアの側壁に沿って、または通路を形成する列に、または2つの構成の組合せでなど、様々な方法で配置することができる。
図2Aは、通路116aの一端から見た、通路116aを形成する棚ユニットA 202及び棚ユニットB 204の配置を示す。2つのカメラ、カメラA 206及びカメラB 208は、棚ユニットA 202及び棚ユニットB 204等の棚のような在庫陳列構造の上のショッピングストアの天井230及びフロア220から所定の距離で通路116aの上に配置される。カメラ114は、実空間内の在庫陳列構造及びフロアエリアのそれぞれの部分を包含する視野を有し、その上に配置されたカメラを備える。
図2Aに示すように、カメラA 206の視野216とカメラB 208の視野218は互いに重なり合っている。被写体として識別された候補関節のセットのメンバーの実空間内の座標は、フロアエリア内の被写体の位置を識別する。
【0062】
ショッピングストアの例示的な実施形態では、実空間は、ショッピングストア内のフロア220の全てを含むことができる。カメラ114は、フロア220及び棚のエリアが少なくとも2つのカメラによって見えるように配置され、配向される。カメラ114は、また、棚202及び204の前のフロアスペースを覆う。カメラの角度は急峻な視点、真っ直ぐな視点及び角度の付いた視点の両方を有するように選択され、これにより、顧客のより完全な身体画像が得られる。一実施形態では、カメラ114が、ショッピングストア全体を通して、8フィート高さ以上で構成される。
図13に、斯かる実施形態の説明図を示す。
【0063】
図2Aにおいて、被写体240は在庫陳列構造の棚ユニットB 204の傍に立っており、片手は、棚ユニットB 204内の棚(目に見えない)の近くに位置している。
図2Bは、フロアから異なる高さに配置された4つの棚、棚1、棚2、棚3、及び棚4を備えた棚ユニットB 204の斜視図である。在庫商品はこれらの棚にストックされる。
[3次元シーン生成]
【0064】
実空間内の位置は、実空間座標系の(x,y,z)点として表される。「x」及び「y」は、ショッピングストアのフロア220とすることができる2次元(2D)平面上の位置を表し、値「z」は、1つの構成ではフロア220における2Dプレーン上の点の高さである。システムは、2つ以上のカメラからの2D画像を組み合わせて、実空間のエリア内における関節及び在庫イベント(商品を棚へ置く及び棚から商品を取る)の3次元位置を生成する。本項では、関節及び在庫イベントの3D座標を生成するための処理を説明する。該処理は、3Dシーン生成とも呼ばれる。
【0065】
在庫商品を追跡するために訓練または推論モードでシステム100を使用する前に、2つのタイプのカメラ較正、すなわち、内部較正と外部較正が実行される。内部較正では、カメラ114の内部パラメータが較正される。内部カメラ・パラメータの例には、焦点距離、主点、スキュー、魚眼係数等がある。内部カメラ較正のための種々の技術を使用することができる。斯かる技術の1つは、Zhangによって、2000年11月の第22巻第11号、パターン解析と機械知能に関するIEEEトランザクションで発表された「カメラ較正のためのフレキシブルな新手法」において提示されている。
【0066】
外部較正では、外部カメラ・パラメータが、2D画像データを実空間の3D座標に変換するためのマッピング・パラメータを生成するために較正される。一実施形態では、人物などの1つの多関節被写体が実空間に導入される。多関節被写体は、各カメラ114の視野を通過する経路上で実空間を移動する。実空間内の任意の所与の点において、多関節被写体は、3Dシーンを形成する少なくとも2つのカメラの視野内に存在する。しかしながら、2つのカメラは、それぞれの2次元(2D)画像平面において同じ3Dシーンの異なるビューを有する。多関節被写体の左手首などの3Dシーン内の特徴は、それぞれの2D画像平面内の異なる位置にある2つのカメラによって見られる。
【0067】
点対応は、所与のシーンについて重複する視野を有する全てのカメラ・ペアの間で確立される。各カメラは同じ3Dシーンの異なる視野を有するので、点対応は3Dシーンにおける同じ点の投影を表す2つのピクセル位置(重なり合う視野を有する各カメラからの1つの位置)である。外部較正のために、画像認識エンジン112a~112nの結果を使用して、各3Dシーンについて多くの点対応が識別される。画像認識エンジンは関節の位置を、それぞれのカメラ114の2D画像平面内のピクセルの(x,y)座標、例えば、行及び列番号として識別する。一実施形態では、関節は、多関節被写体の19の異なるタイプの関節のうちの1つである。多関節被写体が異なるカメラの視野を通って移動するとき、追跡エンジン110は、較正に使用される多関節被写体の19の異なるタイプの関節の各(x,y)座標を、画像毎にカメラ114から受け取る。
【0068】
例えば、カメラAからの画像と、カメラBからの画像との両方が同じ時点に、重なり合う視野で撮影された場合を考える。カメラAからの画像には、カメラBからの同期画像のピクセルに対応するピクセルがあり、カメラAとカメラBの両方の視野内の或る物体または表面の特定の点があり、その点が両方の画像フレームのピクセルに取り込まれていると考える。外部カメラ較正では、多数のそのような点が識別され、対応点と呼ばれる。較正中にカメラA及びカメラBの視野内に1つの多関節被写体があるので、この多関節被写体の主要な関節、例えば左手首の中心が識別される。これらの主要な関節がカメラA及びカメラBの両方からの画像フレーム内に見える場合、これらは対応点を表すと仮定される。この処理は、多くの画像フレームについて繰り返され、重なり合う視野を有する全てのカメラ・ペアについて対応点の大きな集合を構築する。一実施形態では、画像が30 FPS(フレーム/秒)以上のレートで、フルRGB(赤、緑、及び青)カラーで720ピクセルの解像度で、全てのカメラからストリーミングされる。これらの画像は、一次元配列(フラット配列とも呼ばれる)の形態である。
【0069】
多関節被写体について上記で収集された多数の画像を使用して、重なり合う視野を有するカメラ間の対応点を決定することができる。重なり合う視野を有する2つのカメラA及びBを考える。カメラA、Bのカメラ中心と3Dシーンの関節位置(特徴点ともいう)を通る平面を「エピポーラ平面」と呼び、エピポーラ平面とカメラA、Bの2D画像平面との交差箇所を「エピポーラ線」と定義する。これらの対応点が与えられると、カメラAからの対応点を、カメラBの画像フレーム内の対応点と交差することが保証されるカメラBの視野内のエピポーラ線に正確にマッピングすることができる変換が決定される。多関節被写体について上記で収集された画像フレームを使用して、変換が生成される。この変換は非線形であることが当技術分野で知られている。更に、一般形態では、投影された空間へ及び投影された空間から移動する非線形座標変換と同様に、それぞれのカメラのレンズの半径方向の歪み補正が必要であることが知られている。外部カメラ較正では、理想的な非線形変換への近似が非線形最適化問題を解くことによって決定される。この非線形最適化機能は、重なり合う視野を有するカメラ114の画像を処理する様々な画像認識エンジン112a~112nの出力(関節データ構造の配列)内の同じ関節を識別するために、被写体追跡エンジン110によって使用される。内部カメラ較正及び外部カメラ較正の結果は、較正データベース170に格納される。
【0070】
実空間におけるカメラ114の画像内の点の相対位置を決定するための様々な手法を使用することができる。例えば、Longuet-Higginsが、「A computer algorithm for reconstructing a scene from two projections」(Nature、第293巻、1981年9月10日)を公表している。本論文では、2つの投影間の空間的関係が未知であるとき、遠近投影の相関ペアからシーンの3次元構造を計算することが提示されている。Longuet-Higginsの論文は、実空間での各カメラの他のカメラに対する位置を決定する手法を提示する。更に、その手法は、実空間における多関節被写体の三角測量を可能にし、重なり合う視野を有するカメラ114からの画像を使用してz座標の値(フロアからの高さ)を識別する。実空間の任意の点、例えば、実空間の一角の棚ユニットの端を、実空間の(x,y,z)座標系上の(0,0,0)点とする。
【0071】
本技術の一実施形態では、外部較正のパラメータが2つのデータ構造に格納される。第1のデータ構造は、固有パラメータを格納する。固有パラメータは、3D座標から2D画像座標への射影変換を表す。第1のデータ構造は以下に示すように、カメラ毎の固有パラメータを含む。データ値は全て浮動小数点数値である。このデータ構造は、「K」及び歪み係数として表される3×3固有行列を格納する。歪み係数は、6つの半径方向歪み係数と2つの接線方向歪み係数とを含む。半径方向の歪みは、光線がその光学的中心よりも、レンズの縁部の近傍でより大きく屈曲するときに生じる。接線方向の歪みは、レンズと像平面が平行でないときに生じる。以下のデータ構造は、第1のカメラのみの値を示す。同様のデータが全てのカメラ114に対して記憶される。
{
1: {
K: [[x, x, x], [x, x, x], [x, x, x]],
distortion _coefficients: [x, x, x, x, x, x, x, x]
},
......
}
【0072】
第2のデータ構造は、カメラ・ペア毎に、3×3基本行列(F)、3×3必須行列(E)、3×4投影行列(P)、3×3回転行列(R)、及び3×1平行移動ベクトル(t)を記憶する。このデータは、1つのカメラの基準フレーム内の点を別のカメラの基準フレームに変換するために使用される。カメラの各ペアについて、1つのカメラから別のカメラへフロア220の平面をマッピングするために、8つのホモグラフィ係数も記憶される。基本行列は、同じシーンの2つの画像間の関係であり、シーンからの点の投影が両方の画像において起こり得る場所を制約する。必須行列は、カメラが較正されている状態での、同じシーンの2つの画像間の関係でもある。投影行列は、3D実空間から部分空間へのベクトル空間投影を与える。回転行列は、ユークリッド空間における回転を実行するために使用される。平行移動ベクトル「t」は、図形または空間の全ての点を所与の方向に同じ距離だけ移動させる幾何学的変形を表す。ホモグラフィ・フロア係数は、重なり合う視野を有するカメラによって見られるフロア220上の被写体の特徴の画像を結合するために使用される。第2のデータ構造を以下に示す。同様のデータが、全てのカメラ・ペアについて記憶される。前述のように、xは浮動小数点数値を表す。
{
1: {
2: {
F: [[x, x, x], [x, x, x], [x, x, x]],
E: [[x, x, x], [x, x, x], [x, x, x]],
P: [[x, x, x, x], [x, x, x, x], [x, x, x, x]],
R: [[x, x, x], [x, x, x], [x, x, x]],
t: [x, x, x],
homography_floor_coefficients: [x, x, x, x, x, x, x, x]
}
},
.......
}
[2次元マップ及び3次元マップ]
【0073】
ショッピングストア内の棚等の在庫位置は、固有識別子(例えば、棚ID)によって識別することができる。同様に、ショッピングストアは、固有識別子(例えば、店舗ID)によって識別することができる。2次元(2D)及び3次元(3D)マップ・データベース140は、それぞれの座標に沿った実空間のエリア内の在庫位置を識別する。例えば、2Dマップでは、マップ内の位置が、
図3に示されるように、フロア220に垂直に形成された平面、すなわちXZ平面上の2次元領域を規定する。マップは、在庫商品が配置される在庫位置のエリアを規定する。
図3において、棚ユニットB 204内の棚1の2Dビュー360は、4つの座標位置(x1,z1)、(x1,z2)、(x2,z2)、及び(x2,z1)によって形成されるエリアを示し、在庫商品が棚1上に配置される2D領域を規定する。同様の2D領域が、ショッピングストア内の全ての棚ユニット(または他の在庫陳列構造)内の全ての在庫位置に対して規定される。この情報は、マップ・データベース140に記憶される。
【0074】
3Dマップでは、マップ内の位置が、X、Y、及びZ座標によって定義される3D実空間内の3次元領域を規定する。マップは、在庫商品が配置される在庫位置の容積を規定する。
図3において、棚ユニットB 204内の棚1の3Dビュー350は、3D領域を規定する8つの座標位置(x1,y1,z1)、(x1,y1,z2)、(x1,y2,z1)、(x1,y2,z2)、(x2,y1,z1)、(x2,y1,z2)、(x2,y2,z1)、(x2,y2,z2)によって形成される容積を示し、在庫商品は、棚1上のその3D領域内に配置される。同様の3D領域が、ショッピングストア内の全ての棚ユニット内の在庫位置について規定され、マップ・データベース140内に実空間(ショッピングストア)の3Dマップとして格納される。
図3に示すように、3つの軸に沿った座標位置を使用して、在庫位置の長さ、深さ、及び高さを計算することができる。
【0075】
一実施形態では、マップが、実空間のエリア内の在庫陳列構造上の在庫位置の部分と相関する容積のユニットの構成を識別する。各部分は、実空間の3つの軸に沿った開始位置及び終了位置によって規定される。在庫位置の部分の同様の構成は、陳列構造の前面図を分割する2Dマップ在庫位置を使用して生成することもできる。
[関節データ構造]
【0076】
画像認識エンジン112a~112nは、カメラ114からの画像シーケンスを受け取り、画像を処理して、関節データ構造の対応する配列を生成する。システムは、複数のカメラによって生成された画像シーケンスを使用して、実空間のエリア内の複数の被写体(またはショッピングストア内の顧客)の位置を追跡する処理ロジックを含む。一実施形態では、画像認識エンジン112a~112nが、在庫商品を取っているまたは置いている可能性のあるエリア内の被写体を識別するために使用可能な画像の各要素における被写体の19個の可能な関節の内の1つを識別する。可能な関節は、足関節と非足関節の2つのカテゴリに分類することができる。関節分類の19番目のタイプは、被写体の全ての非関節特徴(すなわち、関節として分類されない画像の要素)に対するものである。他の実施形態では、画像認識エンジンが特に手の位置を識別するように構成されてもよい。また、ユーザ・チェックイン手順またはバイオメトリック識別処理等の他の技法を、被写体を識別し、被写体が店舗内を移動する際に被写体の手の検出された位置と被写体をリンクさせる目的のために展開することができる。
足関節:
足首関節(左右)
非足関節:
首
鼻
眼(左右)
耳(左右)
肩(左右)
肘(左右)
手首(左右)
尻(左右)
膝(左右)
非関節
【0077】
特定の画像の関節データ構造の配列は、関節タイプ、特定の画像の時間、及び特定の画像内の要素の座標によって、特定の画像の要素を分類する。一実施形態では画像認識エンジン112a~112nが畳み込みニューラル・ネットワーク(CNN)であり、関節タイプは被写体の19種類の関節のうちの1つ、特定の画像の時間は特定の画像についてソースカメラ114によって生成された画像のタイムスタンプであり、座標(x,y)は2D画像平面上の要素の位置を特定する。
【0078】
CNNの出力は、カメラ当たりの各画像に対する信頼度配列の行列である。信頼度配列の行列は、関節データ構造の配列に変換される。
図4に示すような関節データ構造400は、各関節の情報を記憶するために使用される。関節データ構造600は、画像が受信されるカメラの2D画像空間内の特定の画像内の要素のx位置及びy位置を識別する。関節番号は、識別された関節のタイプを識別する。例えば、一実施形態では、値は1~19の範囲である。値1は関節が左足首であることを示し、値2は関節が右足首であることを示し、以下同様である。関節のタイプは、CNNの出力行列内のその要素に対する信頼度配列を使用して選択される。例えば、一実施形態では、左足首関節に対応する値がその画像要素の信頼度配列において最も高い場合、関節番号の値は「1」である。
【0079】
信頼度数は、その関節を予測する際のCNNの信頼度の程度を示す。信頼度数の値が高ければ、CNNは自身の予想に確信していることになる。関節データ構造を一意に識別するために、関節データ構造に整数IDが割り当てられる。上記マッピングに続いて、画像毎の信頼度配列の出力行列540は、画像毎の関節データ構造の配列に変換される。一実施形態では、関節分析が、各入力画像に対して、k最近傍、ガウス混合、及び、様々な画像形態変換の組み合わせを実行することを含む。この結果は、各時点において画像数をビットマスクにマッピングするリング・バッファ内にビットマスクの形式で格納することができる関節データ構造の配列を含む。
[被写体追跡エンジン]
【0080】
追跡エンジン110は、重なり合う視野を有するカメラからの画像シーケンス内の画像に対応する、画像認識エンジン112a~112nによって生成された関節データ構造の配列を受信するように構成される。画像当たりの関節データ構造の配列は、画像認識エンジン112a~112nによってネットワーク181を介して追跡エンジン110に送られる。追跡エンジン110は、様々な画像シーケンスに対応する関節データ構造の配列内の要素の座標を、実空間内の座標を有する候補関節に変換する。実空間内の位置は、2つ以上のカメラの視野によってカバーされている。追跡エンジン110は、実空間における座標(関節のコンステレーション)を有する候補関節のセットを、実空間における被写体として識別するためのロジックを備える。一実施形態では、追跡エンジン110が、所与の時点における全てのカメラについて、画像認識エンジンからの関節データ構造の配列を蓄積し、候補関節のコンステレーションを識別するために使用されるように、この情報を辞書として被写体データベース140に格納する。辞書は、キー値ペアの形式で編成することができ、ここで、キーはカメラIDであり、値はカメラからの関節データ構造の配列である。斯かる実施形態では、この辞書が候補関節を決定し、関節を被写体に割り当てるために、ヒューリスティックス・ベースの分析で使用される。斯かる実施形態では、追跡エンジン110の高レベル入力、処理、及び出力が表1に示されている。候補関節を組み合わせて被写体を生成し、実空間のエリア内の被写体の動きを追跡する被写体追跡エンジン110によって適用されるロジックの詳細は、2018年8月21日発行の米国特許第10,055,853号、「画像認識エンジンを用いた被写体の認識及び追跡」に示されており、これは、参照により本明細書に組み込まれる。
表1:例示的な実施形態における被写体追跡エンジン110からの入力、処理、及び出力
[被写体データ構造]
【0081】
被写体追跡エンジン110は、ヒューリスティックを用いて、画像認識エンジン112a~112によって識別された被写体の関節を接続する。その際、被写体追跡エンジン110は、新しい被写体を生成し、それぞれの関節位置を更新することによって既存の被写体の位置を更新する。被写体追跡エンジン110は、三角測量技法を用いて、関節位置を2D空間座標(x,y)から3D実空間座標(x,y,z)へ投影する。
図5は、被写体を格納するための被写体データ構造500を示す。該データ構造500は、被写体関連データをキー値辞書として格納する。キーはフレームIDであり、値は別のキー値辞書であり、ここでは、キーはカメラIDであり、値は(被写体の)18個の関節と実空間内のそれらの位置のリストである。被写体データは、被写体データベースに格納される。新しい被写体毎に、被写体データベース内の被写体のデータにアクセスするために使用される固有識別子も割り当てられる。
【0082】
一実施形態では、システムが被写体の関節を識別し、被写体の骨格を作成する。骨格は、実空間に投影され、実空間における被写体の位置及び向きを示す。これは、マシンビジョンの分野では「姿勢推定」とも呼ばれる。一実施形態では、システムがグラフィカル・ユーザ・インターフェース(GUI)上に実空間内の被写体の向き及び位置を表示する。一実施形態では、被写体識別及び画像分析は匿名であり、すなわち、関節分析によって作成された被写体に割り当てられた固有識別子は、上述したように、被写体の個人識別情報を識別しない。
【0083】
この実施形態では、関節データ構造の時系列分析によって生成された、識別された被写体の関節のコンステレーションを使用して、被写体の手の位置を見つけることができる。例えば、手首関節単独の位置、または手首関節と肘関節との組み合わせの投影に基づく位置を使用して、識別された被写体の手の位置を識別することができる。
[在庫イベント]
【0084】
図6は、通路116aの上面
図610において棚ユニットB 204の棚から在庫商品を取り出す被写体240を示す。開示される技術は、複数のカメラ内の少なくとも2つのカメラによって生成される画像シーケンスを使用して、在庫イベントの位置を見つける。単一の被写体の関節は、それぞれの画像チャネル内の複数のカメラの画像フレーム内に現れ得る。ショッピングストアの例では、被写体は、実空間のエリア内を移動し、在庫位置から商品を取り出し、また、在庫位置に商品を置き戻す。一実施形態では、システムが、WhatCNN及びWhenCNNと呼ばれる畳み込みニューラル・ネットワークのパイプラインを使用して、在庫イベント(置くことまたは取ること、プラスまたはマイナス・イベントとも呼ばれる)を予測する。
【0085】
被写体データ構造中の関節によって識別された被写体と、カメラ当たりの画像フレームのシーケンスからの対応する画像フレームとを含むデータセットは、有界ボックス生成器への入力として与えられる。有界ボックス生成器は、データセットを処理して、画像シーケンス内の画像内の識別された被写体の手の画像を含む有界ボックスを指定するロジックを実装する。有界ボックス生成器は、例えば、それぞれのソース画像フレームに対応する多関節データ構造500内の手首関節(それぞれの手に対する)と肘関節の位置を使用して、カメラ毎に各ソース画像フレーム内の手の位置を識別する。被写体データ構造内の関節の座標が3D実空間座標内の関節の位置を示す一実施形態では、有界ボックス生成器が、関節位置を3D実空間座標からそれぞれのソース画像の画像フレーム内の2D座標にマッピングする。
【0086】
有界ボックス生成器は、カメラ114毎に循環バッファ内の画像フレーム内の手のための有界ボックスを作成する。一実施形態では有界ボックスが、画像フレームの128ピクセル(幅)×128ピクセル(高さ)部分であり、手は有界ボックスの中心に位置する。他の実施形態では、有界ボックスのサイズが64ピクセル×64ピクセルまたは32ピクセル×32ピクセルである。カメラからの画像フレーム内のm個の被写体について、最大2m個の手、従って2m個の有界ボックスが存在し得る。しかしながら、実際には、他の被写体または他の物体による遮蔽のために、2mより少ない手が画像フレーム内で見える。1つの例示的な実施形態では、被写体の手の位置が肘関節及び手首関節の位置から推測される。例えば、被写体の右手の位置は、右肘の位置(p1として識別される)及び右手首の位置(p2として識別される)を用いて、外挿量×(p2-p1)+p2として外挿される。ここで外挿量は0.4である。別の実施形態では、関節CNN112a~112nが左手画像及び右手画像を使用してトレーニングされる。従って、斯かる実施形態では、関節CNN112a~112nがカメラ当たりの画像フレーム内の手の位置を直接識別する。画像フレーム当たりの手の位置は、識別された手当たりの有界ボックスを生成するために有界ボックス生成器によって使用される。
【0087】
WhatCNNは、識別された被写体の手の分類を生成するために、画像内の指定された有界ボックスを処理するようにトレーニングされた畳み込みニューラル・ネットワークである。1つの訓練されたWhatCNNは、1つのカメラからの画像フレームを処理する。ショッピングストアの例示的な実施形態では、各画像フレーム内の各手について、WhatCNNは手が空であるかどうかを識別する。WhatCNNは、また、手の中の在庫商品のSKU(在庫管理単位)番号、手の中の商品を示す信頼値が非SKU商品(すなわち、ショッピングストア在庫に属さない)、及び画像フレーム内の手の位置の状況を識別する。
【0088】
全てのカメラ114のWhatCNNモデルの出力は、所定の時間帯の間、単一のWhenCNNモデルによって処理される。ショッピングストアの例では、WhenCNNが被写体の両手について時系列分析を実行して、被写体が棚から店舗在庫商品を取るか、または店舗在庫商品を棚に置くかを識別する。 開示された技術は、複数のカメラの内の少なくとも2つのカメラによって生成された画像シーケンスを用いて、在庫イベントの位置を見つける。WhenCNNは、少なくとも2つのカメラからの画像シーケンスからのデータセットの分析を実行して、3次元における在庫イベントの位置を決定し、在庫イベントに関連する商品を識別する。ある期間にわたる被写体当たりのWhenCNNの出力の時系列分析が実行されて、在庫イベント及びそれらの発生時間が識別される。この目的のために、非最大抑制(NMS)アルゴリズムが使用される。1つの在庫イベント(すなわち、被写体による商品を置くことまたは取ること)がWhenCNNによって複数回(同じカメラ及び複数のカメラの両方から)検出されると、NMSは、被写体に対する余分なイベントを除去する。NMSは、2つの主要なタスク、すなわち、余分な検出にペナルティを課す「マッチングロス」と、より良好な検出が手近に存在するかどうかを知るための近隣の「関節処理」とを含む再スコアリング技術である。
【0089】
各被写体に対する取ること及び置くことの真のイベントは、真のイベントを有する画像フレームの前の30画像フレームに対するSKUロジットの平均を計算することによって更に処理される。最後に、最大値の引数(arg maxまたはargmaxと略す)を使用して、最大値を決定する。argmax値によって分類された在庫商品は、棚に置かれたまたは棚から取られた在庫商品を識別するために使用される。開示された技術は、在庫に関連する在庫イベントを被写体のログ・データ構造(または、ショッピングカート・データ構造)に割り当てることで、在庫イベントを被写体に帰属させる。在庫商品は、それぞれの被写体のSKU(ショッピングカートまたはバスケットとも呼ばれる)のログに追加される。在庫イベントの検出につながった画像フレームの画像フレーム識別子「フレームID」も、識別されたSKUとともに格納される。在庫イベントを被写体に帰属させるロジックは、在庫イベントの位置と複数の顧客中の顧客の一人の位置とをマッチングさせる。例えば、画像フレームは、被写体データ構造500を用いて在庫イベントとして分類されるシーケンス中の少なくとも1時点における被写体の手の位置によって表される在庫イベントの3D位置を識別するのに使用することができ、そして、商品が取り出されたか、または置かれた場所からの在庫位置を決定するのに使用することができる。開示された技術は、複数のカメラの内の少なくとも2つのカメラによって生成された画像シーケンスを用いて、在庫イベントの位置を見つけ、在庫イベント・データ構造を作成する。一実施形態では、在庫イベント・データ構造は、商品識別子、置くまたは取るインジケータ、実空間のエリアの3次元の座標、及びタイムスタンプを格納する。一実施形態では、在庫イベントは、在庫イベント・データベース150に格納される。
【0090】
在庫イベント(空間のエリア内の被写体による在庫商品の置くこと及び取ること)の位置は、被写体が商品を取り出した、または商品を置いた棚等の在庫位置を識別するために、店舗のプラノグラムまたは他のマップと比較することができる。例示660は、在庫イベントに関連付けられた手の位置640からの最短距離を計算することによる、棚ユニット内の棚の判定を示す。次に、この棚の判定は、棚の在庫データ構造を更新するために使用される。
図7に、例示的な在庫データ構造700(ログ・データ構造とも呼ばれる)が示されている。この在庫データ構造は、被写体、棚または店舗の在庫をキー値辞書として記憶する。キーは、被写体、棚または店舗の固有識別子であり、値は、別のキー値辞書であり、この場合、キーが在庫管理単位(SKU)のような商品識別子であり、値が在庫イベント予測をもたらした画像フレームの「フレームID」と共に商品の数量を識別する番号である。フレーム識別子(「フレームID」)は、在庫商品と被写体、棚、または店舗との関連をもたらす在庫イベントの識別をもたらした画像フレームを識別するために使用することができる。他の実施形態では、ソースカメラを識別する「カメラID」をフレームIDと組み合わせて、在庫データ構造700内に格納することもできる。一実施形態では、フレームが被写体の手を有界ボックス内に有するので、「フレームID」は被写体識別子である。他の実施形態では、実空間のエリア内の被写体を明示的に識別する「被写体ID」のような他のタイプの識別子を、被写体を識別するために使用することができる。
【0091】
棚在庫データ構造が、被写体のログ・データ構造と統合されると、棚在庫は、顧客が棚から取り出した商品の数量を反映するように減少される。顧客が商品を棚に置くか、または、従業員が商品を棚にストックした場合、商品は、それぞれの在庫位置の在庫データ構造に追加される。ある期間にわたって、この処理は、ショッピングストア内の全ての在庫位置についての棚在庫データ構造の更新をもたらす。実空間のエリア内の在庫位置の在庫データ構造を統合して、その時点における店舗内の各SKUの商品の総数を示す実空間のエリアの在庫データ構造を更新する。一実施形態では、そのような更新が各在庫イベントの後に実行される。別の実施形態では、店舗在庫データ構造は定期的に更新される。
【0092】
在庫イベントを検出するWhatCNN及びWhenCNNの実施態様の詳細は、2018年2月27日出願の米国特許出願第15/907,112号、「画像認識を用いた商品を置くこと及び取ることの検出」に示されており、これは、本明細書に完全に記載されているかのように、参照により本明細書に組み込まれる。
[リアルタイム棚及び店舗在庫更新 ]
【0093】
図8は、実空間のエリア内の棚在庫構造を更新する処理ステップを示すフローチャートである。処理はステップ802から始まる。ステップ804では、システムが、実空間のエリア内での取るまたは置くイベントを検出する。在庫イベントは、在庫イベント・データベース150に記憶される。在庫イベント・レコードは、SKU等の商品識別子、タイムスタンプ、3次元x、y、及びzに沿った位置を示す実空間の3次元エリア内のイベントの位置を含む。在庫イベントは、また、置くまたは取るインジケータを含み、被写体が商品を棚に置いたかどうか(プラス在庫イベントとも呼ばれる)、または商品を棚から取り出したかどうか(マイナス在庫イベントとも呼ばれる)を識別する。在庫イベント情報は、被写体追跡エンジン110からの出力と組み合わされて、この在庫イベントに関連する被写体を識別する。次に、この分析の結果を使用して、在庫データベース160内の被写体のログ・データ構造(ショッピングカート・データ構造とも呼ばれる)を更新する。一実施形態では、被写体識別子(例えば、「被写体ID」)が在庫イベント・データ構造に格納される。
【0094】
システムは、在庫イベントに関連する被写体の手の位置(ステップ806)を使用して、ステップ808において、在庫陳列構造(上記の棚ユニットとも呼ばれる)内の最も近い棚の位置を見つけることができる。店舗在庫エンジン180は、ショッピングストア内の在庫位置のxz平面(フロア220に垂直)上の2次元(2D)領域またはエリアまでの手の距離を計算する。在庫位置の2D領域は、ショッピングストアのマップ・データベース140内に格納される。手が実空間内の点E(xevent,yevent,zevent) で表されるとする。実空間内の点Eから該平面上の任意の点Pまでの最短距離Dは、該平面に対する法線ベクトルn上にベクトルPEを射影することによって決定することができる。既存の数学的技法を使用して、在庫位置の2D領域を表す全ての平面に対する手の距離を計算することができる。
【0095】
一実施形態では、開示される技術は、在庫イベントの位置から在庫陳列構造上の在庫位置までの距離を計算すること、及び計算された距離に基づいて在庫イベントを在庫位置とマッチングさせることを含む手順を実行することによって、在庫イベントの位置を在庫位置とマッチングさせる。例えば、在庫イベントの位置から最短距離にある在庫位置(棚等)が選択され、この棚の在庫データ構造がステップ810で更新される。一実施形態では、在庫イベントの位置が、実空間の3つの座標に沿った被写体の手の位置によって決定される。在庫イベントが、ケチャップのボトルが被写体によって取られたことを示す取るイベント(またはマイナスイベント)である場合、棚の在庫は、ケチャップボトルの数を1つ減らすことによって更新される。同様に、在庫イベントが、被写体が棚にケチャップのボトルを置くことを示す置くイベントである場合は、ケチャップボトル数を1つ増やして、棚の在庫を更新する。同様に、店舗の在庫データ構造もそれに応じて更新される。在庫位置に置かれた商品の数量は、店舗在庫データ構造において同じ数だけ増分される。同様に、在庫位置から取られた商品の数量は、在庫データベース160内の店舗の在庫データ構造から差し引かれる。
【0096】
ステップ812において、プラノグラムがショッピングストアに対し利用可能であるか、或いは、プラノグラムが利用可能であること知り得るかがチェックされる。プラノグラムは、ショッピングストア内の在庫位置に在庫商品をマッピングするデータ構造であり、これは、店舗内の在庫商品の配置のための計画に基づくことができる。ショッピングストアに対しプラノグラムが利用可能である場合、ステップ814で、被写体によって棚に置かれた商品が、プラノグラム内の棚上の商品と比較される。一実施形態では、開示される技術は、在庫イベントがプラノグラムとマッチングしない在庫位置とマッチングする場合に、誤配置された商品を決定するロジックを含む。例えば、在庫イベントに関連付けられた商品のSKUが、在庫位置における在庫商品の配置とマッチングする場合、商品の位置は正しく(ステップ816)、マッチングしない場合、商品は誤配置されている。一実施形態では、ステップ818において、誤配置された商品を現在庫位置(棚等)から取り出し、プラノグラムに従ってその正しい在庫位置に移動させるための通知が、従業員に送信される。システムは、ステップ820において、被写体がショッピングストアから出て行くかどうかを、店舗の出口までのスピード、向き、及び近さを用いてチェックする。被写体が店舗から出て行こうとしていない場合(ステップ820)、処理はステップ804において再開する。そうでない場合、被写体が店舗を出て行くと判定された場合、ステップ822で、被写体のログ・データ構造(またはショッピングカート・データ構造)及び店舗の在庫データ構造が統合される。
【0097】
一実施形態では、ステップ810において、被写体のショッピングカート・データ構造内の商品が店舗在庫から差し引かれない場合、統合はこれらの商品を店舗在庫データ構造から差し引くことを含む。このステップにおいて、システムは、低識別信頼度スコアを有する被写体のショッピングカート・データ構造内の商品を識別し、店舗出口付近に位置する店舗従業員に通知を送信することもできる。次いで、従業員は、顧客のショッピングカート内の低識別信頼度スコアの商品を確認することができる。この処理は、顧客のショッピングカート内の全ての商品を顧客のショッピングカート・データ構造と比較することを店舗従業員に要求せず、信頼度スコアが低い商品のみがシステムによって店舗従業員に対して識別され、店舗従業員によって確認される。処理は、ステップ824で終了する。
[リアルタイム棚及び店舗在庫更新のためのアーキテクチャ]
【0098】
顧客在庫、在庫位置(例えば棚)在庫、及び、店舗在庫(例えば店舗全体)データ構造が、ショッピングストア内の顧客による商品を置くこと及び取ることを使用して更新されるシステムのアーキテクチャ例を、
図9Aに示す。
図9Aはアーキテクチャ図であるため、説明の明確性を向上させるために、特定の詳細は省略されている。
図9Aに示すシステムは、複数のカメラ114から画像フレームを受信する。上述のように、一実施形態では、カメラ114が、画像が同時に、または時間的に近く、かつ同じ画像キャプチャレートで取得されるように、互いに時間的に同期させることができる。同時にまたは時間的に近い実空間のエリアをカバーする全てのカメラにおいて取得された画像は、同期された画像が実空間において固定された位置を有する被写体のある時点での様々な光景を表すものとして処理エンジンにおいて識別されることができるという意味で同期される。画像は、カメラ毎に画像フレームの循環バッファ902内に格納される。
【0099】
「被写体識別」サブシステム904(第1の画像プロセッサとも呼ばれる)は、カメラ114から受け取った画像フレームを処理して、実空間内の被写体を識別し追跡する。第1の画像プロセッサは、実空間内の被写体の関節を検出する被写体画像認識エンジンを含む。関節は接続され被写体を形成し、そして、実空間内での移動として追跡される。被写体は匿名であり、内部の識別子「被写体ID」を使用して追跡される。
【0100】
「領域提案」サブシステム908(第3の画像プロセッサとも呼ばれる)は、前景画像認識エンジンを含み、複数のカメラ114から対応する画像シーケンスを受信し、前景内の意味的に重要な物体(すなわち、顧客、顧客の手、及び在庫商品)が、各カメラからの画像において経時的に、在庫商品を置くこと及び取ることに関連するときに、当該物体を認識する。領域提案サブシステム908は、また、被写体識別サブシステム904の出力を受信する。第3の画像プロセッサは、カメラ114からの画像シーケンスを処理して、対応する画像シーケンス内の画像に表される前景変化を識別し且つ分類する。第3の画像プロセッサは、識別された前景変化を処理して、識別された被写体による在庫商品を取ることの検出、及び、識別された被写体による在庫陳列構造上の在庫商品を置くことの第1の検出セットを作成する。一実施形態では、第3の画像プロセッサは、上述のWhatCNN等の畳み込みニューラル・ネットワーク(CNN)モデルを備える。第1の検出セットは、在庫商品を置くこと及び取ることの前景検出とも呼ばれる。この実施形態では、WhatCNNの出力が第2の畳み込みニューラル・ネットワーク(WhenCNN)で処理されて、在庫位置に在庫商品の置くイベント、及び、顧客及び店舗の従業員による在庫陳列構造内の在庫位置上の在庫商品の取るイベントを識別する第1の検出セットを作成する。領域提案サブシステムの詳細は、2018年2月27日出願の米国特許出願第15/907,112号、「画像認識を用いた商品を置くこと及び取ることの検出」に示されており、これは、本明細書に完全に記載されているかのように、参照により本明細書に組み込まれる。
【0101】
別の実施形態では、アーキテクチャが、在庫商品を置くこと及び取ることを検出し、これらの置くこと及び取ることをショッピングストア内の被写体に関連付けるために、第3の画像プロセッサと並列に使用することができる「意味的差分抽出」サブシステム(第2の画像プロセッサとも呼ばれる)を含む。この意味的差分抽出サブシステムは、背景画像認識エンジンを含み、背景画像認識エンジンは、複数のカメラから対応する画像シーケンスを受信し、例えば、背景(すなわち、棚のような在庫陳列構造)内の意味的に重要な差異が、各カメラからの画像において経時的に、在庫商品を置くこと及び取ることに関連するときに、当該差異を認識する。第2の画像プロセッサは、被写体識別サブシステム904の出力と、カメラ114からの画像フレームとを入力として受け取る。「意味的差分抽出」サブシステムの詳細は、2018年4月4日出願の米国特許第10,127,438号、「意味的差分抽出を使用した在庫イベントの予測」、及び、2018年4月4日出願の米国特許出願第15/945,473号、「前景/背景処理を使用した在庫イベントの予測」に示されており、これらの両方は本明細書に完全に記載されているかのように、参照により本明細書に組み込まれる。第2の画像プロセッサは、識別された背景変化を処理して、識別された被写体による在庫商品を取ることの検出、及び、識別された被写体による在庫陳列構造上の在庫商品を置くことの第2の検出セットを作成する。第2の検出セットは、在庫商品を置くこと及び取ることの背景検出とも呼ばれる。ショッピングストアの例では、第2の検出が、在庫位置から取られた在庫商品、または、顧客または店舗従業員によって在庫位置上に置かれた在庫商品を識別する。意味的差分抽出サブシステムは、識別された背景変化を識別された被写体に関連付けるロジックを含む。
【0102】
図9Aに記載されるシステムは、第1及び第2の検出セットを処理して、識別された被写体についての在庫商品のリストを含むログ・データ構造を生成するための選択ロジックを含む。実空間内の置くこと及び取ることのために、選択ロジックは、意味的差分抽出サブシステムまたは領域提案サブシステム908の何れかからの出力を選択する。一実施形態では、選択ロジックが、第1の検出セットについて意味的差分抽出サブシステムによって生成された信頼度スコアと、第2の検出セットについて領域提案サブシステムによって生成された信頼度スコアとを使用して、選択を行う。特定の検出に対するより高い信頼度スコアを有するサブシステムの出力が選択され、識別された被写体に関連付けられた在庫商品及びその数量のリストを含むログ・データ構造700(ショッピングカート・データ構造とも呼ばれる)を生成するために使用される。棚及び店舗在庫データ構造は、上述したように被写体のログ・データ構造を用いて更新される。
【0103】
被写体出口検出エンジン910は、顧客が出口ドアに向かって移動しているかどうかを判定し、信号を店舗在庫エンジン190に送信する。店舗在庫エンジンは、顧客のログ・データ構造700内の1以上の商品が第2または第3のイメージ・プロセッサによって判定された低識別信頼度スコアを有するかどうかを判定する。もし有する場合、在庫統合エンジンは、顧客によって購入された商品を確認するために、出口近くに位置する店舗従業員に通知を送る。被写体、在庫位置、及びショッピングストアの在庫データ構造は、在庫データベース160に記憶される。
【0104】
図9Bは、顧客在庫、在庫位置(例えば棚)在庫、及び、店舗在庫(例えば店舗全体)データ構造が、ショッピングストア内の顧客による商品を置くこと及び取ることを使用して更新される、システムの別のアーキテクチャを示す。
図9Aは、アーキテクチャ図であるため、説明の明確性を向上させるために、特定の詳細は省略されている。上述したように、システムは、複数の同期されたカメラ114から画像フレームを受信する。WhatCNN 914は、画像認識エンジンを使用して、実空間(ショッピングストア等)のエリア内の顧客の手の中にある商品を判定する。一実施形態では、カメラ114毎に1つのWhatCNNがあり、それぞれのカメラによって生成された画像フレームのシーケンスの画像処理を実行する。WhenCNN912は、WhatCNNの出力の時系列分析を実行して、置くまたは取るイベントを識別する。商品及び手の情報と共に在庫イベントがデータベース918に記憶される。次いで、この情報は、個人・商品属性コンポーネント920によって、顧客追跡エンジン110(上記では被写体追跡エンジン110とも呼ばれる)によって生成された顧客情報と組み合わされる。ショッピングストア内の顧客のログ・データ構造700は、データベース918に記憶された顧客情報をリンクすることによって生成される。
【0105】
開示される技術は、複数のカメラによって生成される画像のシーケンスを使用して、実空間のエリアからの顧客の離脱を検出する。顧客の離脱の検出に応答して、開示された技術は、顧客に起因する在庫イベントに関連する商品について、メモリ内の店舗在庫を更新する。出口検出エンジン910が、ショッピングストアからの顧客「C」の離脱を検出すると、ログ・データ構造922に示されるように顧客「C」によって購入された商品は店舗の在庫データ構造924と統合されて、更新された店舗在庫データ構造926を生成する。例えば、
図9Bに示されるように、顧客は2個の商品1と4個の商品3と1個の商品4を購入した。顧客のログ・データ構造922に示されるように顧客「C」によって購入されたそれぞれの商品の数量は店舗在庫924から差し引かれて、商品1の数量が48から46に減少し、同様に、商品3及び4の数量が顧客「C」によって購入された商品3及び商品4のそれぞれの数量のだけ減少したことを示す更新された店舗在庫データ構造926を生成する。顧客「C」は商品2を購入しなかったため、更新された店舗在庫データ構造926において、商品2の数量は、現在の店舗在庫データ構造924の以前のものと同じままである。
【0106】
一実施形態では、顧客の離脱検出は、また、顧客が商品を取り出した(ショッピングストアの棚等の)在庫位置の在庫データ構造の更新を始動させる。斯かる実施形態では、在庫位置の在庫データ構造は、上述したように、取るまたは置く在庫イベントの直後には更新されない。この実施形態では、システムが顧客の離脱を検出すると、顧客に関連付けられた在庫イベントがトラバースされ、在庫イベントをショッピングストア内のそれぞれの在庫位置にリンクする。この処理によって決定された在庫位置の在庫データ構造が更新される。例えば、顧客が在庫位置27から2個の商品1を取った場合、在庫位置27の在庫データ構造は、商品1の数量を2つ減らすことによって更新される。在庫商品は、ショッピングストア内の複数の在庫位置にストックされ得ることに留意されたい。システムは在庫イベントに対応する在庫位置を識別し、従って、商品が取り出される在庫位置が更新される。
[店舗リアログラム]
【0107】
ショッピングストアの在庫位置を含む、店舗内の実空間全体にわたる在庫商品の位置は、顧客が在庫位置から商品を取り出し、購入したくない商品を、商品が取り出された同じ棚上の同じ位置に戻すか、商品が取り出された同じ棚上の異なる場所に戻すか、または異なる棚上に置くときに、ある期間にわたって変化する。開示された技術は、複数のカメラ内の少なくとも2つのカメラによって生成された画像シーケンスを使用して、在庫イベントを識別し、在庫イベントに応答して、実空間のエリア内の在庫商品の位置を追跡する。幾つかの実施形態では、ショッピングストア内の商品は、特定の商品が配置されることが計画されている(棚等の)在庫位置を識別するプラノグラムに従って配置される。例えば、
図10の例示910に示すように、棚3及び棚4の左半分は、商品(缶の形状でストックされている)に指定されている。一日の始めまたは他の在庫追跡間隔(時間t=0によって識別される)で、プラノグラムに従って在庫位置がストックされると考える。
【0108】
開示される技術は、実空間のエリア内の在庫商品の位置のリアルタイム・マップである任意の時間「t」におけるショッピングストアの「リアログラム」を計算することができ、これは、幾つかの実施形態では更に、店舗内の在庫位置と相関させることができる。リアログラムは、在庫商品及び店舗内の位置を識別し、それらを在庫位置にマッピングすることによって、プラノグラムを作成するために使用することができる。一実施形態では、システムまたは方法が実空間のエリア内に座標を有する複数のセルを規定するデータセットを作成することができる。システムまたは方法は、実空間の座標に沿ったセルの長さを入力パラメータとして使用して、実空間を複数のセルを規定するデータセットに分割することができる。一実施形態では、セルは、実空間のエリア内に座標を有する2次元グリッドとして表される。例えば、セルは、
図10の例示960に示されるように、棚ユニット(在庫陳列構造とも呼ばれる)における在庫位置の前面図の2Dグリッド(例えば、1フィート間隔で)と相関することができる。各グリッドは、
図10に示すように、x座標やz座標のような2次元平面の座標上で、その開始位置と終了位置によって規定される。この情報は、マップ・データベース140に記憶される。
【0109】
別の実施形態では、セルが実空間のエリア内に座標を有する3次元(3D)グリッドとして表される。一例では、セルは、
図11Aに示すように、ショッピングストア内の棚ユニットの在庫位置(または在庫位置の一部)上の容積と相関することができる。この実施形態では、実空間のマップが、実空間のエリア内の在庫陳列構造上の在庫位置の部分と相関することができる容量の単位の構成を識別する。この情報は、マップ・データベース140に記憶される。店舗リアログラム・エンジン190は、在庫イベント・データベース150を使用して、時間「t」におけるショッピングストアのリアログラムを計算し、それをリアログラム・データベース170に格納する。ショッピングストアのリアログラムは、在庫イベント・データベース150に記憶された在庫イベントのタイムスタンプを使用することによって、任意の時間tにおいて、それらの位置によってセルにマッチングされた在庫イベントに関連付けられた在庫商品を示す。在庫イベントは、商品識別子、置くまたは取るインジケータ、実空間のエリアの3つの軸に沿った位置によって表される在庫イベントの位置、及び、タイムスタンプを含む。
【0110】
図11A中の例示は、t=0における1日目の始めに、第1の棚ユニット(列方向配列を形成する)における在庫位置の左側部分が「ケチャップ」ボトルを収納することを示す。セル(またはグリッド)の列は、図式的な視覚化において黒色で示され、セルは暗緑色等の他の色でレンダリングすることができる。他の全てのセルは空白のままであり、これらが商品を収納していないことを示す色で塗りつぶされていない。一実施形態では、リアログラム内のセル内の商品の視覚化は、店舗内の(セル内の)その位置を示す一度に1つの商品について生成される。別の実施形態では、リアログラムは、区別するために異なる色を使用して、在庫位置上の商品のセットの位置を表示する。斯かる実施形態では、セルがそのセルにマッチングする在庫イベントに関連付けられた幾つかの商品に対応する複数の色を有することができる。別の実施形態では、他の図式的な視覚化またはテキストベースの視覚化を使用して、セル内のSKUまたは名前を列挙すること等によって、セル内の在庫商品を示す。
【0111】
システムは、在庫イベントのそれぞれのカウントを使用して、特定のセルにマッチングする位置を有する在庫商品について、スコアリング時にSKUスコア(スコアとも呼ばれる)を計算する。セルに対するスコアの計算は、取ること及び置くことのタイムスタンプとスコアリング時との間の分離によって重み付けされた在庫商品を取ること及び置くことの合計を使用する。一実施形態では、スコアはSKU当たりの在庫イベントの加重平均である。他の実施形態では、SKU当たりの在庫イベントのカウント等、様々なスコアリング計算を使用することができる。一実施形態では、システムは、リアログラムを、複数のセル内のセル、及び、該セルのスコアを表す画像として表示する。例えば、
図11A内の例示として、スコアリング時t=1(例えば、1日後)を考える。時間t=1のリアログラムは、「ケチャップ」商品のスコアを黒色の異なる濃淡で表している。時間t=1の店舗リアログラムは、1番目の棚ユニットと2番目の棚ユニット(1番目の棚ユニットの後ろ)の4列全てが「ケチャップ」商品を収納している。「ケチャップ」ボトルのSKUスコアが高いセルは、「ケチャップ」ボトルのスコアが低いセルに比べて、濃い灰色でレンダリングされている。ケチャップのスコア値がゼロのセルは、空白のままではなく、色で塗りつぶされていない。従って、リアログラムは、時間t=1の後(例えば、1日後)に、ショッピングストア内の在庫位置上のケチャップボトルの位置に関するリアルタイム情報を提示する。リアログラムの生成頻度は、ショッピングストアの管理によって、その要求に応じて設定することができる。また、リアログラムは、店舗管理によってオンデマンドで生成することもできる。一実施形態では、リアログラムによって生成された商品位置情報が、誤配置された商品を識別するために、店舗プラノグラムと比較される。通知は、誤配置された在庫商品を、店舗のプラノグラムに示されるように、指定された在庫位置に戻すことができる店舗従業員に送信することができる。
【0112】
一実施形態では、システムが、複数のセル内のセル及び該セルのスコアを表す表示画像をレンダリングする。
図11Bは、ユーザ・インタフェース・ディスプレイ1102上に
図11Aのリアログラムがレンダリングされたコンピューティング・デバイスを示す。リアログラムは、タブレット、モバイル・コンピューティング・デバイス等の他のタイプのコンピューティング・デバイス上に表示することができる。システムは、セルを表す表示画像内において色の変化を使用して、セルのスコアを示すことができる。例えば、
図11Aでは、t=0で「ケチャップ」を収納するセルの列をその列の暗緑色のセルによって表すことができる。t=1では、「ケチャップ」ボトルがセルの1番目の列を越えて複数のセルに分散されている。システムは、セルのスコアを示すために、緑色の異なる濃淡を使用することによって、これらのセルを表すことができる。緑色の濃い色調はより高いスコアを示し、明るい緑色のセルはより低いスコアを示す。ユーザ・インタフェースには、生成されたその他の情報が表示され、機能を呼び出したり表示したりするためのツールが用意されている。
[店舗リアログラムの計算]
【0113】
図12は、他のタイプの在庫陳列構造に適合させ得る、時間tにおける実空間のエリア内における棚のリアログラムを計算するための処理ステップを提示するフローチャートである。処理はステップ1202で開始する。ステップ1204では、システムは、実空間のエリア内の在庫イベントを在庫イベント・データベース150から検索する。在庫イベント・レコードは、商品識別子、置くまたは取るインジケータ、実空間のエリアの3次元(x、y、及びz等)内の位置によって表される在庫イベントの位置、及びタイムスタンプを含む。置くまたは取るインジケータは、顧客(被写体とも呼ばれる) が商品を棚に置いたか、棚から商品を取り出したかを識別する。置くイベントはプラス在庫イベントとも呼ばれ、取るイベントはマイナス在庫イベントとも呼ばれる。ステップ1206において、在庫イベントは、被写体追跡エンジン110からの出力と組み合わされて、この在庫イベントに関連する被写体の手を識別する。
【0114】
このシステムは、在庫イベントに関連する被写体の手の位置(ステップ1206)を使用して、位置を決定する。幾つかの実施形態では、在庫イベントが、ステップ1208において、棚ユニットまたは在庫陳列構造において、最も近い棚、またはその他の可能性のある在庫位置とマッチングさせることができる。
図8のフローチャートにおける処理ステップ808は、手の位置に最も近い棚上の位置を決定するために使用され得る手法の詳細を示す。ステップ808中の手法で説明されているように、実空間内の点Eから平面上の任意の点P(xz平面上の棚の前面領域を表す)までの最短距離Dは、ベクトルPEを該平面に対する法線ベクトルn上に射影することによって決定され得る。平面に対するベクトルPEの交点は、手に対して棚上の最も近い点を与える。この点の位置は「ポイントクラウド」データ構造(ステップ1210)に、実空間のエリア内の点の3D位置、商品のSKU、及びタイムスタンプを含むタプルとして格納され、後の2つは、在庫イベント・レコードから取得される。在庫イベント・データベース150に在庫イベント・レコード(ステップ1211)が更に存在する場合、処理ステップ1204~1210が繰り返される。更に存在しない場合は、処理はステップ1214に進む。
【0115】
開示された技術は、実空間のエリア内に座標を有する複数のセルを規定するメモリに記憶されたデータセットを含む。セルは、座標軸に沿った開始位置及び終了位置によって境界付けられた実空間のエリアを規定する。実空間のエリアは、複数の在庫位置を含み、複数のセル内のセルの座標は、複数の在庫位置内の在庫位置と相関させることができる。開示された技術は、在庫イベントに関連する在庫商品の位置をセルの座標とマッチングさせ、複数のセル内のセルとマッチングされた在庫商品を表すデータを維持する。一実施形態では、システムは、在庫イベントの位置からデータセット内のセルまでの距離を計算し、計算された距離に基づいて在庫イベントをセルとマッチングさせるための手順(
図8のフローチャートのステップ808に記載されているように)を実行することによって、在庫イベントの位置に基づいてデータセット内の最も近いセルを決定する。イベント位置と最も近いセルとのこのマッチングは、ポイントクラウド・データが存在するセルを識別するポイントクラウド・データの位置を与える(ステップ1212)。一実施形態では、セルが、在庫陳列構造内の在庫位置(棚等)の部分にマッピングすることができる。従って、このマッピングを使用することによって、棚の部分も識別される。上述のように、セルは、実空間のエリアの2Dグリッドまたは3Dグリッドとして表すことができる。システムは、特定のセルにマッチングする位置を有する在庫商品についてスコアリング時にスコアを計算するロジックを含む。一実施形態では、スコアは在庫イベントのカウントに基づいている。この実施形態では、セルのスコアは、取ること及び置くことのタイムスタンプとスコアリング時との間の分離によって重み付けされた在庫商品を取ること及び置くことの合計を使用する。例えば、スコアは、SKU(SKUスコアとも呼ばれる)毎の加重移動平均とすることができ、セルにマッピングされた「ポイントクラウド」のデータ・ポイントを使用してセル毎に計算される:
【0116】
式(1)によって計算されるSKUスコアは、セル内のSKUの全てのポイントクラウドのデータ・ポイントのスコアの合計であり、各データ・ポイントは、置く及び取るイベントのタイムスタンプからの日数での時間のポイント_tによって重み付けされる。グリッド内の「ケチャップ」 商品に2つのポイントクラウドのデータ・ポイントがあるとする。第1のデータ・ポイントにはリアログラムが計算される時間「t」 の2日前にこの在庫イベントが発生したことを示すタイムスタンプがある。従って、ポイント_t の値は「2」 になる。第2のデータ・ポイントは時間「t」 の1日前に発生した在庫イベントに対応するため、ポイント_t は「1」 になる。(棚IDによって識別される棚にマッピングするセルIDによって識別される)セルのケチャップのスコアは、以下のように計算される:
【0117】
在庫イベントに対応するポイントクラウドのデータ・ポイントが古くなる(すなわち、イベントからより多くの日が経過する)につれて、SKUスコアに対するそれらの寄与は減少する。ステップ1216では、上位「N」個のSKUが、SKUスコアの最も高いセルに対して選択される。一実施形態では、システムは、スコアに基づいてセル毎の在庫商品のセットを選択するロジックを含んでいる。例えば、「N」の値は、SKUスコアに基づいてセル毎の上位10商品を選択するために10として選択することができる。本実施形態では、リアログラムがセル当たり上位10商品を記憶する。時間tにおける更新されたリアログラムが、ステップ1218において、時間tにおける棚内のセル当たりの上位「N」個のSKUを示すリアログラム・データベース170に記憶される。処理はステップ1220で終了する。
【0118】
別の実施形態では、開示された技術は、在庫イベントに対応する棚の部分におけるポイントクラウド・データを計算するために、マップ・データベース140に格納された棚の部分の2Dまたは3Dマップを使用しない。この実施形態では、ショッピングストアを表す3D実空間が3D立方体(例えば、1フィート立方体)として表されるセルに区分される。3Dの手の位置は、(3つの軸に沿ったそれぞれの位置を使用して)セルにマッピングされる。全ての商品に対するSKUスコアは、上述の式(1)を用いてセル毎に計算される。結果として得られるリアログラムは、店舗内の棚の位置を必要とせずに、店舗を表す実空間内のセル内の商品を示す。この実施形態では、ポイントクラウドのデータ・ポイントが、実空間内の座標上で在庫イベントに対応する手の位置と同じ位置にあってもよいし、或いは、手の位置に近いか、または手の位置を包含するエリア内のセルの位置にあってもよい。これは、棚のマップがない可能性があり、従って、手の位置が最も近い棚にマッピングされないためである。このため、この実施形態におけるポイントクラウドのデータ・ポイントは、必ずしも同一平面上にある必要はない。実空間における容積の単位(例えば、1立方フィート)内の全てのポイントクラウドのデータ・ポイントは、SKUスコアの計算に含まれる。
【0119】
幾つかの実施形態では、リアログラムが反復的に計算され、店舗内の活動の時刻分析のために使用されるか、または、店舗内の在庫商品の移動を経時的に表示するためのアニメーション(ストップモーション・アニメーションのような)を生成するために使用され得る。
[店舗リアログラムの応用例]
【0120】
店舗リアログラムは、ショッピングストアの多くの業務で使用することができる。リアログラムの幾つかの応用例を以下のパラグラフに示す。
[在庫商品の再ストック]
【0121】
図13Aは、在庫商品が在庫位置(棚等)に再ストックされる必要があるかどうかを決定するための店舗リアログラムの1つのそのような応用例を提示する。処理は、ステップ1302で開始する。ステップ1304で、システムは、リアログラム・データベース170からスコアリング時「t」でリアログラムを検索する。一例では、これは、つい最近に生成されたリアログラムである。リアログラム内の全てのセルのSKUスコアが、ステップ1306で閾値スコアと比較される。SKUスコアが閾値より上の場合(ステップ1308)、処理は、次の在庫商品「i」に対してステップ1304及び1306を繰り返す。プラノグラムを含む実施形態、または、プラノグラムが利用可能な場合では、商品「i」のSKUスコアが、プラノグラム内の在庫商品「i」の配置にマッチングするセルに対する閾値と比較される。別の実施形態では、在庫商品のSKUスコアが、「置く」在庫イベントをフィルタリングすることによって計算される。この実施形態では、SKUスコアは、閾値と比較し得るリアログラム内のセル当たりの在庫商品「i」の「取る」イベントを反映する。別の実施形態では、セル当たりの「取る」在庫イベントのカウントは、在庫商品「i」の再ストックを決定するための閾値と比較するためのスコアとして、使用することができる。この実施形態では、閾値は、在庫位置にストックされる必要がある在庫商品の最小カウントである。
【0122】
在庫商品「i」のSKUスコアが閾値未満である場合、在庫商品「i」を再ストックする必要があることを示す警告通知が、店長または他の指定された従業員に送信される(ステップ1310)。システムは、また、SKUスコアが閾値未満のセルを在庫位置とマッチングさせることによって、在庫商品を再ストックする必要のある在庫位置を識別することができる。他の実施形態では、システムは、ショッピングストアのストック・ルーム内の在庫商品「i」の在庫レベルをチェックして、在庫商品「i」を卸業者から注文する必要があるかどうかを判定することができる。処理は、ステップ1312で終了する。
図13Bは、在庫商品についての再ストック警告通知を表示する、例示的なユーザ・インタフェースを提示する。警告通知は、タブレット及びモバイル・コンピューティング・デバイス等の他のタイプのデバイスのユーザ・インタフェース上に表示することができる。警告は、電子メール、携帯電話上のSMS(ショート・メッセージ・サービス)、または、モバイル・コンピューティング・デバイスにインストールされたアプリケーションを保存するための通知を介して、指定された受信者に送信することもできる。
[誤配置された在庫商品]
【0123】
プラノグラムを含む実施形態では、または、店舗のプラノグラムが他の方法で利用可能である場合、プラノグラムのコンプライアンスのために、リアログラムが、誤配置された商品を識別することによって、プラノグラムと比較される。斯かる実施形態では、システムが、実空間のエリア内の在庫位置における在庫商品の配置を指定するプラノグラムを含む。システムは、複数のセル内のセルとマッチングする在庫商品を表すデータを維持するロジックを含む。システムは、セルとマッチングした在庫を表すデータを、プラノグラムで指定された在庫位置における在庫商品の配置と比較することによって、誤配置された商品を決定する。
図14は、リアログラムを使用してプラノグラムのコンプライアンスを判定するためのフローチャートを示す。処理はステップ1402で開始する。ステップ1404で、システムは、スコアリング時「t」で在庫商品「i」についてのリアログラムを検索する。リアログラム内の全てのセル内の在庫商品「i」のスコアが、プラノグラム内の在庫商品「i」の配置と比較される(ステップ1406)。リアログラムが、プラノグラム内の在庫商品「i」の配置とマッチングしないセルにおける閾値を超える在庫商品「i」に対するSKUスコアを示す場合(ステップ1408)、システムは、これらの商品を誤配置として識別する。プラノグラム内の在庫商品の配置とマッチングしない商品についての警告または通知が、誤配置された商品を現在の位置から取って、指定された在庫位置に置き戻すことができる店舗従業員に送信される(ステップ1410)。ステップ1408で、誤配置された商品が識別されない場合、処理ステップ1404及び1406が、次の在庫商品「i」について繰り返される。
【0124】
一実施形態では、店舗アプリが店舗マップ上に商品の位置を表示し、店舗従業員を誤配置された商品に導く。これに続いて、店舗アプリは店舗マップ上の商品の正しい位置を表示し、従業員を正しい棚の部分に導いて、商品を指定された位置に置くことができる。別の実施形態では、店舗アプリが、店舗アプリに入力されたショッピング・リストに基づいて、顧客を在庫商品に案内することもできる。店舗アプリは、リアログラムを使用して在庫商品のリアルタイム位置を使用し、顧客をマップ上の在庫商品に最も近い在庫位置に案内することができる。この例では、在庫商品の最も近い位置が、店舗のプラノグラムに従って在庫位置に配置されていない誤配置された商品の位置であり得る。
図14Bは、誤配置された在庫商品「i」の警告通知をユーザ・インタフェース・ディスプレイ1102上に表示する例示的なユーザ・インタフェースを示す。
図13Bで上述したように、この情報を店舗従業員に送信するために、様々なタイプのコンピューティング・デバイス及び警告通知メカニズムが使用できる。
[在庫商品予測精度の向上]
【0125】
リアログラムの別の応用例は、画像認識エンジンによる在庫商品の予測を改善することである。
図15のフローチャートは、リアログラムを使用して在庫商品予想を調整するための例示的な処理ステップを示す。処理は、ステップ1502で開始する。ステップ1504で、システムは、画像認識エンジンから商品「i」の予測信頼度スコア確率を受け取る。上述のように、WhatCNNは、被写体(または顧客)の手にある在庫商品を識別する例示的な画像認識エンジンである。WhatCNNが予測された在庫商品の信頼度スコア(または信頼値)確率を出力する。ステップ1506で、信頼度スコア確率が閾値と比較される。確率値が閾値を超え、予測のより高い信頼度を示す場合(ステップ1508)、処理は次の在庫商品「i」について繰り返される。そうでなく、信頼度スコア確率が閾値未満である場合は、処理はステップ1510に続く。
【0126】
スコアリング時「t」での在庫商品「i」のリアログラムは、ステップ1510において検索される。一例において、これは最新のリアログラムであってもよく、別の例においては、在庫イベント時と時間的にマッチングまたはより近いスコアリング時「t」におけるリアログラムが、リアログラム・データベース170から検索され得る。ステップ1512で、在庫イベントの位置における在庫商品「i」のSKUスコアが閾値と比較される。SKUスコアが閾値を上回る場合(ステップ1514)、画像認識による在庫商品「i」の予測を受け付ける(ステップ1516)。在庫イベントに関連付けられた顧客のログ・データ構造をそれに応じて更新する。在庫イベントが「取る」イベントである場合、在庫商品「i」を顧客のログ・データ構造に追加する。在庫イベントが「置く」イベントである場合、在庫商品「i」を顧客のログ・データ構造から除去する。SKUスコアが閾値を下回る場合(ステップ1514)、画像認識エンジンの予測は拒絶される(ステップ1518)。在庫イベントが「取る」イベントである場合、結果として、在庫商品「i」は顧客のログ・データ構造に追加されない。同様に、在庫イベントが「置く」である場合、結果として、 在庫商品「i」は顧客のログ・データ構造から除去されない。処理は、ステップ1520で終了する。別の実施形態では、在庫商品「i」のSKUスコアを使用して、商品予測信頼度スコアを決定するための画像認識エンジンに対する入力パラメータを調整することができる。畳み込みニューラル・ネットワーク(CNN)であるWhatCNNは、在庫商品を予測する画像認識エンジンの一例である。
[ネットワーク構成]
【0127】
図16は、ネットワーク・ノード106上でホストされる店舗リアログラム・エンジン190をホストするネットワークのアーキテクチャを示す。システムは、図示された実施形態では複数のネットワーク・ノード101a、101b、101n、及び102を含む。斯かる実施形態では、ネットワーク・ノードは処理プラットフォームとも呼ばれる。処理プラットフォーム(ネットワーク・ノード)103,101a~101n,及び102、並びに、カメラ1612,1614,1616,・・・1618は、ネットワーク1681に接続される。同様のネットワークは、ネットワーク・ノード104上でホストされる店舗在庫エンジン180をホストする。
【0128】
図13は、ネットワークに接続された複数のカメラ1612,1614,1616,・・・1618を示す。多数のカメラを特定のシステムに配備することができる。一実施形態では、カメラ1612~1618が、イーサネット(登録商標)ベースのコネクタ1622,1624,1626,及び1628をそれぞれ使用して、ネットワーク1681に接続される。斯かる実施形態では、イーサネット・ベースのコネクタがギガビット・イーサネットとも呼ばれる1ギガビット/秒のデータ転送速度を有する。他の実施形態では、カメラ114がギガビット・イーサネット(登録商標)よりも高速または低速のデータ転送速度を有することができる他のタイプのネットワーク接続を使用してネットワークに接続されることを理解されたい。また、代替の実施形態では、1組のカメラを各処理プラットフォームに直接接続することができ、処理プラットフォームをネットワークに結合することができる。
【0129】
記憶サブシステム1630は、本発明の特定の実施形態の機能を提供する基本的なプログラミング及びデータ構成を記憶する。例えば、店舗リアログラム・エンジン190の機能を実施する様々なモジュールを、記憶サブシステム1630に格納することができる。記憶サブシステム1630は、非一時的データ記憶媒体を備えるコンピュータ可読メモリの一例であり、本明細書で説明される処理によって実空間のエリアのリアログラムを計算するロジックを含む、本明細書で説明されるデータ処理機能及び画像処理機能の全てまたは任意の組み合わせを実行するための、コンピュータによって実行可能なメモリに記憶されるコンピュータ命令を備える。他の例では、コンピュータ命令は、コンピュータ可読の非一時的データ記憶媒体または媒体を含む、携帯用メモリを含む他のタイプのメモリに記憶することができる。
【0130】
これらのソフトウェア・モジュールは一般に、プロセッサ・サブシステム1650によって実行される。ホスト・メモリ・サブシステム1632は、通常、プログラム実行中の命令及びデータの記憶のためのメイン・ランダム・アクセス・メモリ(RAM)1634と、固定命令が記憶される読み出し専用メモリ(ROM)1636とを含む幾つかのメモリを含む。一実施形態では、RAM 1634が店舗リアログラム・エンジン190によって生成されたポイントクラウド・データ構造タプルを格納するためのバッファとして使用される。
【0131】
ファイル記憶サブシステム1640は、プログラム及びデータ・ファイルのための永続的記憶を提供する。例示的な一実施形態では、記憶サブシステム1640が、番号1642によって識別されるRAID0(独立ディスクの冗長配列)構成内に4つの120ギガバイト(GB)ソリッド・ステート・ディスク(SSD)を含む。該例示的な実施形態では、マップ・データベース140内のデータ、在庫イベント・データベース150内の在庫イベント・データ、在庫データベース160内の在庫データ、及びRAMにないリアログラム・データベース170内のリアログラム・データが、RAID0に記憶される。該例示的な実施形態では、ハードディスク・ドライブ1646はRAID0 1642ストレージよりもアクセス速度が遅い。ソリッド・ステート・ディスク(SSD)1644は、店舗リアログラム・エンジン190のためのオペレーティング・システム及び関連ファイルを含む。
【0132】
例示的な構成では、4つのカメラ1612,1614,1616,1618が、処理プラットフォーム(ネットワーク・ノード)103に接続される。各カメラは、カメラによって送られた画像を処理するために、専用グラフィックス処理ユニットGPU1 1662,GPU2 1664,GPU3 1666,及びGPU4 1668を有する。1つの処理プラットフォームにつき、3つより少ないまたは多いカメラを接続することができると理解される。従って、各カメラが、カメラから受信した画像フレームを処理するための専用GPUを有するように、より少ないまたはより多いGPUがネットワーク・ノード内に構成される。プロセッサ・サブシステム1650、記憶サブシステム1630、及びGPU1662,1664、及び1666は、バス・サブシステム1654を使用して通信する。
【0133】
ネットワーク・インタフェース・サブシステム1670は、処理プラットフォーム(ネットワーク・ノード)104の一部を形成するバス・サブシステム1654に接続される。ネットワーク・インタフェース・サブシステム1670は、他のコンピュータ・システムにおける対応するインタフェース・デバイスへのインタフェースを含む、外部ネットワークへのインタフェースを提供する。ネットワーク・インタフェース・サブシステム1670は、ケーブル(または配線)を使用して、またはワイヤレスで、処理プラットフォームがネットワークを介して通信することを可能にする。ユーザ・インタフェース出力デバイス及びユーザ・インタフェース入力デバイスのような幾つかの周辺デバイスも、処理プラットフォーム104の一部を形成するバス・サブシステム1654に接続されている。これらのサブシステム及びデバイスは、説明の明確性を改善するために、
図13には意図的に示されていない。バス・サブシステム1654は、単一のバスとして概略的に示されているが、バス・サブシステムの代わりの実施形態は複数のバスを使用することができる。
【0134】
一実施形態では、カメラ114が、1288×964の解像度、30FPSのフレームレート、及び1.3メガピクセル/イメージで、300mm~無限大の作動距離を有する可変焦点レンズ、98.2°~23.8°の1/3インチセンサによる視野を有するChameleon3 1.3 MP Color USB3 Vision(Sony ICX445)を使用して実装することができる。
【0135】
本明細書に記載された技術は、また、在庫陳列構造を含む実空間のエリア内の在庫商品を追跡するためのシステムを含み、対応する方法及びコンピュータ・プログラム製品と共に、在庫陳列構造の上方に配置された複数のカメラまたはその他のセンサと、実空間内の対応する視野内の在庫陳列構造のそれぞれの画像シーケンスを生成する複数のセンサ内のセンサと、但し、各センサの視野は、複数のセンサ内の少なくとも1つの他のセンサの視野と重なり合っており、データセットを記憶するメモリと、但し、該データセットは実空間のエリア内の座標を有する複数のセルを規定し、複数のセンサに結合され処理システムとを備え、該処理システムは、複数のセンサによって生成された画像シーケンスを処理して、実空間のエリア内の3次元における在庫イベントの位置を見つけ、在庫イベントに応答して、在庫イベントの位置に基づいてデータセット内の最も近いセルを決定するロジックを含み、該処理システムは、在庫イベントのそれぞれのカウントを使用して特定のセルにマッチングする位置を有する在庫イベントと関連する在庫商品について、スコアリング時にスコアを計算するロジックを含む。システムは、スコアに基づいてセル毎の在庫商品のセットを選択するロジックを含むことができる。在庫イベントは、商品識別子、置くまたは取るインジケータ、実空間のエリアの3つの軸に沿った位置によって表される位置、及びタイムスタンプを含むことができる。システムは、実空間のエリア内に座標を有する2次元グリッドとして表される複数のセルを規定するデータセットを含むことができ、セルは在庫位置の前面図の部分と相関し、処理システムは、在庫イベントの位置に基づいて最も近いセルを決定するロジックを含む。システムは、実空間のエリア内に座標を有する3次元グリッドとして表される複数のセルを規定するデータセットを含むことができ、セルは在庫位置上の容積の部分と相関し、処理システムは、在庫イベントの位置に基づいて最も近いセルを決定するロジックを含む。置くインジケータは商品が在庫位置に置かれたことを識別することができ、置くインジケータは、商品が在庫位置から取り出されたことを識別する。複数のセンサによって生成された画像シーケンスを処理するロジックは、手に対応する画像内の要素を表すデータセットを生成する画像認識エンジンを備え、少なくとも2つのセンサからの画像シーケンスからのデータセットの分析を実行して、3次元における在庫イベントの位置を判断することができる。画像認識エンジンは、畳み込みニューラル・ネットワークを含むことができる。セルのスコアを計算するロジックは、置くこと及び取ることのタイムスタンプとスコアリング時との間の分離によって重み付けされた在庫商品の置くこと及び取ることの合計を使用し、スコアをメモリに記憶することができる。在庫イベントの位置に基づいてデータセット内の最も近いセルを決定するロジックは、在庫イベントの位置からデータセット内のセルまでの距離を計算することと、計算された距離に基づいて在庫イベントをセルとマッチングさせることとを含む手順を実行することができる
【0136】
上述または上記で参照された任意のデータ構造及びコードは、多くの実施態様に従って、コンピュータ・システムによって使用されるコード及び/またはデータを記憶することができる任意のデバイスまたは媒体であり得る、非一時的なコンピュータ可読記憶媒体を含むコンピュータ可読メモリに記憶される。これには、揮発性メモリ、不揮発性メモリ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲートアレイ(FPGA)、ディスク・ドライブ、磁気テープ、CD(コンパクトディスク)、DVD(デジタル・バーサタイル・ディスクまたはデジタル・ビデオ・ディスク)等の磁気及び光記憶デバイス、または、現在知られているまたは今後開発されるコンピュータ可読媒体を記憶することができる他の媒体が含まれるが、これらに限定されない。
【0137】
先行する説明は、開示された技術の使用及び実施を可能にするために提示されている。開示された実施態様に対する種々の変形は明らかであり、本明細書で規定された原理は、開示された技術の趣旨及び範囲から逸脱することなく、他の実施態様及び応用例に適用され得る。従って、開示された技術は、示された実施態様に限定されることを意図するものではなく、本明細書で開示された原理及び特徴と一致する最も広い範囲が与えられるべきである。開示される技術の範囲は、添付の特許請求の範囲によって規定される。