(57)【要約】  本発明は、低遅延を有するハードリアルタイム性能を実現するためのオブジェクト検出用のシステムと方法とを説明する。本発明は、リアルタイムのオブジェクト検出フレームワークを開示する。一つまたは複数の実施形態において、フレームワークは、第１のＣＰＵコアと、第２のＣＰＵコアと、複数のｓｈａｖｅとを含む。一つまたは複数の実施形態において、第１のＣＰＵコアは、一般的なＣＰＵタスクを処理し、第２のＣＰＵコアは、カメラセンサーからのイメージフレームとコンピューティングタスクのスケジューリングを処理する。一つまたは複数の実施形態において、スケジューリングされたコンピューティングタスクは、イメージフレームのオブジェクトを検出するように、複数のｓｈａｖｅによって少なくとも一つのオブジェクト検出モデルを使用して実装される。一つまたは複数の実施形態において、より高い検出確率を有するオブジェクト検出モデルからのコンピューティング結果を使用して、オブジェクト検出の出力を形成する。一つまたは複数の実施形態において、オブジェクト検出モデルは、より小さいサイズとより高い実装速度を取得するために一部のパラメータを共有する。【選択図】図２
2021530038.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
一つまたは複数のイメージフレームを捕捉するカメラセンサーと、
第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを少なくとも記憶するメモリと、
第１のＣＰＵコアと、第２のＣＰＵコアと、処理用の複数のｓｈａｖｅとを含むプロセッサと
を具備し、
前記第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、前記装置の一般的なＣＰＵタスクを処理するように構成され、
前記第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、前記イメージフレームを処理し、前記複数のｓｈａｖｅによって前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとに対して実装されるコンピューティングタスクをスケジューリングして、一つまたは複数のイメージフレームのオブジェクトを検出するように構成される前記装置。
【請求項２】
前記第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとは深層学習モデルであり、
各モデルはそれぞれ複数のモデル層を備え、前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、前記装置のコンピューティングとリソースとの要求を減少するように、前記層のうちの少なくとも一部の層を共有する請求項１に記載の装置。
【請求項３】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルのいずれか一つは、一つまたは複数の共有層の重みを固定するように事前学習を行う請求項２に記載の装置。
【請求項４】
各イメージフレームは、それぞれ複数のパーティションに分割され、前記パーティションの数は、前記ｓｈａｖｅの数に等しく、各ｓｈａｖｅは、それぞれオブジェクト検出コンピューティング用のパーティションが割り当てられる請求項１に記載の装置。
【請求項５】
各ｓｈａｖｅからのコンピューティング結果を合併して、前記イメージフレームに対応する出力を生成する請求項４に記載の装置。
【請求項６】
前記オブジェクト検出は、二つのオブジェクト検出モデルから選択されるコンピューティング結果の組み合わせである請求項１に記載の装置。
【請求項７】
前記第１のオブジェクト検出モデルから選択されるコンピューティング結果に対して、前記第１のオブジェクト検出モデルは、前記第２のオブジェクト検出モデルより高い検出確率を有し、前記第２のオブジェクト検出モデルから選択されるコンピューティング結果に対して、前記第２のオブジェクト検出モデルは、前記第１のオブジェクト検出モデルより高い検出確率を有する請求項６に記載の装置。
【請求項８】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、異なる角度からオブジェクト検出用に最適化される請求項７に記載の装置。
【請求項９】
装置であって、
少なくとも一つのイメージフレームを生成するカメラセンサーと、
少なくとも一つのオブジェクト検出モデルを記憶するメモリと、
第１のＣＰＵコアと、第２のＣＰＵコアと、処理用の複数のｓｈａｖｅとを含むプロセッサと
を具備し、
前記第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、前記装置の一般的なＣＰＵタスクを処理するように構成され、
前記第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、前記少なくとも一つのイメージフレームを処理し、前記複数のｓｈａｖｅによって前記少なくとも一つのオブジェクト検出モデルを使用して実装されるコンピューティングタスクをスケジューリングして、前記少なくとも一つのイメージフレームのオブジェクトを検出するように構成され、イメージフレームは複数のパーティションに分割され、パーティションごとにコンピューティング用の一つのｓｈａｖｅに割り当てられ、前記第２のＣＰＵは、前記複数のｓｈａｖｅがスケジューリングされたコンピューティングの実現に基づいて、コンピューティングタスクを動的に更新する前記装置。
【請求項１０】
パーティションの数は前記ｓｈａｖｅの数に等しい請求項９に記載の装置。
【請求項１１】
イメージフレームのすべてのパーティションが処理されると、すべてのパーティションの結果を合併することで、前記イメージフレームに対応する出力を取得する請求項９に記載の装置。
【請求項１２】
前記複数のｓｈａｖｅはコンピューティングを並行して実施する請求項９に記載の装置。
【請求項１３】
一つのｓｈａｖｅがスケジューリングされたコンピューティングタスクを完了すると、前記第２のＣＰＵは、次のイメージフレームからのパーティションを割り当てることによって、前記ｓｈａｖｅのコンピューティングタスクを更新し、他のｓｈａｖｅが現在のイメージフレームのコンピューティングを完了するのを待たずに、前記ｓｈａｖｅがコンピューティングを開始するようにする請求項９に記載の装置。
【請求項１４】
前記少なくとも一つのオブジェクト検出モデルは、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを含み、前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとはそれぞれ複数の層を含み、一つまたは複数の層はパラメータを共有し、前記複数のｓｈａｖｅによって実装される前記コンピューティングタスクは、
パラメータを共有する層に関するコンピューティングタスクに対して、すべての前記複数のｓｈａｖｅを通じて並列コンピューティングを実装し、
パラメータを共有しない層に係るコンピューティングタスクに対して、前記複数のｓｈａｖｅを、前記第１のオブジェクト検出モデル用に指定された第１のｓｈａｖｅグループと前記第２のオブジェクト検出モデル用に指定された第２のｓｈａｖｅグループとに分割し、前記第１のオブジェクト検出グループ用に指定された前記第１のｓｈａｖｅグループと前記第２のオブジェクト検出モデル用に指定された前記第２のｓｈａｖｅグループとを使用して並列コンピューティングを実装する
請求項９に記載の装置。
【請求項１５】
低電力イメージ検出用の方法であって、
カメラセンサーによって一つまたは複数のイメージフレームを捕捉するステップと、
第１のＣＰＵコアと、第２のＣＰＵコアと、及びコンピューティング処理用の複数のｓｈａｖｅとを含むプロセッサで前記一つまたは複数のイメージフレームを受信するステップであって、前記第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行して、前記装置の一般的なＣＰＵタスクを処理するように構成され、前記第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、前記一つまたは複数のイメージフレームの処理を処理するように構成される、ステップと、
前記第２のＣＰＵコアを通じて、前記複数のｓｈａｖｅによって第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを使用して実装されるコンピューティングタスクをスケジューリングして、前記一つまたは複数のイメージフレーム中のオブジェクトを検出するステップと、
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとの間のより高い検出確率を有するオブジェクト検出モデルからコンピューティング結果を選択して、前記一つまたは複数のイメージフレーム中のオブジェクト検出の出力を形成するステップと
を含む、低電力イメージ検出用の方法。
【請求項１６】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルの深層学習オブジェクト検出モデルは、複数のコンボリューション層を含み、前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、少なくとも一つのコンボリューション層を共有する請求項１５に記載の方法。
【請求項１７】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、事前学習が行われた深層学習オブジェクト検出モデルである請求項１６に記載の方法。
【請求項１８】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、単独にトレーニングされてから組み合わせる請求項１７に記載の方法。
【請求項１９】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルのいずれか一つは、一つまたは複数の共有モデル層のパラメータを固定するように事前学習が行われ、前記第２のオブジェクト検出モデルは、前記一つまたは複数の共有モデル層の固定されたパラメータを含むが、前記第２のオブジェクト検出モデルは、一つまたは複数のその他の層をトレーニングするようにトレーニングすることで、オブジェクト検出の違いを許容するようにする請求項１８に記載の方法。
【請求項２０】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、それぞれ第１の専用データセットと第２の専用データセットとを使用して事前学習を行った後、前記第１の専用データセットと前記第２の専用データセットとの両方からのデータを含むトレーニングデータセットを使用して共同トレーニングされる請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全体的にオブジェクト検出に関し、特に、改善された性能と、特徴と、用途とを提供することができる、リアルタイムの顔検出のシステム及び方法に関する。
【背景技術】
【０００２】
顔検出は、デジタルイメージにおいて人間の顔を認識するために様々なアプリケーションで使用されるコンピュータ技術である。一部の顔検出技術は、並列コンピューティングコプロセッサ（例えば、グラフィックス処理ユニット（ＧＰＵ））を使用せずに、非常に低速のシリアルプロセッサで実行される深層学習ネットワークのバリエーションに基づき、これは深層学習アルゴリズムを使用した顔検出の計算量が非常に多いためである。
【０００３】
モバイル顔検出システムの場合、絶対のエネルギー効率と熱電力消費の観点からみると、性能に加えて、電力とエネルギー効率も、二つの主な制限要因になっている。モバイルコンピューティングは、より高い絶対のエネルギー効率とより低い熱電力消費の傾向をずっと追求してきている一つの主な推進要因である。エネルギー効率の問題は、常時接続のモバイルコンピューティングに制限されていない。プロセッサのエネルギー効率（Ｗ当たりの性能の形で）は、重要な指標になっている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
さらに、モバイルコンピューティングに使用されるプロセッサは、顔検出への応用に問題が存在している。低遅延（low-latency）の顔検出深層学習コンピュータ視覚アルゴリズムによって求められたハードリアルタイム要求は、非常に厳しいものであり、たとえＬｉｎｕｘ（登録商標）やＡｎｄｒｏｉｄ（登録商標）等のオペレーティングシステム（低遅延に用いられることは明示的に設計されていない）を実行する機能が強力なプラットフォーム上でも、満足させることは難しい。さらに、顔検出深層学習アプリケーションのコンピューティング要求を満たすには、従来のアプリケーションプロセッサのほとんどすべてのコンピューティングリソースが必要となる。
【０００５】
従って、改善された性能と、特徴と、用途とを提供することができるリアルタイムの顔検出のシステムと方法が必要とされる。
【課題を解決するための手段】
【０００６】
第１の態様において、本発明は、装置を提供し、前記装置は、一つまたは複数のイメージフレームを捕捉（capture）するカメラセンサーと、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを少なくとも記憶するメモリと、第１のＣＰＵコアと第２のＣＰＵコアと処理用の複数のｓｈａｖｅとを含むプロセッサと、を含み、第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、装置の一般的なＣＰＵタスクを処理するように構成され、第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することでイメージフレームを処理し、複数のｓｈａｖｅによって第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとに対して実装されるコンピューティングタスクをスケジューリングして、一つまたは複数のイメージフレームのオブジェクトを検出するように構成される。
【０００７】
第２の態様において、本発明は、装置を提供し、前記装置は、少なくとも一つのイメージフレームを生成するカメラセンサーと、少なくとも一つのオブジェクト検出モデルを記憶するメモリと、第１のＣＰＵコアと第２のＣＰＵコアと処理用の複数のｓｈａｖｅとを含むプロセッサと、を含み、第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、装置の一般的なＣＰＵタスクを処理するように構成され、第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、少なくとも一つのイメージフレームを処理し、複数のｓｈａｖｅによって少なくとも一つのオブジェクト検出モデルを使用して実装されるコンピューティングタスクをスケジューリングして、少なくとも一つのイメージフレームのオブジェクトを検出するように構成され、イメージフレームは、複数のパーティションに分割され、それぞれのパーティションは、コンピューティングのため一つのｓｈａｖｅに割り当てられ、第２のＣＰＵは、複数のｓｈａｖｅがスケジューリングされたコンピューティングの実現に基づいて、コンピューティングタスクを動的に更新する。
【０００８】
第３の態様において、本開示は、方法を提供し、前記方法は、カメラセンサーによって一つまたは複数のイメージフレームを捕捉するステップと、第１のＣＰＵコアと第２のＣＰＵコアとコンピューティング処理用の複数のｓｈａｖｅとを含むプロセッサで一つまたは複数のイメージフレームを受信するステップであって、第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、装置の一般的なＣＰＵタスクを処理するように構成され、第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、一つまたは複数のイメージフレームの処理を処理するように構成される、ステップと、第２のＣＰＵコアを通じて、複数のｓｈａｖｅによって第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを使用して実装されるコンピューティングタスクをスケジューリングし、一つまたは複数のイメージフレーム中のオブジェクトを検出するステップと、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとの間のより高い検出確率を有するオブジェクト検出モデルからコンピューティング結果を選択し、一つまたは複数のイメージフレーム中のオブジェクト検出の出力を形成するステップと、を含む。
【図面の簡単な説明】
【０００９】
本発明の実施形態を参照し、それらの例は添付の図面に示すことができる。これらの図面は、例示を目的としたものであり、制限的なものではない。本開示は、一般的にこれらの実施形態の文脈に沿って説明されるが、本発明の範囲は、これらの特定の実施形態に制限されることを意図していないことを理解されたい。図面の項目は、原寸に比例して描いたものではない。
【図１】本開示の実施形態によるオブジェクト検出プロセッサシステムのプラットフォームアーキテクチャを示す。
【図２】本開示の実施形態によるオブジェクト検出システムを示す。
【図３】本開示の実施形態によるプリント回路基板（ＰＣＢ）の機能ブロック図のボトム層を示す。
【図４】本開示の実施形態によるＰＣＢの機能ブロック図のトップ層を示す。
【図５】本開示の実施形態によるオブジェクト検出モデルの構造をグラフで示す。
【図６】本開示の実施形態による顔検出を実施するためのプロセスを示す。
【図７】本開示の実施形態による複数のイメージフレームに用いられるマルチモデルスケジューリングメカニズムをグラフで示す。
【図８】本開示の実施形態によるリアルタイムの顔検出のためのマルチスレッドプログラミングをグラフで示す。
【図９】本開示の実施形態による二つの顔検出モデルの並列コンピューティングをグラフで示す。
【図１０】本開示の実施形態によるリアルタイムの顔検出を実施するのにリアルタイムのマルチスレッドプログラミングの実装のためのプロセスを示す。
【図１１】本開示の実施形態によるコンピューティングデバイス／情報処理システムの簡略化されたブロック図を示す。
【発明を実施するための形態】
【００１０】
以下の説明では、説明を目的とするもので、本開示の理解を提供するために特定の詳細を明らかにしている。しかしながら、当業者にとって、これらの詳細内容がなくても本開示が実施され得ることは明らかである。さらに、当業者は、以下に記載される本発明の実施形態が、様々な方法（例えば、プロセス、装置、システム、デバイスまたは方法）で有形のコンピュータ可読媒体に実施され得ることを認識している。
【００１１】
図面に示されるコンポーネントまたはモジュールは、本開示の実施形態の例示的な説明であり、本開示を不明確にすることを回避することを意図している。議論される全文において、コンポーネントは、別個の機能ユニット（サブユニットを含み得る）として説明され得るが、当業者は、様々なコンポーネントまたはその部分が別個のコンポーネントに分割され得るか、または統合され得ることを認識している（単一のシステムまたはコンポーネントへの統合を含む）。本開示で論じられる機能または動作は、コンポーネントとして実装され得ることに留意されたい。コンポーネントは、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装することができる。
【００１２】
さらに、図面のコンポーネントまたはシステムの間の接続は、直接接続に制限されることを意図するものではない。代わりに、これらのコンポーネントの間のデータは、中間コンポーネントによって変更、再フォーマット、または他の方法で変更することができる。さらに、追加またはより少ない接続を使用することができる。「連結される」、「接続される」、または「通信的に連結される」という用語は、直接接続と一つまたは複数の中間装置を介して間接接続と、無線切側とを含むことを理解されるべきであることも留意されたい。本開示の実施形態において、顔検出の文脈で例として説明することができるが、他のオブジェクトが検出され得ることに留意されたい。また、イメージは、静止イメージでも、ビデオからのイメージフレームでもよい。
【００１３】
本明細書において「一実施形態」、「好ましい実施形態」、「実施形態」または「複数の実施形態」への言及は、実施形態と組みあわせて記載される具体的特徴、構造、特性または機能が本発明の少なくとも一つの実施形態と、二つ以上の実施形態とに含まれ得ることを意味する。
【００１４】
一部の用語は、説明の目的で本明細書の様々なところで使用され、限定的に解釈されるべきではない。サービス、機能またはリソースは、単一のサービス、単一の機能または単一のリソースに限定されないし、これらの用語の使用は、関連するサービス、機能またはリソースの分布可能または集約可能なグループを指すのに用いることができる。
【００１５】
「含む」、「含まれる」、「含有」及び「含有される」といる用語は、オープン的な用語として理解されるべきであり、その後にリストされる任意のコンテンツは、すべて実施例であり、リストされた項目に限定されることを意図するものではない。本明細書で使用される任意の見出しは、組織的な目的でのみに使用され、明細書またはクレームの範囲を限定するために使用されるべきではない。本発明に記載される各参考文献は、その全体が参照により本明細書に組み込まれる。
【００１６】
さらに、当業者は、（１）一部の段階が選択的に実行されてもよく、（２）段階が本明細書に記載の特定の順序に限定されなくてもよく、（３）一部の段階が異なる順序で実行されてもよく、（４）一部の段階が同時に実行されてもよい。
【００１７】
Ａ．序文
顔検出は、デジタルイメージで人間の顔を認識するための様々なアプリケーションで使用され、デジタルイメージは、例えば、風景、建物等の顔以外の様々なオブジェクト、及び例えば、脚、肩、及び腕等の人の顔以外の部位を含むことができる。一部の顔検出技術は、並列コンピューティングコプロセッサ（例えば、グラフィックス処理ユニット（ＧＰＵ）等）の深層学習ネットワークのバリエーションを使用せず、非常に低速のシリアルプロセッサに基づいて実行され、これは深層学習アルゴリズムを使用して顔を検出する計算量が非常に大きいからである。顔検出は、顔認識のアプリケーションだけでなく、例えば、オートフォーカスカメラ等のような非認識アプリケーションも含まれる。
【００１８】
モバイル顔検出システムの場合、絶対エネルギー効率と熱電力消費との観点から、性能に加え、電力とエネルギー効率とも二つの主な制限要因になる。モバイルコンピューティングは、より高い絶対エネルギー効率とより低い熱電力消費とのトレンドを常に追求する主な推進要因である。エネルギー効率の問題は、常時接続のモバイルコンピューティングだけに限定されるものではない。プロセッサのエネルギー効率（Ｗ当たりの性能の形式）は、重要な指標になる可能性がある。
【００１９】
さらに、モバイルコンピューティングに使用されるプロセッサは、顔検出のアプリケーションを実施する時に課題がある。低遅延の顔検出を管理する深層学習コンピュータ視覚アルゴリズムによって求められたハードリアルタイム要求は、かなり厳しいものであり、たとえ、Ｌｉｎｕｘ（登録商標）またはＡｎｄｒｏｉｄ（登録商標）等のオペレーティングシステム（低遅延に用いられることは明示的に設計されていない）を実行する機能が強力なプラットフォームであっても、満足させることは難しい。さらに、顔検出深層学習アプリケーションのコンピューティング要求を満足するには、従来のアプリケーションプロセッサのほとんどすべてのコンピューティングリソースが必要となる。
【００２０】
近年、スマートフォン（例えば、Ａｐｐｌｅ（登録商標）社のｉＰｈｏｎｅ（登録商標）またはＡｎｄｒｏｉｄ（登録商標）による携帯電話）に顔検出を実施するための様々な方法が提案されている。
【００２１】
実施方法において、スマートフォンをキャリアとして使用する必要があるため、例えば、スマートホーム、及びスマート都市等の他の市場への移植や展開が容易ではない。スマートフォンを使用して実装される顔検出システムの場合、その性能は、スマートフォンのモバイルプロセッサとオペレーティングシステム（ＯＳ）とによって制限される。一部のモバイルＯＳは、ハードリアルタイム性能を達成できない場合がある。
【００２２】
さらに、スマートフォンでの顔検出の実装は、アプリケーションプロセッサだけでなく、コプロセッサもさらに含み、スマートフォンのリソースを最大限に活用する必要がある場合がある。スマートフォンで顔検出を実装する場合の消費電力は、約５Ｗ〜１０  Ｗとすることができ、これは、スマートフォンの他のアプリケーション（またはＡｐｐ）の動作を制限してしまう可能性がある。
【００２３】
Ｂ．オブジェクト検出アーキテクチャの実施形態
一つまたは複数の実施形態において、常時接続の超低消費電力モバイルデバイスで深層学習に基づくリアルタイムの顔検出を実施するためのアーキテクチャが開示される。前記アーキテクチャは、顔検出技術を幅広いアプリケーションに展開されるのにより多くの機会を提供することができる。
【００２４】
図１は、本発明の実施形態によるリアルタイムオペレーティングシステム（ＲＴＯＳ）顔検出プロセッサシステム１００のプラットフォームアーキテクチャを示す。プロセッサシステム１００は、第１の中央処理ユニット（ＣＰＵ）コア１１０と、第２のＣＰＵコア１２０と、及びｓｈａｖｅと呼ばれる複数のデジタル信号プロセッサ（またはコンピューティングエンジン）１３０とを含み、それらは、分離されたパワーアイランドと並行して動作し、常時接続式顔検出の実施の下での消費電力を制限することができる。一つまたは複数の実施形態において、第１のＣＰＵコア１１０と第２のＣＰＵコア１２０とは、別個のタスクを専用的に処理するように構成される。例えば、第１のＣＰＵコアは、一般的なオペレーティングシステム（ＯＳ）タスクを処理するように構成され、第２のＣＰＵコアは、イメージを処理してｓｈａｖｅ１３０によって完成するコンピューティングタスクをスケジューリングするように構成され、組み込み式のリアルタイムマルチスレッド動作を実現することができる。
【００２５】
一つまたは複数の実施形態において、プラットフォーム１００（以下の「ｘｃｏｒｅ」または「プロセッサシステム」と互換可能に使用される用語）は、例えば、ダブルデータレート（ＤＤＲ）ＲＡＭ等の動的ランダムアクセスメモリ（ＤＲＡＭ）等のようなメモリ１４０をさらに含む。ＣＰＵコアは、メモリコントローラ１５０を介してメモリとの読み取り／書き込み動作を実施することができ、メモリコントローラ１５０は、物理層１５５と制御層１６０とを含むことができる。図１に示されていないが、各ＣＰＵは、いずれもメモリコントローラ１５０を介してメモリ１４０に直接アクセスすることができる。
【００２６】
一つまたは複数の実施形態において、第１のＣＰＵコア１１０は第１のオペレーティングシステム（ＯＳ）の実例を実行するように構成され、第２のＣＰＵコアは第１のＯＳ実例と異なる第２のＯＳ実例を実行するように構成される。複数の顔検出モデルと複数のｓｈａｖｅとを有する場合、プラットフォームは、顔検出深層学習コンピューティングライブラリを最適化して様々な顔検出ネットワーク／モデルのマルチモデルスケジューリングを管理することにより、常時接続の低消費電力モバイルデバイスで必要な性能を実装するように構成することができる。
【００２７】
図２は、本開示に係る実施形態によるＲＴＯＳ顔検出システムを示す。図２に示すように、ＲＴＯＳ顔検出するシステム２００は、ｘｃｏｒｅ１００と、イメージを捕捉する一つまたは複数のカメラセンサー２１０と、一つまたは複数のカメラセンサー２１０とｘｃｏｒｅ１００との間で通信するメディアインターフェース２２０と、を含む。ＲＴＯＳ顔検出システム２００は、ｘｃｏｒｅ１００に接続されるか、またはｘｃｏｒｅ１００に含まれる汎用Ｉ／Ｏインターフェース２３０と周辺回路２４０とを含むことができる。一つまたは複数の実施形態において、メディアインターフェース２２０は、例えば、ハイパーポートアーキテクチャ（ＵＰＡ）バス等のＣＰＵ相互接続のための高速グラフィックカードであってもよい。メディアインターフェース２２０は、ＨＤＭＩ（登録商標）互換カメラからの非圧縮ビデオデータ及び圧縮または非圧縮デジタルオーディオデータの送信をサポートする高解像度マルチメディアインターフェース（ＨＤＭＩ（登録商標））であってもよい。一つまたは複数の実施形態において、汎用Ｉ／Ｏインターフェース２３０は、イーサネットインターフェース、無線通信インターフェース、共同テストアクショングループ（ＪＴＡＧ）インターフェース、汎用入力／出力（ＧＰＩＯ）インターフェース、モバイル産業プロセッサインターフェース（ＭＩＰＩ）および／または安全デジタル入力出力（ＳＤＩＯ）インターフェース等であってもよい。一つまたは複数の実施形態において、周辺回路２４０は、システムクロック回路、及びシステムの電力管理のための電力管理集積回路（ＰＭＩＣ）等を含むことができる。追加または代替の構成要素は、図１１を参照して以下に開示されるそれらの構成要素のうちの一つまたは複数であってもよい。
【００２８】
実施形態において、ＲＴＯＳ顔検出システムの一つまたは複数の構成要素は、顔検出の実施／適用のためにＰＣＢ上に統合されることができる。図３と図４とは、それぞれ本開示の実施形態による顔検出を実施するための例示的な二層ＰＣＢのボトム層ＰＣＢ機能ブロック図とトップ層ＰＣＢ機能ブロック図を示す。
【００２９】
図３と図４との説明及び対応する説明は、一つまたは複数の特定の実施形態を使用する特定の構成の下で行われることに留意されたい。従って、これらの説明のための実例は、現在の明細書の開示範囲を制限するために使用されるべきでない。一つまたは複数の実施形態において、図３と図４とに示される構成要素は、ワイヤ、パッド、フラックス、及び導電性ビア等を介して相互接続されることができる（図面に接続を示されていない）。ボトム層とトップ層とに示される構成要素は、説明の目的のみに使用され、フレームワークの実施を制限するために使用されるべきでない。
【００３０】
図３に示すように、ボトム層ＰＣＢ機能ブロック図には、ｘｃｏｒｅ１００と、システムクロック回路３１０と、ネットワーク物理層３２０と、組み込み式不揮発性メモリとしての組み込み式マルチメディアカード（ｅＭＭＣ）３３０と、システム電力管理用の電力管理集積回路（ＰＭＩＣ）３４０と、層インターフェース３５０と、モバイル産業用プロセッサインターフェース（ＭＩＰＩ）３６０とを含むことにより、モバイルフレームワークの基本構成要素を相互接続することができる。一つまたは複数の実施形態において、ＭＩＰＩ３６０は、異なるパラメータを有するカメラとの通信に適応するように、第２のカメラモジュールとして使用することができる。ｅＭＭＣ３３０は、複数の顔検出モデルを記憶するように構成することができ、前記複数の顔検出モデルは、事前学習（pre-training）が行われている場合、または事前学習が行われていない場合がある。
【００３１】
一つまたは複数の実施形態において、ボトム層ＰＣＢ機能ブロックは、他の構成要素を含むことができ、これらの構成要素は、ＵＳＢ（２．０または３．０）インターフェース３７０と、一つの簡単なコネクタで充電、データ伝送及びビデオを許容するＣ型ＵＳＢインターフェース３８０と、設計検証及びＰＣＢテスト用のＪＴＡＧインターフェース３９０と、移動可能で小型化された安全なデジタルフラッシュメモリカードの読み取り／書き込み動作用のＴｒａｎｓＦｌａｓｈ（ＴＦ）カード３９５とを含む。当業者は、図３と図４と異なる様々な構成をフレームワークの実施に使用することができることを理解されるべきで、これらの変更は、本発明の範囲内にあることに理解されるべきである。
【００３２】
図４に示すように、トップ層ＰＣＢの機能ブロック図は、層インターフェース４１０と、リアルタイムのフレームごとのイメージを提供する第１のカメラモジュール４２０と、カメラモジュールに電力を供給するためのカメラ電源回路４３０と、絶縁型ＤＣコンバーターとしてのＰｏｗｅｒ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ（ＰｏＥ）ＤＣ−ＤＣコンバーター４４０と、有線イーサネットインターフェース４５０（ＰＯＥ機能を有する可能性がある）と、「ｓｌａｖｅ」デジタル集積回路が「マスター」チップと通信可能な内部集積回路（Ｉ２Ｃ）汎用Ｉ／Ｏ（ＧＰＩＯ）インターフェース４６０と、安全な無線通信を実施するためのＷｉ−Ｆｉ安全デジタル入出力（ＳＤＩＯ）回路４７０と、ＨＤＭＩ（登録商標）互換のソース装置（例えば、カメラモジュール４２０等）から送信するため非圧縮ビデオデータ及び圧縮または非圧縮デジタルオーディオデータ用の高解像度マルチメディアインターフェース（ＨＤＭＩ（登録商標））４８０と、他の周辺装置と通信するための外部インターフェース４９０とを含む。
【００３３】
実施形態において、異なるアプリケーションには、異なるカメラパラメータを必要とする可能性がある。カメラモジュール４２０とカメラモジュール３６０とは、カスタマイズ及び互換することができる。同様に、様々な通信要求を処理するために、通信インターフェース（イーサネット（登録商標）、ＵＳＢ、ＨＤＭＩ（登録商標）、及びＷＩＦＩ（登録商標））に応じて調節したり、および／またはＩ２ＣとＧＰＩＯバスとを介して他の機能に拡張したりすることができる。
【００３４】
二層ＰＣＢ構成を使用することにより、ＰＣＢのＸＹ軸の面積は、例えば、４ｃｍ×４ｃｍのサイズのように非常に小さくすることができ、これは、例えば、スマートセキュリティカメラ、産業用ロボット、スマートホーム製品（例えば、ドアベルやセキュリティシステム等）等、小型を必要としまたは小型を好む様々なアプリケーションへのインストールに適す。小面積の場合、製品の構造と外観とをより適切に設計することができ、一般に、小さな長方形の立方体は、構造上面積の大きい単層ボードより優れているためである。異なるＰＣＢ形状および／または構成を使用することができることに留意されたい。
【００３５】
一つまたは複数の実施形態において、カスタマイズされたオペレーティングシステム（以下「ｘｏｓ」とも呼ばれる）を使用して顔検出フレームワークを動作させ、前記カスタマイズされたオペレーティングシステムは、オープンソースのリアルタイムオペレーティングシステムであるマルチプロセッサシステムのリアルタイムエグゼクティブ（ＲＴＥＭＳ）の上部のリアルタイムオペレーティングシステム（ＲＴＯＳ）の組み合わせであり、低遅延のハードリアルタイム性能を実現し、性能を向上させる。
【００３６】
Ｃ．オブジェクト検出モデルの実施形態
一つまたは複数の実施形態において、少なくとも一つのオブジェクト検出モデル（例えば、顔検出モデル）を使用して、一つまたは複数のイメージフレームにリアルタイムのイメージ検出を実施する。少なくとも一つのオブジェクト検出モデルは、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを含んでもよく、それらは、同じ入力からオブジェクトを検出するために並行して実施してもよい。入力は、完全なイメージフレームまたは完全なフレームのセグメントであってもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとは、異なる角度から性能を最適化するように構成されることができる。例えば、第１のオブジェクト検出モデルは、第１の視点（例えば、正面）から顔検出を実行し、第２のオブジェクト検出モデルは、第２の視点（例えば、側面／断面イメージ）から顔検出を実行するように最適化され得る。別の例において、第１のオブジェクト検出モデルは、より高精細なイメージからの顔検出のために構成され、第２のオブジェクト検出モデルは、ぼやけたイメージからの顔検出のために指定されることができる。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとは、複数の層を含む深層学習ニューラルネットワークである。サイズが小さく、実施速度が速い場合、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとは、少なくとも一つの層を共有するか、または複数の層の間で少なくとも一つの層のパラメータを共有することができる。一つまたは複数の実施形態において、オブジェクト検出モデルは、事前学習を行い、不揮発性メモリ（例えば、ｅＭＭＣ３３０）に記憶することができる。
【００３７】
本発明の実施形態によれば、図５は、例示的なオブジェクト検出モデル構造５００をグラフで示す。一つまたは複数の実施形態において、オブジェクト検出モデル構造５００は、複数のコンボリューション層５２０からコンボリューション層５７０を含む畳み込みネットワークに基づく深層学習モデルから進化したものであってもよく、イメージ入力５１０から複数の境界ボックスを形成するようにする。一つまたは複数の実施形態において、顔検出モデルは、シングルショットマルチフレーム検出（ＳＳＤ）モデルまたはモバイルネットワーク（ＭｏｂｉｌｅＮｅｔ）ＳＳＤモデルを使用するか、またはこれらのモデルに基づくことができる。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルは、記憶要求の低減、動作效率の向上のために、少なくとも一つのコンボリューション層を共有してもよい。一つまたは複数の実施形態において、モデルは境界ボックス認識層（例えば、「ｃｏｎｖ１１＿ｍｂｏｘ＿ｌｏｃ＿ｆｌａｔ」層）と同じ層を共有し、異なる検出機能を説明するようにこの点から異なるモデルに分岐してもよい。当業者は、顔検出モデルが所望の性能及び効率を得るために、例えば、ＲｅＬＵ層、ストライディング（ｓｔｒｉｄｉｎｇ）および／またはプーリング（ｐｏｏｌｉｎｇ）等の追加層またはプログラムを含むことができることを理解すべきである。
【００３８】
一つまたは複数の実施形態において、コンボリューション層５２０からコンボリューション層５７０は、それぞれ、複数の境界ボックス（またはアンカーボックス）５３２から５７２を生成して、一つまたは複数の特徴を符号化し、または対応するそれぞれの境界ボックスに含むようにする。各コンボリューション層は、いずれも、一組の検出予測を生成するための一組のコンボリューションフィルターをそれぞれ有することができる。境界ボックス５３２から境界ボックス５７２は、異なるパラメータ（例えば、異なる比率、アスペクト比、信頼スコア等）を有する。一つまたは複数の実施形態において、コンボリューション層の初期段階からの境界ボックスは、コンボリューション層の後期段階からの境界ボックスより比較的に大きなサイズを有する。
【００３９】
一つまたは複数の実施形態において、境界ボックス５３２から境界ボックス５７２を、検出モジュール５８０に送られ（fed into）、境界ボックス５８２から境界ボックス５８４の集合を生成するようにし、各ボックスは、いずれも信頼スコア及びボックス位置パラメータに関連付けられ、信頼スコア及びボックス位置パラメータは、左上隅及び右下隅の座標で表してもよいが、他のサイズと位置の認識メカニズムを使用してもよい。一つまたは複数の実施形態において、境界ボックス５８２及び境界ボックス５８４の集合は同じであってもよい。一つまたは複数の実施形態において、検出モジュール５８０は、信頼閾値を適用して、閾値を下回る信頼スコアを有する境界ボックスを除外してもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルは、異なる推論モジュールを使用して、境界ボックスの集合５８２と集合５８４を処理して、対応する検出結果を得ることができる。例えば、第１のオブジェクト検出モデルは、一つまたは複数の第１の推論モジュール５９２を使用して、第１の検出結果５９４を推論してもよく、第２のオブジェクト検出モデルは、一つまたは複数の第２の推論モジュール５９６を使用して、第２の検出結果５９８を推論してもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルの出力は、境界ボックスの集合に対する検出期待値である。各境界ボックスは、検出確率を表す０．０〜１．０の範囲の関連スコアがあり、前記関連スコアは、境界ボックスに検出オブジェクト（例えば、顔）が含まれる可能性を表す。一つまたは複数の実施形態において、単一の境界ボックスのオブジェクト検出に対して、より高い検出確率を有するオブジェクト検出モデルからの出力を、単一の境界ボックスのイメージ検出出力として選択する。最後に、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとの間の各境界ボックスの検出確率の比較によって、複数の境界ボックスを含むイメージフレーム全体のオブジェクト検出出力は、第１のオブジェクト検出モデルを使用する一つまたは複数の出力と、第２のオブジェクト検出モデルを使用する一つまたは複数の出力とを含んでもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとの両方が、いずれも境界ボックスの一つまたは複数の所定の閾値（例えば、モデルは自身の閾値標準を有することができる）を下回るスコアを出力する場合、境界ボックスの最終的オブジェクト検出出力を未検出のイメージに分類する。
【００４０】
一つまたは複数の実施形態において、異なるオブジェクト検出モデルは、オブジェクト検出または異なるオブジェクトを検出するように、異なる角度から構成または最適化してもよい。当業者は、様々な実施形態（例えば、異なるストライディングおよび／またはプーリング等）を使用して、異なるモデル間の違いを実現できることを理解すべきである。オブジェクト検出モデルを識別するような変化は、本発明の範囲内にあるとすべきである。
【００４１】
一つまたは複数の実施形態において、動作期間において、オブジェクト検出モデルの層をＤＲＡＭメモリ１４０にロードし、並列コンピューティングのために複数のｓｈａｖｅ１３０間に分配または分割してもよい。一つまたは複数の実施形態において、顔検出モデルの一部（例えば、モデルのネットワーク部分等）を複数のｓｈａｖｅ１３０の関連する高速キャッシュにロードしてもよく、より大きなサイズ（例えば、重みパラメータ等）のモデルの他の部分は、ＲＡＭメモリ１４０にロードされ、実施に用いられる。
【００４２】
一つまたは複数の実施形態において、トレーニング段階の期間中、モデルトレーニングのために、異なるサイズ、ポーズ、及び条件の顔のイメージを収集する。検出のロバストを強化するために、トリミング、フリッピング、剪断、ノイズの追加／乗算、カラーシフト、彩度の変更、コントラストの変更などを含む様々なデータの強化をトレーニングに用いられる。トレーニング後、一つまたは複数のスリミングテクニックを使用して、深層学習ニューラルネットワークをトリミングし、サイズを小さくして、実装速度（implementing speed）を向上させてもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとは、それぞれトレーニングされ、その後、一つに組み合せるか、または組み合せたモデルとしてトレーニングされるようにしてもよい。一つまたは複数の実施形態において、一つのオブジェクト検出モデルを最初にトレーニングして、一つまたは複数の層の重み／パラメータを固定するようにしてもよい。次に、一つまたは複数の実施形態において、重みが固定された共有層を使用して、異なるオブジェクト検出モデルをトレーニングし、残りの層はこのモデルに対して特別のトレーニングをしてもよい。
【００４３】
一つまたは複数の実施形態において、同じまたは異なるデータセット（完全に異なるデータセットまたはデータセットの異なるサブセットのみを含む）を使用して、モデルをトレーニングしてもよい。例えば、一つまたは複数の実施形態において、第１の専用データセットと第２の専用データセットは、それぞれ、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルのトレーニングに用いてもよい。一つまたは複数の実施形態において、専用のデータセットを使用して、それぞれのオブジェクト検出モデルに対してトレーニングした後、第１の専用データセットと第２の専用データセットの両方からのデータを含むトレーニングデータセットを使用して、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを共同してトレーニングしてもよい。
【００４４】
Ｄ．顔検出の実装（implementing）の実施形態
図６は、本開示の実施形態による顔検出の実装に用いられる方法示す。まず、カメラセンサーは、一つまたは複数のイメージを捕捉する（６０５）。一つまたは複数の実施形態において、一つまたは複数のイメージを第１のＣＰＵコアと、第２のＣＰＵコアと、複数のデジタル信号プロセッサ（ｓｈａｖｅ）とを含むプロセッサに伝送する（６１０）。第２のＣＰＵコアは、一つまたは複数のイメージにおける一つまたは複数のオブジェクトを検出するように、少なくとも二つのオブジェクト検出深層学習モデルのコンピューティングタスクをスケジューリングするのに使用されてもよい（６１５）。一つまたは複数の実施形態において、第２のＣＰＵは、ｓｈａｖｅを組み合わせて、少なくとも二つのオブジェクト検出深層学習モデルのオブジェクト検出処理に対するコンピューティングを実行し（６２０）、各イメージ検出モデルに対して出力を生成する。最後に、一つまたは複数の実施形態において、イメージ検出出力またはイメージ検出出力の一部として、検出確率が最も高いモデルからの出力を選択する（６２５）が、一つまたは複数の他の選択基準を使用してもよい。
【００４５】
一つまたは複数の実施形態において、各イメージフレームは、異なる解像度、向きまたはサイズを有する一つまたは複数の可能性のある人間の顔を含むことができる。各イメージフレームは、それぞれ一つまたは複数の可能性のある人間の顔の顔面を検出するスレッドとして処理される。第１の深層学習検出モデルと第２の深層学習検出モデルの検出確率によって、顔検出システムは、同じまたは異なる検出モデルからの一つまたは複数の可能性のある人間の顔に対応する最終的な顔（イメージ）検出出力を有することができる。
【００４６】
図７は、本開示の実施形態による複数のイメージフレームのマルチモデルスケジューリングメカニズムをグラフで示す。図７に示すように、顔検出処理のために、複数のリアルタイムイメージフレームｆ１…ｆｋを顔検出システムに伝送する。顔検出の実装のために、二つの異なるモデルＭ１とＭ２をシステムに組込む。実施形態において、フレームは順番処理され、例えば、第１の顔検出モデルＭ１を使用して第１のフレームｆ１を処理し、第１のフレームｆ１に対応する第１の出力７１０を生成し、次に、第２の顔検出モデルＭ２を使用し前記第１のフレームｆ１を処理し、第１のフレームｆ１に対応する第２の出力７２０を生成する。第１のイメージフレームが処理されると、第２のＣＰＵは、第２のイメージフレームｆ２を取得し、第１の顔検出モデルＭ１と第２の顔検出モデルＭ２を順次スケジューリングして使用し、第２のフレームｆ２に対応する第１の出力７２０と第２の出力７２２とを生成するようにする。このプロセスは、最後のイメージフレームｆｋまで続く。
【００４７】
一つまたは複数の実施形態において、顔検出が検出モデル使用してイメージフレームのコンピューティングをスケジューリングすると、検出モデルの少なくとも一部（例えば、モデルのネットワーク部分）とイメージフレームは、並列コンピューティングの複数のｓｈａｖｅ１３０に分配し、またはロードすることができる。次に、複数のｓｈａｖｅ１３０からの並列コンピューティングの結果を合併し、イメージフレームに対応する、検出モデルの最終出力を取得する。その後、最終出力をメモリに伝送し、イーサネットインターフェースまたはＵＳＢインターフェースを介して伝送する。
【００４８】
一つまたは複数の実施形態において、イメージフレームがフレームごとに大きなピクセルサイズを有するＨＤイメージフレームであって、カメラからのフレームレートが高い場合、図７に示された順次スケジューリングメカニズムを使用して、顔検出動作を維持させ、ハードリアルタイム性能を実現することは非常に厳しいことである。これは、カメラのフレームレートと一致させるのに、時間ｔ１（第１のモデルがフレームに対する操作を開始する）と時間ｔ２（第２のモデルがフレーム対する操作を完了する）との間の時間差によって特定される時間ｔコストが非常に小さいことが必要になるためである。
【００４９】
図８は、本開示の実施形態によるリアルタイムの顔検出のためのマルチスレッドプログラミングをグラフで示す。ハードリアルタイムの顔検出の実装の性能を向上させるのに、マルチスレッドプログラミングによって図７に示された実施形態の制限を克服することが期待される。図８に示すように、各イメージフレーム（ｆ１…ｆｋ）を複数のパーティション（Ｐ１…ＰＮ）に分割し、並列コンピューティング用の複数のｓｈａｖｅ（Ｓ１…ＳＮ）を使用して、これらのパーティションに対して処理をする。イメージフレームの各パーティションは他のパーティションから独立しているため、ｓｈａｖｅが現在のイメージフレームのパーティションのコンピューティングを完了すると、他のｓｈａｖｅのコンピューティングに影響を及ぼすことなく、次のイメージフレームのパーティションを処理することができる。複数のイメージフレーム（スレッド）の動的スケジューリングは、ｓｈａｖｅ間で調整するように第２のＣＰＵによって処理される。
【００５０】
実施形態において、複数のｓｈａｖｅは、複数のスレッドを並行して処理することができ、いくつかのｓｈａｖｅは一つのイメージフレームを処理し、いくつかのｓｈａｖｅは次のイメージフレームを処理する。図８の点線８１０または点線８２０に示すように、所定の時刻で同時に並行して処理されるフレームパーティションのセットは、波面（ｗａｖｅ  ｆｒｏｎｔ）と呼ばれる。波面の時系列のフレームスパンは、２としまたは２より大きいとしてもよく、例えば、ｓｈａｖｅは、二つまたは複数のフレームを同時に処理してもよい。このような構成により、ｓｈａｖｅの待機時間が短縮され、ｓｈａｖｅのコンピューティング效率が最大化されるため、リアルタイム性能が向上される。イメージフレームのすべてのパーティションの処理を完了すると、すべてのパーティションの結果を合併して、イメージフレームに対応する出力を取得する。
【００５１】
一つまたは複数の実施形態において、イメージフレームは、検出のための複数の潜在的な人間の顔イメージを含むことができる。従って、イメージフレームに対応する顔検出モデルからの各出力はそれぞれ複数の領域を含むことができ、各領域はそれぞれ一つの潜在的な人間の顔に関連する。モデルの構造と人間の顔のパラメータ（シャープネス、コントラスト、向き、ノイズ等）に応じて、一部の人間の顔は、他の人間の顔よりもっと高い検出確率を有してもよい。さらに、一部の人間の顔は、検出確率を、一の顔検出モデルを使用する方を他の顔検出モデルを使用するよりも高くしてもよい。従って、イメージフレームの顔検出システムの最終出力は、二つの顔検出モデルを使用した結果の組み合わせであってもよく、例えば、最終出力の一部の領域は第１のモデルからのもので、最終出力の他の一部の領域は、第２のモデルからのものであってもよい。
【００５２】
図９は、本発明の実施形態によるイメージフレームｆｉでの顔検出のための二つのモデルの並列コンピューティングをグラフで示す。図９に示すように、イメージフレームｆｉ（例えば、第１のフレームｆ１）を複数のパーティション（Ｐ１…ＰＮ）に分割し、二つの顔検出モデル（ｍ１とｍ２）が並列コンピューティング用の複数のｓｈａｖｅ（Ｓ１…ＳＮ）を使用してこれらのパーティションを処理する。二つのモデルは、それぞれ顔検出アルゴリズムの実装に使用される複数の層（例えば、コンボリューション層）を含む。一つまたは複数の実施形態において、二つの顔検出モデルｍ１とｍ２がパラメータを共有するか、または一つもしくは複数の層については同じである。従って、共有段階（Ｓ１）において、共有層（ｌｔ１からｌｔｘまで）に渡る全体のｓｈａｖｅは、並列コンピューティングを実装する。ここで、図９のｌｔ１は、顔検出モデルに関する第１の層の時系列時間ステップでコンピューティングすることが指定されている。コンピューティングが層ｌｔｘ＋１に関する時系列時間ステップに入った場合、顔検出モデルがパラメータを共有しない場合、別の段階（Ｓ２）でｓｈａｖｅを二つのｓｈａｖｅグループに分割する。第１のｓｈａｖｅグループ（Ｓ１からＳＭまで、Ｍは、Ｎより小さい整数）は、第１の顔検出モデルｍ１に指定し、第２のｓｈａｖｅグループ（ＳＭ＋１からＳＮまで）は、第２の顔検出モデルｍ２に指定する。一つまたはモデルの実施形態において、別の段階で、ｓｈａｖｅは、顔検出モデル間で均等に分割され、各モデルはいずれもコンピューティングのためにｓｈａｖｅの半分を使用する。一つまたはモデルの実施形態において、別の段階で、ｓｈａｖｅは顔検出モデル間で不均一に分割される。ここで、二つの顔検出モデルのコンピューティング時間がほぼ同じになるように、より多くのリソースを必要とする顔検出モデルは、より多くのｓｈａｖｅを使用することが求められる。例えば、顔検出モデルｍ１が顔検出モデルｍ２より複雑である場合（より多くの層またはより多くのパラメータを有する）は、より多くのｓｈａｖｅを顔検出モデルｍ１に割り当るようにしてもよい。
【００５３】
図１０は、本発明の実施形態によるリアルタイムの顔検出を実現するのに、リアルタイムのマルチスレッドプログラミングの実装のためのプロセスを示す。最初に、カメラセンサーは、一つまたは複数のイメージを捕捉する（１００５）。一つまたは複数のイメージを第１のＣＰＵコアと、第２のＣＰＵコアと、複数のｓｈａｖｅとを含むプロセッサに伝送する（１０１０）。一つまたは複数の実施形態において、第２のＣＰＵコアは、各イメージフレームを複数のパーティションに分割し（１０１５）、フレームごとのパーティションの数はｓｈａｖｅの数と同じである。第２のＣＰＵコアは、各ｓｈａｖｅに初期（または第１の）イメージフレームの一つのパーティションを割り当てることにより、コンピューティングタスクをスケジューリングする（１０２０）。複数のｓｈａｖｅは、少なくとも一つのオブジェクト検出モデルを使用して、オブジェクト検出を並行して実行する（１０２５）。少なくとも一つの顔検出モデルを使用する詳細な並列コンピューティングの実施形態は、図８および／または図９の関連説明を参照することができる。一つまたは複数の実施形態において、第２のＣＰＵコアは、スケジューリングされたコンピューティングタスクを完了したｓｈａｖｅに次のイメージフレームのパーティションを割り当てることによって、コンピューティングタスクスケジューリングを動的に更新する（１０３０）。これにより、それらのｓｈａｖｅはすべてのｓｈａｖｅがスケジューリングされたコンピューティングタスクを完了するまで待つ必要がなくなる。ステップ１０３０のプロセスは、すべてのイメージフレームが分割されてコンピューティングのために割り当てられるまで動的スケジューリング動作を伴う自己更新ステップであってもよい。イメージフレームのすべてのパーティションの処理が完了すると、イメージフレームに対応する出力を生成するように、すべてのパーティションの結果を合併する（１０３５）。  
【００５４】
Ｅ．システムの実施形態
実施形態において、本明細書の態様は、一つまたは複数の情報処理システム／コンピューティングシステムを関してもよく、含んでもよく、利用してもよく、合併してもよく、または一つまたは複数の情報処理システム／コンピューティングシステムで実施されてもよい。コンピューティングシステムは、任意の形式の情報、インテリジェンスまたはデータの任意の手段または手段の組み合わせをコンピューティング、計算、決定、分類、処理、伝送、受信、取得（retrieve）、発信（originate）、ルーティング、交換（switch）、格納、表示、通信、視覚化、検出、記録、再現、処理または利用する動作を含むことができる。例えば、コンピューティングシステムは、パーソナルコンピュータ（例えば、ラップトップコンピュータ）、タブレットコンピュータ、ファブレット、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン、スマートウォッチ、スマートパッケージ、サーバー（例えば、ブレードサーバーまたはラックサーバー）、ネットワークストレージ装置、カメラまたはその他の適切な装置であってもよく、サイズ、形状、性能、機能、及び価格を変更することも可能である。コンピューティングシステムは、ランダムアクセスメモリ（ＲＡＭ）、一つまたは複数の処理リソース（例えば、中央処理ユニット（ＣＰＵ）またはハードウェアまたはソフトウェア制御ロジック等）、ＲＯＭおよび／または他のタイプのメモリを含むことができる。コンピューティングシステムの追加コンポーネントは、一つまたは複数のディスクドライブ、外部装置と通信するための一つまたは複数のネットワークポート、及び様々な入力及び出力（Ｉ／Ｏ）デバイス（例えば、キーボード、マウス、タッチスクリーンおよび／またはビデオディスプレイ等）を含むことができる。コンピューティングシステムは、様々なハードウェアコンポーネント間で通信を伝送するように動作可能な一つまたは複数のバスをさらに含むことができる。
【００５５】
図１１は、本発明の実施形態によるコンピューティングデバイス／情報処理システム（またはコンピューティングシステム）の概略ブロック図を示す。システム１１００に示された機能は、コンピューティングシステムの様々な実施形態をサポートするように動作し得ることを理解されるべきである。ただし、コンピューティングシステムは、図１１に示すようにより少ないまたはより多いコンポーネントを含む異なる構成であり、かつ異なるコンポーネントを含み得ることが理解されるべきである。
【００５６】
図１１に示すように、コンピューティングシステム１１００は、一つまたは複数の中央処理ユニット（ＣＰＵ）１１０１を含み、ＣＰＵ１１０１は、コンピューティングリソースを提供し、コンピュータを制御する。ＣＰＵ１１０１は、マイクロプロセッサ等を実装することができ、一つまたは複数のグラフィックス処理ユニット（ＧＰＵ）１１１９および／または数学コンピューティング用の浮動小数点コプロセッサをさらに含むことができる。システム１１００は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、またはその両方を含むシステムメモリ１１０２を含むことができる。
【００５７】
図１１に示すように、複数のコントローラと周辺装置を提供することができる。入力コントローラ１１０３は、例えば、キーボード、マウス、タッチパネルおよび／またはタッチペン等の様々な入力装置１１０４へのインターフェースを表す。コンピューティングシステム１１００は、記憶媒体（例えば、テープまたはディスク）または光学媒体（オペレーティングシステム、ユーティリティ、及びアプリケーションの指令を記録するプログラムであって、これらは本開示の様々な態様を実装しているプログラムの実施形態を含むことができる）、一つまたは複数の記憶装置１１０８とインターフェースするための、記憶コントローラ１１０７をさらに含むことができる。記憶装置１１０８は、処理されたデータまたは本発明に従って処理されるデータを記憶するために使用されることができる。システム１１００は、ディスプレイ装置１１１１にインターフェースを提供するためのディスプレイコントローラ１１０９をさらに含むことができ、ディスプレイ装置１１１１は、陰極線管（ＣＲＴ）、薄膜トランジスタ（ＴＦＴ）ディスプレイ、有機発光ダイオード、電気発光パネル、プラスマパネルまたは他のタイプのディスプレイであってもよい。コンピューティングシステム１１００は、一つまたは複数の周辺装置１１０６のための一つまたは複数の周辺コントローラまたはインターフェース１１０５をさらに含むことができる。周辺装置の例として、一つまたは複数のプリンタ、スキャナー、入力装置、出力デバイス、センサー等を含むことができる。通信コントローラ１１１４は、一つまたは複数の通信装置１１１５とインターフェースすることができ、これによって、システム１１００は、様々なネットワーク（インターネット、クラウドリソース（例えば、イーサネットクラウド、ファイバチャネルオーバーイーサネット（ＦＣｏＥ）／データセンターブリッジング（ＤＣＢ）クラウド等）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、記憶領域ネットワーク（ＳＡＮ））のうちの任意なネットワーク、または適切な電磁キャリア信号（赤外線信号を含む）を介してリモート装置に接続されることができる。
【００５８】
示されたシステムにおいて、すべての主なシステムコンポーネントをバス１１１６に接続することができ、バス１１１６は複数の物理的バスを表すことができる。ただし、様々なシステムコンポーネントは、物理的に互いに近接しまたは近接しないようにすることができる。例えば、入力データおよび／または出力データは、ある物理的な場所から別の物理的な場所にリモートで伝送することができる。さらに、本開示の様々な態様を実施するプログラムは、ネットワークを介して遠隔位置（例えば、サーバー）からアクセスすることができる。このようなデータおよび／またはプログラムは、様々な機械可読媒体の中から任意の機械可読媒体を介して伝送することができ、機械可読媒体は、例えば、ハードディスク、フロッピーディスク、及び磁気テープ等の磁気媒体、例えば、ＣＤ−ＲＯＭ、及びホログラフィック装置等の光学媒体、磁気光学媒体、及びハードウェアデバイスを含むが、これに限定されず、前記ハードウェアデバイスは、プログラムコードを記憶または記憶して実行するように特別に構成され、前記ハードウェアデバイスは、例えば、アプリケーション固有の集積回路（ＡＳＩＣ）、プログラマブルロジック装置（ＰＬＤ）、フラッシュメモリ装置、およびＲＯＭとＲＡＭデバイスである。
【００５９】
本開示の態様は、一つまたは複数のプロセッサまたは処理ユニットを利用して、段階で実行される指令が一つまたは複数の非一時的なコンピュータ可読媒体に符号化することができる。一つまたは複数の非一時的なコンピュータ可読媒体は、揮発性メモリと不揮発性メモリを含むことができることに留意されたい。ハードウェア実装方法またはソフトウェア／ハードウェア実装方法を含む代替実施方法が可能であることに留意されたい。ハードウェアに実装される機能は、ＡＳＩＣ、プログラム可能なアレイ、デジタル信号処理回路等を使用して実装することができる。従って、請求項における「手段」という用語は、ソフトウェア実装方法とハードウェア実装方法との両方をカバーすることを意図する。同様に、本明細書で使用される「コンピュータ可読媒体または媒体」という用語は、その上に実行される指令プログラムを有するソフトウェアおよび／またはハードウェアまたはそれらの組み合わせを含む。これらの実装代替案を念頭において、図面と付随の説明は、当業者がプログラムコード（即ち、ソフトウェア）を書き込みおよび／または回路（即ち、バードウェア）を製造するのに必要な処理を実行するために必要とする機能情報を提供することを理解されたい。
【００６０】
本発明の実施形態は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有する非一時的な有形のコンピュータ可読媒体を有するコンピュータ製品に関するであってもよいことに留意されたい。媒体とコンピュータコードとは、本開示の目的のために特別に設計及び構築された媒体及びコンピュータコードであるか、またはそれらは、関連技術分野の当業者に知られているか、または利用可能であり得る。有形のコンピュータ可読媒体の例として、たとえば、ハードディスク、フロッピーディスク、及び磁気テープ等の磁気媒体、例えば、ＣＤ−ＲＯＭ及びホログラフィック装置等の光学媒体、磁気光学媒体、及び、例えば、アプリケーション固有の集積回路（ＡＳＩＣ）、プログラマブルロジック装置（ＰＬＤ）、フラッシュメモリ装置、ＲＯＭ、及びＲＡＭデバイスなどのプログラムコードを記憶または記憶して実行するように特別に構成されたハードウェアを含むが、これに限定されない。コンピュータコードの例として、マシンコード（例えば、コンパイラによって生成されたコード）、及びインタプリタを使用してコンピュータによって実行されることができる高レベルのコードを含むファイルを含む。本開示の実施形態は、プログラムモジュール内の処理デバイスによって実行されることができる機械実行可能な指として、全体的または部分的に実装することができる。プログラムモジュールの例は、ライブラリ、プログラム、ルーチン、オブジェクト、コンポーネント、及びデータ構造を含む。分散コンピューティング環境において、プログラムモジュールは、ローカル、リモート、またはその両方の設定に物理的に配置することができる。
【００６１】
当業者は、コンピューティングシステムもプログラミングも本開示の実施にとって重要ではないことを認識されている。当業者は、複数の上述要素が物理的および／または機能的にサブモジュールに分割されるか、または一緒に組み合わされ得ることをさらに認識されている。
【００６２】
当業者は、前述の実施例及び実施形態が例示的であり、本開示の範囲を限定しないことを理解される。当業者が本明細書を読み、添付の図面を研究した後、当業者にて自明である本発明のすべての置換、強化、均等物、組み合わせまたは改善は本来の精神及び範囲内に含まれることを意図する。さらに、請求項における任意の要素は、複数の従属関係、構成、及び組み合わせを有する異なる方法で設定可能であることに留意されたい。
【図１】
2021530038.tif 000003
【図２】
2021530038.tif 000004
【図３】
2021530038.tif 000005
【図４】
2021530038.tif 000006
【図５】
2021530038.tif 000007
【図６】
2021530038.tif 000008
【図７】
2021530038.tif 000009
【図８】
2021530038.tif 000010
【図９】
2021530038.tif 000011
【図１０】
2021530038.tif 000012
【図１１】
2021530038.tif 000013
【手続補正書】
【提出日】令和3年2月24日(2021.2.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
装置であって、
一つまたは複数のイメージフレームを捕捉するカメラセンサーと、
第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを少なくとも記憶するメモリと、
第１のＣＰＵコアと、第２のＣＰＵコアと、処理用の複数のｓｈａｖｅとを含むプロセッサと
を具備し、
前記第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、前記装置の一般的なＣＰＵタスクを処理するように構成され、
前記第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、前記イメージフレームを処理し、前記複数のｓｈａｖｅによって前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとに対して実装されるコンピューティングタスクをスケジューリングして、一つまたは複数のイメージフレームのオブジェクトを検出するように構成される前記装置。
【請求項２】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは深層学習モデルであり、
各モデルはそれぞれ複数のモデル層を備え、前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、前記装置のコンピューティングとリソースとの要求を減少するように、前記層のうちの少なくとも一部の層を共有する請求項１に記載の装置。
【請求項３】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルのいずれか一つは、一つまたは複数の共有層の重みを固定するように事前学習を行う請求項２に記載の装置。
【請求項４】
各イメージフレームは、それぞれ複数のパーティションに分割され、前記パーティションの数は、前記ｓｈａｖｅの数に等しく、各ｓｈａｖｅは、それぞれオブジェクト検出コンピューティング用のパーティションが割り当てられる請求項１に記載の装置。
【請求項５】
各ｓｈａｖｅからのコンピューティング結果を合併して、前記イメージフレームに対応する出力を生成する請求項４に記載の装置。
【請求項６】
前記出力は、二つのオブジェクト検出モデルから選択されるコンピューティング結果の組み合わせである請求項５に記載の装置。
【請求項７】
前記第１のオブジェクト検出モデルから選択されるコンピューティング結果に対して、前記第１のオブジェクト検出モデルは、前記第２のオブジェクト検出モデルより高い検出確率を有し、前記第２のオブジェクト検出モデルから選択されるコンピューティング結果に対して、前記第２のオブジェクト検出モデルは、前記第１のオブジェクト検出モデルより高い検出確率を有する請求項６に記載の装置。
【請求項８】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、異なる角度からオブジェクト検出用に最適化される請求項７に記載の装置。
【請求項９】
装置であって、
少なくとも一つのイメージフレームを生成するカメラセンサーと、
少なくとも一つのオブジェクト検出モデルを記憶するメモリと、
第１のＣＰＵコアと、第２のＣＰＵコアと、処理用の複数のｓｈａｖｅとを含むプロセッサと
を具備し、
前記第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、前記装置の一般的なＣＰＵタスクを処理するように構成され、
前記第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、前記少なくとも一つのイメージフレームを処理し、前記複数のｓｈａｖｅによって前記少なくとも一つのオブジェクト検出モデルを使用して実装されるコンピューティングタスクをスケジューリングして、前記少なくとも一つのイメージフレームのオブジェクトを検出するように構成され、イメージフレームは複数のパーティションに分割され、パーティションごとにコンピューティング用の一つのｓｈａｖｅに割り当てられ、前記第２のＣＰＵコアは、前記複数のｓｈａｖｅがスケジューリングされたコンピューティングタスクの実現に基づいて、コンピューティングタスクを動的に更新する前記装置。
【請求項１０】
パーティションの数は前記ｓｈａｖｅの数に等しい請求項９に記載の装置。
【請求項１１】
イメージフレームのすべてのパーティションが処理されると、すべてのパーティションの結果を合併することで、前記イメージフレームに対応する出力を取得する請求項９に記載の装置。
【請求項１２】
前記複数のｓｈａｖｅはコンピューティングを並行して実施する請求項９に記載の装置。
【請求項１３】
一つのｓｈａｖｅがスケジューリングされたコンピューティングタスクを完了すると、前記第２のＣＰＵコアは、次のイメージフレームからのパーティションを割り当てることによって、前記ｓｈａｖｅのコンピューティングタスクを更新し、他のｓｈａｖｅが現在のイメージフレームのコンピューティングを完了するのを待たずに、前記ｓｈａｖｅがコンピューティングを開始するようにする請求項９に記載の装置。
【請求項１４】
前記少なくとも一つのオブジェクト検出モデルは、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを含み、前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとはそれぞれ複数の層を含み、一つまたは複数の層はパラメータを共有し、前記複数のｓｈａｖｅによって実装される前記コンピューティングタスクは、
パラメータを共有する層に関するコンピューティングタスクに対して、すべての前記複数のｓｈａｖｅを通じて並列コンピューティングを実装し、
パラメータを共有しない層に係るコンピューティングタスクに対して、前記複数のｓｈａｖｅを、前記第１のオブジェクト検出モデル用に指定された第１のｓｈａｖｅグループと前記第２のオブジェクト検出モデル用に指定された第２のｓｈａｖｅグループとに分割し、前記第１のオブジェクト検出モデル用に指定された前記第１のｓｈａｖｅグループと前記第２のオブジェクト検出モデル用に指定された前記第２のｓｈａｖｅグループとを使用して並列コンピューティングを実装する
請求項９に記載の装置。
【請求項１５】
装置において実行される低電力イメージ検出用の方法であって、
カメラセンサーによって一つまたは複数のイメージフレームを捕捉するステップと、
第１のＣＰＵコアと、第２のＣＰＵコアと、及びコンピューティング処理用の複数のｓｈａｖｅとを含むプロセッサで前記一つまたは複数のイメージフレームを受信するステップであって、前記第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行して、前記装置の一般的なＣＰＵタスクを処理するように構成され、前記第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、前記一つまたは複数のイメージフレームの処理を処理するように構成される、ステップと、
前記第２のＣＰＵコアを通じて、前記複数のｓｈａｖｅによって第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを使用して実装されるコンピューティングタスクをスケジューリングして、前記一つまたは複数のイメージフレーム中のオブジェクトを検出するステップと、
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとの間のより高い検出確率を有するオブジェクト検出モデルからコンピューティング結果を選択して、前記一つまたは複数のイメージフレーム中のオブジェクト検出の出力を形成するステップと
を含む、低電力イメージ検出用の方法。
【請求項１６】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルは、複数のコンボリューション層を含む深層学習オブジェクト検出モデルであり、前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、少なくとも一つのコンボリューション層を共有する請求項１５に記載の方法。
【請求項１７】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、事前学習が行われた深層学習オブジェクト検出モデルである請求項１６に記載の方法。
【請求項１８】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、単独にトレーニングされてから組み合わせる請求項１７に記載の方法。
【請求項１９】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルのいずれか一つは、一つまたは複数の共有モデル層のパラメータを固定するように事前学習が行われ、前記第２のオブジェクト検出モデルは、前記一つまたは複数の共有モデル層の固定されたパラメータを含むが、前記第２のオブジェクト検出モデルは、一つまたは複数のその他の層をトレーニングするようにトレーニングすることで、オブジェクト検出の違いを許容するようにする請求項１８に記載の方法。
【請求項２０】
前記第１のオブジェクト検出モデルと前記第２のオブジェクト検出モデルとは、それぞれ第１の専用データセットと第２の専用データセットとを使用して事前学習を行った後、前記第１の専用データセットと前記第２の専用データセットとの両方からのデータを含むトレーニングデータセットを使用して共同トレーニングされる請求項１９に記載の方法。
【請求項２１】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項１５ないし請求項２０のいずれか一項に記載の方法を実現させるコンピュータプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、全体的にオブジェクト検出に関し、特に、改善された性能と、特徴と、用途とを提供することができる、リアルタイムの顔検出のシステム及び方法に関する。
【背景技術】
【０００２】
顔検出は、デジタルイメージにおいて人間の顔を認識するために様々なアプリケーションで使用されるコンピュータ技術である。一部の顔検出技術は、並列コンピューティングコプロセッサ（例えば、グラフィックス処理ユニット（ＧＰＵ））を使用せずに、非常に低速のシリアルプロセッサで実行される深層学習ネットワークのバリエーションに基づき、これは深層学習アルゴリズムを使用した顔検出の計算量が非常に多いためである。
【０００３】
モバイル顔検出システムの場合、絶対のエネルギー効率と熱電力消費の観点からみると、性能に加えて、電力とエネルギー効率も、二つの主な制限要因になっている。モバイルコンピューティングは、より高い絶対のエネルギー効率とより低い熱電力消費の傾向をずっと追求してきている一つの主な推進要因である。エネルギー効率の問題は、常時接続のモバイルコンピューティングに制限されていない。プロセッサのエネルギー効率（Ｗ当たりの性能の形で）は、重要な指標になっている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
さらに、モバイルコンピューティングに使用されるプロセッサは、顔検出への応用に問題が存在している。低遅延（low-latency）の顔検出深層学習コンピュータ視覚アルゴリズムによって求められたハードリアルタイム要求は、非常に厳しいものであり、たとえＬｉｎｕｘ（登録商標）やＡｎｄｒｏｉｄ（登録商標）等のオペレーティングシステム（低遅延に用いられることは明示的に設計されていない）を実行する機能が強力なプラットフォーム上でも、満足させることは難しい。さらに、顔検出深層学習アプリケーションのコンピューティング要求を満たすには、従来のアプリケーションプロセッサのほとんどすべてのコンピューティングリソースが必要となる。
【０００５】
従って、改善された性能と、特徴と、用途とを提供することができるリアルタイムの顔検出のシステムと方法が必要とされる。
【課題を解決するための手段】
【０００６】
第１の態様において、本発明は、装置を提供し、前記装置は、一つまたは複数のイメージフレームを捕捉（capture）するカメラセンサーと、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを少なくとも記憶するメモリと、第１のＣＰＵコアと第２のＣＰＵコアと処理用の複数のｓｈａｖｅとを含むプロセッサと、を含み、第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、装置の一般的なＣＰＵタスクを処理するように構成され、第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することでイメージフレームを処理し、複数のｓｈａｖｅによって第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとに対して実装されるコンピューティングタスクをスケジューリングして、一つまたは複数のイメージフレームのオブジェクトを検出するように構成される。
【０００７】
第２の態様において、本発明は、装置を提供し、前記装置は、少なくとも一つのイメージフレームを生成するカメラセンサーと、少なくとも一つのオブジェクト検出モデルを記憶するメモリと、第１のＣＰＵコアと第２のＣＰＵコアと処理用の複数のｓｈａｖｅとを含むプロセッサと、を含み、第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、装置の一般的なＣＰＵタスクを処理するように構成され、第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、少なくとも一つのイメージフレームを処理し、複数のｓｈａｖｅによって少なくとも一つのオブジェクト検出モデルを使用して実装されるコンピューティングタスクをスケジューリングして、少なくとも一つのイメージフレームのオブジェクトを検出するように構成され、イメージフレームは、複数のパーティションに分割され、それぞれのパーティションは、コンピューティングのため一つのｓｈａｖｅに割り当てられ、第２のＣＰＵコアは、複数のｓｈａｖｅがスケジューリングされたコンピューティングタスクの実現に基づいて、コンピューティングタスクを動的に更新する。
【０００８】
第３の態様において、本開示は、方法を提供し、前記方法は、カメラセンサーによって一つまたは複数のイメージフレームを捕捉するステップと、第１のＣＰＵコアと第２のＣＰＵコアとコンピューティング処理用の複数のｓｈａｖｅとを含むプロセッサで一つまたは複数のイメージフレームを受信するステップであって、第１のＣＰＵコアは、オペレーティングシステムの第１の実例を実行することで、装置の一般的なＣＰＵタスクを処理するように構成され、第２のＣＰＵコアは、オペレーティングシステムの第２の実例を実行することで、一つまたは複数のイメージフレームの処理を処理するように構成される、ステップと、第２のＣＰＵコアを通じて、複数のｓｈａｖｅによって第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを使用して実装されるコンピューティングタスクをスケジューリングし、一つまたは複数のイメージフレーム中のオブジェクトを検出するステップと、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとの間のより高い検出確率を有するオブジェクト検出モデルからコンピューティング結果を選択し、一つまたは複数のイメージフレーム中のオブジェクト検出の出力を形成するステップと、を含む。
【０００９】
第４の態様において、本開示は、コンピュータプログラムを提供し、前記コンピュータプログラムがプロセッサにより実行されると、前記の方法を実現させる。
【図面の簡単な説明】
【００１０】
本発明の実施形態を参照し、それらの例は添付の図面に示すことができる。これらの図面は、例示を目的としたものであり、制限的なものではない。本開示は、一般的にこれらの実施形態の文脈に沿って説明されるが、本発明の範囲は、これらの特定の実施形態に制限されることを意図していないことを理解されたい。図面の項目は、原寸に比例して描いたものではない。
【図１】本開示の実施形態によるオブジェクト検出プロセッサシステムのプラットフォームアーキテクチャを示す。
【図２】本開示の実施形態によるオブジェクト検出システムを示す。
【図３】本開示の実施形態によるプリント回路基板（ＰＣＢ）の機能ブロック図のボトム層を示す。
【図４】本開示の実施形態によるＰＣＢの機能ブロック図のトップ層を示す。
【図５】本開示の実施形態によるオブジェクト検出モデルの構造をグラフで示す。
【図６】本開示の実施形態による顔検出を実施するためのプロセスを示す。
【図７】本開示の実施形態による複数のイメージフレームに用いられるマルチモデルスケジューリングメカニズムをグラフで示す。
【図８】本開示の実施形態によるリアルタイムの顔検出のためのマルチスレッドプログラミングをグラフで示す。
【図９】本開示の実施形態による二つの顔検出モデルの並列コンピューティングをグラフで示す。
【図１０】本開示の実施形態によるリアルタイムの顔検出を実施するのにリアルタイムのマルチスレッドプログラミングの実装のためのプロセスを示す。
【図１１】本開示の実施形態によるコンピューティングデバイス／情報処理システムの簡略化されたブロック図を示す。
【発明を実施するための形態】
【００１１】
以下の説明では、説明を目的とするもので、本開示の理解を提供するために特定の詳細を明らかにしている。しかしながら、当業者にとって、これらの詳細内容がなくても本開示が実施され得ることは明らかである。さらに、当業者は、以下に記載される本発明の実施形態が、様々な方法（例えば、プロセス、装置、システム、デバイスまたは方法）で有形のコンピュータ可読媒体に実施され得ることを認識している。
【００１２】
図面に示されるコンポーネントまたはモジュールは、本開示の実施形態の例示的な説明であり、本開示を不明確にすることを回避することを意図している。議論される全文において、コンポーネントは、別個の機能ユニット（サブユニットを含み得る）として説明され得るが、当業者は、様々なコンポーネントまたはその部分が別個のコンポーネントに分割され得るか、または統合され得ることを認識している（単一のシステムまたはコンポーネントへの統合を含む）。本開示で論じられる機能または動作は、コンポーネントとして実装され得ることに留意されたい。コンポーネントは、ソフトウェア、ハードウェア、またはそれらの組み合わせで実装することができる。
【００１３】
さらに、図面のコンポーネントまたはシステムの間の接続は、直接接続に制限されることを意図するものではない。代わりに、これらのコンポーネントの間のデータは、中間コンポーネントによって変更、再フォーマット、または他の方法で変更することができる。さらに、追加またはより少ない接続を使用することができる。「連結される」、「接続される」、または「通信的に連結される」という用語は、直接接続と一つまたは複数の中間装置を介して間接接続と、無線切側とを含むことを理解されるべきであることも留意されたい。本開示の実施形態において、顔検出の文脈で例として説明することができるが、他のオブジェクトが検出され得ることに留意されたい。また、イメージは、静止イメージでも、ビデオからのイメージフレームでもよい。
【００１４】
本明細書において「一実施形態」、「好ましい実施形態」、「実施形態」または「複数の実施形態」への言及は、実施形態と組みあわせて記載される具体的特徴、構造、特性または機能が本発明の少なくとも一つの実施形態と、二つ以上の実施形態とに含まれ得ることを意味する。
【００１５】
一部の用語は、説明の目的で本明細書の様々なところで使用され、限定的に解釈されるべきではない。サービス、機能またはリソースは、単一のサービス、単一の機能または単一のリソースに限定されないし、これらの用語の使用は、関連するサービス、機能またはリソースの分布可能または集約可能なグループを指すのに用いることができる。
【００１６】
「含む」、「含まれる」、「含有」及び「含有される」といる用語は、オープン的な用語として理解されるべきであり、その後にリストされる任意のコンテンツは、すべて実施例であり、リストされた項目に限定されることを意図するものではない。本明細書で使用される任意の見出しは、組織的な目的でのみに使用され、明細書またはクレームの範囲を限定するために使用されるべきではない。本発明に記載される各参考文献は、その全体が参照により本明細書に組み込まれる。
【００１７】
さらに、当業者は、（１）一部の段階が選択的に実行されてもよく、（２）段階が本明細書に記載の特定の順序に限定されなくてもよく、（３）一部の段階が異なる順序で実行されてもよく、（４）一部の段階が同時に実行されてもよい。
【００１８】
Ａ．序文
顔検出は、デジタルイメージで人間の顔を認識するための様々なアプリケーションで使用され、デジタルイメージは、例えば、風景、建物等の顔以外の様々なオブジェクト、及び例えば、脚、肩、及び腕等の人の顔以外の部位を含むことができる。一部の顔検出技術は、並列コンピューティングコプロセッサ（例えば、グラフィックス処理ユニット（ＧＰＵ）等）の深層学習ネットワークのバリエーションを使用せず、非常に低速のシリアルプロセッサに基づいて実行され、これは深層学習アルゴリズムを使用して顔を検出する計算量が非常に大きいからである。顔検出は、顔認識のアプリケーションだけでなく、例えば、オートフォーカスカメラ等のような非認識アプリケーションも含まれる。
【００１９】
モバイル顔検出システムの場合、絶対エネルギー効率と熱電力消費との観点から、性能に加え、電力とエネルギー効率とも二つの主な制限要因になる。モバイルコンピューティングは、より高い絶対エネルギー効率とより低い熱電力消費とのトレンドを常に追求する主な推進要因である。エネルギー効率の問題は、常時接続のモバイルコンピューティングだけに限定されるものではない。プロセッサのエネルギー効率（Ｗ当たりの性能の形式）は、重要な指標になる可能性がある。
【００２０】
さらに、モバイルコンピューティングに使用されるプロセッサは、顔検出のアプリケーションを実施する時に課題がある。低遅延の顔検出を管理する深層学習コンピュータ視覚アルゴリズムによって求められたハードリアルタイム要求は、かなり厳しいものであり、たとえ、Ｌｉｎｕｘ（登録商標）またはＡｎｄｒｏｉｄ（登録商標）等のオペレーティングシステム（低遅延に用いられることは明示的に設計されていない）を実行する機能が強力なプラットフォームであっても、満足させることは難しい。さらに、顔検出深層学習アプリケーションのコンピューティング要求を満足するには、従来のアプリケーションプロセッサのほとんどすべてのコンピューティングリソースが必要となる。
【００２１】
近年、スマートフォン（例えば、Ａｐｐｌｅ（登録商標）社のｉＰｈｏｎｅ（登録商標）またはＡｎｄｒｏｉｄ（登録商標）による携帯電話）に顔検出を実施するための様々な方法が提案されている。
【００２２】
実施方法において、スマートフォンをキャリアとして使用する必要があるため、例えば、スマートホーム、及びスマート都市等の他の市場への移植や展開が容易ではない。スマートフォンを使用して実装される顔検出システムの場合、その性能は、スマートフォンのモバイルプロセッサとオペレーティングシステム（ＯＳ）とによって制限される。一部のモバイルＯＳは、ハードリアルタイム性能を達成できない場合がある。
【００２３】
さらに、スマートフォンでの顔検出の実装は、アプリケーションプロセッサだけでなく、コプロセッサもさらに含み、スマートフォンのリソースを最大限に活用する必要がある場合がある。スマートフォンで顔検出を実装する場合の消費電力は、約５Ｗ〜１０  Ｗとすることができ、これは、スマートフォンの他のアプリケーション（またはＡｐｐ）の動作を制限してしまう可能性がある。
【００２４】
Ｂ．オブジェクト検出アーキテクチャの実施形態
一つまたは複数の実施形態において、常時接続の超低消費電力モバイルデバイスで深層学習に基づくリアルタイムの顔検出を実施するためのアーキテクチャが開示される。前記アーキテクチャは、顔検出技術を幅広いアプリケーションに展開されるのにより多くの機会を提供することができる。
【００２５】
図１は、本発明の実施形態によるリアルタイムオペレーティングシステム（ＲＴＯＳ）顔検出プロセッサシステム１００のプラットフォームアーキテクチャを示す。プロセッサシステム１００は、第１の中央処理ユニット（ＣＰＵ）コア１１０と、第２のＣＰＵコア１２０と、及びｓｈａｖｅと呼ばれる複数のデジタル信号プロセッサ（またはコンピューティングエンジン）１３０とを含み、それらは、分離されたパワーアイランドと並行して動作し、常時接続式顔検出の実施の下での消費電力を制限することができる。一つまたは複数の実施形態において、第１のＣＰＵコア１１０と第２のＣＰＵコア１２０とは、別個のタスクを専用的に処理するように構成される。例えば、第１のＣＰＵコアは、一般的なオペレーティングシステム（ＯＳ）タスクを処理するように構成され、第２のＣＰＵコアは、イメージを処理してｓｈａｖｅ１３０によって完成するコンピューティングタスクをスケジューリングするように構成され、組み込み式のリアルタイムマルチスレッド動作を実現することができる。
【００２６】
一つまたは複数の実施形態において、プラットフォーム１００（以下の「ｘｃｏｒｅ」または「プロセッサシステム」と互換可能に使用される用語）は、例えば、ダブルデータレート（ＤＤＲ）ＲＡＭ等の動的ランダムアクセスメモリ（ＤＲＡＭ）等のようなメモリ１４０をさらに含む。ＣＰＵコアは、メモリコントローラ１５０を介してメモリとの読み取り／書き込み動作を実施することができ、メモリコントローラ１５０は、物理層１５５と制御層１６０とを含むことができる。図１に示されていないが、各ＣＰＵは、いずれもメモリコントローラ１５０を介してメモリ１４０に直接アクセスすることができる。
【００２７】
一つまたは複数の実施形態において、第１のＣＰＵコア１１０は第１のオペレーティングシステム（ＯＳ）の実例を実行するように構成され、第２のＣＰＵコアは第１のＯＳ実例と異なる第２のＯＳ実例を実行するように構成される。複数の顔検出モデルと複数のｓｈａｖｅとを有する場合、プラットフォームは、顔検出深層学習コンピューティングライブラリを最適化して様々な顔検出ネットワーク／モデルのマルチモデルスケジューリングを管理することにより、常時接続の低消費電力モバイルデバイスで必要な性能を実装するように構成することができる。
【００２８】
図２は、本開示に係る実施形態によるＲＴＯＳ顔検出システムを示す。図２に示すように、ＲＴＯＳ顔検出するシステム２００は、ｘｃｏｒｅ１００と、イメージを捕捉する一つまたは複数のカメラセンサー２１０と、一つまたは複数のカメラセンサー２１０とｘｃｏｒｅ１００との間で通信するメディアインターフェース２２０と、を含む。ＲＴＯＳ顔検出システム２００は、ｘｃｏｒｅ１００に接続されるか、またはｘｃｏｒｅ１００に含まれる汎用Ｉ／Ｏインターフェース２３０と周辺回路２４０とを含むことができる。一つまたは複数の実施形態において、メディアインターフェース２２０は、例えば、ハイパーポートアーキテクチャ（ＵＰＡ）バス等のＣＰＵ相互接続のための高速グラフィックカードであってもよい。メディアインターフェース２２０は、ＨＤＭＩ（登録商標）互換カメラからの非圧縮ビデオデータ及び圧縮または非圧縮デジタルオーディオデータの送信をサポートする高解像度マルチメディアインターフェース（ＨＤＭＩ（登録商標））であってもよい。一つまたは複数の実施形態において、汎用Ｉ／Ｏインターフェース２３０は、イーサネットインターフェース、無線通信インターフェース、共同テストアクショングループ（ＪＴＡＧ）インターフェース、汎用入力／出力（ＧＰＩＯ）インターフェース、モバイル産業プロセッサインターフェース（ＭＩＰＩ）および／または安全デジタル入力出力（ＳＤＩＯ）インターフェース等であってもよい。一つまたは複数の実施形態において、周辺回路２４０は、システムクロック回路、及びシステムの電力管理のための電力管理集積回路（ＰＭＩＣ）等を含むことができる。追加または代替の構成要素は、図１１を参照して以下に開示されるそれらの構成要素のうちの一つまたは複数であってもよい。
【００２９】
実施形態において、ＲＴＯＳ顔検出システムの一つまたは複数の構成要素は、顔検出の実施／適用のためにＰＣＢ上に統合されることができる。図３と図４とは、それぞれ本開示の実施形態による顔検出を実施するための例示的な二層ＰＣＢのボトム層ＰＣＢ機能ブロック図とトップ層ＰＣＢ機能ブロック図を示す。
【００３０】
図３と図４との説明及び対応する説明は、一つまたは複数の特定の実施形態を使用する特定の構成の下で行われることに留意されたい。従って、これらの説明のための実例は、現在の明細書の開示範囲を制限するために使用されるべきでない。一つまたは複数の実施形態において、図３と図４とに示される構成要素は、ワイヤ、パッド、フラックス、及び導電性ビア等を介して相互接続されることができる（図面に接続を示されていない）。ボトム層とトップ層とに示される構成要素は、説明の目的のみに使用され、フレームワークの実施を制限するために使用されるべきでない。
【００３１】
図３に示すように、ボトム層ＰＣＢ機能ブロック図には、ｘｃｏｒｅ１００と、システムクロック回路３１０と、ネットワーク物理層３２０と、組み込み式不揮発性メモリとしての組み込み式マルチメディアカード（ｅＭＭＣ）３３０と、システム電力管理用の電力管理集積回路（ＰＭＩＣ）３４０と、層インターフェース３５０と、モバイル産業用プロセッサインターフェース（ＭＩＰＩ）３６０とを含むことにより、モバイルフレームワークの基本構成要素を相互接続することができる。一つまたは複数の実施形態において、ＭＩＰＩ３６０は、異なるパラメータを有するカメラとの通信に適応するように、第２のカメラモジュールとして使用することができる。ｅＭＭＣ３３０は、複数の顔検出モデルを記憶するように構成することができ、前記複数の顔検出モデルは、事前学習（pre-training）が行われている場合、または事前学習が行われていない場合がある。
【００３２】
一つまたは複数の実施形態において、ボトム層ＰＣＢ機能ブロックは、他の構成要素を含むことができ、これらの構成要素は、ＵＳＢ（２．０または３．０）インターフェース３７０と、一つの簡単なコネクタで充電、データ伝送及びビデオを許容するＣ型ＵＳＢインターフェース３８０と、設計検証及びＰＣＢテスト用のＪＴＡＧインターフェース３９０と、移動可能で小型化された安全なデジタルフラッシュメモリカードの読み取り／書き込み動作用のＴｒａｎｓＦｌａｓｈ（ＴＦ）カード３９５とを含む。当業者は、図３と図４と異なる様々な構成をフレームワークの実施に使用することができることを理解されるべきで、これらの変更は、本発明の範囲内にあることに理解されるべきである。
【００３３】
図４に示すように、トップ層ＰＣＢの機能ブロック図は、層インターフェース４１０と、リアルタイムのフレームごとのイメージを提供する第１のカメラモジュール４２０と、カメラモジュールに電力を供給するためのカメラ電源回路４３０と、絶縁型ＤＣコンバーターとしてのＰｏｗｅｒ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ（ＰｏＥ）ＤＣ−ＤＣコンバーター４４０と、有線イーサネットインターフェース４５０（ＰＯＥ機能を有する可能性がある）と、「ｓｌａｖｅ」デジタル集積回路が「マスター」チップと通信可能な内部集積回路（Ｉ２Ｃ）汎用Ｉ／Ｏ（ＧＰＩＯ）インターフェース４６０と、安全な無線通信を実施するためのＷｉ−Ｆｉ安全デジタル入出力（ＳＤＩＯ）回路４７０と、ＨＤＭＩ（登録商標）互換のソース装置（例えば、カメラモジュール４２０等）から送信するため非圧縮ビデオデータ及び圧縮または非圧縮デジタルオーディオデータ用の高解像度マルチメディアインターフェース（ＨＤＭＩ（登録商標））４８０と、他の周辺装置と通信するための外部インターフェース４９０とを含む。
【００３４】
実施形態において、異なるアプリケーションには、異なるカメラパラメータを必要とする可能性がある。カメラモジュール４２０とカメラモジュール３６０とは、カスタマイズ及び互換することができる。同様に、様々な通信要求を処理するために、通信インターフェース（イーサネット（登録商標）、ＵＳＢ、ＨＤＭＩ（登録商標）、及びＷＩＦＩ（登録商標））に応じて調節したり、および／またはＩ２ＣとＧＰＩＯバスとを介して他の機能に拡張したりすることができる。
【００３５】
二層ＰＣＢ構成を使用することにより、ＰＣＢのＸＹ軸の面積は、例えば、４ｃｍ×４ｃｍのサイズのように非常に小さくすることができ、これは、例えば、スマートセキュリティカメラ、産業用ロボット、スマートホーム製品（例えば、ドアベルやセキュリティシステム等）等、小型を必要としまたは小型を好む様々なアプリケーションへのインストールに適す。小面積の場合、製品の構造と外観とをより適切に設計することができ、一般に、小さな長方形の立方体は、構造上面積の大きい単層ボードより優れているためである。異なるＰＣＢ形状および／または構成を使用することができることに留意されたい。
【００３６】
一つまたは複数の実施形態において、カスタマイズされたオペレーティングシステム（以下「ｘｏｓ」とも呼ばれる）を使用して顔検出フレームワークを動作させ、前記カスタマイズされたオペレーティングシステムは、オープンソースのリアルタイムオペレーティングシステムであるマルチプロセッサシステムのリアルタイムエグゼクティブ（ＲＴＥＭＳ）の上部のリアルタイムオペレーティングシステム（ＲＴＯＳ）の組み合わせであり、低遅延のハードリアルタイム性能を実現し、性能を向上させる。
【００３７】
Ｃ．オブジェクト検出モデルの実施形態
一つまたは複数の実施形態において、少なくとも一つのオブジェクト検出モデル（例えば、顔検出モデル）を使用して、一つまたは複数のイメージフレームにリアルタイムのイメージ検出を実施する。少なくとも一つのオブジェクト検出モデルは、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを含んでもよく、それらは、同じ入力からオブジェクトを検出するために並行して実施してもよい。入力は、完全なイメージフレームまたは完全なフレームのセグメントであってもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとは、異なる角度から性能を最適化するように構成されることができる。例えば、第１のオブジェクト検出モデルは、第１の視点（例えば、正面）から顔検出を実行し、第２のオブジェクト検出モデルは、第２の視点（例えば、側面／断面イメージ）から顔検出を実行するように最適化され得る。別の例において、第１のオブジェクト検出モデルは、より高精細なイメージからの顔検出のために構成され、第２のオブジェクト検出モデルは、ぼやけたイメージからの顔検出のために指定されることができる。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとは、複数の層を含む深層学習ニューラルネットワークである。サイズが小さく、実施速度が速い場合、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとは、少なくとも一つの層を共有するか、または複数の層の間で少なくとも一つの層のパラメータを共有することができる。一つまたは複数の実施形態において、オブジェクト検出モデルは、事前学習を行い、不揮発性メモリ（例えば、ｅＭＭＣ３３０）に記憶することができる。
【００３８】
本発明の実施形態によれば、図５は、例示的なオブジェクト検出モデル構造５００をグラフで示す。一つまたは複数の実施形態において、オブジェクト検出モデル構造５００は、複数のコンボリューション層５２０からコンボリューション層５７０を含む畳み込みネットワークに基づく深層学習モデルから進化したものであってもよく、イメージ入力５１０から複数の境界ボックスを形成するようにする。一つまたは複数の実施形態において、顔検出モデルは、シングルショットマルチフレーム検出（ＳＳＤ）モデルまたはモバイルネットワーク（ＭｏｂｉｌｅＮｅｔ）ＳＳＤモデルを使用するか、またはこれらのモデルに基づくことができる。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルは、記憶要求の低減、動作效率の向上のために、少なくとも一つのコンボリューション層を共有してもよい。一つまたは複数の実施形態において、モデルは境界ボックス認識層（例えば、「ｃｏｎｖ１１＿ｍｂｏｘ＿ｌｏｃ＿ｆｌａｔ」層）と同じ層を共有し、異なる検出機能を説明するようにこの点から異なるモデルに分岐してもよい。当業者は、顔検出モデルが所望の性能及び効率を得るために、例えば、ＲｅＬＵ層、ストライディング（ｓｔｒｉｄｉｎｇ）および／またはプーリング（ｐｏｏｌｉｎｇ）等の追加層またはプログラムを含むことができることを理解すべきである。
【００３９】
一つまたは複数の実施形態において、コンボリューション層５２０からコンボリューション層５７０は、それぞれ、複数の境界ボックス（またはアンカーボックス）５２２から５７２を生成して、一つまたは複数の特徴を符号化し、または対応するそれぞれの境界ボックスに含むようにする。各コンボリューション層は、いずれも、一組の検出予測を生成するための一組のコンボリューションフィルターをそれぞれ有することができる。境界ボックス５２２から境界ボックス５７２は、異なるパラメータ（例えば、異なる比率、アスペクト比、信頼スコア等）を有する。一つまたは複数の実施形態において、コンボリューション層の初期段階からの境界ボックスは、コンボリューション層の後期段階からの境界ボックスより比較的に大きなサイズを有する。
【００４０】
一つまたは複数の実施形態において、境界ボックス５２２から境界ボックス５７２を、検出モジュール５８０に送られ（fed into）、境界ボックス５８２から境界ボックス５８４の集合を生成するようにし、各ボックスは、いずれも信頼スコア及びボックス位置パラメータに関連付けられ、信頼スコア及びボックス位置パラメータは、左上隅及び右下隅の座標で表してもよいが、他のサイズと位置の認識メカニズムを使用してもよい。一つまたは複数の実施形態において、境界ボックス５８２及び境界ボックス５８４の集合は同じであってもよい。一つまたは複数の実施形態において、検出モジュール５８０は、信頼閾値を適用して、閾値を下回る信頼スコアを有する境界ボックスを除外してもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルは、異なる推論モジュールを使用して、境界ボックスの集合５８２と集合５８４を処理して、対応する検出結果を得ることができる。例えば、第１のオブジェクト検出モデルは、一つまたは複数の第１の推論モジュール５９２を使用して、第１の検出結果５９４を推論してもよく、第２のオブジェクト検出モデルは、一つまたは複数の第２の推論モジュール５９６を使用して、第２の検出結果５９８を推論してもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルの出力は、境界ボックスの集合に対する検出期待値である。各境界ボックスは、検出確率を表す０．０〜１．０の範囲の関連スコアがあり、前記関連スコアは、境界ボックスに検出オブジェクト（例えば、顔）が含まれる可能性を表す。一つまたは複数の実施形態において、単一の境界ボックスのオブジェクト検出に対して、より高い検出確率を有するオブジェクト検出モデルからの出力を、単一の境界ボックスのイメージ検出出力として選択する。最後に、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとの間の各境界ボックスの検出確率の比較によって、複数の境界ボックスを含むイメージフレーム全体のオブジェクト検出出力は、第１のオブジェクト検出モデルを使用する一つまたは複数の出力と、第２のオブジェクト検出モデルを使用する一つまたは複数の出力とを含んでもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとの両方が、いずれも境界ボックスの一つまたは複数の所定の閾値（例えば、モデルは自身の閾値標準を有することができる）を下回るスコアを出力する場合、境界ボックスの最終的オブジェクト検出出力を未検出のイメージに分類する。
【００４１】
一つまたは複数の実施形態において、異なるオブジェクト検出モデルは、オブジェクト検出または異なるオブジェクトを検出するように、異なる角度から構成または最適化してもよい。当業者は、様々な実施形態（例えば、異なるストライディングおよび／またはプーリング等）を使用して、異なるモデル間の違いを実現できることを理解すべきである。オブジェクト検出モデルを識別するような変化は、本発明の範囲内にあるとすべきである。
【００４２】
一つまたは複数の実施形態において、動作期間において、オブジェクト検出モデルの層をＤＲＡＭメモリ１４０にロードし、並列コンピューティングのために複数のｓｈａｖｅ１３０間に分配または分割してもよい。一つまたは複数の実施形態において、顔検出モデルの一部（例えば、モデルのネットワーク部分等）を複数のｓｈａｖｅ１３０の関連する高速キャッシュにロードしてもよく、より大きなサイズ（例えば、重みパラメータ等）のモデルの他の部分は、ＲＡＭメモリ１４０にロードされ、実施に用いられる。
【００４３】
一つまたは複数の実施形態において、トレーニング段階の期間中、モデルトレーニングのために、異なるサイズ、ポーズ、及び条件の顔のイメージを収集する。検出のロバストを強化するために、トリミング、フリッピング、剪断、ノイズの追加／乗算、カラーシフト、彩度の変更、コントラストの変更などを含む様々なデータの強化をトレーニングに用いられる。トレーニング後、一つまたは複数のスリミングテクニックを使用して、深層学習ニューラルネットワークをトリミングし、サイズを小さくして、実装速度（implementing speed）を向上させてもよい。一つまたは複数の実施形態において、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとは、それぞれトレーニングされ、その後、一つに組み合せるか、または組み合せたモデルとしてトレーニングされるようにしてもよい。一つまたは複数の実施形態において、一つのオブジェクト検出モデルを最初にトレーニングして、一つまたは複数の層の重み／パラメータを固定するようにしてもよい。次に、一つまたは複数の実施形態において、重みが固定された共有層を使用して、異なるオブジェクト検出モデルをトレーニングし、残りの層はこのモデルに対して特別のトレーニングをしてもよい。
【００４４】
一つまたは複数の実施形態において、同じまたは異なるデータセット（完全に異なるデータセットまたはデータセットの異なるサブセットのみを含む）を使用して、モデルをトレーニングしてもよい。例えば、一つまたは複数の実施形態において、第１の専用データセットと第２の専用データセットは、それぞれ、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルのトレーニングに用いてもよい。一つまたは複数の実施形態において、専用のデータセットを使用して、それぞれのオブジェクト検出モデルに対してトレーニングした後、第１の専用データセットと第２の専用データセットの両方からのデータを含むトレーニングデータセットを使用して、第１のオブジェクト検出モデルと第２のオブジェクト検出モデルとを共同してトレーニングしてもよい。
【００４５】
Ｄ．顔検出の実装（implementing）の実施形態
図６は、本開示の実施形態による顔検出の実装に用いられる方法示す。まず、カメラセンサーは、一つまたは複数のイメージを捕捉する（６０５）。一つまたは複数の実施形態において、一つまたは複数のイメージを第１のＣＰＵコアと、第２のＣＰＵコアと、複数のデジタル信号プロセッサ（ｓｈａｖｅ）とを含むプロセッサに伝送する（６１０）。第２のＣＰＵコアは、一つまたは複数のイメージにおける一つまたは複数のオブジェクトを検出するように、少なくとも二つのオブジェクト検出深層学習モデルのコンピューティングタスクをスケジューリングするのに使用されてもよい（６１５）。一つまたは複数の実施形態において、第２のＣＰＵコアは、ｓｈａｖｅを組み合わせて、少なくとも二つのオブジェクト検出深層学習モデルのオブジェクト検出処理に対するコンピューティングを実行し（６２０）、各イメージ検出モデルに対して出力を生成する。最後に、一つまたは複数の実施形態において、イメージ検出出力またはイメージ検出出力の一部として、検出確率が最も高いモデルからの出力を選択する（６２５）が、一つまたは複数の他の選択基準を使用してもよい。
【００４６】
一つまたは複数の実施形態において、各イメージフレームは、異なる解像度、向きまたはサイズを有する一つまたは複数の可能性のある人間の顔を含むことができる。各イメージフレームは、それぞれ一つまたは複数の可能性のある人間の顔の顔面を検出するスレッドとして処理される。第１の深層学習検出モデルと第２の深層学習検出モデルの検出確率によって、顔検出システムは、同じまたは異なる検出モデルからの一つまたは複数の可能性のある人間の顔に対応する最終的な顔（イメージ）検出出力を有することができる。
【００４７】
図７は、本開示の実施形態による複数のイメージフレームのマルチモデルスケジューリングメカニズムをグラフで示す。図７に示すように、顔検出処理のために、複数のリアルタイムイメージフレームｆ１…ｆｋを顔検出システムに伝送する。顔検出の実装のために、二つの異なるモデルＭ１とＭ２をシステムに組込む。実施形態において、フレームは順番処理され、例えば、第１の顔検出モデルＭ１を使用して第１のフレームｆ１を処理し、第１のフレームｆ１に対応する第１の出力７１０を生成し、次に、第２の顔検出モデルＭ２を使用し前記第１のフレームｆ１を処理し、第１のフレームｆ１に対応する第２の出力７１２を生成する。第１のイメージフレームが処理されると、第２のＣＰＵコアは、第２のイメージフレームｆ２を取得し、第１の顔検出モデルＭ１と第２の顔検出モデルＭ２を順次スケジューリングして使用し、第２のフレームｆ２に対応する第１の出力７２０と第２の出力７２２とを生成するようにする。このプロセスは、最後のイメージフレームｆｋまで続く。
【００４８】
一つまたは複数の実施形態において、顔検出が検出モデル使用してイメージフレームのコンピューティングをスケジューリングすると、検出モデルの少なくとも一部（例えば、モデルのネットワーク部分）とイメージフレームは、並列コンピューティングの複数のｓｈａｖｅ１３０に分配し、またはロードすることができる。次に、複数のｓｈａｖｅ１３０からの並列コンピューティングの結果を合併し、イメージフレームに対応する、検出モデルの最終出力を取得する。その後、最終出力をメモリに伝送し、イーサネットインターフェースまたはＵＳＢインターフェースを介して伝送する。
【００４９】
一つまたは複数の実施形態において、イメージフレームがフレームごとに大きなピクセルサイズを有するＨＤイメージフレームであって、カメラからのフレームレートが高い場合、図７に示された順次スケジューリングメカニズムを使用して、顔検出動作を維持させ、ハードリアルタイム性能を実現することは非常に厳しいことである。これは、カメラのフレームレートと一致させるのに、時間ｔ１（第１のモデルがフレームに対する操作を開始する）と時間ｔ２（第２のモデルがフレーム対する操作を完了する）との間の時間差によって特定される時間ｔコストが非常に小さいことが必要になるためである。
【００５０】
図８は、本開示の実施形態によるリアルタイムの顔検出のためのマルチスレッドプログラミングをグラフで示す。ハードリアルタイムの顔検出の実装の性能を向上させるのに、マルチスレッドプログラミングによって図７に示された実施形態の制限を克服することが期待される。図８に示すように、各イメージフレーム（ｆ１…ｆｋ）を複数のパーティション（Ｐ１…ＰＮ）に分割し、並列コンピューティング用の複数のｓｈａｖｅ（Ｓ１…ＳＮ）を使用して、これらのパーティションに対して処理をする。イメージフレームの各パーティションは他のパーティションから独立しているため、ｓｈａｖｅが現在のイメージフレームのパーティションのコンピューティングを完了すると、他のｓｈａｖｅのコンピューティングに影響を及ぼすことなく、次のイメージフレームのパーティションを処理することができる。複数のイメージフレーム（スレッド）の動的スケジューリングは、ｓｈａｖｅ間で調整するように第２のＣＰＵコアによって処理される。
【００５１】
実施形態において、複数のｓｈａｖｅは、複数のスレッドを並行して処理することができ、いくつかのｓｈａｖｅは一つのイメージフレームを処理し、いくつかのｓｈａｖｅは次のイメージフレームを処理する。図８の点線８１０または点線８２０に示すように、所定の時刻で同時に並行して処理されるフレームパーティションのセットは、波面（ｗａｖｅ  ｆｒｏｎｔ）と呼ばれる。波面の時系列のフレームスパンは、２としまたは２より大きいとしてもよく、例えば、ｓｈａｖｅは、二つまたは複数のフレームを同時に処理してもよい。このような構成により、ｓｈａｖｅの待機時間が短縮され、ｓｈａｖｅのコンピューティング效率が最大化されるため、リアルタイム性能が向上される。イメージフレームのすべてのパーティションの処理を完了すると、すべてのパーティションの結果を合併して、イメージフレームに対応する出力を取得する。
【００５２】
一つまたは複数の実施形態において、イメージフレームは、検出のための複数の潜在的な人間の顔イメージを含むことができる。従って、イメージフレームに対応する顔検出モデルからの各出力はそれぞれ複数の領域を含むことができ、各領域はそれぞれ一つの潜在的な人間の顔に関連する。モデルの構造と人間の顔のパラメータ（シャープネス、コントラスト、向き、ノイズ等）に応じて、一部の人間の顔は、他の人間の顔よりもっと高い検出確率を有してもよい。さらに、一部の人間の顔は、検出確率を、一の顔検出モデルを使用する方を他の顔検出モデルを使用するよりも高くしてもよい。従って、イメージフレームの顔検出システムの最終出力は、二つの顔検出モデルを使用した結果の組み合わせであってもよく、例えば、最終出力の一部の領域は第１のモデルからのもので、最終出力の他の一部の領域は、第２のモデルからのものであってもよい。
【００５３】
図９は、本発明の実施形態によるイメージフレームｆｉでの顔検出のための二つのモデルの並列コンピューティングをグラフで示す。図９に示すように、イメージフレームｆｉ（例えば、第１のフレームｆ１）を複数のパーティション（Ｐ１…ＰＮ）に分割し、二つの顔検出モデル（ｍ１とｍ２）が並列コンピューティング用の複数のｓｈａｖｅ（Ｓ１…ＳＮ）を使用してこれらのパーティションを処理する。二つのモデルは、それぞれ顔検出アルゴリズムの実装に使用される複数の層（例えば、コンボリューション層）を含む。一つまたは複数の実施形態において、二つの顔検出モデルｍ１とｍ２がパラメータを共有するか、または一つもしくは複数の層については同じである。従って、共有段階（Ｓ１）において、共有層（ｌｔ１からｌｔｘまで）に渡る全体のｓｈａｖｅは、並列コンピューティングを実装する。ここで、図９のｌｔ１は、顔検出モデルに関する第１の層の時系列時間ステップでコンピューティングすることが指定されている。コンピューティングが層ｌｔｘ＋１に関する時系列時間ステップに入った場合、顔検出モデルがパラメータを共有しない場合、別の段階（Ｓ２）でｓｈａｖｅを二つのｓｈａｖｅグループに分割する。第１のｓｈａｖｅグループ（Ｓ１からＳＭまで、Ｍは、Ｎより小さい整数）は、第１の顔検出モデルｍ１に指定し、第２のｓｈａｖｅグループ（ＳＭ＋１からＳＮまで）は、第２の顔検出モデルｍ２に指定する。一つまたは複数の実施形態において、別の段階で、ｓｈａｖｅは、顔検出モデル間で均等に分割され、各モデルはいずれもコンピューティングのためにｓｈａｖｅの半分を使用する。一つまたは複数の実施形態において、別の段階で、ｓｈａｖｅは顔検出モデル間で不均一に分割される。ここで、二つの顔検出モデルのコンピューティング時間がほぼ同じになるように、より多くのリソースを必要とする顔検出モデルは、より多くのｓｈａｖｅを使用することが求められる。例えば、顔検出モデルｍ１が顔検出モデルｍ２より複雑である場合（より多くの層またはより多くのパラメータを有する）は、より多くのｓｈａｖｅを顔検出モデルｍ１に割り当るようにしてもよい。
【００５４】
図１０は、本発明の実施形態によるリアルタイムの顔検出を実現するのに、リアルタイムのマルチスレッドプログラミングの実装のためのプロセスを示す。最初に、カメラセンサーは、一つまたは複数のイメージを捕捉する（１００５）。一つまたは複数のイメージを第１のＣＰＵコアと、第２のＣＰＵコアと、複数のｓｈａｖｅとを含むプロセッサに伝送する（１０１０）。一つまたは複数の実施形態において、第２のＣＰＵコアは、各イメージフレームを複数のパーティションに分割し（１０１５）、フレームごとのパーティションの数はｓｈａｖｅの数と同じである。第２のＣＰＵコアは、各ｓｈａｖｅに初期（または第１の）イメージフレームの一つのパーティションを割り当てることにより、コンピューティングタスクをスケジューリングする（１０２０）。複数のｓｈａｖｅは、少なくとも一つのオブジェクト検出モデルを使用して、オブジェクト検出を並行して実行する（１０２５）。少なくとも一つの顔検出モデルを使用する詳細な並列コンピューティングの実施形態は、図８および／または図９の関連説明を参照することができる。一つまたは複数の実施形態において、第２のＣＰＵコアは、スケジューリングされたコンピューティングタスクを完了したｓｈａｖｅに次のイメージフレームのパーティションを割り当てることによって、コンピューティングタスクスケジューリングを動的に更新する（１０３０）。これにより、それらのｓｈａｖｅはすべてのｓｈａｖｅがスケジューリングされたコンピューティングタスクを完了するまで待つ必要がなくなる。ステップ１０３０のプロセスは、すべてのイメージフレームが分割されてコンピューティングのために割り当てられるまで動的スケジューリング動作を伴う自己更新ステップであってもよい。イメージフレームのすべてのパーティションの処理が完了すると、イメージフレームに対応する出力を生成するように、すべてのパーティションの結果を合併する（１０３５）。  
【００５５】
Ｅ．システムの実施形態
実施形態において、本明細書の態様は、一つまたは複数の情報処理システム／コンピューティングシステムを関してもよく、含んでもよく、利用してもよく、合併してもよく、または一つまたは複数の情報処理システム／コンピューティングシステムで実施されてもよい。コンピューティングシステムは、任意の形式の情報、インテリジェンスまたはデータの任意の手段または手段の組み合わせをコンピューティング、計算、決定、分類、処理、伝送、受信、取得（retrieve）、発信（originate）、ルーティング、交換（switch）、格納、表示、通信、視覚化、検出、記録、再現、処理または利用する動作を含むことができる。例えば、コンピューティングシステムは、パーソナルコンピュータ（例えば、ラップトップコンピュータ）、タブレットコンピュータ、ファブレット、パーソナルデジタルアシスタント（ＰＤＡ）、スマートフォン、スマートウォッチ、スマートパッケージ、サーバー（例えば、ブレードサーバーまたはラックサーバー）、ネットワークストレージ装置、カメラまたはその他の適切な装置であってもよく、サイズ、形状、性能、機能、及び価格を変更することも可能である。コンピューティングシステムは、ランダムアクセスメモリ（ＲＡＭ）、一つまたは複数の処理リソース（例えば、中央処理ユニット（ＣＰＵ）またはハードウェアまたはソフトウェア制御ロジック等）、ＲＯＭおよび／または他のタイプのメモリを含むことができる。コンピューティングシステムの追加コンポーネントは、一つまたは複数のディスクドライブ、外部装置と通信するための一つまたは複数のネットワークポート、及び様々な入力及び出力（Ｉ／Ｏ）デバイス（例えば、キーボード、マウス、タッチスクリーンおよび／またはビデオディスプレイ等）を含むことができる。コンピューティングシステムは、様々なハードウェアコンポーネント間で通信を伝送するように動作可能な一つまたは複数のバスをさらに含むことができる。
【００５６】
図１１は、本発明の実施形態によるコンピューティングデバイス／情報処理システム（またはコンピューティングシステム）の概略ブロック図を示す。システム１１００に示された機能は、コンピューティングシステムの様々な実施形態をサポートするように動作し得ることを理解されるべきである。ただし、コンピューティングシステムは、図１１に示すようにより少ないまたはより多いコンポーネントを含む異なる構成であり、かつ異なるコンポーネントを含み得ることが理解されるべきである。
【００５７】
図１１に示すように、コンピューティングシステム１１００は、一つまたは複数の中央処理ユニット（ＣＰＵ）１１０１を含み、ＣＰＵ１１０１は、コンピューティングリソースを提供し、コンピュータを制御する。ＣＰＵ１１０１は、マイクロプロセッサ等を実装することができ、一つまたは複数のグラフィックス処理ユニット（ＧＰＵ）１１１９および／または数学コンピューティング用の浮動小数点コプロセッサをさらに含むことができる。システム１１００は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、またはその両方を含むシステムメモリ１１０２を含むことができる。
【００５８】
図１１に示すように、複数のコントローラと周辺装置を提供することができる。入力コントローラ１１０３は、例えば、キーボード、マウス、タッチパネルおよび／またはタッチペン等の様々な入力装置１１０４へのインターフェースを表す。コンピューティングシステム１１００は、記憶媒体（例えば、テープまたはディスク）または光学媒体（オペレーティングシステム、ユーティリティ、及びアプリケーションの指令を記録するプログラムであって、これらは本開示の様々な態様を実装しているプログラムの実施形態を含むことができる）、一つまたは複数の記憶装置１１０８とインターフェースするための、記憶装置コントローラ１１０７をさらに含むことができる。記憶装置１１０８は、処理されたデータまたは本発明に従って処理されるデータを記憶するために使用されることができる。システム１１００は、ディスプレイ装置１１１１にインターフェースを提供するためのディスプレイコントローラ１１０９をさらに含むことができ、ディスプレイ装置１１１１は、陰極線管（ＣＲＴ）、薄膜トランジスタ（ＴＦＴ）ディスプレイ、有機発光ダイオード、電気発光パネル、プラスマパネルまたは他のタイプのディスプレイであってもよい。コンピューティングシステム１１００は、一つまたは複数の周辺装置１１０６のための一つまたは複数の周辺コントローラまたはインターフェース１１０５をさらに含むことができる。周辺装置の例として、一つまたは複数のプリンタ、スキャナー、入力装置、出力デバイス、センサー等を含むことができる。通信コントローラ１１１４は、一つまたは複数の通信装置１１１５とインターフェースすることができ、これによって、システム１１００は、様々なネットワーク（インターネット、クラウドリソース（例えば、イーサネットクラウド、ファイバチャネルオーバーイーサネット（ＦＣｏＥ）／データセンターブリッジング（ＤＣＢ）クラウド等）、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、記憶領域ネットワーク（ＳＡＮ））のうちの任意なネットワーク、または適切な電磁キャリア信号（赤外線信号を含む）を介してリモート装置に接続されることができる。
【００５９】
示されたシステムにおいて、すべての主なシステムコンポーネントをバス１１１６に接続することができ、バス１１１６は複数の物理的バスを表すことができる。ただし、様々なシステムコンポーネントは、物理的に互いに近接しまたは近接しないようにすることができる。例えば、入力データおよび／または出力データは、ある物理的な場所から別の物理的な場所にリモートで伝送することができる。さらに、本開示の様々な態様を実施するプログラムは、ネットワークを介して遠隔位置（例えば、サーバー）からアクセスすることができる。このようなデータおよび／またはプログラムは、様々な機械可読媒体の中から任意の機械可読媒体を介して伝送することができ、機械可読媒体は、例えば、ハードディスク、フロッピーディスク、及び磁気テープ等の磁気媒体、例えば、ＣＤ−ＲＯＭ、及びホログラフィック装置等の光学媒体、磁気光学媒体、及びハードウェアデバイスを含むが、これに限定されず、前記ハードウェアデバイスは、プログラムコードを記憶または記憶して実行するように特別に構成され、前記ハードウェアデバイスは、例えば、アプリケーション固有の集積回路（ＡＳＩＣ）、プログラマブルロジック装置（ＰＬＤ）、フラッシュメモリ装置、およびＲＯＭとＲＡＭデバイスである。
【００６０】
本開示の態様は、一つまたは複数のプロセッサまたは処理ユニットを利用して、段階で実行される指令が一つまたは複数の非一時的なコンピュータ可読媒体に符号化することができる。一つまたは複数の非一時的なコンピュータ可読媒体は、揮発性メモリと不揮発性メモリを含むことができることに留意されたい。ハードウェア実装方法またはソフトウェア／ハードウェア実装方法を含む代替実施方法が可能であることに留意されたい。ハードウェアに実装される機能は、ＡＳＩＣ、プログラム可能なアレイ、デジタル信号処理回路等を使用して実装することができる。従って、請求項における「手段」という用語は、ソフトウェア実装方法とハードウェア実装方法との両方をカバーすることを意図する。同様に、本明細書で使用される「コンピュータ可読媒体または媒体」という用語は、その上に実行される指令プログラムを有するソフトウェアおよび／またはハードウェアまたはそれらの組み合わせを含む。これらの実装代替案を念頭において、図面と付随の説明は、当業者がプログラムコード（即ち、ソフトウェア）を書き込みおよび／または回路（即ち、バードウェア）を製造するのに必要な処理を実行するために必要とする機能情報を提供することを理解されたい。
【００６１】
本発明の実施形態は、様々なコンピュータ実装動作を実行するためのコンピュータコードを有する非一時的な有形のコンピュータ可読媒体を有するコンピュータ製品に関するであってもよいことに留意されたい。媒体とコンピュータコードとは、本開示の目的のために特別に設計及び構築された媒体及びコンピュータコードであるか、またはそれらは、関連技術分野の当業者に知られているか、または利用可能であり得る。有形のコンピュータ可読媒体の例として、たとえば、ハードディスク、フロッピーディスク、及び磁気テープ等の磁気媒体、例えば、ＣＤ−ＲＯＭ及びホログラフィック装置等の光学媒体、磁気光学媒体、及び、例えば、アプリケーション固有の集積回路（ＡＳＩＣ）、プログラマブルロジック装置（ＰＬＤ）、フラッシュメモリ装置、ＲＯＭ、及びＲＡＭデバイスなどのプログラムコードを記憶または記憶して実行するように特別に構成されたハードウェアを含むが、これに限定されない。コンピュータコードの例として、マシンコード（例えば、コンパイラによって生成されたコード）、及びインタプリタを使用してコンピュータによって実行されることができる高レベルのコードを含むファイルを含む。本開示の実施形態は、プログラムモジュール内の処理デバイスによって実行されることができる機械実行可能な指として、全体的または部分的に実装することができる。プログラムモジュールの例は、ライブラリ、プログラム、ルーチン、オブジェクト、コンポーネント、及びデータ構造を含む。分散コンピューティング環境において、プログラムモジュールは、ローカル、リモート、またはその両方の設定に物理的に配置することができる。
【００６２】
当業者は、コンピューティングシステムもプログラミングも本開示の実施にとって重要ではないことを認識されている。当業者は、複数の上述要素が物理的および／または機能的にサブモジュールに分割されるか、または一緒に組み合わされ得ることをさらに認識されている。
【００６３】
当業者は、前述の実施例及び実施形態が例示的であり、本開示の範囲を限定しないことを理解される。当業者が本明細書を読み、添付の図面を研究した後、当業者にて自明である本発明のすべての置換、強化、均等物、組み合わせまたは改善は本来の精神及び範囲内に含まれることを意図する。さらに、請求項における任意の要素は、複数の従属関係、構成、及び組み合わせを有する異なる方法で設定可能であることに留意されたい。
【国際調査報告】
2021530038.tif 000014
2021530038.tif 000015