(57)【要約】      （修正有）【課題】ビデオのビデオセグメントを１又は複数のブローカへトピックに基づき配信し、該トピックに関連付けられた分散コミットログにビデオセグメントを格納するシステム及び方法を提供する。【解決手段】ビデオ処理アプリケーションは、ビデオをフラグメントに分解し、フラグメントに関連付けられた識別子に基づきフラグメントをトピックにグループ分けし、フラグメントをセグメントシーケンスに分割し、トピックに基づきセグメントシーケンスを１又は複数のブローカへ配信し、セグメントシーケンスのシーケンス順序を保存しながら、１又は複数のブローカによりトピックに関連付けられたセグメントシーケンスを分散コミットログに格納する。【選択図】図８
2018148560.tif 000002
【特許請求の範囲】
【請求項１】
ビデオをフラグメントに分解するステップと、
前記フラグメントをセグメントシーケンスに分割するステップと、
前記セグメントシーケンスのシーケンス順序を保存しながら、前記セグメントシーケンスを分散コミットログに書き込むステップと、
を有するコンピュータにより実施される方法。
【請求項２】
センサからセンサデータを受信するステップと、
前記センサデータから制御シーケンスを決定するステップと、
前記分散コミットログに書き込むために、前記制御シーケンスに基づき前記セグメントシーケンスのサブセットを選択するステップと、
を更に有する請求項１に記載のコンピュータにより実施される方法。
【請求項３】
前記センサは、ＷｉＦｉセンサ、Ｂｌｕｅｔｏｏｔｈ(登録商標)センサ、深さセンサ、又はキャプチャ装置のうちの１つである、請求項２に記載のコンピュータにより実施される方法。
【請求項４】
前記フラグメントに関連付けられた識別子に基づき、前記フラグメントをトピックにグループ分けするステップであって、前記セグメントシーケンスを前記分散コミットログに書き込むステップは、前記トピックに基づく、ステップ、を更に有する請求項１に記載のコンピュータにより実施される方法。
【請求項５】
前記フラグメントを前記トピックにグループ分けするステップは、キャプチャ装置からの前記ビデオの前記フラグメントを前記キャプチャ装置に関連付けられたトピックにグループ分けするステップを有する、請求項４に記載のコンピュータにより実施される方法。
【請求項６】
前記フラグメントを前記トピックにグループ分けするステップは、前記ビデオを表す単一のフラグメントを単一のトピックに割り当てるステップを有する、請求項４に記載のコンピュータにより実施される方法。
【請求項７】
トピックをパーティションに分割するステップであって、前記セグメントシーケンスを前記分散コミットログに書き込むステップは、前記パーティションに更に基づく、ステップ、を更に有する請求項４に記載のコンピュータにより実施される方法。
【請求項８】
ユーザからクエリを受信するステップと、
前記クエリに応答して、前記のセグメントを識別し前記分散コミットログに書き込むステップと、
を更に有する請求項１に記載のコンピュータにより実施される方法。
【請求項９】
１又は複数のプロセッサと、
メモリと、
を有し、
前記メモリは、命令を格納し、該命令は、実行されると、前記１又は複数のプロセッサに、
ビデオをフラグメントに分解させ、
前記フラグメントをセグメントシーケンスに分割させ、
前記セグメントシーケンスのシーケンス順序を保存しながら、前記セグメントシーケンスを分散コミットログに書き込ませる、
システム。
【請求項１０】
前記命令は、前記１又は複数のプロセッサに、さらに、
センサからセンサデータを受信させ、
前記センサデータから制御シーケンスを決定させ、
前記分散コミットログに書き込むために、前記制御シーケンスに基づき前記セグメントシーケンスのサブセットを選択させる、
請求項９に記載のシステム。
【請求項１１】
前記センサは、ＷｉＦｉセンサ、Ｂｌｕｅｔｏｏｔｈ（登録商標）センサ、深さセンサ、又はキャプチャ装置のうちの１つである、請求項１０に記載のシステム。
【請求項１２】
前記命令は、さらに、前記１又は複数のプロセッサに、
前記フラグメントに関連付けられた識別子に基づき、前記フラグメントをトピックにグループ分けさせ、
前記トピックに基づき、前記セグメントシーケンスを前記分散コミットログに書き込ませる、
請求項９に記載のシステム。
【請求項１３】
前記フラグメントを前記トピックにグループ分けするために、前記命令は、前記１又は複数のプロセッサに、キャプチャ装置からの前記ビデオの前記フラグメントを前記キャプチャ装置に関連付けられたトピックにグループ分けさせる、請求項１２に記載のシステム。
【請求項１４】
前記命令は、前記１又は複数のプロセッサに、
トピックをパーティションに分割させ、
前記パーティションに基づき、前記セグメントシーケンスを前記分散コミットログに書き込ませる、
請求項１２に記載のシステム。
【請求項１５】
前記命令は、前記１又は複数のプロセッサに、
ユーザからクエリを受信させ、
前記クエリに応答して、前記のセグメントを識別し前記分散コミットログに書き込ませる、
請求項９に記載のシステム。
【請求項１６】
コンピュータ可読プログラムを格納する非一時的コンピュータ可読媒体を有するコンピュータプログラムプロダクトであって、前記コンピュータ可読プログラムは、実行されると、コンピュータに、
ビデオをフラグメントに分解させ、
前記フラグメントをセグメントシーケンスに分割させ、
前記セグメントシーケンスのシーケンス順序を保存しながら、前記セグメントシーケンスを分散コミットログに書き込ませる、
コンピュータプログラムプロダクト。
【請求項１７】
前記コンピュータ可読プログラムは、前記コンピュータに、
センサからセンサデータを受信させ、
前記センサデータから制御シーケンスを決定させ、
前記分散コミットログに書き込むために、前記制御シーケンスに基づき前記セグメントシーケンスのサブセットを選択させる、
請求項１６に記載のコンピュータプログラムプロダクト。
【請求項１８】
前記センサは、ＷｉＦｉセンサ、Ｂｌｕｅｔｏｏｔｈ（登録商標）センサ、深さセンサ、又はキャプチャ装置のうちの１つである、請求項１７に記載のコンピュータプログラムプロダクト。
【請求項１９】
前記コンピュータ可読プログラムは、前記コンピュータに、
前記フラグメントに関連付けられた識別子に基づき、前記フラグメントをトピックにグループ分けさせ、
前記トピックに基づき、前記セグメントシーケンスを前記分散コミットログに書き込ませる、
請求項１６に記載のコンピュータプログラムプロダクト。
【請求項２０】
前記フラグメントを前記トピックにグループ分けするために、前記コンピュータ可読プログラムは、前記コンピュータに、キャプチャ装置からの前記ビデオの前記フラグメントを前記キャプチャ装置に関連付けられたトピックにグループ分けさせる、請求項１９に記載のコンピュータプログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の参照］
本願は、参照により全体が組み込まれる米国出願番号代１５／４４７，４１６、２０１７年３月２日出願、名称「Decomposition  of  a  Video  Stream  into  Salient  Fragments」の一部継続出願であり、その優先権を主張する。
【０００２】
［技術分野］
本願明細書は、概して、ビデオストリームの処理に関する。特に、本願明細書は、ビデオのビデオセグメントを１又は複数の消費者へトピック及び該トピックに関連付けられた分散コミットログに基づき配信するシステム及び方法に関する。
【背景技術】
【０００３】
従来、ビデオ信号の切り換えに基づき、ビデオ信号を限られたモニタセットへ送信するために、カメラを用いてビデオ監視が実行されてきた（例えば、有線テレビシステム）。デジタル時代への移行に伴い、ビデオ管理システム（video  management  systems：ＶＭＳ）又はデジタルビデオレコーダは、ビデオストリームを配信し及びビデオ解析を提供するが、ビデオ監視の枠組みは同じままである。ビデオ解析は、例えば、時間的及び空間的イベントを検出し及び決定するために、ビデオを自動的に分析する能力であり得る。しかしながら、ビデオストリームを配信するための有力な枠組みは、接続型のままであり、カメラから記憶装置及びディスプレイにビデオをルーティングすることを主な関心事としている。その結果、産業により提供されるビデオ解析は、今のところモノリシックアーキテクチャに従う。
【０００４】
機能的に区別可能な解析タスク（例えば、データ入力及び出力、データ処理、エラー処理、及びユーザインタフェース）が織り混ざりサブタスクに分けられないので、現在のビデオ解析アーキテクチャは、モノリシックである。あまりモノリシックではないアーキテクチャを得るための１つの方法は、エッジ解析である。これは、カメラ側又はカメラの近くで１又は複数の分析を実行させる。エッジ解析は、分散解析の形式であり得るが、それ自体のこの特性は分離可能な設計を保証しない。別のソリューションは分散システムであり得る。分散システムは、システムコンポーネントがネットワーク化されたコンピュータに配置され及び機能を実行するために互いに通信可能であるという意味で分散されて良い。しかしながら、増大するコンポーネント数又は増大するタスク複雑性に伴い拡張することが困難であるので、分散システムはモノリシックである。例えば、伝統的な電話交換システムは、拡張及び維持することが困難な分散システムであった。
【０００５】
現在のＶＭＳシステムは、幾つかの他の問題を有する。例えば、標準的な監視システムは、施設内にあるかクラウド内にあるかに拘わらず、コアアナライザを含むだけである。さらに、現在の監視製品は、特定のシステム展開、つまり、同じＬＡＮ又はインターネット内に展開された多くのカメラを扱うために多くのベンダがサーバ、スイッチ、及び記憶装置を販売する、企業のようなシステムを指示する。その結果、これらの監視製品を用いるビデオ解析は、サイト内のビデオストリーム数に対応するだけである。さらに重要なことに、一般的な枠組みは、「多数のカメラを備える少数の場所」の監視配置を重視するが、「少数のカメラを備える多数の場所」は十分なサービスを受けていない。
【発明の概要】
【０００６】
本願明細書で紹介される技術は、トピックに関連付けられた分散コミットログの使用を通じて該トピックに基づき１又は複数の消費者にビデオのビデオセグメントを配信するシステム及び方法により、従来技術の欠点及び制限を少なくとも部分的に克服する。一実施形態では、システムは、１又は複数のプロセッサと、命令を格納するメモリと、を有し、該命令は、実行されると、前記１又は複数のプロセッサに、ビデオをフラグメントに分解させる。命令は、さらに、前記１又は複数のプロセッサに、前記フラグメントをセグメントシーケンスに分割させ、前記セグメントシーケンスのシーケンス順序を保護しながら、前記セグメントシーケンスを分散コミットログに書き込ませる。
【０００７】
他の態様は、上述の及び他の新規な態様のための対応する方法、システム、装置及びコンピュータプログラムを有する。
【０００８】
本願明細書に記載される特徴及び利点は網羅的ではなく、図面及び説明を参照して多くの追加の特徴及び利点が当業者に明らかになるだろう。さらに、留意すべき点は、本願明細書で用いられる語は、基本的に読み易さ及び説明的目的で選択されており、記載の技術の範囲を制限しない。
【図面の簡単な説明】
【０００９】
ここで紹介する技術は、例を用いて説明され、添付の図面に限定されるものではない。図中、同様の参照符号は同様の要素を表すために用いられる。
【図１】トピックに関連付けられた分散コミットログの使用を通じて、該トピックに基づき、１又は複数の消費者にビデオのビデオセグメントを配信するシステムの一実施形態を示す上位ブロック図を示す。
【図２Ａ】ビデオ処理アプリケーションを有する接続ボックスの一実施形態を示すブロック図を示す。
【図２Ｂ】ブローカを有する接続ボックスの一実施形態を示すブロック図を示す。
【図３Ａ】例示的なコミットログの図式表現を示す。
【図３Ｂ】例示的なコミットログの図式表現を示す。
【図３Ｃ】ビデオフラグメントをセグメント化し及びセグメントを対応するトピックに発行する方法の一実施形態を示すブロック図を示す。
【図４】１又は複数のブローカを含むローカルクラスタの図式表現を示す。
【図５】分散コミットログからデータを読み出し要求側ユーザに該データを提供する方法の一実施形態を示すブロック図を示す。
【図６Ａ】ユーザの存在を検出すると、ユーザ相互作用のビデオコンテンツを提供する服属構造の一実施形態を示すブロック図を示す。
【図６Ｂ】ゲーティング動作を示すブロック図を示す。
【図７】異なる目的でビデオコンテンツを提供する服属構造の一実施形態を示すブロック図を示す。
【図８】ビデオのビデオセグメントを１又は複数のブローカへトピックに基づき配信し、及び該トピックに関連付けられた分散コミットログにビデオセグメントを格納する方法の一実施形態を示すフロー図を示す。
【図９】ユーザからのクエリに応答して、該ユーザにビデオコンテンツを提供する方法の実施形態を示すフロー図を示す。
【図１０】服属構造においてビデオコンテンツを提供する方法の実施形態を示すフロー図を示す。
【発明を実施するための形態】
【００１０】
図１は、トピックに関連付けられた分散コミットログの使用を通じて、該トピックに基づき、１又は複数の消費者にビデオのビデオセグメントを配信するシステム１００の一実施形態を示す上位ブロック図を示す。図示のシステム１００は、コンピューティング装置１０１、キャプチャ装置１０７ａ．．．１０７ｎ、スマートキャプチャ装置１２３、センサ１１３、クライアント装置１１５、及びビデオサーバ１２１を有する。図示の実施形態では、コンピューティング装置１０１、キャプチャ装置１０７ａ．．．１０７ｎ、スマートキャプチャ装置１２３、及びセンサ１１３は、ＬＡＮ（local  area  network）内で接続され、さらにネットワーク１０５を介してシステム１００の他のエンティティに通信可能に結合される。固定数のキャプチャ装置、センサ、コンピューティング装置、スマートキャプチャ装置、クライアント装置、及びビデオサーバが図１に示されるが、任意の数のこのようなエンティティが存在して良いことが理解されるべきである。また、このようなエンティティは、任意の数のネットワーク及び／又はＬＡＮにより接続され得る。さらに、図１及び残りの図では、参照符号の後の文字、例えば「１０７ａ」は、特定の参照符号を有する要素への参照を表す。文章中の、後続の文字を有しない参照符号、例えば「１０７」は、その参照符号を付された要素の任意の又は全ての例への全般的な参照を表す。
【００１１】
ネットワーク１０５は、従来型の有線又は無線であり、スター構成、トークンリング構成若しくは他の構成を含む多数の異なる構成を有しても良い。さらに、ネットワーク１０５は、ＬＡＮ（local  area  network）、ＷＡＮ（wide  area  network）（例えば、インターネット）、及び／又は複数の装置が通信できる他の相互接続されたデータ経路を有して良い。幾つかの実施形態では、ネットワーク１０５は、ピアツーピアネットワークであって良い。ネットワーク１０５は、種々の異なる通信プロトコルでデータを送信する通信ネットワークの一部に結合され又はそれを含んで良い。幾つかの実施形態では、ネットワーク１０５は、Ｂｌｕｅｔｏｏｔｈ（登録商標）通信ネットワーク又はＳＭＳ（short  messaging  service）、ＭＭＳ（multimedia  messaging  service）、ＨＴＴＰ（hypertext  transfer  protocol）、直接データ接続、ＷＡＰ、電子メール等を介することを含むデータを送信及び受信するセルラ通信ネットワークを有して良い。
【００１２】
クライアント装置１１５は、プロセッサ、メモリ、アプリケーション、データベース及びネットワーク通信能力を有するコンピューティング装置である。例えば、クライアント装置１１５は、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、携帯電話機、ＰＤＡ（personal  digital  assistant）、モバイル電子メール装置、１又は複数のプロセッサを埋め込まれた又はそれに結合されたテレビジョン、又はネットワーク１０５にアクセスしビデオサーバ１２１、キャプチャ装置１０７、スマートキャプチャ装置１２３、センサ１１３、又はコンピューティング装置１０１と通信することの可能な任意の他の電子装置であり得る。幾つかの実施形態では、クライアント装置１１５は、本願明細書に記載の機能を提供するために、ネットワーク１０５を介してシステム１００の他のエンティティと通信する。例えば、クライアント装置１１５は、ビデオコンテンツについての要求を送信する。要求に応答して、コンピューティング装置１０１又はスマートキャプチャ装置１２３は、ビデオコンテンツを発行し、ビデオコンテンツをクライアント装置１１５へビデオサーバ１２１を介して提供する。さらに、クライアント装置１１５は、ユーザにビデオを提示し、ユーザからビデオの部分に関するユーザ入力を受信する。
【００１３】
幾つかの実施形態では、クライアント装置１１５は、ブラウザ１１７を有する。ブラウザ１１７は、クライアント装置１１５にアクセスするユーザのためにコンテンツを特定し、読み出し、及び表示するクライアント装置１１５上で実行するアプリケーションである。例えば、ブラウザ１１７は、ユーザのビデオコンテンツ要求に応答して、ユーザに表示するために、ビデオサーバ１２１と通信して、ＨＴＴＰ  ＧＥＴ要求を用いてビデオサーバ１２１からビデオコンテンツをプルして良い。
【００１４】
ビデオサーバ１２１は、ハードウェアサーバ、ソフトウェアサーバ、又はハードウェアとソフトウェアとの組合せであって良い。ビデオサーバ１２１は、プロセッサ、メモリ、アプリケーション、データベース及びネットワーク通信能力を有するコンピューティング装置であって良く、又はそれにより実装されて良い。ビデオサーバ１２１は、本願明細書に記載の機能を実行するために、ネットワーク１０５を介してシステム１００の他のエンティティと通信する。幾つかの実施形態では、ビデオサーバ１２１は、コンピューティング装置１０１又はスマートキャプチャ装置１２３からビデオコンテンツを読み出し、ビデオコンテンツのフォーマットを変換し、ユーザに変換済みビデオコンテンツを提供する。例えば、ビデオサーバ１２１は、ＤＡＳＨ（dynamic  adaptive  streaming  over  HTTP）サーバ又はＨＬＳ（HTTP  live  streaming）サーバであって良い。ビデオサーバ１２１は、ビデオのセグメントについてコンピューティング装置１０１又はスマートキャプチャ装置１２３に格納されたコミットログをリードし、ＭＰＥＧ−ＤＡＳＨ（ＤＡＳＨ）又はＨＬＳ標準に従い適応ビットレートストリーミングのためにビデオコンテンツを準備する。ビデオサーバ１２１は、クライアント装置１１５にアクセスするユーザに表示するために準備したビデオコンテンツを送信するために、クライアント装置１１５と通信する。ビデオセグメントのコミットログは、図２Ａ及び２Ｂを参照して以下に説明される。
【００１５】
図示の実施形態では、コンピューティング装置１０１、キャプチャ装置１０７、スマートキャプチャ装置１２３、及びセンサ１１３は、ＬＡＮ内で互いに通信する。他の実施形態では、種々のコンピューティング装置１０１、キャプチャ装置１０７、スマートキャプチャ装置１２３、及びセンサは、複数のＬＡＮ（図示しない）により接続されて良い。同じＬＡＮ又は異なるＬＡＮ上に位置するコンピューティング装置１０１、キャプチャ装置１０７、スマートキャプチャ装置１２３、及びセンサ１１３も、ネットワーク１０５を介してビデオサーバ１２１及びクライアント装置１１５に通信可能に結合される。
【００１６】
キャプチャ装置１０７は、ビデオをキャプチャし該ビデオにメタデータを関連付けるハードウェア装置である。例えば、キャプチャ装置１０７は、デジタルビデオカメラ、ウェブカメラ、ＩＰカメラ、等であり得る。キャプチャ装置１０７によりキャプチャされるビデオは、時間に関連した画像の任意のシリーズであり得る。キャプチャ装置１０７は、メタデータ、例えばビデオがキャプチャされた時間及び場所、画像サイズ、画像解像度、色の深み、フレームレート、等をビデオに関連付ける。
【００１７】
スマートキャプチャ装置１２３は、アプリケーションを呼び出し、ソフトウェアプログラムを実行し、又は他の解析ロジックを実行することの可能なキャプチャ装置１０７と同様のキャプチャ装置である。例えば、スマートキャプチャ装置１２３は、キャプチャされたビデオに対して画像認識を実行するために、ビデオ処理アプリケーションを実行して良い。幾つかの実施形態では、スマートキャプチャ装置１２３は、後述するビデオ処理アプリケーション１０３及びブローカ１０９を実行するコンピューティング装置１０１のビデオ処理機能を実行する。
【００１８】
センサ１１３は、物理環境からの入力を検出し及びそれに応答するハードウェア装置である。センサ１１３は、物理環境に関する情報又は信号を提供するためにＬＡＮ及び／又はネットワーク１０５に結合される。図１に示されないが、上述のように、単一のセンサ、一連のセンサ、又はセンサのグリッド若しくはアレイが、異なるＬＡＮ内に配置され、ネットワーク１０５に結合されて良い。センサは、ユーザの位置及び方向を検出するビーコンであり得る。例えば、センサは、ＧＰＳ（global  positioning  system）センサ、Ｗｉ−Ｆｉセンサ、微小電子機械システム（micro  electro  mechanical  system：ＭＥＭＳ）センサ、Ｂｌｕｅｔｏｏｔｈ（登録商標）低エネルギ（Bluetooth（登録商標）  low  energy：ＢＬＥ）ビーコンのようなＢｌｕｅｔｏｏｔｈ（登録商標）ビーコン、超音波ビーコン、深さセンサ、ビデオカメラ、セルラ測位を用いるセンサ、近距離通信、ビデオ位置特定、及び他の測位技術であって良い。他の種類のセンサは、限定ではなく、ジャイロスコープのような動きセンサ、近接センサ、無線周波数（ＲＦ）検出器、加速度計、周囲光センサ、熱センサ、生体センサ、等を含んで良い。
【００１９】
コンピューティング装置１０１は、ビデオストリームに対してビデオ解析を実行するハードウェア装置／サーバである。幾つかの実施形態では、コンピューティング装置１０１は、ビデオ解析を実行するためにビデオストリームを受信するために、キャプチャ装置１０７に接続する。幾つかの実施形態では、コンピューティング装置１０１は、単一のキャプチャ装置に接続し、又は複数のキャプチャ装置に接続する。コンピューティング装置１０１は、付属のキャプチャ装置１０７から入力ビデオストリームを受信し、入力ビデオストリームを処理することに基づき、出力コンテンツ、例えば後述のような選択されたビデオセグメントを生成する。
【００２０】
幾つかの実施形態では、コンピューティング装置１０１は、コンテンツ管理、展開管理、等のためにビデオ解析を実行するために、アプリケーションを呼び出し、ソフトウェアプログラムを実行することができる。例えば、コンピューティング装置１０１は、識別、相関、集約、フィルタリング、及びサンプリング、等に基づきビデオコンテンツを管理するために、アプリケーションを使用して良い。コンピューティング装置１０１は、ビデオストリームから特徴を識別し、該特徴に基づきビデオストリームからオブジェクトを認識し、及び豊かなビデオコンテンツを生成するためにビデオストリームの部分を選択して良い。コンピューティング装置１０１は、ビデオストリームの品質を向上するために拡張プログラムを実行しても良い。別の例では、コンピューティング装置１０１は、記録から発行までのワークフローを自動化することにより、つまり、ビデオレコードを取得するために適切なソース（例えば、特定のキャプチャ装置）を自動的に識別し、ビデオレコードから得たビデオコンテンツを発行すべき適切な宛先（例えば、トピック）にルーティングすることにより、展開管理のためのソリューションを提供できる。
【００２１】
幾つかの実施形態では、コンピューティング装置１０１及び／又はスマートキャプチャ装置１２３は、ビデオ処理アプリケーション１０３及びブローカ１０９を含む。幾つかの実施形態では、ビデオ処理アプリケーション１０３及びブローカ１０９は、プログラマブル又は専用ハードウェアを用いて実装され得る。幾つかの実施形態では、ビデオ処理アプリケーション１０３及びブローカ１０９は、ハードウェア及びソフトウェアの組合せを用いて実装され得る。他の実施形態では、ビデオ処理アプリケーション１０３及びブローカは、コンピューティング装置１０１及び／又はスマートキャプチャ装置１２３に格納され及びそこで実行されるソフトウェアであって良い。
【００２２】
幾つかの実施形態では、コンピューティング装置１０１及び／又はスマートキャプチャ装置１２３のビデオ処理アプリケーション１０３及びブローカ１０９（後述する）は、データの構造、それへのアクセス、及びその変更のためのルールを調停するデータ中心型通信のためにミドルウェアを有して良い。幾つかの実施形態では、データ中心型ミドルウェアは、限定ではなく、ＲＴＩ（Real−Time  Innovations）データ配信サービス（data  distribution  service：ＤＤＳ）、Ｏｐｅｎ  Ｓｐｌｉｃｅ  ＤＤＳ、Ａｍａｚｏｎ  Ｋｉｎｅｓｉｓ、Ａｐａｃｈｅ  Ｋａｆｋａ、等を含む。例えば、コンピューティング装置１０１及び／又はスマートキャプチャ装置１２３のビデオ処理アプリケーション１０３及びブローカ１０９は、ビデオデータを生成し、該ビデオデータを連続的に又はレコード毎に若しくはスライド時間ウインドウに渡り増加的に処理し、ビデオデータに対して様々な解析（例えば、相関、集約、フィルタリング、サンプリング、等）を実行するために、データ配信プラットフォームとしてＡｐａｃｈｅ  Ｋａｆｋａを使用して良い。
【００２３】
幾つかの実施形態では、ビデオ処理アプリケーション１０３は、キャプチャ装置からビデオを受信し、該ビデオをフラグメントに分解する。幾つかの実施形態では、ビデオ処理アプリケーション１０３は、動き検出、コントラスト、色、及びセマンティック特性のうちの少なくとも１つに基づき、オブジェクトの特徴を決定し、該特徴に基づき、ビデオをフラグメントに分解する。ビデオの特徴フラグメントは、ビデオのフラグメントのサブセット、及びフレームのサブセットからのピクセルのサブセットである。例えば、ビデオ内のオブジェクトに対応するピクセルは、ビデオの複数のフレームの中で見付かり得る。オブジェクトに対応するピクセルを有するこれらのフレームは、フレームのサブセットとしてビデオから抽出されて良い。さらに、オブジェクトに対応するピクセル（及び幾つかの実施形態では、オブジェクトの周囲の幾つかのピクセル）は、フレームのサブセットの各々から抽出される。結果として生じる、オブジェクトに関連するピクセルのみを含むフレームのサブセットは、特徴フラグメントである。
【００２４】
ビデオ処理アプリケーション１０３は、特徴フラグメントをトピックにグループ分けする。トピックは、レコード（例えば、ビデオコンテンツ）が発行されるカテゴリである。ビデオ処理アプリケーション１０３は、排他的トピックを単一のビデオフレームに関連付け、ビデオフラグメントを複数のトピックに割り当て、異なるビデオフラグメントを単一のトピックに割り当て、又はビデオストリーム全体の単一の連続フラグメントを単一のトピックに割り当てて良い。
【００２５】
ビデオ処理アプリケーション１０３は、トピックによるフラグメントの破片化（sharding）に基づき、ビデオフラグメントの配信をブローカ及び／又はサーバに割り当てる。幾つかの実施形態では、ビデオ処理アプリケーション１０３は、トピック自体を破片化し、破片化トピック及びフラグメントを別個のブローカ及び／又はサーバに配信して良い。例えば、ビデオ処理アプリケーション１０３は、トピックをパーティションに分け、トピックの各パーティションを異なるブローカに割り当てる。
【００２６】
ビデオ処理アプリケーション１０３は、さらに、フラグメントをセグメント（例えば、スタンドアロンの短いクリップのシーケンス）に分割し、セグメントを対応するトピックに発行する。幾つかの実施形態では、ビデオ処理アプリケーション１０３は、トピックの各パーティションをコミットログに関連付け、ビデオセグメントシーケンスによりコミットログの各レコードを書き込む。幾つかの実施形態では、コミットログは、付加専用の、順序付きレコードシーケンスである。ビデオ処理アプリケーション１０３は、コミットログの終わりにレコードを付加し、レコードの各エントリにユニークなシーケンシャルエントリ番号又はタイムスタンプを割り当てる。
【００２７】
ブローカ１０９は、分散コミットログ（つまり、システム１００の至るところに分散された１又は複数のコミットログの集合）を管理する。例えば、ブローカ１０９は、ブローカ１０９が分散コミットログの中で責任を持つコミットログに関連付けられたレコード及びメタデータを更新する。幾つかの実施形態では、ローカルクラスタからの１又は複数のブローカ、及びローカルクラスタは、分散コミットログを管理する。さらに、ブローカ１０９は、ログからデータを読み出し及びユーザに該データを提供するために、ビデオ処理アプリケーション１０３及びシステム１００の他のコンポーネントとも通信する。具体的に、分散コミットログは、本願明細書に記載されたより大規模な又はより包括的な解析タスクの下で、サブタスクの服属（subsumption）を可能にするビデオ解析の新しいデータ中心型アーキテクチャの中で重要な役割を果たす。ビデオ処理アプリケーション１０３、ブローカ１０９の動作及び上述の機能は、図２Ａ〜１０を参照して以下に詳述する。
【００２８】
ビデオ解析の有力な枠組みは、ビデオ通信システムの基準と類似する基準に基づき設計され、ＩＰ（internet  protocol）上のビデオ配信のためのＲＴＰ（real−time  transport  protocol）に基づくＯＮＶＩＦ（open  network  video  interface  forum）のようなプロトコルを用い、ビデオストリームである中核の抽象概念と情報を交換し、遠隔会議における待ち時間に匹敵する送信待ち時間を有し、少数の「ビデオ消費者」（例えば、人間）の状況に通常適用される。ビデオ解析では、この有力な枠組みは、幾つかの問題を有する。例えば、この枠組みは、データオブジェクトのコンテンツではなく方法を（例えば、メディアコンテンツをカプセル化しながら、ビデオストリームの再生方法を）露出し、データ消費者の数に対応せず、ビデオと別個にイベントメタデータを格納する。また、有力な枠組みをビジネスと統合することは非常に困難である。さらに、この有力な枠組みは、管理に関するビッグデータ及びデータ管理の慣例を完全に無視する。
【００２９】
本願明細書に記載の技術は、より大規模な又はより包括的な解析タスク下のサブタスクの服属を可能にするビデオ解析の新しいデータ中心型アーキテクチャを提供する。この代替的枠組みは、以下を達成することにより、既存の枠組みを改良する。（１）データ統合：データは異なる記憶装置及び処理システムに容易に利用可能である。（２）リアルタイムデータ処理：データストリームは他のストリームの解析から得ることができる。（３）分散設計：複雑なビデオ解析の簡略化された設計。本願明細書に記載の技術は、したがって、多くの側面において有利である。第１に、この新しいデータ中心型アーキテクチャは、該アーキテクチャが解析タスクをサブタスクに明確に区別するので（つまり、タスクは、より単純なサブタスクに分割される）、もはやモノリシックではない。第２に、コンポーネントの数を増大することにより又はタスクの複雑性を増大することにより、新しいデータ中心型アーキテクチャを拡大縮小することが容易である。第３に、新しいデータ中心型アーキテクチャは、異なる展開、特に「少数のカメラを有する多数の場所」の展開に適合する。さらに、この新しいデータ中心型アーキテクチャにより、より複雑なビデオ解析が、少ないコンピュータ及びネットワークリソースにより実行され得る。
【００３０】
図２Ａは、ビデオ処理アプリケーション１０３を含むシステム２００（例えば、コンピューティング装置１０１又はスマートキャプチャ装置１２３）の一実施形態を示すブロック図を示す。システム２００は、幾つかの例に従って、プロセッサ２３５、メモリ２３７、任意ディスプレイ装置２３９、キャプチャ装置２４５、通信ユニット２４１、データ記憶装置２４３も有して良い。システム２２０のコンポーネントは、互いとの通信のためにバス２２０に通信可能に結合される。
【００３１】
プロセッサ２３５は、種々の入力／出力、論理、及び／又は演算動作を実行することによりソフトウェア命令を実行して良い。プロセッサ２３５は、例えばＣＩＳＣ（complex  instruction  set  computer）アーキテクチャ、ＲＩＳＣ（reduced  instruction  set  computer）アーキテクチャ、及び／又は命令セットの組合せを実施するアーキテクチャを含む、データ信号を処理する種々のコンピューティングアーキテクチャを有して良い。プロセッサ２３５は、物理的及び／又は仮想的であって良く、単一の信号処理ユニット又は複数の信号処理ユニット及び／又はコアを有して良い。幾つかの実施形態では、プロセッサ２３５は、電子表示信号を生成しディスプレイ装置に供給し、ビデオコンテンツについてのユーザ要求を受信するのに使用されるユーザインタフェースの表示をサポートし、要求されたビデオコンテンツを識別しユーザに提供する、等が可能であって良い。幾つかの実装では、プロセッサ２３５は、バス２２０を介してメモリ２３７に結合されて良く、該メモリからのデータ及び命令にアクセスし、該メモリにデータを格納して良い。バス２２０は、例えばメモリ２３７、通信ユニット２４１、ビデオ処理アプリケーション１０３、及びデータ記憶装置２４３を含むシステム２００の他のコンポーネントに、プロセッサ２３５を結合して良い。当業者には、他のプロセッサ、オペレーティングシステム、及び物理的構成が可能であることが明らかである。
【００３２】
メモリ２３７は、システム２００の他のコンポーネントのためにデータを格納しデータへのアクセスを提供して良い。幾つかの実装では、メモリ２３７は、プロセッサ２３５により実行され得る命令及び／又はデータを格納して良い。命令及び／又はデータは、本願明細書に記載の技術を実行するコードを有して良い。例えば、一実施形態では、メモリ２３７は、ビデオ処理アプリケーション１０３を格納して良い。メモリ２３７は、例えばオペレーティングシステム、ハードウェアドライバ、他のソフトウェアアプリケーション、データベース、等を含む他の命令及びデータも格納可能である。メモリ２３７は、プロセッサ２３５及びシステム２００の他のコンポーネントと通信するために、バス２２０に結合されて良い。
【００３３】
メモリ２３７は、１又は複数の非一時的コンピュータ使用可能（例えば、可読、書き込み可能）装置、ＤＲＡＭ（dynamic  random  access  memory）装置、ＳＲＡＭ（static  random  access  memory）装置、埋め込みメモリ装置、個別メモリ装置（例えば、ＰＲＯＭ、ＥＰＲＯＭ、ＲＯＭ）、ハードディスクドライブ、光ディスクドライブ（ＣＤ、ＤＶＤ、Ｂｌｕｅ−ｒａｙ（登録商標）、等）媒体を有して良く、プロセッサ２３５により若しくはプロセッサ２３５と共に処理するために、命令、データ、コンピュータプログラム、ソフトウェア、コード、ルーチン、等を有し、格納し、通信し、又は伝送できる任意の有形機器若しくは装置であり得る。幾つかの実装では、メモリ２３７は、揮発性メモリ及び不揮発性メモリのうちの１又は複数を有して良い。理解されるべきことに、メモリ２３７は、単一の装置であって良く、又は複数種類の装置及び構成を有して良い。
【００３４】
ディスプレイ装置２３９は、ＬＣＤ（liquid  crystal  display）、ＬＥＤ（light  emitting  diode）又は任意の他の同様の搭載ディスプレイ装置、スクリーン若しくはモニタである。ディスプレイ装置２３９は、本願明細書に記載のようなユーザインタフェース、電子画像、及びデータを表示するために備えられた任意の装置を表す。異なる実施形態では、ディスプレイは２値（ピクセルに対して２個の異なる値のみ）、モノクロ（１色のうちの複数の陰影）であり、又は複数色及び陰影が可能である。ディスプレイ装置２３９は、プロセッサ２３５及びシステム２００の他のコンポーネントと通信するために、バス２２０に結合される。留意すべきことに、ディスプレイ装置２３９は、任意であることを示すために、図２Ａに破線で示される。例えば、システム２００は、ディスプレイ装置２３９を有することなくビデオコンテンツ解析を実行するサーバ又はディスプレイを備えないスマートキャプチャ装置であって良い。
【００３５】
通信ユニット２４１は、プロセッサ２３５をネットワーク１０５及び他の処理システムに接続することにより、データを受信し及び送信するハードウェアである。通信ユニット２４１は、処理のためにデータを受信する。例えば、通信ユニットは、ビデオ処理アプリケーション１０３による処理のためにキャプチャ装置１０７からビデオデータを受信する。通信ユニット２４１は、表示のためにクライアント装置１１５に情報を送信しても良い。例えば、通信ユニット２４１は、クライアント装置１１５のユーザからビデオコンテンツについての要求を受信し、ビデオサーバ１２１を介してクライアント装置１１５へ該ビデオコンテンツを送信する。通信ユニット２４１はバス２２０に結合される。一実施形態では、通信ユニット２４１は、ネットワーク１０５への直接物理接続のためのポートを有して良い。別の実施形態では、通信ユニット２４１は、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０２．１６、Ｂｌｕｅｔｏｏｔｈ（登録商標）、セルラ通信、又は別の適切な無線通信方法のような１又は複数の無線通信方法を用いて、クライアント装置１１５又は任意の他の通信チャネルとデータを交換するために無線通信機（図示しない）を有して良い。
【００３６】
データ記憶装置２４３は、本願明細書に記載の機能を提供するためにデータを格納する非一時的メモリである。図示の実施形態では、データ記憶装置２４３は、記憶のためにデータを受信し及びデータについての要求により検索のためにデータを提供するために、バス２２０に通信可能に結合される。データ記憶装置２４３は、ビデオ、ビデオのフラグメント、フラグメントに関連付けられたトピック、分散コミットログ、等を格納して良い。
【００３７】
キャプチャ装置２４５は、ビデオをキャプチャし該ビデオにメタデータを関連付けるハードウェア装置である。例えば、キャプチャ装置２４５は、デジタルビデオカメラ、ウェブカメラ、ＩＰカメラ、等であり得る。キャプチャ装置２４５によりキャプチャされるビデオは、時間に関連した画像の任意のシリーズであり得る。キャプチャ装置２４５は、メタデータ、例えばビデオがキャプチャされた時間及び場所、画像サイズ、画像解像度、色の深み、フレームレート、等をビデオに関連付ける。キャプチャ装置２４５は、プロセッサ２３５及びシステム２００の他のコンポーネントと通信するために、バス２２０に結合される。留意すべきことに、キャプチャ装置２４５は、任意であることを示すために、図２Ａに破線で示される。例えば、システム２００は、遠隔キャプチャ装置１０７又は内蔵キャプチャ装置２４５を含むスマートキャプチャ装置１２３に接続された、ビデオコンテンツ解析を実行するサーバであって良い。
【００３８】
幾つかの実施形態では、ビデオ処理アプリケーション１０３は、フラグメントモジュール２０１、グループ化モジュール２０３、配信モジュール２０５、セグメンタ２０７、及び発行モジュール２０９を含む。
【００３９】
ビデオ処理アプリケーション１０３のコンポーネントは、それらが実行する機能を提供するために、ソフトウェア及び／又はロジックを有して良い。幾つかの実施形態では、コンポーネントは、ＦＰＧＡ（field−programmable  gate  array）又はＡＳＩＣ（application−specific  integrated  circuit）を含むプログラマブル又は専用ハードウェアを用いて実装できる。幾つかの実施形態では、コンポーネントは、ハードウェアとプロセッサ２３５により実行可能なソフトウェアとの組み合わせを用いて実装できる。幾つかの実施形態では、コンポーネントは、プロセッサ２３５により実行可能な命令である。幾つかの実施形態では、コンポーネントは、メモリ２３７に格納され、プロセッサ２３５によりアクセス可能且つ実行可能である。
【００４０】
フラグメントモジュール２０１は、ビデオをフラグメントに分解する機能を提供するために、ソフトウェア及び／又はロジックを有して良い。ビデオは、時間に関連する画像の任意のシリーズであり得る。フラグメント又はフラグメントシーケンスは、複数の時間に関連する画像又はビデオフレームを含むビデオのサブセットである。ある時点におけるフラグメントの各フレームは、僅かに異なり且つ特定の連続性で接続される特定領域を含む。例えば、特徴フラグメントは、手を振る活動の３つの時間に関連するフレームを含んで良い。第１フレームは、人が第１位置へ手を挙げることを示す。第２フレームは、その人が第１位置で手を振ることを示す。第３フレームは、その人が第２位置へ手を下げることを示す。単一の特徴フラグメントは、必ずしも特定領域の劇的な変化を含まない。つまり、特徴フラグメントは、動作における小さな及び／又は安定した変化のシーケンスを表す。劇的な変化が生じると、例えば、領域がバラバラになる、閉塞される、等すると、新しい特徴フラグメントが開始する。例えば、ビデオの中の第３フレームに続く第４フレームは人の手を含まないので、上述の特徴フラグメントは３つのフレームのみを含む。言い換えると、特徴フラグメントは、ピクセルブロックがシーンの中に現れるとき開始し、該ピクセルブロックが該シーンから消えるとき終了する、元のビデオの最小単位である。幾つかの実施形態では、フラグメントモジュール２０１は、本願明細書に記載の機能を実行するためにエンコーダを有して良い。
【００４１】
幾つかの実施形態では、フラグメントモジュール２０１は、オブジェクトの特徴を決定し、該特徴に基づきビデオから特徴オブジェクトを抽出し、該特徴オブジェクトに基づき複数の特徴フラグメントを生成する。特徴は、ビデオの顕著な特徴を表し、対応する特徴フラグメントは、顕著な特徴を示す目立つ特質を有するビデオのハイライトである。例えば、フラグメントモジュール２０１は、最も目立つ特徴がブラックリストに載っている個人であること（つまり、特徴オブジェクト）に基づき、特徴ビデオから、容疑者の動きを含む特徴フラグメントを抽出する。
【００４２】
幾つかの実施形態では、フラグメントモジュール２０１は、動き検出、コントラスト、色、及びセマンティック特性のうちの少なくとも１つに基づき、ビデオ内のオブジェクトの特徴を決定する。したがって、特徴オブジェクトは、動いているオブジェクト、又は特定の色若しくは特定のコントラストのオブジェクトであって良い。特徴オブジェクトは、意味的重要性を有するオブジェクトであっても良い。例えば、会話ビデオでは、フラグメントモジュール２０１は、意味的重要性に基づき、最も多く話している（例えば、他の人々の質問に回答する）人を特徴オブジェクトとして決定して良い。あるいは、例えば、フラグメントモジュール２０１は、特定のラベルを有する車を、意味的重要性を有するオブジェクトとして決定して良い。
【００４３】
幾つかの実施形態では、フラグメントモジュール２０１は、移動オブジェクトを特徴オブジェクトとして識別するために、動き検出に基づき、背景及び前景分離方法を使用する。例えば、フラグメントモジュール２０１は、ビデオから鉄道駅に向かう列車の特徴オブジェクト（例えば、高速に変化する部分）を抽出する。あるいは、フラグメントモジュール２０１は、ビデオ内の移動オブジェクトの優勢フロー内にない移動オブジェクトを特徴オブジェクトとして識別する。動き検出方法は、シーン内に多数の移動オブジェクトが存在するとき、例えば交通量の多い高速道路、混雑した店舗、等で、特徴オブジェクトを抽出するのに適用可能でない場合がある。このような場合には、フラグメントモジュール２０１は、コントラスト、色、形状、ビデオの意味的情報、等のようなビデオの他の特徴に基づき、特徴オブジェクトを決定して良い。例えば、フラグメントモジュール２０１は、ビデオ内のオブジェクトにより実行される活動を含む意味的情報に基づき、特徴オブジェクトとしてバイクに乗っている人物を識別する。特徴オブジェクトを識別するのに使用されるアルゴリズムは、ガウス混合モデル（Gaussian  Mixture  Model：ＧＭＭ）に基づくアルゴリズム、視覚的背景抽出（visual  background  extractor：ＶｉＢｅ）、適応型ＧＭＭ、自己組織化マップアルゴリズム、主成分分析アルゴリズム、背景をモデル化する下位分解に基づくアルゴリズム、等を含む。
【００４４】
特徴オブジェクトが決定されると、フラグメントモジュール２０１は、特徴オブジェクトの関連部分をリンクして、フラグメントを生成する。幾つかの実施形態では、フラグメントモジュール２０１は、ビデオの各フレーム内の特徴オブジェクトを決定し、ビデオの長さに渡り各特徴オブジェクトを追跡し、該追跡に基づき複数のフラグメントを生成する。特徴オブジェクトを追跡する簡単な方法は、あるフレームから別のフレームまで特徴オブジェクトの位置を特定し、あるフレーム内の特徴オブジェクトを同様の空間位置に現れる次フレーム内の特徴オブジェクトに関連付けることである。しかしながら、この簡単な追跡方法は、オブジェクトの重なり合い、誤検出、及び結果として生じるオブジェクト間の関連付けの欠如、等のような幾つかの問題を有する。問題を解決するために、フラグメントモジュール２０１は、時間に渡る特徴オブジェクトの追跡を得るために、特定色モデル及び／又は動きベクトルモデルを特徴オブジェクトに関連付ける追跡アルゴリズムを使用して良い。幾つかの実施形態では、フラグメントモジュール２０１は、いつ追跡を開始し及び終了するかを決定するためにハンガリアン（Hungarian）法を適用し、複数オブジェクト追跡を実施するためにカルマン（Kalman）フィルタ法を使用する。
【００４５】
幾つかの実施形態では、フラグメントモジュール２０１は、特徴オブジェクトの追跡をフラグメントとして定める。このビデオフラグメントは、ビデオの特徴部分のみを含み、追跡の時間期間の間、継続し、したがって特徴フラグメントとして参照される。特徴フラグメントは、時間及び空間において特定される単一の特徴活動についてのビデオ部分である。幾つかの実施形態では、フラグメントモジュール２０１は、ビデオの特定の時間期間の範囲内で単一の特徴オブジェクトを追跡し、この特定の時間期間から単一の特徴フラグメントを生成する。他の実施形態では、フラグメントモジュール２０１は、ビデオの特定の時間期間の範囲内で複数の特徴オブジェクトを追跡し、ビデオのこの特定の時間期間から複数の特徴フラグメントを生成する。例えば、フラグメントモジュール２０１は、３分間のビデオから人と車を追跡し、その人の第１フラグメントと、その車の第２フラグメントと、を生成して良い。
【００４６】
フラグメントが決定されると、フラグメントモジュール２０１は、フラグメントのデータベースを構築するために、ビデオ処理アプリケーション１０３の他のコンポーネントと通信する。幾つかの実施形態では、データベースインデックスは、フラグメントの空間的−時間的オーバラップ又は因果関係情報に基づき、高速データ検索のためにフラグメントのデータベースの中で構築される。他の実施形態では、フラグメントモジュール２０１は、ビデオコンテンツを識別しユーザに提供するために、ビデオ処理アプリケーション１０３及びブローカ１０９の他のコンポーネントとも通信して良い。
【００４７】
グループモジュール２０３は、ビデオのフラグメントをトピックにグループ化する機能を提供するために、ソフトウェア及び／又はロジックを有して良い。トピックは、レコード（例えば、ビデオコンテンツ）が発行されるカテゴリである。
【００４８】
ビデオストリームが処理されるとき、これは、データフローではなくデータオブジェクトセットとして考えられる。例えば、ビデオの各フラグメントは、グローバルデータベース内のデータオブジェクトであって良く、各フラグメントの展開が更新であって良い。幾つかの実施形態では、グループモジュール２０３は、フラグメントモジュール２０１から受信したビデオのフラグメント（例えば、データオブジェクト）を名前空間の中のユニークな識別子に関連付ける。例えば、グループモジュール２０３は、名前又はロケータをフラグメントに割り当てる。
【００４９】
割り当てられた識別子に基づき、グループモジュール２０３は、フラグメントをトピックにグループ化する。幾つかの実施形態では、グループモジュール２０３は、単一のフラグメントを排他的トピックに関連付ける。つまり、他のフラグメントは、このトピックに分類されない。他の実施形態では、グループモジュール２０３は、フラグメントを複数のトピックに割り当てる。例えば、グループモジュール２０３は、フラグメントが特定のＬＡＮに位置するカメラから受信されていることに基づき、該フラグメントをトピック「カメラＡ」に割り当て、該フラグメントが自転車の特徴オブジェクトを含むことに基づき該フラグメントをトピック「自転車」に割り当てる。幾つかの他の実施形態では、グループモジュール２０３は、複数のビデオフラグメントを単一のトピックに割り当てる。例えば、グループモジュール２０３は、１つのキャプチャ装置からのビデオのフラグメントを単一のトピックにグループ化して良い。一実施形態では、グループモジュール２０３は、カメラのセットからのビデオから、第１カメラから生じるビデオを識別し、識別したビデオフラグメントをトピック「ｖｉｄｅｏ−ｓｔｒｅａｍ−０１」に多重化するマルチプレクサであって良い。幾つかの他の実施形態では、グループモジュール２０３は、同じキャプチャ装置からのビデオのフラグメントを複数のトピックにグループ化する。幾つかの他の実施形態では、フラグメントモジュール２０１は、ビデオストリーム全体から単一のフラグメントを抽出し、グループモジュール２０３は、単一のトピック（例えば、「ｖｉｄｅｏ−ｓｔｒｅａｍ−０１」）が単一のデータオブジェクトを含み且つ単一のオブジェクトと置き換え可能であるので、ビデオ全体を表すフラグメントを該単一のトピックにグループ化する。
【００５０】
配信モジュール２０５は、ビデオのフラグメントの配信をブローカ及び／又はサーバに割り当てるソフトウェア及び／又はロジックを含んで良い。幾つかの実施形態では、配信モジュール２０５は、トピックによるフラグメントの破片化（sharding）に基づき、ビデオのフラグメントを配信して良い。データベースにおいて、破片化は、異なる物理位置にある別個のサーバ又はブローカに各パーティションが保持されるような方法での、データの水平パーティショニングである。したがって、破片化は、水平パーティショニングにおけるように行によってデータベースのテーブルを１又は複数のテーブルに分けるだけでなく、さらに、データベース及びスキームの別個のインスタンスに渡りテーブルの断片を分散する。したがって、破片化は、データ処理の負荷を分散する。破片化の概念は、テーブルに限定されない。データ空間（又はその部分集合のうちの１つ）も、水平にパーティショニングされ又は破片化されて、個々のデータオブジェクトが分離されないことを保証できる。したがって、破片化は、スケーリングを達成するために各破片が別個のサーバ又は通信ブローカにより扱われるデータ中心型通信に適用可能である。
【００５１】
幾つかの実施形態では、配信モジュール２０５は、命名体系に従い異なるサーバ又はブローカの間で関連するフラグメントと一緒にトピックを分散する。例えば、グループモジュール２０３は、第１セットの各フラグメントに割り当てられるユニークな名前に基づき、トピック「ローカルに存在するストリーム００１」に、第１カメラからのビデオのフラグメントの該第１セットをグループ化する。配信モジュール２０５は、トピック「ｌｏｃａｌ−ｐｒｅｓｅｎｃｅ−ｓｔｒｅａｍ−００１」の中のプレフィックス「ｌｏｃａｌ」を識別子し、トピック及び第１ブローカにより扱われるべき関連付けられた第１フラグメントセットを配信することを決定する。第１ブローカは、第１カメラと同じＬＡＮ上にある。他方で、配信モジュール２０５は、プレフィックス「ｗｉｄｅ」を有するトピック及び関連付けられたフラグメントを、異なるブローカ（例えば、クラウド内のリモートブローカ）に配信することを決定して良い。したがって、グループモジュール２０３は、第１カメラからのビデオの第２フラグメントセットを「ｗｉｄｅ−ｐｒｅｓｅｎｃｅ−ｓｔｒｅａｍ−００１」にグループ化し、配信モジュール２０５は、第２フラグメントセットを異なるＬＡＮに位置する第２ブローカに配信し得る。幾つかの例では、同じキャプチャ装置からのフラグメントでも「ｌｏｃａｌ」とラベル付けされたトピック及び「ｗｉｄｅ」とラベル付けされたトピックの両方に分類されて良い。なぜなら、「ｗｉｄｅ」とラベル付けされたトピックに対応するビデオの特定部分（例えば、上述の第２フラグメントセット）を扱うとき、複数のＬＡＮからのデータ集約が必要だからである。当業者は、フラグメント及びトピックについて多くの他の命名体系が可能であることを理解する。
【００５２】
他の実施形態では、配信モジュール２０５は、トピック自体を破片化し、破片化トピック及びフラグメントを別個のブローカ及び／又はサーバに分散して良い。例えば、配信モジュール２０５は、トピックをパーティションに分け、トピックの各パーティションを異なるブローカに割り当てる。トピック及びフラグメントのパーティションは、発行モジュール２０９を参照して以下に詳述する。
【００５３】
トピックに基づきブローカにフラグメントの配信を割り当てることは有利である。第１に、配信モジュール２０５はトピック及び関連するデータ（例えば、フラグメント）を命名体系に従いブローカに割り当てるので、データの製作者及び消費者は、データ配信のために他の参加者又は特定のブローカの場所を知り又は気にする必要がない。第２に、トピックを破片化することにより、配信モジュール２０５は、向上したスループットでフラグメントを配信する。
【００５４】
セグメンタ２０７は、フラグメントをセグメントに分割する機能を提供するソフトウェア及び／又はロジックを有して良い。セグメントは、スタンドアロンの短いクリップのシーケンスである。幾つかの実施形態では、セグメントは、固定期間、例えば１秒、５秒、等である。他の実施形態では、セグメントは可変長である。例えば、第１セグメントは２秒の長さであり、第２セグメントは６秒の長さである、等。幾つかの他の実施形態では、各セグメントはビデオ内の個々のフレームに対応する。
【００５５】
セグメンタ２０７は、配信モジュール２０５からビデオのフラグメントを受信する。幾つかの実施形態では、セグメンタ２０７は、受信した符号か入力ビデオフラグメントを復号化し、復号化ビデオフラグメントをセグメントに分けるデコーダを有して良い。他の実施形態では、セグメンタ２０７は、トランスコーディングをしないで、セグメント化を実行して良い。つまり、セグメント化は、ビデオの復号化及び同じビデオコーデックを用いるビデオの再符号化を伴わず、実施されて良い。例えば、セグメンタ２０７は、セグメントスプリットと合わせてＩフレーム（例えば、キーフレーム）により符号化された入力ビデオを受信し、ビデオコンテンツを復号化する必要なくビデオをセグメントに分割する。この「トランスコーディングを伴わない多重化（muxing）」は、符号化コンテンツに作用せずにビデオのカプセル化を変更するだけなので、セグメント化を簡略化する。
【００５６】
発行モジュール２０９は、セグメントを対応するトピックに発行する機能を提供するソフトウェア及び／又はロジックを有して良い。幾つかの実施形態では、配信モジュール２０５は、トピックをパーティションに分割して良い。発行モジュール２０９は、パーティションを受信し、各々のパーティションをコミットログに関連付けて良い。一実施形態では、コミットログは、付加専用の、順序付きレコードシーケンスである。幾つかの実施形態では、発行モジュール２０９は、コミットログの終わりにレコードを付加し、各レコードをユニークなシーケンシャルエントリ番号又はタイムスタンプに割り当てる。例えば、エントリ番号は、パーティション内のレコードの位置を示すオフセットである。発行モジュール２０９は、コミットログの終わりに最新レコードを付加するので、コミットログは、特定の物理クロックに頼らずに、時間の概念を定める。したがって、発行モジュール２０９は、潜在的データオブジェクトの変化又は更新、つまりコミット履歴を、コミットログに格納する。
【００５７】
図３Ａは、トピックの単一のパーティションに関連付けられる例示的なコミットログ３００を示す。発行モジュール２０９は、オフセット「０」によりラベル付けされるログの第１位置３０２に第１レコードを書き込む。発行モジュール２０９は、次に、連続的に増加するオフセット番号の順に、ログにレコードシーケンスを付加する。図３Ａの例では、発行モジュール２０９は、ログの最初の１２個の位置、つまりオフセット「０」からオフセット「１１」を、１２個のレコードで満たし、次の最近のレコードをオフセット「１２」に付加する。図３Ｂは、複数のパーティションに関連付けられる例示的なコミットログ３２０を示す。複数のパーティションは、１又は複数のトピックからであって良い。発行モジュール２０９は、１つのレコードを各パーティションに書き込んで良い。例えば、第１レコードをパーティション０のオフセット「１２」に書き込み、第２レコードをパーティション１のオフセット「９」に書き込み、第３レコードをパーティション２のオフセット「１０」に書き込む。
【００５８】
幾つかの実施形態では、発行モジュール２０９によりコミットログに書き込まれ又は発行されるレコードは、セグメンタ２０７から受信されたビデオセグメントである。図３Ｃは、ビデオフラグメントをセグメント化し及びセグメントを対応するトピックに発行する方法の一実施形態を示すブロック図３５０を示す。ビデオ処理アプリケーションのフラグメントモジュール２０１に含まれるエンコーダは、ビデオフラグメント３５２を受信する。エンコーダは、所望のセグメントスプリットに揃えられたビデオＩフレームを符号化する。符号化フラグメントは、トランスコーディングを伴わずＭＰＥＧ−ＴＳデジタルコンテナにビデオのカプセル化を変更する「多重化（muxing）」ブロックへ送信される。この「多重化」ステップは、所望のセグメントスプリットを有するスタンドアロンクリップのシーケンスを生成する。セグメンタ２０７は、スタンドアロンの短いクリップを異なるセグメント、つまりセグメント１、１、２、．．．、ｎに割り当てる。各セグメントは、ビデオフラグメント３５２を表す同一データオブジェクトの更新と考えられる。次に、セグメントは、発行モジュール２０９によりトピックに発行される。図３Ｃに示すように、発行モジュール２０９は、セグメントをコミットログ３５４内に発行する。コミットログ３５４は、トピックに関連付けられたパーティションを有する。発行モジュール２０９は、セグメント０をオフセット「０」で、セグメント１をオフセット「１」で、セグメント２をオフセット「２」で、以下同様に発行し又は書き込む。結果として、パーティションは、順序付き且つ不変のレコードシーケンスである。留意すべきことに、消費者は、矢印３５６及び３５８で示されるように、ビデオセグメントにもアクセスできる。このデータアクセスは、図２Ｂを参照して以下に詳述される。
【００５９】
幾つかの実施形態では、発行モジュール２０９は、ビデオセグメントをリモートトピックに発行するために、配信モジュール２０５と通信して良い。例えば、コンピューティング装置１０１の発行モジュール２０９は、トピックがリモートにより配信されるべき場合、ビデオセグメントをリモートトピックに発行して良い。当業者は、ビデオセグメント以外のレコードが発行モジュール２０９によりトピックにも発行され得ることを理解する。
【００６０】
図２Ｂは、ブローカ１０９を有するシステム２００の一実施形態を示すブロック図を示す。プロセッサ２３５、メモリ２３７、ディスプレイ装置２３９、通信ユニット２４１、データ記憶装置２４３、及びキャプチャ装置２４５を含むシステム２００の他のコンポーネントは、図２Ａを参照して記載されており、ここで繰り返し記載されない。
【００６１】
幾つかの実施形態では、ブローカ１０９は、ログ制御部２１１、監視アプリケーション２１３、及びユーザインタフェースエンジン２２１を有する。
【００６２】
ログ制御部２１１は、分散コミットログ（つまり、システムの至るところに分散された１又は複数のコミットログの集合）を管理する機能を提供するソフトウェア及び／又はロジックを有して良い。発行モジュール２０９からトピックに関連付けられたコミットログに発行されたビデオセグメントを受信することに応答して、ブローカ１０９のログ制御部２１１は、コミットログを（例えばデータ記憶装置２４３に）格納し、コミットログを管理する。発行モジュール２０９はコミットログの終わりに最新セグメントを付加することによりビデオセグメントシーケンスを発行し、各エントリをタイムスタンプに関連付けるので、ログ制御部２１１は、トピックに関連付けられたセグメントシーケンスをログに格納し、同時にセグメントシーケンスのシーケンス順序を保存する。
【００６３】
幾つかの実施形態では、ブローカ１０９のインスタンスは、各コンピューティング装置１０１及びＬＡＮ（local  area  network）内の各スマートキャプチャ装置１２３上で実行する。例えば、ブローカ１０９のインスタンスは、図１のコンピューティング装置１０１及びスマートキャプチャ装置１２３上で実行する。幾つかの実施形態では、ＬＡＮのローカル環境内にあるブローカ１０９のインスタンスは、ＬＡＮにおいてローカルクラスタを形成する。ローカルクラスタは、クラスタ内の各ブローカにより管理される１又は複数のコミットログを含む分散コミットログを管理する。
【００６４】
図４は、１又は複数のブローカを含むローカルクラスタ４０２の図式表現を示す。図４に示すように、受動的キャプチャ装置４０１がコンピューティング装置４０３に取り付けられ、４個の受動的キャプチャ装置（例えば、カメラ４０５ａ〜４０５ｄ）がコンピューティング装置４０７に接続される。処理のためにコンピューティング装置に接続された受動的キャプチャ装置が図４の例に図示されるが、ブローカのインスタンスを実行するスマートキャプチャ装置がローカルクラスタに含まれて良いことが理解されるべきである。コンピューティング装置４０３上で動作するブローカ４２０、及びコンピューティング装置４０７上で動作するブローカ４３０は、ローカルクラスタ４０２を形成する。キャプチャ装置４０１及びキャプチャ装置４０５は、監視され、モニタされ、及び解析される領域に依存して、ローカル環境内の異なる位置に展開されて良い。ブローカ４２０及びブローカ４３０は、ブローカ１０９の２つのインスタンスであって良い。幾つかの実施形態では、ブローカは、最も近いキャプチャ装置からのデータを扱う。例えば、ブローカ４３０はキャプチャ装置４０１によりキャプチャされたビデオコンテンツを扱うことができ、ブローカ４２０はキャプチャ装置４０５ａ〜ｄによりキャプチャされたビデオコンテンツを扱うことができる。つまり、１つの装置内のブローカは、システム内の任意のキャプチャ装置によりキャプチャされたコンテンツの配信を援助する。キャプチャ装置から受信したデータに基づき、クラスタ内のブローカのログ制御部２１１は、少なくとも１つのコミットログを管理する。例えば、ブローカ４２０のログ制御部２１１は、トピックＡに関連付けられた区分ログ４０４を管理し、一方、ブローカ４３０のログ制御部２１１は、トピックＢ１〜Ｂ４に関連付けられた区分ログ４０６、４０８、４１０、４１２を管理する。結果として、ローカルクラスタ４０２は、コンピューティング装置４０３及びコンピューティング装置４０７のデータ記憶装置２４３に格納された区分ログ４０４〜４１２を含む分散コミットログの集合を管理する。
【００６５】
ログ制御部２１１は、ログに格納されたデータの有効性、可用性、及びアクセス可能性を保証するために、分散コミットログを管理する。幾つかの実施形態では、ログ制御部２１１は、分散コミットログのレコードを更新する。例えば、ログ制御部２１１は、分散コミットログを格納し、発行モジュール２０９によりログに発行されたビデオセグメントにより更新する。幾つかの実施形態では、ログ制御部２１１は、分散コミットログのレコード（例えば、ビデオセグメント）に保存期間を割り当て、該保存期間に基づきログを更新する。したがって、ログ制御部２１１は、再構成可能保存期間まで、全部の発行されたレコードを保持し、発行モジュール２０９により書き込まれた新しいデータによりログを更新する。他の実施形態では、ログ制御部２１１は、分散コミットログに関連付けられたメタデータを更新する。消費者毎に保持されるメタデータは、ログ内のオフセット又は消費者の位置を含む。消費者は、ログに関連付けられたトピックを予約し及びログ履歴にアクセスする（例えば、リードする）ユーザである。ログ内の消費者のオフセットは、レコードが消費者により消費される順序を制御する。図３Ｃを参照すると、例えば、消費者Ａは、より最近のレコードに向かってスキップすることにより、より古いオフセットにリセットでき、したがって、矢印３５６で示されるようにオフセット「８」にあるビデオセグメントをリードできる。他方で、消費者Ｂは、最近のレコードである「先頭（head）」へ単に移動し、矢印３５８で示されるオフセット「１１」にあるビデオセグメントをリードする。ログ制御部２１１は、各消費者のオフセットを保持し、消費者が該オフセットを変更すると該オフセットを更新する。当業者は、ログに関連付けられログ制御部２１１により更新される他のメタデータが存在することを認識する。
【００６６】
ログに関連付けられるレコード及びメタデータを更新することに加えて、ログ制御部２１１は、さらに、ログからデータを読み出し該データをユーザに提供するために、システム２００の他のコンポーネントと通信する。図５は、分散コミットログからデータを読み出し要求側ユーザ５０２に該データを提供する方法の一実施形態を示すブロック図５００を示す。潜在的な企業ユーザ（例えば、店舗マネジャ、銀行員、等）は、異なるＬＡＮに接続される多くの異なるサイト（例えば、店舗、銀行、等）の情報にアクセスする必要がある場合が多い。標準的に、これらのユーザは、全てのサイトに共通の何らかの解析ワークフローに関心がある。例えば、ワークフローは、地域店舗マネジャ５０２に、彼女の権限範囲内の異なる店舗にあるカメラの遠隔供給へのアクセスを提供して良い。遠隔供給は、選択されたカメラからの生放送、あらすじ、又は短いクリップ（例えば、６秒のビデオループ）であり得る。ワークフローを通じて店舗の情報にアクセスすることは、店舗との双方向通信ではない。したがって、数秒間の遅延が許容可能である。しかしながら、本環境のコンピューティング装置又はスマートキャプチャ装置はクラウド又はネットワークへのセキュアな接続を有するので、通信の安全性が保証される。
【００６７】
図５の例では、店舗の場所毎にトピックが存在し、トピックは１つの企業消費者のワークフローに対応する単一のワークフロー破片５０４にグループ化される。地域マネジャ５０２がウェブブラウザによりウェブサービスに接続されたタブレット装置を用いて店舗Ａにあるキャプチャ装置（例えば、キャプチャ装置５０８ａ〜５０８ｄのうちの１つ）を選択すると、ビデオサーバ１２１は、コンピューティング装置５０６にセグメントを対応する遠隔トピック「Ｓｔｏｒｅ  Ｐｕｌｓｅ  Ａ」に発行するよう指示するために、適切なコンピューティング装置又はスマートキャプチャ装置１２３（例えば、店舗Ａにあるコンピューティング装置５０６）へ信号を送信する。例えば、コンピューティング装置５０６のフラグメントモジュール２０１は、選択されたキャプチャ装置から受信したビデオストリームをフラグメントに分解する。コンピューティング装置５０６のグループモジュール２０３は、フラグメントをトピック「Ｓｔｏｒｅ  Ｐｕｌｓｅ  Ａ」に関連付ける。コンピューティング装置５０６のセグメンタ２０７は、フラグメントをセグメントに分割する。コンピューティング装置５０６の発行モジュール２０９は、ログ制御部２１１によりコンピューティング装置５０６のコミットログに格納されない遠隔トピック「Ｓｔｏｒｅ  Ｐｕｌｓｅ  Ａ」にセグメントを発行するために、コンピューティング装置５０６の配信モジュール２０５と通信する。代わりに、クラウド上で実行するブローカのログ制御部が、コミットログを遠隔で格納する。
【００６８】
セグメントがコミットログに関連付けられたトピック「Ｓｔｏｒｅ  Ｐｕｌｓｅ  Ａ」に発行されると、トピック「Ｓｔｏｒｅ  Ｐｕｌｓｅ  Ａ」を既に契約しているビデオサーバ１２１は、更新されたレコードを受信し、共にビデオセグメントに基づくＭＰＥＧ−ＤＡＳＨ又はＨＬＳ（HTTP  Live  Streaming）標準に従い適応ビットレートストリーミングのためにビデオを準備する。タブレットにあるウェブブラウザは、次に、地域マネジャ５０２への表示のために、ビデオサーバ１２１からＨＴＴＰ  ＧＥＴ要求を用いてセグメントをプルする。
【００６９】
幾つかの実施形態では、１つの企業消費者のワークフローの対応する破片は、コンピューティング装置５０６と別個であるブローカ及びサーバインスタンスのセット、例えばオンデマンドコンピューティングを提供するデータセンタ又はクラウドコンピューティングサービス（例えば、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ）にあるブローカ及びサーバにより扱うことができる。あるいは、破片は、コンピューティング装置５０６及びローカルクラスタ内の他のコンピューティング装置又はスマートキャプチャ装置のブローカにより扱われて良い。例えば、コンピューティング装置５０６のグループモジュール２０３は、店舗の場所毎にトピックを決定し、企業消費者のワークフローに対応する単一のワークフロー破片５０４にトピックをグループ化するために配信モジュール２０５と通信し、クラスタ内の別のコンピューティング装置の異なるブローカにより管理されるべきトピックを割り当てる。破片化トピック及びフラグメントを別個のブローカ及び／又はサーバに配信するこのようなメカニズムは、付加を分散し又はデータ統制制約を満たし及び性能を向上するために、１人のユーザに別個の計算リソースをプロビジョニングすることを可能にする。
【００７０】
必ずしもトピック毎に１つのブローカを有する必要がない。図５の例では、トピック「Ｓｔｏｒｅ  Ｐｕｌｓｅ  Ａ」及び「Ｓｔｏｒｅ  Ｐｕｌｓｅ  Ｂ」は第１ブローカにより扱われ、トピック「Ｓｔｏｒｅ  Ｐｕｌｓｅ  Ｃ」は第２ブローカにより扱われる。通常、各ブローカは、複数のトピックを扱うことができる。トピックは、スループット又は耐故障性を向上するために、異なるブローカにパーティショニングされ得る。このような方式は、計算リソースのより良好な利用のためにも有利である。
【００７１】
図２Ｂに戻ると、監視アプリケーション２１３は、ユーザ相互作用に基づきビデオコンテンツを提供するソフトウェア及び／又はロジックを含んで良い。本願明細書に記載の技術は、より大規模な又はより包括的な解析タスク下のサブタスクの服属を可能にするビデオ解析の新しいデータ中心型アーキテクチャを提供する。コンピューティング装置１０１又はスマートキャプチャ装置１２３のビデオ処理アプリケーション１０３及びブローカ１０９、及び一緒に動作するシステム１００の他のコンポーネントは、ビデオストリームをフラグメントに分解し、該フラグメントを更なる処理のために、データ統合及びリアルタイム処理を提供する分散コミットログに配信し得る。これは、データが利用可能であり、異なる記憶装置及び処理システム上で容易にアクセスでき、データストリームがリアルタイムデータ処理に基づき他のストリームの解析から得られるので、有利である。さらに、監視アプリケーション２１３は、下位タスク又は下位解析の観点で、複雑なビデオ解析の設計を可能にする。
【００７２】
幾つかの実施形態では、監視アプリケーション２１３は、検出器２１５、決定エンジン２１７、及び選択モジュール２１９を有する。検出器２１５は、センサ／装置からデータを受信し及び該データをフィルタリングする機能を提供するソフトウェア及び／又はロジックを有して良い。センサは、ユーザの測位データを提供するＢｌｕｅｔｏｏｔｈ(登録商標)低エネルギ（Bluetooth(登録商標)  low  energy：ＢＬＥ）センサ、ビデオをキャプチャするカメラ、体積占有を測定する低解像度深度カメラ、等であって良い。幾つかの実施形態では、検出器２１５は、それが受信するデータの種類に基づき、異なるカテゴリに分類される。例えば、検出器２１５は、低解像度深度カメラから体積占有データを受信する場合、占有検出器であり、測位データを受信する場合、位置検出器であり、スマートカメラからのビデオの特徴に基づき生成されたビデオフラグメントを受信する場合、特徴検出器であり得る。
【００７３】
幾つかの実施形態では、検出器２１５は、センサ１１３を含む一連のセンサからデータを受信し、１又は複数の基準に基づき該データをフィルタリングする。例えば、占有検出器は、占有イベントが検出されるか否かに基づき、受信したデータをフィルタリングして良い。特徴検出器は、ユーザがビデオフラグメントに関心があるか否かに基づき、ビデオフラグメントをフィルタリングして良い。データ種類、データ種類に関連付けられたイベント、及び他の要因に依存して多数のフィルタ基準が存在し得る。しかしながら、フィルタ基準が何であるかに拘わらず、検出器２１５の出力データ（例えば、フィルタリング済みデータ）は、検出器２１５の入力データ（例えば、受信したデータ）より少ない。これは、構造の階層を上に行くほど伝搬されるデータが少なく、したがって単純な下位タスクから複雑なビデオ解析タスクが増加的に構築され得るので、本願明細書に記載の服属構造にとって重要である。
【００７４】
データをフィルタリングするとき、幾つかの実施形態では、検出器２１５は、さらに、フィルタリング済みデータに情報を付加する。例えば、検出器２１５は、データがどこから来たのかを区別する目的で、センサの識別子によりフィルタリング済みデータをタグ付けして良い。
【００７５】
決定エンジン２１７は、検出器２１５からのフィルタリング済みデータを統合する機能を提供するソフトウェア及び／又はロジックを有して良い。幾つかの実施形態では、決定エンジン２１７は、入力されたフィルタリング済みデータから１又は複数の制御シーケンスを識別し、１又は複数の制御シーケンスに基づき第１種ル良くシーケンスを生成すべきか否かを決定する。幾つかの実施形態では、決定エンジン２１７は、１又は複数の制御シーケンスに基づき、受信したデータの一部をフィルタリングし又はゲーティングし、フィルタリング結果及びシーケンス基準に基づき第１出力シーケンスを生成すべきか否かを決定する。例えば、フィルタリング結果は、人物が現れた又は去った、会議が始まった又は終わった、等のようなイベントが生じたことを示す。一実施形態では、シーケンス基準は閾時間期間を含む。決定エンジン２１７が、人物が閾時間期間より長く現れていると決定した場合、決定エンジン２１７は、第１出力シーケンスを生成する。幾つかの実施形態では、第１出力シーケンスが生成されると、決定エンジン２１７は、さらに、ビデオコンテンツの準備をトリガするために、警告信号を生成する。服属構造の階層の中で検出器２１５より上位の層として、再び、決定エンジン２１７は、入力データを統合することにより、入力データより少ないデータを出力する。
【００７６】
選択モジュール２１９は、ユーザに提供するためにビデオフラグメントを選択する機能を提供するソフトウェア及び／又はロジックを有して良い。幾つかの実施形態では、選択モジュール２１９は、決定エンジン２１７から受信した第１出力シーケンスに基づき、検出器２１５から受信したフィルタリング済みデータからビデオフラグメントを選択し、ユーザに提供するためにビデオフラグメントの第２出力シーケンスを生成する。第２出力シーケンス及び第１出力シーケンスの生成は、主に、図６Ｂを参照して後述するようなゲーティング動作に基づく。他の実施形態では、選択モジュール２１９は、決定エンジン２１７から警告信号が受信された場合のみ、ビデオフラグメントを選択する。
【００７７】
図６Ａは、ユーザの存在を検出すると、ユーザ相互作用のビデオコンテンツを提供する服属構造の一実施形態を示すブロック図６００を示す。ＶＩＰ買い物客が販促商品の展示の前に長居する又は存在するときはいつでも店員に警告するシステムを望む小売店の問題を検討する。買い物客は、彼女又は彼が買い物客のスマートフォンにダウンロードされインストールされた電話アプリケーションにより決定され得る小売店の報酬プログラムを選択している場合、ＶＩＰであると考えられる。警告と一緒に、小売店は、買い物客の商品との相互作用を示す短いビデオクリップが生成され店員に提供されることも望む。
【００７８】
図６Ａの例では、警告システムは、３つのハードウェアセンサ、つまり、体積占有を測定する深さセンサとして動作する低解像度深度カメラ、買い物客の測位データを得るためにビーコン及びセンサとして動作するＢＬＥ装置、及び高解像度ビデオカメラのセット、を有する。これらのセンサは、収集したデータを対応する検出器、例えば、占有検出器６０２、ｉＢｅａｃｏｎ検出器６０４、及び特徴検出器６０６へ送信する。
【００７９】
占有検出器６０２は、深さビデオセグメントの形式で深さセンサからの一連の読み取り値を受信し、占有イベントが検出されるか否かに基づきこのシーケンスをフィルタリングする。占有検出器６０２の出力は、自身の入力シーケンスの部分集合である。したがって、出力データレートは、入力よりも小さい。
【００８０】
ｉＢｅａｃｏｎ検出器６０４は、ＢＬＥセンサから読み取り値シーケンスを受信し、小売店報酬プログラムを選択している買い物客ＶＩＰであるか否か、例えば登録されたスマートフォンアプリケーションが認識されるか否かに基づき該シーケンスをフィルタリングする。同様に、ｉＢｅａｃｏｎ検出器６０４の出力は、その入力シーケンスの部分集合でもある。ｉＢｅａｃｏｎ検出器６０４は、さらに、そのデータを他の検出された装置から受信されたデータから区別するために、ＢＬＥセンサの識別子により出力シーケンスの要素をタグ付けする。
【００８１】
さらに、カメラ出力は、フラグメントシーケンスを生成するために、特徴検出器６０６に供給される。例えば、カメラは、ビデオをフラグメントに分解可能なスマートキャプチャ装置であって良い。特徴検出器６０６は、次に、フラグメントが展示、例えば販促商品の前の領域に対応するか否かに基づき、フラグメントをフィルタリングする。
【００８２】
幾つかの実施形態では、ＶＩＰ存在ブロック６０８の動作は、決定エンジン２１７により実行される。決定エンジン２１７は、占有検出器６０２の出力及びｉＢｅａｃｏｎ検出器６０４の出力の両方を入力として取り入れる。決定エンジン２１７は、占有検出器６０２からの第２入力シーケンスを、ｉＢｅａｃｏｎ検出器６０４からの第１入力シーケンスをフィルタリングする又はゲーティングするための制御シーケンスとして使用する。この場合、決定エンジン２１７は、同等のタイムスタンプを有する第２入力シーケンスの中に対応する要素が存在するか否かに基づき、第１入力シーケンスをフィルタリングする。フィルタリング結果及び基準に基づき、決定エンジン２１７は、出力シーケンスを生成する。該出力シーケンスは、（１）有効な又は関連する占有、及び（２）登録されたスマートフォンを検出すること、に対応するＢＬＥイベントのシーケンスである。有効な又は関連する占有は、例えば、販促商品の展示の前の体積が少なくとも３０秒以上の間、買い物客により占有されていることを意味して良い。登録されたスマートフォンの検出は、一実施形態では、買い物客のスマートフォン上のアプリケーションがＢＬＥビーコンにより覚醒され、一方、アプリケーションがＢＬＥセンサに自身の存在をシグナリングすることを意味する。決定エンジン２１７の出力シーケンスは、したがって、販促商品の展示前のＶＩＰ買い物客の存在を示す。
【００８３】
ＶＩＰ６１０のビデオクリップは、次に、決定エンジン２１７の出力シーケンス（例えば、ＶＩＰ存在ブロック６０８の出力）を制御シーケンスとして使用して特徴検出器６０６からのビデオフラグメントをゲーティングすることにより、選択モジュール２１９により選択される。決定エンジン２１７の出力シーケンスは、ＶＩＰ買い物客の存在を示す。選択モジュール２１９は、同等のタイムスタンプを有する決定エンジン２１７の出力シーケンス内に対応する要素が存在するか否かに基づき、フラグメントを識別し、店員に提示するためにビデオセグメントシーケンスを生成し、店員が販促商品の展示前に居るＶＩＰ買い物客の相互作用の高解像度の短いビデオクリップを取得できるようにする。
【００８４】
図６Ａは、全体的な服属アーキテクチャを示す。ここで、（１）下位解析は階層構造のレイヤに組織化され、（２）各レイヤは特定レベルの解析能力を実装し、（３）より上位のレベルはより複雑な解析を生成するために、より下位のレベルを包含する。例えば、図６Ａの例は、検出器（例えば、検出器６０２、０４、６０６）のレイヤ、及び階層構造の中で検出器レイヤより上位のＶＩＰ存在ブロック６０８のレイヤを含む。検出器レイヤは、センサからデータを受信し、第１レイヤフィルタリングを実行する。一方で、ＶＩＰ存在レイヤは、第２レイヤフィルタリングを実行し、ＶＩＰ買い物客の存在を示すシーケンスを生成する。留意すべきことに、破線矢印６１２により示されるように階層構造の上に行くほど伝搬されるデータは少なく、複雑なビデオ解析タスクが、より単純な下位タスクから増加的に構築される。言い換えると、より上位のレベルは、より複雑な解析を生成するためにより下位のレベルを包含する。
【００８５】
図６Ａの服属アーキテクチャ及び上述の分散コミットログを結合して、ハードウェア実現のより広い選択肢を有する分散型警告システムが得られる。したがって、伝統的なビデオ解析システムにおけるモノリシック構造と比べて、増大するシステムコンポーネント数、及び増大するタスク複雑性に対応する点で有利である。本システムの別の利点は、下位タスクが再使用可能であることである。例えば、深さセンサの出力は、混雑制御のような異なるタスクのために人数計測モジュール（図示しない）にも提供され得る。
【００８６】
図６Ａに示すコンテンツプロビジョニング処理では、フィルタリング又はゲーティング動作は、出力シーケンスを得るために、決定エンジン２１７及び選択モジュール２１９により繰り返し実行される。図６Ｂは、ゲーティング動作を示すブロック図６５０を示す。入力シーケンスＡ（例えば、ビデオセグメント６５２）及び制御シーケンスＣｔｒｌ（例えば、Ｗｉ−Ｆｉ、ＢＬＥ、深さセンサ、他のカメラ、等）が与えられると、ゲーティング動作は、Ａのサブセットが出力Ａ’として選択され、タグ付けされるようにする（例えば、ビデオセグメント６５４）。
【００８７】
図７は、異なる目的でビデオコンテンツを提供する服属構造の一実施形態を示すブロック図７００を示す。一般的聴衆から戻ってくる訪問者を区別し、及び戻ってくる訪問者から忠実な買い物客（例えば、ＶＩＰ買い物客）を区別する小売店ワークフローを検討する。聴衆存在７０２は、関連ビデオセグメント上で顔を検出することにより有効にされ得る。ここで、関連性は、検出された動きの程度に基づき決定されて良い。訪問者再識別は、Ｗｉ−Ｆｉセンサに関連付けられ得る。ここで、Ｗｉ−Ｆｉセンサは、店舗を最近訪問しているモバイル装置を認識する。ＶＩＰ検出は、ＢＬＥ  ｉＢｅａｃｏｎを用いて行われる。図７の例では、ＶＩＰが販促商品の前に存在するか否かを検出することは重要ではない。したがって、体積占有のための深さセンサは必要ない。
【００８８】
７０２〜７０４に示すように異なる目的でビデオコンテンツを提供する例示的な服属ストラテジがある。図６Ａと同様に、監視アプリケーション２１３は、カメラＡからビデオシーケンスを受信し、制御シーケンスに基づきゲーティング及びタグ付け動作を実行して、特定の基準を満たす入力ビデオシーケンスのサブセットを出力する。出力ビデオシーケンスは、ビデオ処理アプリケーション１０３を含むクラウドにある処理サーバにより入力として取り入れられ、異なるトピックにグループ化し、セグメントに分割し、トピックに発行紙、及びブローカ若しくはブローカのクラスタに配信して、７１０に示すように分散コミットログに格納する。トピックに関連付けられた区分ログに格納されたビデオセグメントは、次に、聴衆解析、ＶＩＰ検出、又は戻ってくる消費者の解析を目的として、スタッフにより要求され及びスタッフのために検索される。留意すべきことに、粗サンプラの出力シーケンス７１２は、ＢＬＥに基づくタグ付け器及びＷｉ−Ｆｉに基づくタグ付け器の両方のための制御シーケンスとして再利用され、したがって、消費リソースを節約する。
【００８９】
図２Ｂに戻ると、ユーザインタフェースエンジン２２１は、例えばディスプレイ装置２３９によりユーザインタフェースをユーザに提供するためのソフトウェア及び／又はロジックを有して良い。ブローカ１０９のユーザインタフェースエンジン２２１は、任意である。幾つかの実施形態では、ユーザインタフェースエンジン２２１は、選択モジュール２１９から命令を受信し、グラフィカルユーザインタフェースデータをクライアント装置１１５へ通信ユニット２４１を介して送信し、選択されたビデオセグメントをユーザに表示させる。
【００９０】
図８は、ビデオのビデオセグメントを１又は複数の消費者へトピック及び該トピックに関連付けられた分散コミットログに基づき配信する方法の一実施形態を示すフロー図８００を示す。上述のように、コンピューティング装置１０１又はスマートキャプチャ装置１２３のビデオ処理アプリケーション１０３は、フラグメントモジュール２０１、グループモジュール２０３、配信モジュール２０５、及びセグメンタ２０７を有して良い。８０２で、フラグメントモジュール２０１は、ビデオをフラグメントに分解する。８０４で、グループモジュール２０３は、フラグメントに関連付けられた識別子に基づき、フラグメントをトピックにグループ化する。８０６で、セグメンタ２０７は、フラグメントをセグメントシーケンスに分割する。８０８で、配信モジュール２０５は、トピックに基づき、セグメントシーケンスの配信を１又は複数のブローカに割り当てる。
【００９１】
幾つかの実施形態では、コンピューティング装置１０１又はスマートキャプチャ装置１２３のブローカ１０９は、ログ制御部２１１を含む。８１０で、１又は複数のブローカのログ制御部２１１は、セグメントシーケンスのシーケンス順序を保存しながら、トピックに関連付けられたセグメントシーケンスを分散コミットログに書き込む。
【００９２】
図９は、ユーザからのクエリに応答して、該ユーザにビデオコンテンツを提供する方法の実施形態を示すフロー図９００を示す。方法９００は、ビデオサーバ１２１と通信するコンピューティング装置１０１又はスマートキャプチャ装置１２３により実施される。コンピューティング装置１０１又はスマートキャプチャ装置１２３は、ビデオ処理アプリケーション１０３及びブローカ１０９を含む。
【００９３】
９０２で、ビデオ処理アプリケーション１０３は、ビデオサーバ１２１を介してユーザからクエリを受信する。９０４で、ビデオ処理アプリケーション１０３は、クエリに関連するセグメントを識別する。９０６で、ブローカ１０９は、ビデオ処理アプリケーション１０３と通信して、セグメントをトピックに発行し、及びコミットログの対応するパーティションにセグメントを格納する。９０８で、ビデオサーバ１２１（既にトピックを契約している）は、コミットログをリードする。９１０で、ビデオサーバ１２１は、ユーザにセグメントを提供する。
【００９４】
図１０は、服属構造においてビデオコンテンツを提供する方法の実施形態を示すフロー図１０００を示す。方法は、コンピューティング装置１０１又はスマートキャプチャ装置１２３のブローカ１０９により実施される。特に、ブローカ１０９は、監視アプリケーション２１３、及びユーザインタフェースエンジン２２１を有する。監視アプリケーション２１３は、検出器２１５、決定エンジン２１７、及び選択モジュール２１９を有する。
【００９５】
１００２で、検出器２１５は、１又は複数のセンサからデータを受信する。１００４で、決定エンジン２１７は、データの第１部分から制御シーケンスを決定する。例えば、図６Ａで、決定エンジン２１７は、占有検出器の出力を制御シーケンスとして使用する。１００６で、決定エンジン２１７は、少なくとも制御シーケンスに基づき、第１出力シーケンスを生成する。１００８で、選択モジュール２１９は、第１出力シーケンスに基づき、データの第２部分をフィルタリングする。例えば、図６Ａで、選択モジュール２１９は、ＶＩＰ買い物客の存在を示す第１出力シーケンスを決定エンジン２１７から受信し、第１出力シーケンスを制御シーケンスとして使用することに基づき、フラグメントシーケンスをフィルタリングする。１０１０で、選択モジュール２１９は、第２出力シーケンスを生成する。１０１２で、選択モジュール２１９は、ユーザインタフェースエンジン２２１と通信して、表示のために第２出力シーケンスを提供する。
【００９６】
ビデオのビデオセグメントを１又は複数の消費者へトピック及び該トピックに関連付けられた分散コミットログに基づき配信するシステム及び方法が記載された。以上の説明では、説明を目的として、上述の技術の完全な理解を提供するために、多くの詳細事項が説明された。しかしながら、当業者は、実施技術がそのような特定の詳細にかかわらず実施できることを理解するだろう。他の例では、説明を不明瞭にしないために及び理解を容易にするために、構造及び装置がブロック図で示される。例えば、技術は上述の一実施形態では主にソフトウェア及び特定のハードウェアを参照して記載される。しかしながら、本発明は、サービスを提供する任意の周辺装置の部分としてデータ及びコマンドを受信し及び情報を提示できる任意の種類のコンピューティングシステムに適用される。
【００９７】
本願明細書において「一実施形態」又は「ある実施形態」等のような表現は、実施形態と関連して記載された特定の機能、構造又は特徴が少なくとも１つの実施形態に含まれることを意味する。明細所内の種々の文の中の「一実施形態では」という表現の出現は、必ずしも全て同じ実施形態を参照していない。
【００９８】
上述の詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対する動作のアルゴリズム及び象徴的表現の観点で提示される。これらのアルゴリズムの説明及び表現は、幾つかの環境では、データ処理技術の当業者により、業務内容を最も効率的に他の当業者に伝えるために用いられる手段である。アルゴリズムは、ここでは及び概して、所望の結果を生じる自己矛盾のないステップシーケンスであると考えられる。ステップは、物理量の物理的操作を必要とするステップである。通常、必ずしも必要ではないが、これらの量は、格納され、転送され、結合され、比較され及びその他の場合には操作され得る電気信号又は磁気信号の形式を取る。基本的に一般的に用いられるという理由で、これらの信号をビット、値、要素、シンボル、文字、語、数値、等として表すことが便利であることが分かっている。
【００９９】
しかしながら、これらの及び類似の語の全ては、適切な物理量に関連付けられ、これらの量に適用される便宜的ラベルに過ぎない。特に断りのない限り、以下の議論から明らかなように、以下の説明を通じて、「処理」、「計算」、「演算」、「決定」、「表示」、等の語を用いた議論は、コンピュータシステム又は同様の電子コンピューティング装置の動作及び処理を表す。コンピュータシステム又は同様の電子コンピューティング装置は、コンピュータシステムのレジスタ及びメモリ内にある物理（電子）量として表されたデータを操作し、コンピュータシステムのメモリ若しくはレジスタ又は情報記憶、送信又は表示装置等の中の物理量として同様に表される他のデータに変換する。
【０１００】
本発明は、本願明細書の動作を実行する装置にも関する。この装置は、所要の目的のために特に構成されても良く、又はコンピュータに格納されたコンピュータプログラムにより選択的に起動され又は再構成される汎用目的コンピュータを有しても良い。このようなコンピュータプログラムは、フロッピディスク、光ディスク、ＣＤ−ＲＯＭ及び磁気ディスクを含む任意の種類のディスク、ＲＯＭ（read−only  memory）、ＲＡＭ（random  access  memory）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気若しくは光カード、不揮発性メモリを有するＵＳＢキーを含むフラッシュメモリ、又は電子命令を格納するのに適する任意の種類の媒体のような、各々がコンピュータシステムバスに結合された、しかしこれらに限定されないコンピュータ可読記憶媒体に格納されて良い。
【０１０１】
幾つかの実施形態は、完全なハードウェアの実施形態、完全なソフトウェアの実施形態又はハードウェアとソフトウェア要素の両方を含む実施形態の形式を取り得る。一実施形態は、ファームウェア、常駐ソフトウェア、マイクロコード等を含むがこれらに限定されないソフトウェアで実装されて良い。
【０１０２】
さらに、幾つかの実施形態は、コンピュータ又は任意の命令実行システムにより又はそれと関連して使用するためのプログラムコードを提供するコンピュータにより使用可能な又はコンピュータにより読み取り可能な媒体からアクセス可能なコンピュータプログラムプロダクトの形式を取り得る。この説明の目的のために、コンピュータにより使用可能な又はコンピュータにより読み取り可能な媒体は、命令実行システム、機器又は装置により若しくはそれらと関連して使用するためのプログラムを有し、格納し、通信し、伝達し又は転送することが可能な任意の機器であって良い。
【０１０３】
プログラムコードを格納し及び／又は実行するのに適するデータ処理システムは、システムバスを通じてメモリ要素に直接又は間接に結合される少なくとも１つのプロセッサを有し得る。メモリ要素は、プログラムコードの実際の実行中に用いられるローカルメモリ、大容量記憶装置、及び実行中にコードが大容量記憶装置から読み出されなければならない回数を低減するために少なくとも特定のプログラムコードの一時的記憶を提供するキャッシュメモリを含み得る。
【０１０４】
入力／出力又はＩ／Ｏ装置（キーボード、ディスプレイ、ポインティングデバイス等を含むがこれらに限定されない）は、直接に又は介入するＩ／Ｏ制御部を通じてシステムに結合され得る。
【０１０５】
ネットワークアダプタも、介入する私設若しくは公衆ネットワークを通じてデータ処理システムを他のデータ処理システムに又は遠隔プリンタ若しくは記憶装置に結合するために、システムに結合されて良い。モデム、ケーブルモデム及びEthernetカードは、現在利用可能な種類のネットワークアダプタのうちの少数の例に過ぎない。
【０１０６】
最後に、本願明細書で提示されるアルゴリズム及びディスプレイは、本質的に、任意の特定のコンピュータ又は他の機器にも関連しない。種々の汎用システムが、本願明細書の教示に従ってプログラムと共に用いられて良く、所要の方法ステップを実行するために更に特定の装置を構成することが都合が良いことがあり得る。種々のこれらのシステムの所要の構造は、以下の説明から明らかである。さらに、技術は、任意の特定のプログラミング言語を参照して記載されない。理解されるべきことに、種々のプログラミング言語が、本願明細書に記載された種々の実施形態の教示を実施するために用いられて良い。
【０１０７】
以上の実施形態の説明は、説明及び開設を目的としている。上述の記載は、網羅的であること又は本願明細書を開示の特定の形式に限定することを意図しない。上述の教示に照らして多くの修正及び変形が可能である。実施形態の範囲はこの詳細な説明に限定されず、本願の特許請求の範囲により定められる。当業者により理解されるように、種々の例が、本発明の精神又は基本的特徴から逸脱することなく他の特定の形式で実施できる。同様に、モジュール、ルーチン、特徴、属性、方法及び他の態様の特定の名称及び区分は、必須でも重要でもなく、明細書及びその特徴を実施するメカニズムは、異なる名称、区分及び／又はフォーマットを有して良い。さらに、当業者に明らかなように、本願明細書のモジュール、ルーチン、特徴、属性、方法は、ソフトウェア、ファームウェア、又それらの任意の組合せで実装できる。また、本願明細書の例えばモジュールであるコンポーネントがソフトウェアとして実装されるときは、コンポーネントは、スタンドアロンプログラム、大規模プログラムの一部、複数の別個のプログラム、静的又は動的リンクライブラリ、カーネルローダブルモジュール、デバイスドライバとして、及び／又はコンピュータプログラミングの当業者に現在知られている若しくは将来知られる如何なる他の方法でも実装され得る。さらに、本願明細書は、特定プログラミング言語、又は特定のオペレーティングシステム若しくは環境での実施形態に限定されない。したがって、本開示は、限定ではなく、本願明細書の範囲の説明を目的とする。
【符号の説明】
【０１０８】
１００  システム
１０１  コンピューティング装置
１０３  ビデオ処理アプリケーション
１０３  ビデオ処理アプリケーション
１０５  ネットワーク
１０７  キャプチャ装置
１０９  ブローカ
１０９  ブローカ
１１３  センサ
１１５  クライアント装置
１１７  ブラウザ
１２１  ビデオサーバ
１２３  スマートキャプチャ装置
【図１】
2018148560.tif 000003
【図２Ａ】
2018148560.tif 000004
【図２Ｂ】
2018148560.tif 000005
【図３Ａ】
2018148560.tif 000006
【図３Ｂ】
2018148560.tif 000007
【図３Ｃ】
2018148560.tif 000008
【図４】
2018148560.tif 000009
【図５】
2018148560.tif 000010
【図６Ａ】
2018148560.tif 000011
【図６Ｂ】
2018148560.tif 000012
【図７】
2018148560.tif 000013
【図８】
2018148560.tif 000014
【図９】
2018148560.tif 000015
【図１０】
2018148560.tif 000016