(57)【要約】      （修正有）【課題】画像解析システムを自動構築するためのインタフェースおよびシステムを提供する。【解決手段】システムにおける方法は、アプリケーションのタイプ、その対象、それ用の訓練方法およびカメラを受信することと、それらに関連しているフレームワークを決定することと、アプリケーションタイプに基づき、フレームワーク用のアプリケーションタイプに関連したロケータおよび分類子を決定することと、フレームワーク用のベースネットワークを構築することと、分類子およびロケータをフレームワーク用のベースネットワークにリンクさせるｇｌｕｅモジュールを抽出することと、カメラから受信した画像に対して解析を実行するように、フレームワークでサーバを構成すること、とを含む。【選択図】図１
2020149683.tif 000002
【特許請求の範囲】
【請求項１】
第１のサーバが画像解析を行うように第２のサーバを構成する方法であって、
アプリケーションタイプ、アプリケーションの対象、前記アプリケーション用の訓練方法、およびカメラを受信することと、
前記アプリケーションタイプおよび前記アプリケーションの前記対象の両方に関連している１つまたは複数のフレームワークを決定することと、
前記アプリケーションタイプに基づき、前記１つまたは複数のフレームワーク用の前記アプリケーションタイプに関連した１つまたは複数のロケータおよび１つまたは複数の分類子を決定することと、
前記１つまたは複数のフレームワーク用のベースネットワークを構築することと、
前記１つまたは複数の分類子および前記１つまたは複数のロケータを前記１つまたは複数のフレームワーク用の前記ベースネットワークにリンクさせるｇｌｕｅモジュールを抽出することと、
前記カメラから受信した画像に対して解析を実行するように、前記１つまたは複数のフレームワークで前記第２のサーバを構成することと、を含む、方法。
【請求項２】
前記１つまたは複数の分類子および前記１つまたは複数のロケータを前記１つまたは複数のフレームワーク用の前記ベースネットワークにリンクさせるｇｌｕｅモジュールを前記抽出することが、
前記１つまたは複数のフレームのそれぞれの要素に対して、
分類子下位要素を有する前記それぞれの要素の場合、前記分類子下位要素に対応する前記ｇｌｕｅモジュールを得ることと、
ロケータ下位要素を有する前記それぞれの要素の場合、前記ロケータ下位要素に対応する前記ｇｌｕｅモジュールを得ることと、を含む、請求項１に記載の方法。
【請求項３】
前記アプリケーションタイプが、異常検出、異常位置、物体追跡、および物体分類のうちの１つまたは複数である、請求項１に記載の方法。
【請求項４】
前記アプリケーションタイプおよび前記アプリケーションの前記対象の両方に関連している前記１つまたは複数のフレームワークを前記決定することが、複数のフレームワークを複数のアプリケーションタイプおよび複数のアプリケーション対象に関連付けるデータベースを参照することを含む、請求項１に記載の方法。
【請求項５】
前記アプリケーションに関連した前記１つまたは複数のロケータおよび前記１つまたは複数の分類子に基づき、利用され得る訓練方法リストを決定することをさらに含み、前記訓練方法が、前記訓練方法リストの中の選択したものから受信される、請求項１に記載の方法。
【請求項６】
前記１つまたは複数の分類子および前記１つまたは複数のロケータを前記１つまたは複数のフレームワーク用の前記ベースネットワークにリンクさせる前記ｇｌｕｅモジュールを前記抽出することが、複数のｇｌｕｅモジュールを複数のベースネットワークおよび複数のサブネットワークに関連付けるデータベースを参照することを含む、請求項１に記載の方法。
【請求項７】
第１のサーバが画像解析を行うように第２のサーバを構成するための命令を格納する非一時的コンピュータ可読媒体であって、前記命令が、
アプリケーションタイプ、アプリケーションの対象、前記アプリケーション用の訓練方法、およびカメラを受信することと、
前記アプリケーションタイプおよび前記アプリケーションの前記対象の両方に関連している１つまたは複数のフレームワークを決定することと、
前記アプリケーションタイプに基づき、前記１つまたは複数のフレームワーク用の前記アプリケーションタイプに関連した１つまたは複数のロケータおよび１つまたは複数の分類子を決定することと、
前記１つまたは複数のフレームワーク用のベースネットワークを構築することと、
前記１つまたは複数の分類子および前記１つまたは複数のロケータを、前記１つまたは複数のフレームワーク用の前記ベースネットワークにリンクさせるｇｌｕｅモジュールを抽出することと、
前記カメラから受信した画像に対して解析を実行するように、前記１つまたは複数のフレームワークで前記第２のサーバを構成することと、を含む、非一時的コンピュータ可読媒体。
【請求項８】
前記１つまたは複数の分類子および前記１つまたは複数のロケータを、前記１つまたは複数のフレームワーク用の前記ベースネットワークにリンクさせるｇｌｕｅモジュールを前記抽出することが、
前記１つまたは複数のフレームのそれぞれの要素に対し、
分類子下位要素を有する前記それぞれの要素の場合、前記分類子下位要素に対応する前記ｇｌｕｅモジュールを得ることと、
ロケータ下位要素を有する前記それぞれの要素の場合、前記ロケータ下位要素に対応する前記ｇｌｕｅモジュールを得ることと、を含む、請求項７に記載の非一時的コンピュータ可読媒体。
【請求項９】
前記アプリケーションタイプが、異常検出、異常位置、物体追跡、および物体分類のうちの１つまたは複数である、請求項７に記載の非一時的コンピュータ可読媒体。
【請求項１０】
前記アプリケーションタイプおよび前記アプリケーションの前記対象の両方に関連している前記１つまたは複数のフレームワークを前記決定することが、複数のフレームワークを複数のアプリケーションタイプおよび複数のアプリケーション対象に関連付けるデータベースを参照することを含む、請求項７に記載の非一時的コンピュータ可読媒体。
【請求項１１】
前記命令が、前記アプリケーションに関連した前記１つまたは複数のロケータおよび前記１つまたは複数の分類子に基づき、利用され得る訓練方法リストを決定することをさらに含み、前記訓練方法が、前記訓練方法リストの中の選択したものから受信される、請求項７に記載の非一時的コンピュータ可読媒体。
【請求項１２】
前記１つまたは複数の分類子および前記１つまたは複数のロケータを、前記１つまたは複数のフレームワーク用の前記ベースネットワークにリンクさせる前記ｇｌｕｅモジュールを前記抽出することが、複数のｇｌｕｅモジュールを複数のベースネットワークおよび複数のサブネットワークに関連付けるデータベースを参照することを含む、請求項７に記載の非一時的コンピュータ可読媒体。
【請求項１３】
画像解析を行うように第２のサーバを構成する第１のサーバであって、
プロセッサを備え、前記プロセッサが、
アプリケーションタイプ、アプリケーションの対象、前記アプリケーション用の訓練方法、およびカメラを受信することと、
前記アプリケーションタイプおよび前記アプリケーションの前記対象の両方に関連している１つまたは複数のフレームワークを決定することと、
前記アプリケーションタイプに基づき、前記１つまたは複数のフレームワーク用の前記アプリケーションタイプに関連した１つまたは複数のロケータおよび１つまたは複数の分類子を決定することと、
前記１つまたは複数のフレームワーク用のベースネットワークを構築することと、
前記１つまたは複数の分類子および前記１つまたは複数のロケータを、前記１つまたは複数のフレームワーク用の前記ベースネットワークにリンクさせるｇｌｕｅモジュールを抽出することと、
前記カメラから受信した画像に対して解析を実行するように、前記１つまたは複数のフレームワークで前記第２のサーバを構成することと、を行うように構成されている、第１のサーバ。
【請求項１４】
前記プロセッサが、前記１つまたは複数の分類子および前記１つまたは複数のロケータを前記１つまたは複数のフレームワークにリンクさせるｇｌｕｅモジュールを抽出するように構成され、前記抽出することが、
前記１つまたは複数のフレームワークのそれぞれの要素に対し、
分類子下位要素を有する前記それぞれの要素の場合、前記分類子下位要素に対応する前記ｇｌｕｅモジュールを得ることと、
ロケータ下位要素を有する前記それぞれの要素の場合、前記ロケータ下位要素に対応する前記ｇｌｕｅモジュールを得ることと、によって行われる、請求項１３に記載の第１のサーバ。
【請求項１５】
前記アプリケーションタイプが、異常検出、異常位置、物体追跡、および物体分類のうちの１つまたは複数である、請求項１３に記載の第１のサーバ。
【請求項１６】
前記プロセッサが、複数のフレームワークを複数のアプリケーションタイプおよび複数のアプリケーション対象に関連付けるデータベースを参照することによって、前記アプリケーションタイプおよび前記アプリケーションの前記対象の両方に関連している前記１つまたは複数のフレームワークを決定するように構成されている、請求項１３に記載の第１のサーバ。
【請求項１７】
前記プロセッサが、前記アプリケーションに関連した前記１つまたは複数のロケータおよび前記１つまたは複数の分類子に基づき、利用され得る訓練方法リストを決定するようにさらに構成され、前記訓練方法が、前記訓練方法リストの中の選択したものから受信される、請求項１３に記載の第１のサーバ。
【請求項１８】
前記プロセッサが、複数のｇｌｕｅモジュールを複数のベースネットワークおよび複数のサブネットワークに関連付けるデータベースを参照することによって、前記１つまたは複数の分類子および前記１つまたは複数のロケータを前記１つまたは複数のフレームワーク用の前記ベースネットワークにリンクさせる前記ｇｌｕｅモジュールを抽出するように構成されている、請求項１３に記載の第１のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は概してデータ解析を目的とし、より具体的には、画像解析システムを自動構築するためのインターフェースおよびシステムを目的とする。
【背景技術】
【０００２】
関連技術では、オープンソースソフトウェア（ＯＳＳ：Ｏｐｅｎ  Ｓｏｕｒｃｅ  Ｓｏｆｔｗａｒｅ）および学界から提供される、多くの物体検出フレームワーク、分類子、ロケータ、およびベースネットワークがある。関連技術の実装形態では、物体検出フレームワークは、技術的に取り換え可能であり得る、ベースネットワーク、分類子、およびロケータを含む。しかし、すべてのユースケースに対する万能フレームワークはない。検出の精度は、対象物体のタイプだけでなく、照明条件などの環境要因によっても影響を受ける。さらに、どのフレームワークまたはどのフレームワークとベースネットワーク／分類子／ロケータの組み合わせが特定のユースケースに最適であるかを決定することは、画像解析の専門的技術を必要とする。ベースネットワーク、分類子、およびロケータを取り換えることを難しくする、特定の状況のために大半のフレームワークが実装されるので、フレームワークを組み合わせるのにも専門的技術を必要とする。
【０００３】
関連技術の実装形態は、メタアーキテクチャの統一された実装形態を含み得、代替的な特徴抽出器を使用することによって、また、これらのメタアーキテクチャのそれぞれの内の画像サイズなどの他の臨界パラメータを変化させることによって、作成された速度／精度トレードオフ曲線を描くことができる。
【発明の概要】
【０００４】
本開示の態様は、画像解析を行うように第２のサーバを構成する第１のサーバを含み得、第１のサーバは、プロセッサを含み、プロセッサは、アプリケーションタイプ、アプリケーションの対象、およびアプリケーション用の訓練方法、ならびにカメラを受信することと、アプリケーションタイプおよびアプリケーションの対象の両方に関連している１つまたは複数のフレームワークを決定することと、アプリケーションタイプに基づき、１つまたは複数のフレームワーク用のアプリケーションタイプに関連した１つまたは複数のロケータおよび１つまたは複数の分類子を決定することと、１つまたは複数のフレームワーク用のベースネットワークを構築することと、１つまたは複数の分類子および１つまたは複数のロケータを、１つまたは複数のフレームワーク用のベースネットワークにリンクさせるｇｌｕｅモジュールを抽出することと、カメラから受信した画像に対して解析を実行するように、１つまたは複数のフレームワークで第２のサーバを構成することと、を行うように構成されている。
【０００５】
本開示の態様は、第１のサーバが画像解析を行うように第２のサーバを構成する方法を含み得、方法は、アプリケーションタイプ、アプリケーションの対象、およびアプリケーション用の訓練方法、ならびにカメラを受信することと、アプリケーションタイプおよびアプリケーションの対象の両方に関連している１つまたは複数のフレームワークを決定することと、アプリケーションタイプに基づき、１つまたは複数のフレームワーク用のアプリケーションタイプに関連した１つまたは複数のロケータおよび１つまたは複数の分類子を決定することと、１つまたは複数のフレームワーク用のベースネットワークを構築することと、１つまたは複数の分類子および１つまたは複数のロケータを、１つまたは複数のフレームワーク用のベースネットワークにリンクさせるｇｌｕｅモジュールを抽出することと、カメラから受信した画像に対して解析を実行するように、１つまたは複数のフレームワークで第２のサーバを構成することと、を含む。
【０００６】
本開示の態様は、第１のサーバが画像解析を行うように第２のサーバを構成するための命令を備えるコンピュータプログラムを含み得、命令は、アプリケーションタイプ、アプリケーションの対象、およびアプリケーション用の訓練方法、ならびにカメラを受信することと、アプリケーションタイプおよびアプリケーションの対象の両方に関連している１つまたは複数のフレームワークを決定することと、アプリケーションタイプに基づき、１つまたは複数のフレームワーク用のアプリケーションに関連した１つまたは複数のロケータおよび１つまたは複数の分類子を決定することと、１つまたは複数のフレームワーク用のベースネットワークを構築することと、１つまたは複数の分類子および１つまたは複数のロケータを、１つまたは複数のフレームワーク用のベースネットワークにリンクさせるｇｌｕｅモジュールを抽出することと、カメラから受信した画像に対して解析を実行するように、１つまたは複数のフレームワークで第２のサーバを構成することと、を含む。コンピュータプログラムは、非一時的コンピュータ可読媒体に格納され、１つまたは複数のプロセッサによって実行されるように構成され得る。
【０００７】
本開示の態様は、画像解析を行うように第２のサーバを構成する第１のサーバを含むシステムを含み得、システムは、アプリケーションタイプ、アプリケーションの対象、アプリケーション用の訓練方法、およびカメラを受信するための手段と、アプリケーションタイプおよびアプリケーションの対象の両方に関連している１つまたは複数のフレームワークを決定するための手段と、アプリケーションタイプに基づき、１つまたは複数のフレームワーク用のアプリケーションに関連した１つまたは複数のロケータおよび１つまたは複数の分類子を決定するための手段と、１つまたは複数のフレームワーク用のベースネットワークを構築するための手段と、１つまたは複数の分類子および１つまたは複数のロケータを、１つまたは複数のフレームワーク用のベースネットワークにリンクさせるｇｌｕｅモジュールを抽出するため手段と、カメラから受信した画像に対して解析を実行するように、１つまたは複数のフレームワークで第２のサーバを構成するための手段と、を含む。
【図面の簡単な説明】
【０００８】
【図１】実装形態例による、Ｑ＆Ａベースの物体検出システム例および自動ビルドシステム例の系統図を示す図である。
【図２】実装形態例による、フレームワークＤＢ表の例を示す図である。
【図３】実装形態例による、分類子ＤＢ表の例を示す図である。
【図４】実装形態例による、ロケータＤＢ表の例を示す図である。
【図５】実装形態例による、ベースネットワークＤＢ表の例を示す図である。
【図６】実装形態例による、ｇｌｕｅ  ＤＢ表の例を示す図である。
【図７】実装形態例による、Ｑ＆Ａシステムのフローおよびインターフェースの例を示す図である。
【図８】実装形態例による、コンフィギュレータプロセス例のフローチャートを示す図である。
【図９】実装形態例による、コンフィギュレータプロセス例のフローチャートを示す図である。
【図１０】実装形態例による、コンフィギュレータプロセス例のフローチャートを示す図である。
【図１１】実装形態例による、コンフィギュレータプロセス例のフローチャートを示す図である。
【図１２】実装形態例による、コンフィギュレータプロセス例のフローチャートを示す図である。
【図１３】実装形態例での使用に適したコンピュータデバイス例を有するコンピューティング環境例を示す図である。
【発明を実施するための形態】
【０００９】
以下の発明を実施するための形態は、本出願の図および実装形態例のさらなる詳細を提供する。図間の重複する要素の参照番号および説明は、分かりやすくするために省略されている。発明を実施するための形態全体を通して使用される用語は、例として提供され、限定する意図はない。例えば、用語「自動の」の使用は、本出願の実装形態を実施する当業者の所望の実装形態に応じて、その実装形態の特定の態様をユーザまたは管理者が制御することを含む、完全自動または半自動の実装形態を含み得る。選択は、ユーザインターフェースまたは他の入力手段を通してユーザによって行われ得るか、または所望のアルゴリズムを通して実施され得る。本明細書に記載の実装形態例は、単独かまたは組み合わせて利用され得、実装形態例の機能性は、所望の実装形態による、任意の手段で実施され得る。
【００１０】
実装形態例は、本明細書に記載の自動ビルドシステムおよび方法で、クエスチョンアンドアンサー（Ｑ＆Ａ）ベースの物体検出システムを含む。
【００１１】
図１は、実装形態例による、Ｑ＆Ａベースの物体検出システム例および自動ビルドシステム例の系統図を示す。システム例は、少なくとも１つのカメラ１０１、１つの入力側アプリケーションプログラミングインターフェース（ＡＰＩ）サーバ１０２、１つの解析サーバ１０３、１つの出力側ＡＰＩサーバ１０４、１つの他のマイクロサービス１０５、および構成サーバ１０６を含む。
【００１２】
解析サーバ１０３は、解析プラットフォーム１３１、入力／出力（Ｉ／Ｏ：Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）モジュール１３２、およびフレームワーク１３３を含む。Ｉ／Ｏモジュール１３２およびフレームワーク１３３の両方は、解析プラットフォーム１３１上かつ／または周囲で走る、スクリプトおよび／または実行可能ファイルである。フレームワーク１３３は、物体検出フレームワークであり、物体検出を行うように構成される。Ｉ／Ｏモジュール１３２は、解析モジュール１３１とフレームワーク１３３との間で双方向にデータを送る。フレームワーク１３３は、ベースネットワーク１４１を含み、さらに、ｇｌｕｅ１４４、１４５を有する分類子１４２およびロケータ１４３を含み得る。
【００１３】
構成サーバ１０６は、コンフィギュレータ１６１、フレームワークデータベース（ＤＢ：ＤａｔａＢａｓｅ）１６２、分類子ＤＢ１６３、ロケータＤＢ１６４、ベースネットワークＤＢ１６５、モジュールリポジトリ１６６、およびｇｌｕｅ  ＤＢ１６７を含む。
【００１４】
少なくとも１人の開発者１０８は、ベースネットワーク１４１、分類子１４２、ロケータ１４３、およびｇｌｕｅ１４４、１４５を含む、Ｉ／Ｏモジュール１３２およびフレームワーク１３３用のスクリプトおよび／または実行可能ファイルを開発する。スクリプトおよび／または実行可能ファイルは、モジュールリポジトリ１６６に格納され、メタデータは、フレームワークＤＢ１６２、分類子ＤＢ１６３、ロケータＤＢ１６４、ベースネットワークＤＢ１６５、モジュールリポジトリ１６６、およびｇｌｕｅ  ＤＢ１６７に格納される。
【００１５】
少なくとも１人のシステムインテグレータ１０７は、構成サーバ１０６を通して、Ｑ＆Ａベースの物体検出システムおよび自動ビルドシステムを操作する。
【００１６】
図２は、実装形態例による、フレームワークＤＢ１６２表の例を示す。例えば、フレームワークＤＢ１６２は、名前列２０１、モジュール名列２０２、アプリケーションタイプ列２０３、アプリケーション対象列２０４、分類子位置列２０５、ロケータ位置列２０６、ベースネットワーク位置列２０７、およびＩ／Ｏモジュール列２０８を含む。
【００１７】
名前列２０１は、フレームワークの名前を格納する。モジュール名列２０２は、フレームワークのモジュールの名前を格納する。モジュールは、解析プラットフォーム１３１上かつ／または周囲で走る、スクリプトおよび／または実行可能ファイルであり得る。アプリケーションタイプ列２０３は、物体検出および物体追跡などの適用可能なアプリケーションタイプの名前を格納する。さらに、アプリケーション対象列２０４は、フロア調査および加工対象物点検などの適用可能なアプリケーション対象の名前を格納する。
【００１８】
分類子位置列２０５、ロケータ位置列２０６、およびベースネットワーク位置列２０７は、このような位置が適用可能であれば、フレームワークに分類子の関連した位置を格納する。この例では、フレームワークは、ニューラルネットワークを使用することによって実施され、したがって、その位置は、レイヤの開始／終了番号を使用して、記述される。
【００１９】
Ｉ／Ｏモジュール列２０８は、フレームワークに対してＩ／Ｏモジュールの名前を格納する。Ｉ／Ｏモジュールは、解析プラットフォーム１３１上かつ／または周囲で走る、スクリプトおよび／または実行可能ファイルであり得る。
【００２０】
行２１１および行２１２は、フレームワークＤＢ１６２表のエントリ例である。
【００２１】
図３は、実装形態例による、分類子ＤＢ１６３表の例を示す。例えば、分類子ＤＢ１６３は、名前列３０１、＃クラス列３０２、モジュール名列３０３、コンストラクタ選択肢列３０４、訓練方法列３０５、および加えることができる列３０６を含む。
【００２２】
名前列３０１は、分類子ネットワークの名前を格納する。＃クラス列３０２は、分類子がいくつのクラスに分類され得るかを示す数を格納する。例では、エントリ「Ｍａｎｙ（多くの）」は、分類子が任意の数を分類できることを示す予約語である。モジュール名列３０３は、分類子のモジュールの名前を格納する。モジュールは、解析プラットフォーム１３１上かつ／または周囲で走る、スクリプトおよび／または実行可能ファイルであり得る。コンストラクタ選択肢列３０４は、モジュールが構築される時に与えられる選択肢を格納する。訓練方法列３０５は、教師なし学習、教師あり学習、および能動学習などの適用可能な訓練方法の名前を格納する。加えることができる列３０６は、コンフィギュレータがどのようにベースネットワークと分類子とを組み合わせるかに関する方法を格納する。この例では、解析プラットフォーム１０３がＫｅｒａｓであると仮定すると、フレームワーク、分類子、ロケータ、およびベースネットワークの大半は、ＳｅｑｕｅｎｔｉａｌモデルＡＰＩを使用することによって実施され、ａｄｄ（）メソッドは、このようなフレームワーク、分類子、ロケータ、およびベースネットワークを組み合わせるのに利用され得、したがって、加えることができる列３０６の値は、ｙｅｓである。一方、フレームワーク、分類子、ロケータ、およびベースネットワークがＳｅｑｕｅｎｔｉａｌ  ＡＰＩを使用しない場合、Ｆｕｎｃｔｉｏｎａｌ  ＡＰＩが代わりに使用され得、したがって、加えることができる列の値は、ｎｏである。
【００２３】
図４は、実装形態例による、ロケータＤＢ１６４表の例を示す。その列は、図３の分類子ＤＢの列と同様である。例えば、ロケータＤＢ１６４は、名前列４０１、モジュール名列４０２、コンストラクタ選択肢列４０３、訓練方法列４０４、および加えることができる列４０５を含み得、これらの列は、エントリ例４１１および４１２を有する、図３の分類子ＤＢと同じ列に対応する。
【００２４】
図５は、実装形態例による、ベースネットワークＤＢ１６５表の例を示す。その列は、図３の分類子ＤＢの列と同様である。例えば、ベースネットワークＤＢ１６５は、名前列５０１、モジュール名列５０２、コンストラクタ選択肢列５０３、および加えることができる列５０４を含み得、これらの列は、エントリ例５１１、５１２、および５１３を有する、図３の分類子ＤＢと同じ列に対応する。
【００２５】
図６は、実装形態例による、ｇｌｕｅ  ＤＢ１６７表の例を示す。例えば、ｇｌｕｅ  ＤＢ１６７表は、名前列６０１、ベースネットワーク（ＮＷ）列６０２、サブＮＷ列６０３、およびモジュール名列６０４を含む。
【００２６】
名前列６０１は、ｇｌｕｅの名前を格納する。ベースＮＷタイプ列６０２は、ｇｌｕｅが適合しているベースＮＷが加えることができるか否かを示す状態を格納する。サブＮＷタイプ列６０３は、ｇｌｕｅが適合しているサブＮＷが加えることができるか否かを示す状態を格納する。この例では、サブＮＷは、分類子１４２およびロケータ１４３を含む。モジュール名列６０４は、ｇｌｕｅのモジュールの名前を格納する。モジュールは、解析プラットフォーム１３１上かつ／または周囲で走る、スクリプトおよび／または実行可能ファイルであり得る。
【００２７】
図７は、実装形態例による、Ｑ＆Ａシステムのフローおよびインターフェースの例を示す。実装形態例では、Ｑ＆Ａシステムは、候補者を絞るために、システムインテグレータ１０７にいくつかの質問をする。このような実装形態は、コンピューティング費用が高価になり得、また力づくによるすべての方法および方法の組み合わせを試すことが実行可能ではないので、実用的なビデオ解析を促進することができる。実装形態例において、７０１で、Ｑ＆Ａシステムは、選択肢を示すことによって、システムインテグレータ１０７にアプリケーションのタイプについて尋ねる。７０２で、Ｑ＆Ａシステムは、選択肢を示すことによって、システムインテグレータ１０７にアプリケーションの対象について尋ねる。７０３で、Ｑ＆Ａシステムは、選択肢を示すことによって、システムインテグレータ１０７に訓練方法について尋ねる。７０４で、Ｑ＆Ａシステムは、システムインテグレータ１０７にカメラ１０１について尋ねる。７０５で、Ｑ＆Ａシステムは、システムインテグレータ１０７に確認を頼む。次に、Ｑ＆Ａシステムは、物体検出モジュールをビルドし、必要に応じてモジュールを訓練し、すべてのモジュールに対して正確性および特殊性などのよく知られたＫＰＩを計算する。７０６で、Ｑ＆Ａシステムは、よく知られたＫＰＩを示すことによって、すべてのモジュールの比較を示す。
【００２８】
図８は、実装形態例による、コンフィギュレータ１６１プロセス例のフローチャートを示す。スクリーン７０１を示す前に、コンフィギュレータ１６１プロセスは、アプリケーションタイプのリストを作るように、この手順を実行する。８０１で、コンフィギュレータ１６１は、アプリケーションタイプのリストを作るために、この手順の実行を開始する。８０２で、コンフィギュレータ１６１プロセスは、フレームワークＤＢ１６３における「アプリケーションタイプ」列のすべての一意の値を得、「アプリケーションタイプ」リストにそれらを格納する。以下の逐次クエリ言語（ＳＱＬ）ステートメントは、フレームワークＤＢ１６３における「アプリケーションタイプ」列のすべての一意の値を得る。
ＳＥＬＥＣＴ  ＤＩＳＴＩＮＣＴ「アプリケーションタイプ」ＦＲＯＭ「フレームワークＤＢ」
【００２９】
８０３で、コンフィギュレータ１６１は、このフローを終了する。
【００３０】
図９は、実装形態例による、コンフィギュレータ１６１プロセス例のフローチャートを示す。スクリーン７０２を示す前に、コンフィギュレータ１６１プロセスは、アプリケーション対象のリストを作るように、この手順を実行する。９０１で、コンフィギュレータ１６１は、アプリケーションタイプのリストを作るために、この手順の実行を開始する。９０２で、コンフィギュレータ１６１プロセスは、「アプリケーションタイプ」列がＱ１において選択されたものと同じ値を有する、フレームワークＤＢ１６３における「アプリケーション対象」列のすべての一意の値を得て、「アプリケーション対象」リストにそれらを格納する。以下のＳＱＬステートメントは、「アプリケーションタイプ」列がＱ１において選択されたものと同じ値を有する、フレームワークＤＢ１６３における「アプリケーション対象」列のすべての一意の値を得る。
ＳＥＬＥＣＴ  ＤＩＳＴＩＮＣＴ「アプリケーション対象」ＦＲＯＭ「フレームワークＤＢ」ＷＨＥＲＥ「アプリケーションタイプ」＝ｓｅｌｅｃｔｅｄ＿ｉｎ＿Ｑ１
【００３１】
９０３で、コンフィギュレータ１６１プロセスは、このフローを終了する。
【００３２】
図１０は、実装形態例による、コンフィギュレータ１６１プロセス例のフローチャートを示す。スクリーン７０３を示す前に、コンフィギュレータ１６１プロセスは、１００１において訓練方法のリストを作るように、この手順を実行する。
【００３３】
１００２で、コンフィギュレータ１６１プロセスは、「アプリケーションタイプ」列がＱ１において選択されたものと同じ値を有する、フレームワークＤＢ１６２における「分類子位置」列のすべての値を得て、それらを「分類子」リストに入れる。以下のＳＱＬステートメントは、「アプリケーションタイプ」列がＱ１において選択されたものと同じ値を有する、フレームワークＤＢ１６２における「分類子位置」列のすべての値を得る。
ＳＥＬＥＣＴ「分類子位置」ＦＲＯＭ「フレームワークＤＢ」ＷＨＥＲＥ「アプリケーションタイプ」＝ｓｅｌｅｃｔｅｄ＿ｉｎ＿Ｑ１
【００３４】
１００３で、コンフィギュレータ１６１プロセスは、分類子リストがゼロか否かを検出する。分類子リストがゼロならば（Ｙ）、１００４で、コンフィギュレータ１６１プロセスは、訓練方法＃１リストにゼロを提供する。さもなければ（Ｎ）、１０４１で、コンフィギュレータ１６１プロセスは、「分類子ＤＢ」１６３における「訓練方法」列のすべての一意の値を得て、それらを「訓練方法＃１」リストに入れる。以下のＳＱＬステートメントは、「分類子ＤＢ」１６３における「訓練方法」列のすべての一意の値を得る。
ＳＥＬＥＣＴ  ＤＩＳＴＩＮＣＴ「訓練方法」ＦＲＯＭ「分類子ＤＢ」
【００３５】
１００５で、コンフィギュレータ１６１プロセスは、「アプリケーションタイプ」列がＱ１において選択されたものと同じ値を有する、フレームワークＤＢ１６２における「ロケータ位置」列のすべての値を得て、それらを「ロケータ」リストに置く。以下のＳＱＬステートメントは、「アプリケーションタイプ」列がＱ１において選択されたものと同じ値を有する、フレームワークＤＢ１６２における「ロケータ位置」列のすべての値を得る。
ＳＥＬＥＣＴ「ロケータ位置」ＦＲＯＭ「フレームワークＤＢ」ＷＨＥＲＥ「アプリケーションタイプ」＝ｓｅｌｅｃｔｅｄ＿ｉｎ＿Ｑ１
【００３６】
１００６で、コンフィギュレータ１６１プロセスは、ロケータリストがゼロであるか否かを検出する。分類子リストがゼロならば（Ｙ）、１００７で、コンフィギュレータ１６１プロセスは、訓練方法＃２リストにおいてゼロを提供する。さもなければ（Ｎ）、１０７１で、コンフィギュレータ１６１プロセスは、「ロケータＤＢ」１６４における「訓練方法」列の一意の値のすべてを得、それらを「訓練方法＃２」リストに置く。以下のＳＱＬステートメントは、「ロケータＤＢ」１６４における「訓練方法」列のすべての一意の値を得る。
ＳＥＬＥＣＴ  ＤＩＳＴＩＮＣＴ「訓練方法」ＦＲＯＭ「ロケータＤＢ」
【００３７】
１００８で、コンフィギュレータ１６１プロセスは、「訓練方法＃１」リストおよび「訓練方法＃２」リストの両方に現れる要素を選択し、それらを「訓練方法」リストに置く。
【００３８】
１００９で、コンフィギュレータ１６１プロセスは、このフローを終了する。
【００３９】
図１１は、実装形態例による、コンフィギュレータ１６１プロセス例のフローチャートを示す。確認７０５の後、コンフィギュレータ１６１プロセスは、組み合わせフレームワークを作るように、この手順を実行する。１１０１で、コンフィギュレータ１６１プロセスは、組み合わせフレームワークを作るように、この手順の実行を開始する。
【００４０】
１１０２で、コンフィギュレータ１６１プロセスは、「アプリケーションタイプ」列がＱ１において選択されたものと同じ値を有し、かつ「アプリケーション対象」列がＱ２において選択されたものと同じ値を有する、フレームワークＤＢ１６２におけるすべての行を得て、それらを「一時的フレームワーク」リストに入れる。以下のＳＱＬステートメントは、「アプリケーションタイプ」列がＱ１において選択されたものと同じ値を有し、かつ「アプリケーション対象」列がＱ２において選択されたものと同じ値を有する、フレームワークＤＢ１６２におけるすべての行を得る。
ＳＥＬＥＣＴ＊ＦＲＯＭ「フレームワークＤＢ」ＷＨＥＲＥ「アプリケーションタイプ」＝ｓｅｌｅｃｔｅｄ＿ｉｎ＿Ｑ１かつ「アプリケーション対象」＝ｓｅｌｅｃｔｅｄ＿ｉｎ＿Ｑ２
【００４１】
１１０３で、コンフィギュレータ１６１プロセスは、ルーピングのために一時的フレームワークリストの第１の要素に対してローカル変数を初期化する。１１０４で、コンフィギュレータ１６１プロセスは、その要素が取り換え可能な分類子を有するか否かを検出する。この例では、フレームワークＤＢ１６２の行が分類子位置列２０５において値を有する場合、同じ名前２０１値を有する要素は取り換え可能な分類子を有する。要素が取り換え可能な分類子を有する場合（Ｙ）、１１０５で、コンフィギュレータ１６１プロセスは、「訓練方法」列がＱ３において選択されたものと同じ値を有する、「分類子ＤＢ」１６３におけるすべての行を得て、それらを「一時的分類子」リストに入れる。以下のＳＱＬステートメントは、「訓練方法」列がＱ３において選択されたものと同じ値を有する、「分類子ＤＢ」１６３におけるすべての行を得る。
ＳＥＬＥＣＴ＊ＦＲＯＭ「分類子ＤＢ」ＷＨＥＲＥ「訓練方法」＝ｓｅｌｅｃｔｅｄ＿ｉｎ＿Ｑ３
【００４２】
１１０６で、コンフィギュレータ１６１プロセスは、要素が取り換え可能なロケータを有するか否かを検出する。この例では、フレームワークＤＢ１６２の行がロケータ位置列２０６において値を有する場合、同じ名前２０１値を有する要素は、取り換え可能なロケータを有する。要素が取り換え可能なロケータを有する場合（Ｙ）、１１０７で、コンフィギュレータ１６１は、「訓練方法」列がＱ３において選択されたものと同じ値を有する、「ロケータＤＢ」１６４におけるすべての行を得て、それらを「一時的ロケータ」リストに置く。以下のＳＱＬステートメントは、「訓練方法」列がＱ３において選択されたものと同じ値を有する、「ロケータＤＢ」１６４におけるすべての行を得る。
ＳＥＬＥＣＴ＊ＦＲＯＭ「ロケータＤＢ」ＷＨＥＲＥ「訓練方法」＝ｓｅｌｅｃｔｅｄ＿ｉｎ＿Ｑ３
【００４３】
１１０８で、コンフィギュレータ１６１プロセスは、「ベースＮＷ  ＤＢ」１６５におけるすべての行を得て、それらを「一時的ベースＮＷ」リストに置く。以下のＳＱＬステートメントは、「ベースＮＷ  ＤＢ」１６５におけるすべての行を得る。
ＳＥＬＥＣＴ＊ＦＲＯＭ「ベースＮＷ  ＤＢ」
【００４４】
１１０９で、コンフィギュレータ１６１プロセスは、一時的リストのそれぞれから１つの要素を取り出すことによって、フレームワークのすべての組み合わせを作り、それらを「最終フレームワーク」リストに置く。
【００４５】
１１１０で、コンフィギュレータ１６１プロセスは、「一時的フレームワーク」リストに残っている要素があるか否かを検出する。残っている要素がある場合（Ｙ）、１１２１で、コンフィギュレータ１６１は、次の要素に対してローカル変数を初期化し、次に１１０４へ進む。さもなければ（Ｎ）、フローは１１１１へ進み、コンフィギュレータ１６１は、ｇｌｕｅ  ＤＢ１６７からｇｌｕｅを選び取る１１１１。１１１２で、コンフィギュレータ１６１プロセスは、このフローを終了する。
【００４６】
図１２は、実装形態例による、コンフィギュレータ１６１プロセス例のフローチャートを示す。具体的には、図１２は、図１１のステップ１１１１の詳細なフローを提供する。１２０２で、コンフィギュレータ１６１プロセスは、ループで最終フレームワークリストの第１の要素に対してローカル変数を初期化する。１２０３で、コンフィギュレータ１６１プロセスは、「最終フレームワーク」リストにおけるベースＮＷ下位要素から「加えることができる？」列の値を得る。１２０４で、コンフィギュレータ１６１プロセスは、要素が分類子下位要素を有するか否かを決定する。要素が分類子下位要素を有する場合（Ｙ）、１２４１で、コンフィギュレータ１６１プロセスは、分類子下位要素から「加えることができる？」列の値を得る。１２４２で、コンフィギュレータ１６１プロセスは、１２０３から得られたベースＮＷの「加えることができる？」列およびステップ１２４１において得られた分類子の「加えることができる？」列の条件に基づいて、「Ｇｌｕｅ  ＤＢ」から適切な行を得る。次に、１２４３で、コンフィギュレータ１６１プロセスは、ステップ１２４２において得られたｇｌｕｅによって要素を更新する。
【００４７】
同じプロセスが、１２０５、１２５１、１２５２、および１２５３のプロセスにおけるロケータに対して繰り返される。
【００４８】
１２０６で、コンフィギュレータ１６１プロセスは、要素が最終フレームワークリストに残っているか否かを検出する。要素がまだ残っている場合（Ｙ）、１２６１で、コンフィギュレータ１６１は、次の要素に対してローカル変数を初期化し、１２０３に進む。さもなければ（Ｎ）、フローは１２０７に進み、コンフィギュレータ１６１プロセスは、このフローを終了する。
【００４９】
本明細書に記載されたようなフローを通して、実装形態例は、物体検出システムをビルドしかつ構築する。
【００５０】
図１３は、実装形態例における使用に適したコンピュータデバイス例を有するコンピューティング環境例を示す。コンピューティング環境１３００におけるコンピュータデバイス１３０５は、１つまたは複数の処理ユニット、処理コア、もしくは処理プロセッサ１３１０、メモリ１３１５（例えば、ＲＡＭ、ＲＯＭ、および／または同種のもの）、内部記憶域１３２０（例えば、磁気、光、ソリッドステート記憶域、および／または有機）、および／または、Ｉ／Ｏインターフェース１３２５を含み得、そのいずれも、情報通信用の通信機構またはバス１３３０に結合され得るか、またはコンピュータデバイス１３０５に埋め込まれ得る。
【００５１】
コンピュータデバイス１３０５は、入力／ユーザインターフェース１３３５および出力デバイス／インターフェース１３４０に通信可能に結合され得る。入力／ユーザインターフェース１３３５および出力デバイス／インターフェース１３４０のうちの１つまたは両方は、有線または無線インターフェースであり得、着脱可能であり得る。入力／ユーザインターフェース１３３５は、入力を提供するのに使用され得る、物理的なまたは仮想の、任意のデバイス、構成要素、センサ、またはインターフェースを含み得る（例えば、ボタン、タッチスクリーンインターフェース、キーボード、ポインティング／カーソル制御、マイクロフォン、カメラ、点字、運動センサ、光学読取り機、および／または同種のもの）。出力デバイス／インターフェース１３４０は、ディスプレイ、テレビ、モニタ、プリンタ、スピーカ、点字、または同種のものを含み得る。いくつかの実装形態例では、入力／ユーザインターフェース１３３５および出力デバイス／インターフェース１３４０は、コンピュータデバイス１３０５に埋め込まれ得るか、またはそれに物理的に結合され得る。他の実装形態例では、他のコンピュータデバイスは、コンピュータデバイス１３０５用の入力／ユーザインターフェース１３３５および出力デバイス／インターフェース１３４０として機能し得るか、またはその機能を提供し得る。タッチスクリーンディスプレイ、テレビディスプレイ、または任意の他の形式のディスプレイを含む実装形態例では、ディスプレイは、ユーザインターフェースを提供するように構成される。
【００５２】
コンピュータデバイス１３０５の例は、以下に限定されるわけではないが、高度モバイルデバイス（例えば、スマートフォン、車両および他の機械にあるデバイス、人間および動物が携帯するデバイス、および同種のもの）、モバイルデバイス（例えば、タブレット、ノートブック、ラップトップ、パーソナルコンピュータ、携帯テレビ、ラジオ、および同種のもの）、および、移動用に設計されていないデバイス（例えば、デスクトップコンピュータ、他のコンピュータ、情報キオスク、１つまたは複数のプロセッサが埋め込まれたおよび／または結合されたテレビ、ラジオ、および同種のもの）を含み得る。
【００５３】
コンピュータデバイス１３０５は、同じまたは異なる構成の１つまたは複数のコンピュータデバイスを含む、任意の数のネットワーク化構成要素、デバイス、およびシステムと通信するための外部記憶域１３４５およびネットワーク１３５０に（例えば、Ｉ／Ｏインターフェース１３２５を介して）通信可能に結合され得る。コンピュータデバイス１３０５または任意の結合されたコンピュータデバイスは、サーバ、クライアント、シンサーバ、汎用機械、専用機械、または別の標識として、機能する、それらのサービスを提供する、またはそれらとして見なされるものであり得る。
【００５４】
Ｉ／Ｏインターフェース１３２５は、以下に限定されるわけではないが、少なくとも、コンピューティング環境１３００におけるすべての接続された構成要素、デバイス、およびネットワークへかつ／またはそこから情報を伝達するための、任意の通信プロトコルもしくはＩ／Ｏプロトコルまたは通信規格もしくはＩ／Ｏ規格（例えば、イーサネット（登録商標）、８０２．１１ｘ、ユニバーサルシステムバス、ＷｉＭａｘ、モデム、セルラーネットワークプロトコル、および同種のもの）を使用する、有線インターフェースおよび／または無線インターフェースを含み得る。ネットワーク１３５０は、任意のネットワークまたはネットワークの組み合わせ（例えば、インターネット、ローカルエリアネットワーク、広域ネットワーク、電話ネットワーク、セルラーネットワーク、衛星ネットワーク、および同種のもの）であり得る。
【００５５】
コンピュータデバイス１３０５は、一時的媒体および非一時的媒体を含む、コンピュータ使用可能媒体またはコンピュータ可読媒体を使用して、使用かつ／または通信することができる。一時的媒体は、伝送媒体（例えば、金属ケーブル、光ファイバ）、信号、搬送波、および同種のものを含む。非一時的媒体は、磁気媒体（例えば、ディスクおよびテープ）、光媒体（例えば、ＣＤ  ＲＯＭ、デジタルビデオディスク、ブルーレイディスク）、ソリッドステート媒体（例えば、ＲＡＭ、ＲＯＭ、フラッシュメモリ、ソリッドステート記憶域）、および他の不揮発性記憶域もしくはメモリを含む。
【００５６】
コンピュータデバイス１３０５は、いくつかのコンピューティング環境例において、技法、方法、アプリケーション、プロセス、またはコンピュータ実行可能命令を実施するのに使用され得る。コンピュータ実行可能命令は、一時的媒体から取り出され得、非一時的媒体に格納され、かつそこから取り出され得る。実行可能命令は、任意のプログラミング言語、スクリプト言語、および機械言語（例えば、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）、Ｖｉｓｕａｌ  Ｂａｓｉｃ、Ｐｙｔｈｏｎ、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ（登録商標）、および他の言語）のうちの１つまたは複数に由来し得る。
【００５７】
プロセッサ１３１０は、ネイティブ環境または仮想環境において、任意のオペレーティングシステム（ＯＳ）（図示せず）下で実行することができる。様々なユニットが、お互いと、ＯＳと、および他のアプリケーション（図示せず）と通信するのに、論理演算ユニット１３６０、アプリケーションプログラミングインターフェース（ＡＰＩ）ユニット１３６５、入力ユニット１３７０、出力ユニット１３７５、およびユニット間通信機構１３９５を含む、１つまたは複数のアプリケーションが展開され得る。説明したユニットおよび要素は、設計、機能、構成、または実装形態において様々であり得、説明した、発明を実施するための形態に限定されるものではない。プロセッサ１３１０は、メモリ１３１５から読み出された命令を実行するように構成される、物理的プロセッサまたは中央処理装置（ＣＰＵ）の形式であり得る。
【００５８】
いくつかの実装形態例では、情報または実行命令が、ＡＰＩユニット１３６５によって受信されると、それは、１つまたは複数の他のユニット（例えば、論理演算ユニット１３６０、入力ユニット１３７０、出力ユニット１３７５）に伝達され得る。場合によっては、論理演算ユニット１３６０は、上記のいくつかの実装形態例において、ユニット間の情報フローを制御し、かつ、ＡＰＩユニット１３６５、入力ユニット１３７０、出力ユニット１３７５によって提供されたサービスを運営するように構成され得る。例えば、１つまたは複数のプロセスまたは実装形態のフローは、論理演算ユニット１３６０単独で、またはＡＰＩユニット１３６５との併用で、制御され得る。入力ユニット１３７０は、実装形態例において説明した計算用の入力を得るように構成され得、また、出力ユニット１３７５は、実装形態例において説明した計算に基づいて、出力を提供するように構成され得る。
【００５９】
実装形態例において、コンピュータデバイス１３０５は、画像解析を行う解析サーバ１０３などの第２のサーバを構成する、構成サーバ１０６などの第１のサーバの形式であり得る。このような実装形態例では、メモリ１３１５は、図１〜６から示されるように、モジュールリポジトリ１６６、ｇｌｕｅ  ＤＢ１６７、フレームワークＤＢ１６２、分類子ＤＢ１６３、ロケータＤＢ１６４、およびベースネットワークＤＢ１６５などの１つまたは複数のデータベースを管理することができる。プロセッサ１３１０は、アプリケーションタイプ、アプリケーションの対象、アプリケーション用の訓練方法、およびカメラを図７のインターフェースにおける選択を通して受信することと、アプリケーションタイプおよびアプリケーションの対象の両方に関連している１つまたは複数のフレームワークを決定することと、アプリケーションタイプに基づき、１つまたは複数のフレームワーク用のアプリケーションタイプに関連した１つまたは複数のロケータおよび１つまたは複数の分類子を決定することと、１つまたは複数のフレームワーク用のベースネットワークを構築することと、１つまたは複数の分類子および１つまたは複数のロケータを、１つまたは複数のフレームワーク用のベースネットワークにリンクさせるｇｌｕｅモジュールを抽出することと、図１１のフローの実行を通して、カメラから受信した画像に対して解析を実行するように、１つまたは複数のフレームワークで第２のサーバを構成することと、を行うように構成され得る。
【００６０】
実装形態例において、プロセッサ１３１０は、１つまたは複数の分類子および１つまたは複数のロケータを１つまたは複数のフレームワーク用のベースネットワークにリンクさせるｇｌｕｅモジュールを抽出するように構成され得、抽出することが、図１２に示されるように、１つまたは複数のフレームワークのそれぞれの要素に対し、分類子下位要素を有するそれぞれの要素の場合、分類子下位要素に対応するｇｌｕｅモジュールを得ることと、ロケータ下位要素を有するそれぞれの要素の場合、ロケータ下位要素に対応するｇｌｕｅモジュールを得ることと、によって行われる。
【００６１】
実装形態例において、アプリケーションタイプは、図７に示されるように、異常検出、異常位置、物体追跡、および物体分類のうちの１つまたは複数であり得る。
【００６２】
実装形態例において、プロセッサ１３１０は、図２および図８に示されるように、複数のフレームワークを複数のアプリケーションタイプおよび複数のアプリケーション対象に関連付けるデータベースを参照することによって、アプリケーションタイプおよびアプリケーションの対象の両方に関連している１つまたは複数のフレームワークを決定するように構成され得る。
【００６３】
実装形態例において、プロセッサ１３１０は、アプリケーションに関連した１つまたは複数のロケータおよび１つまたは複数の分類子に基づいて、利用され得る訓練方法のリストを決定するようにさらに構成され得、訓練方法は、図１０に示されるように、訓練方法リストの中の選択したものから受信される。
【００６４】
実装形態例において、プロセッサ１３１０は、１つまたは複数の分類子および１つまたは複数のロケータを１つまたは複数のフレームワーク用のベースネットワークにリンクさせるｇｌｕｅモジュールを抽出するように構成され得、抽出することが、図６に示されるように、複数のｇｌｕｅモジュールを複数のベースネットワークおよび複数のサブネットワークに関連付けるデータベースを参照することを含む。
【００６５】
発明を実施するための形態のいくつかの部分は、コンピュータ内のアルゴリズムおよび動作の象徴的表象の観点から提示される。これらのアルゴリズム的記述および象徴的表象は、データ処理技術分野の当業者によって、他の当業者に彼らの革新のエッセンスを伝えるために使用される手段である。アルゴリズムは、所望の最終状態または結果に至る、一連の定義されたステップである。実装形態例において、行われるステップは、目に見える成果をもたらすのに、具体的数量の物理的操作を必要とする。
【００６６】
特に明記しない限り、記述から明らかであるように、発明を実施するための形態全体を通して、「処理する」、「コンピューティング」、「計算する」、「決定する」、「表示する」などの用語を利用した記述は、コンピュータシステムのレジスタおよびメモリ内の物理的（電子的）数量として表されたデータを、操作して、それらをコンピュータシステムのメモリもしくはレジスタ、または他の情報記憶域、送信デバイスもしくは表示デバイス内の物理的数量として同様に表される他のデータに変換する、コンピュータシステムまたは他の情報処理デバイスの動作およびプロセスを含むことができることが分かる。
【００６７】
実装形態例は、本明細書に記載の動作を行うための装置を対象とすることもできる。この装置は、その必要な目的に特別に構築されてもよく、または、１つまたは複数のコンピュータプログラムによって選択的に作動するかまたは再構成される１つまたは複数の汎用コンピュータを含んでもよい。このようなコンピュータプログラムは、コンピュータ可読記憶媒体またはコンピュータ可読信号媒体などのコンピュータ可読媒体に格納され得る。コンピュータ可読記憶媒体には、以下に限定されるわけではないが、光ディスク、磁気ディスク、読み取り専用メモリ、ランダムアクセスメモリ、ソリッドステートデバイスおよびドライブ、または電子情報を格納するのに適した任意の他のタイプの有形もしくは非一時的な媒体など、有形の媒体が含まれ得る。コンピュータ可読信号媒体には、搬送波などの媒体が含まれ得る。本明細書に提示のアルゴリズムおよび表示は、いずれの特定のコンピュータまたは他の装置にも本質的に関係していない。コンピュータプログラムは、望ましい実装形態の動作を行う命令を含む純粋なソフトウェア実装形態を含むことができる。
【００６８】
様々な汎用システムが、本明細書の例によるプログラムおよびモジュールとともに使用されてもよく、または望ましい方法ステップを行うようにより特殊化した装置を構築することが好都合であると示し得る。さらに、実装形態例は、特定のプログラミング言語を参照して述べられていない。本明細書に記載の実装形態例の教示を実施するのに、様々なプログラミング言語が使用され得ることが分かるであろう。プログラミング言語の命令は、１つまたは複数の処理デバイス、例えば、中央処理装置（ＣＰＵ）、プロセッサ、またはコントローラによって実行され得る。
【００６９】
当技術分野で知られているように、上記の動作は、ハードウェア、ソフトウェア、またはソフトウェアとハードウェアとの何らかの組み合わせによって行われ得る。実装形態例の様々な態様は、回路および論理素子（ハードウェア）を使用して実施され得るが、機械可読媒体（ソフトウェア）に格納された命令を使用して実施され得る他の態様もあり、その命令は、プロセッサによって実行されると、本出願の実装形態を行うための方法をプロセッサに行わせることができる。さらに、本出願の実装形態のいくつかの例は、ハードウェアのみの中で行われ得るが、ソフトウェアのみの中で行われ得る実装形態例もある。また、記載の様々な機能は、単一ユニットにおいて行われてもよく、または任意の数のやり方でいくつかの構成要素にわたって行われてもよい。ソフトウェアによって行われる場合、方法は、コンピュータ可読媒体に格納された命令に基づき、汎用コンピュータなどのプロセッサによって実行され得る。必要であれば、命令は、圧縮かつ／または暗号化形式で媒体に格納されてもよい。
【００７０】
また、当業者には、本明細書の考察および本出願の教示の実施から、本出願の他の実装形態が明らかとなるであろう。記載の実装形態例の様々な態様および／または構成要素は、単独でも組み合わせでも使用されてもよい。本明細書および実装形態例は、単に例として考えられることが意図されており、本出願の真の範囲および趣旨は、以下の特許請求の範囲で示される。
【図１】
2020149683.tif 000003
【図２】
2020149683.tif 000004
【図３】
2020149683.tif 000005
【図４】
2020149683.tif 000006
【図５】
2020149683.tif 000007
【図６】
2020149683.tif 000008
【図７】
2020149683.tif 000009
【図８】
2020149683.tif 000010
【図９】
2020149683.tif 000011
【図１０】
2020149683.tif 000012
【図１１】
2020149683.tif 000013
【図１２】
2020149683.tif 000014
【図１３】
2020149683.tif 000015