IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許7563468画像処理装置、画像処理方法及びプログラム
<>
  • 特許-画像処理装置、画像処理方法及びプログラム 図1
  • 特許-画像処理装置、画像処理方法及びプログラム 図2
  • 特許-画像処理装置、画像処理方法及びプログラム 図3
  • 特許-画像処理装置、画像処理方法及びプログラム 図4
  • 特許-画像処理装置、画像処理方法及びプログラム 図5
  • 特許-画像処理装置、画像処理方法及びプログラム 図6
  • 特許-画像処理装置、画像処理方法及びプログラム 図7
  • 特許-画像処理装置、画像処理方法及びプログラム 図8
  • 特許-画像処理装置、画像処理方法及びプログラム 図9
  • 特許-画像処理装置、画像処理方法及びプログラム 図10
  • 特許-画像処理装置、画像処理方法及びプログラム 図11
  • 特許-画像処理装置、画像処理方法及びプログラム 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-30
(45)【発行日】2024-10-08
(54)【発明の名称】画像処理装置、画像処理方法及びプログラム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20241001BHJP
   G06T 7/00 20170101ALI20241001BHJP
【FI】
G06F9/50 120A
G06T7/00 660
【請求項の数】 10
(21)【出願番号】P 2022553416
(86)(22)【出願日】2020-10-02
(86)【国際出願番号】 JP2020037653
(87)【国際公開番号】W WO2022070427
(87)【国際公開日】2022-04-07
【審査請求日】2023-03-29
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100103894
【弁理士】
【氏名又は名称】家入 健
(72)【発明者】
【氏名】有熊 威
(72)【発明者】
【氏名】北野 貴稔
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2011-242898(JP,A)
【文献】特開2016-207076(JP,A)
【文献】国際公開第2018/097058(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
画像に含まれる複数の種類の対象物ごとに解析処理を並行して実行する解析実行手段と、
複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる資源割当手段と、
同一の前記画像の全体に対する複数の前記解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間を算出する算出手段と、
複数の前記解析処理の間の前記第1の処理時間の差が予め定められた閾値以上となったときに、前記第1の処理時間の差が小さくなるように前記計算資源の割り当ての変更処理を行う割当変更手段と、
を有し、
前記資源割当手段は、前記割当変更手段による前記変更処理に応じて、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる、
画像処理装置。
【請求項2】
前記割当変更手段は、複数の前記解析処理それぞれによって1つの画像あたりの検出された対象物の数と、複数の前記解析処理それぞれによる対象物の1つあたりの処理時間である第2の処理時間とに基づいて、複数の前記解析処理それぞれに割り当てる前記計算資源の量を決定する、
請求項1に記載の画像処理装置。
【請求項3】
前記割当変更手段は、複数の前記解析処理それぞれについて、前記対象物の数と前記第2の処理時間とを用いて算出された、1つの画像に対する前記解析処理それぞれに必要な処理時間である第3の処理時間に基づいて、複数の前記解析処理それぞれに割り当てる前記計算資源の量を決定する、
請求項2に記載の画像処理装置。
【請求項4】
前記割当変更手段は、複数の前記解析処理に関する前記第3の処理時間の比に応じて、複数の前記解析処理それぞれに割り当てる前記計算資源の量を決定する、
請求項3に記載の画像処理装置。
【請求項5】
複数の前記計算資源は、少なくとも1つの第1の計算資源と、前記第1の計算資源よりも処理能力が高い少なくとも1つの第2の計算資源とを含み、
前記割当変更手段は、前記第1の計算資源及び前記第2の計算資源の割り当てを決定する、
請求項1から4のいずれか1項に記載の画像処理装置。
【請求項6】
前記割当変更手段は、複数の前記解析処理のそれぞれに前記第1の計算資源を割り当てたと仮定した場合の対象物の1つあたりの割当資源量を複数の前記解析処理について比較して割当資源量が大きい方の前記解析処理に対して、前記第2の計算資源を割り当てると決定する、
請求項5に記載の画像処理装置。
【請求項7】
前記割当変更手段は、前記第2の計算資源の量を前記第1の計算資源の量に仮想的に換算した換算資源量と前記第1の計算資源の量との合計と、複数の前記解析処理それぞれについて前記対象物の数と前記第1の計算資源を用いて行った複数の前記解析処理それぞれによる対象物の1つあたりの処理時間である第2の処理時間とを用いて算出された1つの画像に対する複数の前記解析処理それぞれに必要な処理時間である第3の処理時間とに基づいて、複数の前記解析処理それぞれに割り当てる前記第1の計算資源の量を決定する、
請求項6に記載の画像処理装置。
【請求項8】
前記割当変更手段は、前記換算資源量に対応する数が前記第2の計算資源を割り当てると決定された前記解析処理に対応する対象物の数以上となる場合に、当該解析処理に前記第1の計算資源を割り当てないと決定する、
請求項7に記載の画像処理装置。
【請求項9】
画像に含まれる複数の種類の対象物ごとに実行される解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当て、
前記複数の種類の対象物ごとに解析処理を並行して実行し、
同一の前記画像の全体に対する複数の対象物の前記解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間を算出し、
複数の前記解析処理の間の前記第1の処理時間の差が予め定められた閾値以上となったときに、前記第1の処理時間の差が小さくなるように前記計算資源の割り当ての変更処理を行い、
前記変更処理に応じて、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる、
コンピュータによって実行される画像処理方法。
【請求項10】
画像に含まれる複数の種類の対象物ごとに実行される解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てるステップと、
前記複数の種類の対象物ごとに解析処理を並行して実行するステップと、
同一の前記画像の全体に対する複数の対象物の前記解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間を算出するステップと、
複数の前記解析処理の間の前記第1の処理時間の差が予め定められた閾値以上となったときに、前記第1の処理時間の差が小さくなるように前記計算資源の割り当ての変更処理を行うステップと、
前記変更処理に応じて、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てるステップと、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法及びプログラムに関する。
【背景技術】
【0002】
映像等の画像に含まれる物体を解析の対象物として解析を行う技術がある。例えば、防犯カメラを用いて撮影され、防犯カメラによって生成された画像に含まれる対象物に対して解析処理を行って、不審人物等を検知することが行われている。このような技術に関連し、特許文献1は、入力された映像データから人の顔を検出し、さらに検出した顔の特徴を抽出する映像解析システムを開示する。特許文献1にかかる技術では、前段解析部で行われている解析処理の変化を観測した内容観測データを基に、後段解析部への計算資源の割り当てを動的に変更する。
【先行技術文献】
【特許文献】
【0003】
【文献】国際公開第2018/097058号
【発明の概要】
【発明が解決しようとする課題】
【0004】
画像を用いて解析を行う場合に、例えば顔、人体及び物体(持ち物及び服装など)等といった複数の種類の対象物に対してそれぞれ解析処理を行い、それらの結果を統合することがある。このようにすることで、ある人物に持ち物、顔、服装などの情報を紐づけることができ、複数の対象物の情報が紐づけられた情報を不審人物の検知等に利用することができる。
【0005】
ここで、複数の種類の対象物に対する解析処理(以下、単に「複数の解析処理」と称することがある)の結果を統合するためには、同一の画像における複数の解析処理の結果が全て揃う必要がある。この場合において、複数の解析処理の処理時間が異なると、処理時間の短い解析処理が終了しても処理時間の長い解析処理が終了するまで処理待ちが発生する。したがって、スループットが低下するおそれがある。なお、特許文献1にかかる技術では、対象物の数が計算資源の負荷に対応している。しかしながら、複数の解析処理においては、対象物の数が少ない解析処理の処理時間よりも対象物の数が多い解析処理の処理時間が長いとは限らない。したがって、特許文献1にかかる技術では、複数の解析処理を行う場合にスループットを向上させることができないおそれがあった。
【0006】
本開示の目的は、このような課題を解決するためになされたものであり、解析処理のスループットを向上させることが可能な画像処理装置、画像処理方法及びプログラムを提供することにある。
【課題を解決するための手段】
【0007】
本開示にかかる画像処理装置は、画像に含まれる複数の種類の対象物ごとに解析処理を並行して実行する解析実行手段と、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる資源割当手段と、同一の前記画像の全体に対する複数の前記解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間を算出する算出手段と、複数の前記解析処理の間の前記第1の処理時間の差が予め定められた閾値以上となったときに、前記第1の処理時間の差が小さくなるように前記計算資源の割り当ての変更処理を行う割当変更手段と、を有し、前記資源割当手段は、前記割当変更手段による前記変更処理に応じて、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる。
【0008】
また、本開示にかかる画像処理方法は、画像に含まれる複数の種類の対象物ごとに実行される解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当て、前記複数の種類の対象物ごとに解析処理を並行して実行し、同一の前記画像の全体に対する複数の対象物の前記解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間を算出し、複数の前記解析処理の間の前記第1の処理時間の差が予め定められた閾値以上となったときに、前記第1の処理時間の差が小さくなるように前記計算資源の割り当ての変更処理を行い、前記変更処理に応じて、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる。
【0009】
また、本開示にかかるプログラムは、画像に含まれる複数の種類の対象物ごとに実行される解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てるステップと、前記複数の種類の対象物ごとに解析処理を並行して実行するステップと、同一の前記画像の全体に対する複数の対象物の前記解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間を算出するステップと、複数の前記解析処理の間の前記第1の処理時間の差が予め定められた閾値以上となったときに、前記第1の処理時間の差が小さくなるように前記計算資源の割り当ての変更処理を行うステップと、前記変更処理に応じて、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てるステップと、をコンピュータに実行させる。
【発明の効果】
【0010】
本開示によれば、解析処理のスループットを向上させることが可能な画像処理装置、画像処理方法及びプログラムを提供できる。
【図面の簡単な説明】
【0011】
図1】本開示の実施の形態にかかる画像処理装置の概要を示す図である。
図2】本開示の実施の形態にかかる画像処理装置によって実行される画像処理方法を示すフローチャートである。
図3】実施の形態1にかかる画像処理システムの構成を示す図である。
図4】実施の形態1にかかる画像処理装置の構成を示す図である。
図5】実施の形態1にかかる画像処理装置によって実行される画像処理方法を示すフローチャートである。
図6】実施の形態1にかかる画像処理装置によって実行される画像処理方法を示すフローチャートである。
図7】実施の形態1にかかる顔解析処理及び人体解析処理を説明するための図である。
図8】実施の形態1にかかる解析処理ログ情報を例示する図である。
図9】実施の形態1にかかる対象物情報を例示する図である。
図10】実施の形態2にかかる画像処理装置の構成を示す図である。
図11】実施の形態2にかかる対象物情報を例示する図である。
図12】実施の形態2にかかる画像処理装置によって実行される割り当て変更処理を示すフローチャートである。
【発明を実施するための形態】
【0012】
(本開示にかかる実施の形態の概要)
本開示の実施形態の説明に先立って、本開示にかかる実施の形態の概要について説明する。図1は、本開示の実施の形態にかかる画像処理装置1の概要を示す図である。
【0013】
画像処理装置1は、例えばサーバ等のコンピュータである。画像処理装置1は、解析実行部2と、資源割当部4と、算出部6と、割当変更部8とを有する。解析実行部2、資源割当部4、算出部6及び割当変更部8は、それぞれ、解析実行手段、資源割当手段、算出手段及び割当変更手段としての機能を有する。
【0014】
解析実行部2は、画像に含まれる複数の種類の対象物ごとに解析処理を別個に並行して実行する。ここで、「画像」は、動画像(映像)又は静止画像であってもよい。また、画像は、映像を構成するフレーム画像であってもよい。また、「対象物」は、解析処理の対象となる物体である。対象物は、例えば、人物の「顔」、人物の体全体である「人体」、及び、人物の持ち物又は服装等の「所有物」を含む。「計算資源」は、例えば、プロセッサ及びメモリ等を含む。プロセッサは、例えば、CPU(Central Processing Unit)及びハードウェアアクセラレータ(例えばGPU(Graphics Processing Unit))等を含んでもよい。
【0015】
資源割当部4は、複数の種類の対象物の解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる。算出部6は、同一の画像の全体に対する複数の解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間(画像処理時間)を算出する。割当変更部8は、複数の解析処理の間の第1の処理時間の差が予め定められた閾値以上となったときに、第1の処理時間の差が小さくなるように計算資源の割り当ての変更処理を行う。資源割当部4は、割当変更部8による変更処理に応じて、複数の解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる。
【0016】
図2は、本開示の実施の形態にかかる画像処理装置1によって実行される画像処理方法を示すフローチャートである。資源割当部4は、複数の種類の対象物の解析処理それぞれに対して計算資源を割り当てる(ステップS10)。解析実行部2は、複数の種類の対象物ごとに解析処理を別個に並行して実行する(ステップS12)。例えば、複数の種類の対象物が対象物A(例えば「顔」)及び対象物B(例えば「人体」)である場合、解析実行部2は、対象物Aと対象物Bとで、解析処理を別個に並行して実行する。このとき、解析実行部2による解析処理の実行の前に、資源割当部4は、対象物Aに関する解析処理Aと対象物Bに関する解析処理Bそれぞれに対して計算資源を割り当てるものとする。
【0017】
算出部6は、同一の画像の全体に対する複数の解析処理それぞれの画像処理時間を算出する(ステップS14)。例えば、算出部6は、ある画像Xについて、解析処理Aの処理開始時刻から処理終了時刻までの期間である画像処理時間Aと、解析処理Bの処理開始時刻から処理終了時刻までの期間である画像処理時間Bとを算出する。
【0018】
割当変更部8は、画像処理時間の差が閾値以上である場合に、計算資源の割り当ての変更処理を行う(ステップS16)。資源割当部4は、割当変更部8による変更処理に応じて、複数の解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる(ステップS18)。ここで、割当変更部8は、画像処理時間の差が閾値以上である場合に、画像処理時間の差が小さくなるように、計算資源の割り当ての変更処理を行う。例えば、割当変更部8は、画像処理時間Aと画像処理時間Bとの差が閾値以上となったときに、計算資源の割り当ての変更処理を行う。なお、変更処理の具体例については後述する実施の形態において説明する。
【0019】
このように、本実施の形態では、複数の種類の対象物それぞれの解析処理の間の画像処理時間(第1の処理時間)の差が閾値以上である場合に、画像処理時間の差が小さくなるように計算資源の割り当ての変更処理を行うように構成されている。これにより、処理時間の短い解析処理が終了した後で処理時間の長い解析処理が終了するまで処理待ちの期間が短くなる。したがって、スループットを向上させることが可能となる。上記の例では、画像Xの次のタイミングで得られた画像Yについて、スループットを向上させることが可能となる。なお、上述した画像処理方法を実行するプログラムによっても、スループットを向上させることが可能となる。
【0020】
(実施の形態1)
以下、実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【0021】
図3は、実施の形態1にかかる画像処理システム20の構成を示す図である。画像処理システム20は、1つ以上の撮像装置30と、画像処理装置100とを有する。撮像装置30及び画像処理装置100は、インターネット等のネットワーク22を介して互いに通信可能に接続されている。なお、画像処理装置100は、例えばクラウドコンピューティングによって実現されてもよい。
【0022】
撮像装置30は、例えば、監視カメラ又は防犯カメラ等のカメラである。撮像装置30は、周囲の被写体(人、物、背景等)を撮影して、画像を示す画像データを生成する。ここで、「画像」は、動画像(映像)又は静止画像であってもよい。また、画像は、映像を構成するフレーム画像であってもよい。なお、以下、用語「画像」は、情報処理における処理対象としての、「画像を示す画像データ」も意味する。以下の説明では、画像がフレーム画像である例について説明する。
【0023】
画像処理装置100は、図1に示した画像処理装置1に対応する。画像処理装置100は、撮像装置30から画像を受信する。画像処理装置100は、受信された画像を解析して、画像に含まれる対象物を認識する。詳しくは後述する。なお、実施の形態1では、対象物として、人物の顔及び人体(体全体)を認識するとするが、対象物は、顔及び人体に限定されない。また、対象物の数は、2つに限られず、3つ以上の任意の数であってもよい。
【0024】
図4は、実施の形態1にかかる画像処理装置100の構成を示す図である。画像処理装置100は、主要なハードウェア構成として、制御部102と、記憶部104と、通信部106と、インタフェース部108(IF;Interface)とを有する。制御部102、記憶部104、通信部106及びインタフェース部108は、データバスなどを介して相互に接続されている。
【0025】
制御部102は、例えばCPU等のプロセッサである。制御部102は、解析処理、制御処理及び演算処理等を行う演算装置としての機能を有する。記憶部104は、例えばメモリ又はハードディスク等の記憶デバイスである。記憶部104は、例えばROM(Read Only Memory)又はRAM(Random Access Memory)等である。記憶部104は、制御部102によって実行される制御プログラム及び演算プログラム等を記憶するための機能を有する。また、記憶部104は、処理データ等を一時的に記憶するための機能を有する。記憶部104は、データベースを含み得る。
【0026】
通信部106は、撮像装置30等の他の装置とネットワーク22を介して通信を行うために必要な処理を行う。通信部106は、通信ポート、ルータ、ファイアウォール等を含み得る。インタフェース部108は、例えばユーザインタフェース(UI)である。インタフェース部108は、キーボード、タッチパネル又はマウス等の入力装置と、ディスプレイ又はスピーカ等の出力装置とを有する。インタフェース部108は、ユーザ(オペレータ)によるデータの入力の操作を受け付け、ユーザに対して情報を出力する。例えば、インタフェース部108は、解析処理の結果を出力してもよい。また、インタフェース部108は、各解析処理に割り当てられている計算資源の量を出力してもよい。
【0027】
実施の形態1にかかる画像処理装置100は、構成要素として、画像取得部110と、資源割当部112と、解析実行部120と、解析状況監視部130と、割当変更部140とを有する。解析実行部120は、顔解析実行部122と、人体解析実行部124とを有する。解析状況監視部130は、画像処理時間算出部132と、割当変更判定部134と、対象物情報算出部136とを有する。割当変更部140は、CPU割当決定部142を有する。なお、画像処理装置100は、物理的に1つの装置で構成されている必要はない。この場合、上述した各構成要素は、物理的に別個の複数の装置によって実現されてもよい。
【0028】
画像取得部110は、画像取得手段としての機能を有する。資源割当部112は、図1に示した資源割当部4に対応する。資源割当部112は、資源割当手段としての機能を有する。解析実行部120は、図1に示した解析実行部2に対応する。解析実行部120は、解析実行手段としての機能を有する。解析状況監視部130は、図1に示した算出部6に対応する。解析状況監視部130は、解析状況監視手段としての機能を有する。割当変更部140は、図1に示した割当変更部8に対応する。割当変更部140は、割当変更手段としての機能を有する。
【0029】
また、顔解析実行部122は、顔解析実行手段としての機能を有する。人体解析実行部124は、人体解析実行手段としての機能を有する。画像処理時間算出部132は、図1に示した算出部6に対応する。画像処理時間算出部132は、画像処理時間算出手段としての機能を有する。割当変更判定部134は、割当変更判定手段としての機能を有する。対象物情報算出部136は、対象物情報算出手段としての機能を有する。CPU割当決定部142は、CPU割合決定手段としての機能を有する。
【0030】
なお、上述した各構成要素は、例えば、制御部102の制御によって、プログラムを実行させることによって実現できる。より具体的には、各構成要素は、記憶部104に格納されたプログラムを、制御部102が実行することによって実現され得る。また、必要なプログラムを任意の不揮発性記録媒体に記録しておき、必要に応じてインストールすることで、各構成要素を実現するようにしてもよい。また、各構成要素は、プログラムによるソフトウェアで実現することに限ることなく、ハードウェア、ファームウェア、及びソフトウェアのうちのいずれかの組み合わせ等により実現してもよい。また、各構成要素は、例えばFPGA(field-programmable gate array)又はマイコン等の、ユーザがプログラミング可能な集積回路を用いて実現してもよい。この場合、この集積回路を用いて、上記の各構成要素から構成されるプログラムを実現してもよい。これらのことは、後述する他の実施の形態においても同様である。なお、各構成要素の具体的な機能については後述する。
【0031】
図5及び図6は、実施の形態1にかかる画像処理装置100によって実行される画像処理方法を示すフローチャートである。資源割当部112は、計算資源の割り当てを行う(ステップS100)。具体的には、資源割当部112は、解析実行部120によって実行される複数の解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる。さらに具体的には、資源割当部112は、顔解析実行部122によって実行される顔解析処理と、人体解析実行部124によって実行される人体解析処理とに、計算資源を割り当てる。詳しくは後述する。
【0032】
画像取得部110は、フレーム画像を取得する(ステップS102)。具体的には、画像取得部110は、撮像装置30によって生成されたフレーム画像を取得する。画像取得部110は、撮像装置30によってフレーム画像が生成されるごとにフレーム画像を取得してもよい。あるいは、撮像装置30からのフレーム画像が記憶部104(バッファ)に一時的に格納される場合、画像取得部110は、バッファからフレーム画像を取得してもよい。なお、撮像装置30が時系列的に連続して静止画像を生成する場合、画像取得部110は、静止画像を取得してもよい。
【0033】
解析実行部120は、顔解析処理と人体解析処理とを別個に並行して実行する(ステップS104)。つまり、解析実行部120は、画像に含まれる複数の種類の対象物ごとに解析処理を別個に並行して実行する。具体的には、顔解析実行部122は、顔解析処理を行う。人体解析実行部124は、人体解析処理を行う。
【0034】
図7は、実施の形態1にかかる顔解析処理及び人体解析処理を説明するための図である。フレーム画像が取得されると、解析実行部120は、顔解析処理と人体解析処理とを並行して実行する。そして、解析実行部120は、同じフレーム画像において顔解析処理及び人体解析処理が終了すると、顔解析処理の結果と人体解析処理の結果とを統合する。これにより、あるフレーム画像に写された人物の顔の特徴及び身体の特徴を詳細に示す情報を生成することができる。このようにして生成された情報を用いて、不審人物の探索等を行うことができる。
【0035】
顔解析実行部122は、フレーム画像に対して顔検出処理を行う。顔検出処理において、顔解析実行部122は、フレーム画像における顔の位置を検出する。そして、顔解析実行部122は、検出された顔の特徴(特徴量)を抽出する。そして、顔の特徴を示す顔特徴データを、顔解析処理の結果として出力する。なお、顔解析実行部122は、顔検出の精度が予め定められた値よりも高い顔に対して、顔の特徴の抽出を行ってもよい。
【0036】
人体解析実行部124は、フレーム画像に対して人体検出処理を行う。人体検出処理において、人体解析実行部124は、フレーム画像における人体の位置を検出する。そして、人体解析実行部124は、検出された人体の特徴(特徴量)を抽出する。そして、人体の特徴を示す人体特徴データを、人体解析処理の結果として出力する。なお、人体解析実行部124は、人体検出の精度が予め定められた値よりも高い人体に対して、人体の特徴の抽出を行ってもよい。
【0037】
ここで、人体検出処理では、フレーム画像に全身が写っていないと、人体である物体を人体と検出(認識)することができない可能性が高い。一方、顔検出処理では、フレーム画像に全身が写っていなくても、顔が写っていれば、顔である物体を顔と検出(認識)することができる可能性が高い。したがって、同じフレーム画像でも、検出される顔の数及び人体の数は互いに異なり得る。
【0038】
また、同じフレーム画像でも、対象物の種類によって、1つの対象物の解析に要する時間が異なり得る。例えば、人体の特徴量のボリュームは顔の特徴量のボリュームよりも大きいので、人体の特徴の抽出処理に要する時間は、顔の特徴の抽出処理に要する時間よりも長いことが多い。図7の例では、顔の特徴の抽出処理に要する時間は50msecであり、人体の特徴の抽出処理に要する時間は250msecである。
【0039】
図5の説明に戻る。解析状況監視部130は、各解析処理のログ情報(解析処理ログ情報)を取得する(ステップS106)。解析処理ログ情報は、解析状況監視部130によって生成されてもよいし、解析実行部120によって生成されてもよい。解析状況監視部130は、解析処理ログ情報を用いて、解析実行部120による解析処理の実行状況を監視する。
【0040】
図8は、実施の形態1にかかる解析処理ログ情報を例示する図である。解析処理ログ情報は、カメラIDと、フレームIDと、対象物の種類(「顔」又は「人体」)と、対象物のIDと、処理開始時刻と、処理終了時刻と、処理ハードウェア情報とを含む。図8の例では、カメラID(撮像装置30の識別情報)は「カメラ#1」であり、フレームID(フレーム画像の識別情報)は「フレーム#1」である。また、図8の例では、対象物「顔」のIDが「顔#1」~「顔#m」であり、対象物「人体」のIDが「人体#1」~「人体#n」である。つまり、図8の例では、フレーム#1のフレーム画像において、対象物「顔」の検出数はm個であり、対象物「人体」の検出数はn個である。また、図8の例では、各解析処理は全てCPUによって実行されている。
【0041】
また、対象物「顔#1」の処理開始時刻はt_f1sであり、処理終了時刻はt_f1eである。また、対象物「顔#2」の処理開始時刻はt_f2sであり、処理終了時刻はt_f2eである。また、対象物「顔#m」の処理開始時刻はt_fmsであり、処理終了時刻はt_fmeである。ここで、図8の例では、顔解析実行部122は、最初に、対象物「顔#1」についての解析処理を実行し、最後に、対象物「顔#m」についての解析処理を実行するとする。
【0042】
また、対象物「人体#1」の処理開始時刻はt_b1sであり、処理終了時刻はt_b1eである。また、対象物「人体#2」の処理開始時刻はt_b2sであり、処理終了時刻はt_b2eである。また、対象物「人体#n」の処理開始時刻はt_bnsであり、処理終了時刻はt_bneである。ここで、図8の例では、人体解析実行部124は、最初に、対象物「人体#1」についての解析処理を実行し、最後に、対象物「人体#n」についての解析処理を実行するとする。
【0043】
なお、顔解析実行部122は、顔#1~顔#mに対して、逐次的に解析処理を実行してもよい。この場合、顔解析実行部122は、顔#1に対する解析処理が終了してから顔#2に対する解析処理を開始する。したがって、顔#1についての処理開始時刻t_f1sから処理終了時刻t_f1eまでの期間は、顔#2についての処理開始時刻t_f2sから処理終了時刻t_f2eまでの期間と重なっていない。あるいは、顔解析実行部122は、顔#1~顔#mに対して並行して解析処理を実行してもよい。この場合、顔解析実行部122は、顔#1に対する解析処理が終了する前に顔#2に対する解析処理を開始してもよい。したがって、顔#1についての処理開始時刻t_f1sから処理終了時刻t_f1eまでの期間は、顔#2についての処理開始時刻t_f2sから処理終了時刻t_f2eまでの期間と重なってもよい。このような逐次処理又は並行処理は、顔解析処理に割り当てられた計算資源(CPU等)の量に応じて、適宜、選択され得る。なお、これらのことは、人体解析実行部124(人体解析処理)についても同様である。
【0044】
図5の説明に戻る。解析状況監視部130は、各解析処理それぞれのフレーム処理時間(画像処理時間;第1の処理時間)を算出する(ステップS108)。具体的には、画像処理時間算出部132は、同一のフレーム画像の全体に対する、顔解析処理のフレーム処理時間及び人体解析処理のフレーム処理時間を算出する。ここで、フレーム処理時間は、1つのフレーム画像の全体における各解析処理の処理開始時刻から処理終了時刻までの期間である。言い換えると、フレーム処理時間は、各解析処理について、1つのフレーム画像内の全ての対象物に関する処理を行うのに要した時間である。例えば、フレーム処理時間は、各解析処理について、最初に実行された対象物に関する処理開始時刻から、最後に実行された対象物に関する処理終了時刻までの期間である。
【0045】
図8の例において、「フレーム#1」のフレーム画像では、顔解析処理は、対象物「顔#1」の処理から開始し、対象物「顔#m」の処理で終了する。したがって、「フレーム#1」のフレーム画像の全体に対する顔解析処理の処理開始時刻は、対象物「顔#1」の処理開始時刻t_f1sである。また、「フレーム#1」のフレーム画像の全体に対する顔解析処理の処理終了時刻は、対象物「顔#m」の処理終了時刻t_fmeである。したがって、画像処理時間算出部132は、「フレーム#1」のフレーム画像の全体に対する顔解析処理のフレーム処理時間を、Tif=t_fme-t_f1sと算出する。
【0046】
また、図8の例において、「フレーム#1」のフレーム画像では、人体解析処理は、対象物「人体#1」の処理から開始し、対象物「人体#n」の処理で終了する。したがって、「フレーム#1」のフレーム画像の全体に対する人体解析処理の処理開始時刻は、対象物「人体#1」の処理開始時刻t_b1sである。また、「フレーム#1」のフレーム画像の全体に対する人体解析処理の処理終了時刻は、対象物「人体#n」の処理終了時刻t_bneである。したがって、画像処理時間算出部132は、「フレーム#1」のフレーム画像の全体に対する人体解析処理のフレーム処理時間を、Tib=t_bne-t_b1sと算出する。
【0047】
解析状況監視部130は、複数の解析処理の間のフレーム処理時間の差が予め定められた閾値以上であるか否かを判定する(ステップS110)。具体的には、割当変更判定部134は、顔解析処理のフレーム処理時間Tifと人体解析処理のフレーム処理時間Tibとの差ΔTi(=|Tif-Tib|)が予め定められた閾値Tth1以上であるか否かを判定する。つまり、割当変更判定部134は、ΔTi≧Tth1であるか否かを判定する。なお、フレーム処理時間の差ΔTiは、複数の解析処理の間の処理待ちの期間に対応する。したがって、閾値Tth1は、許容できる処理待ち期間(スループット)に応じて、適宜定められ得る。
【0048】
なお、対象物の種類が3つ以上である場合、解析処理も3つ以上となる。この場合、フレーム処理時間の差ΔTiは、最大のフレーム処理時間と、最小のフレーム処理時間との差としてもよい。例えば、対象物の種類が、顔、人体及び所有物であるケースで、所有物の解析処理のフレーム処理時間Tipが最も長く、顔解析処理のフレーム処理時間Tifが最も短い場合、ΔTi=Tip-Tifとなる。
【0049】
フレーム処理時間の差ΔTiが閾値Tth1以上でない場合(S110のNO)、処理待ちの期間は許容範囲内であり、スループットの許容できない程度の悪化は発生していない可能性が高い。したがって、割当変更判定部134は、計算資源の割り当ての変更を行わないと決定する。この場合、後述するS20の処理は省略され、処理はS116に進む。
【0050】
一方、フレーム処理時間の差ΔTiが閾値Tth1以上である場合(S110のYES)、処理待ちの期間は許容範囲を超え、スループットの許容できない程度の悪化が発生している可能性が高い。したがって、割当変更判定部134は、計算資源の割り当ての変更を行うと決定する(ステップS112)。この場合、対象物情報算出部136は、対象物情報を算出する(ステップS114)。ここで、対象物情報は、対象物に関する情報であって、対象物数と対象物処理時間とに関する情報を含む。したがって、対象物情報算出部136は、対象物数と対象物処理時間とに関する情報を算出する。対象物数及び対象物処理時間については後述する。解析状況監視部130は、割当変更指示を割当変更部140に出力する。割当変更指示は、対象物情報を含んでもよい。なお、S114の処理は、S110の判定がYESの場合のみに実行されることに限定されず、解析処理ログ情報が取得された場合に常に算出されてもよい。
【0051】
図9は、実施の形態1にかかる対象物情報を例示する図である。対象物情報は、直近の対象物数の平均と、直近の対象物処理時間(第2の処理時間)の平均とを含む。ここで、「対象物数」は、1つのフレーム画像から検出された各対象物の種類(顔又は人体)の対象物の数である。つまり、「対象物数」は、1つの画像当たりの検出された対応する対象物の数である。図8の例では、フレーム#1の顔の対象物数はm個であり、人体の対象物数はn個である。
【0052】
また、「対象物処理時間」とは、1つの対象物あたりの解析処理に必要な処理時間である。図8の例では、対象物「顔#1」の対象物処理時間は(t_f1e-t_f1s)であり、対象物「顔#2」の対象物処理時間は(t_f2e-t_f2s)である。また、対象物「人体#1」の対象物処理時間は(t_b1e-t_b1s)であり、対象物「人体#2」の対象物処理時間は(t_b2e-t_b2s)である。
【0053】
また、「直近の対象物数の平均(平均対象物数)」とは、現在時刻(又は処理対象のフレーム画像の撮影時刻)から予め定められた時間だけ前(例えば数秒前;5秒~10秒前)までの期間の、各対象物の種類ごとの対象物数の平均値である。図9の例では、「顔」については、「直近の対象物数の平均(平均対象物数)」はM個である。また、「人体」については、「直近の対象物数の平均(平均対象物数)」はN個である。
【0054】
また、「直近の対象物処理時間の平均(平均対象物処理時間)」とは、現在時刻(又は処理対象のフレーム画像の撮影時刻)から予め定められた時間だけ前(例えば数秒前;5秒~10秒前)までの期間の、各対象物の種類ごとの対象物処理時間の平均値である。「直近の対象物処理時間の平均」は、処理を行った計算資源の種類(例えばCPU等)によって異なり得る。図9の例では、「顔」については、CPUによる解析処理の「直近の対象物処理時間の平均(平均対象物処理時間)」はTfc[msec/個]である。また、「人体」については、CPUによる解析処理の「直近の対象物処理時間の平均(平均対象物処理時間)」はTbc[msec/個]である。
【0055】
図5の説明に戻る。割当変更部140は、割り当て変更処理を行う(ステップS20)。具体的には、CPU割当決定部142は、対象物情報を用いて、複数の解析処理(顔解析処理及び人体解析処理)それぞれに割り当てる計算資源の量(例えばCPUコア数)を決定する。CPU割当決定部142は、複数の解析処理それぞれについて、後述する処理必要時間(第3の処理時間)に基づいて、複数の解析処理それぞれに割り当てる前記計算資源の量を決定する。CPU割当決定部142は、複数の解析処理に関する処理必要時間の比に応じて、複数の解析処理それぞれに割り当てる前記計算資源の量を決定する。詳しくは後述する。
【0056】
割り当て変更処理(S20)の後、全てのフレーム画像について処理が終了した場合(ステップS116のYES)、処理は終了する。一方、全てのフレーム画像について処理が終了していない場合(S116のNO)、処理はS102に戻り、上述した処理が繰り返される。
【0057】
図6は、実施の形態1にかかる割り当て変更処理(S20)を示すフローチャートである。割当変更部140は、解析状況監視部130から対象物情報を取得する(ステップS22)。具体的には、CPU割当決定部142は、対象物情報を含む割当変更指示を解析状況監視部130から受信することで、対象物情報を取得してもよい。あるいは、解析状況監視部130は、対象物情報をデータベースに格納しておいてもよい。この場合、割当変更部140は、割当変更指示を受信した場合に、データベースから対象物情報を取得する。
【0058】
割当変更部140は、対象物情報を用いて各解析処理の処理必要時間(第3の処理時間)を算出する(ステップS24)。具体的には、CPU割当決定部142は、解析処理ごとに、平均対象物処理時間に平均対象物数を乗算することによって、処理必要時間を算出する。ここで、「処理必要時間」とは、1つの画像(フレーム画像)に対する複数の解析処理それぞれに必要な処理時間である。言い換えると、「処理必要時間」とは、1つの画像(フレーム画像)に対する複数の解析処理それぞれに必要と予測される処理時間である。図9の例では、顔解析処理の処理必要時間は、Tfc×M[msec]と算出される。また、人体解析処理の処理必要時間は、Tbc×N[msec]と算出される。
【0059】
割当変更部140は、各解析処理の処理必要時間の比に応じて各解析処理の割当資源量を決定する(ステップS26)。具体的には、CPU割当決定部142は、割り当てられる計算資源の量(資源量)の比が各解析処理の処理必要時間の比に対応するように、各解析処理の割当資源量を決定する。さらに具体的には、CPU割当決定部142は、顔解析処理に割り当てられる資源量と人体解析処理に割り当てられる資源量との比が、顔解析処理の処理必要時間と人体解析処理の処理必要時間との比に対応するように、各解析処理の割当資源量を決定する。
【0060】
ここで、図9の例では、顔解析処理の処理必要時間と人体解析処理の処理必要時間との比は、Tfc×M:Tbc×Nである。ここで、CPUコア数をRcとする。このとき、顔解析処理に割り当てられる資源量Rc_fは、Rc_f=Rc×(Tfc×M)/(Tfc×M+Tbc×N)と算出される。また、人体解析処理に割り当てられる資源量Rc_bは、Rc_b=Rc×(Tbc×N)/(Tfc×M+Tbc×N)と算出される。なお、算出された値が整数でない場合、算出された値に最も近い整数が、割り当てられる資源量(CPUコア数)として決定される。
【0061】
割当変更部140は、各解析処理それぞれの割当資源量を出力する(ステップS28)。具体的には、割当変更部140は、各解析処理それぞれの割当資源量を、資源割当部112に出力する。これにより、資源割当部112は、決定された(変更された)割当資源量で、各解析処理に計算資源を割り当てる。これにより、各解析処理に割り当てられる資源量の比が処理必要時間の比に対応するように変更されるので、処理待ちの時間が低減され得る。したがって、スループットが向上し得る。つまり、あるフレーム#1について図5に示した処理を行うことによって、フレーム#1の後のタイミングで生成されたフレーム#2に対する解析処理のスループットを向上させることが可能となる。
【0062】
<具体例>
上述した実施の形態1に係る処理を、具体的な数値を用いて説明する。顔解析処理のフレーム処理時間をTif=202msec、人体解析処理のフレーム処理時間をTib=1001msecとする。また、閾値Tth1=200msecとする。この場合、フレーム処理時間の差はΔTi=1001-202=799msec>200msecとなるので、割当変更判定部134は、割り当ての変更を行うと判定する(S110のYES,S112)。
【0063】
また、顔解析処理の平均対象物数をM=16個、人体解析処理の平均対象物数をN=8個とする。また、顔解析処理の対象物処理時間をTfc=50msec/個、人体解析処理の対象物処理時間をTbc=250msec/個とする。この場合、CPU割当決定部142は、顔解析処理の処理必要時間を、Tfc×M=50×16=800[msec]と算出する(S24)。また、CPU割当決定部142は、人体解析処理の処理必要時間を、Tbc×N=250×8=2000[msec]と算出する(S24)。
【0064】
また、CPU割当決定部142は、処理必要時間の比を、Tfc×M:Tbc×N=800:2000=2:5と算出する。また、解析処理に使用されるCPUコア数をRc=6個とする。この場合、CPU割当決定部142は、顔解析処理に割り当てられる資源量を、Rc_f=Rc×(Tfc×M)/(Tfc×M+Tbc×N)=6×(2/(2+5))≒2[個]と算出する。また、CPU割当決定部142は、人体解析処理に割り当てられる資源量を、Rc_b=Rc×(Tbc×N)/(Tfc×M+Tbc×N)=6×(5/(2+5))≒4[個]と算出する。
【0065】
この場合、割り当て変更後の1フレーム画像あたりの顔解析処理の処理時間は、Tfc×M/Rc_f=50×16/2=400[msec]となる。また、割り当て変更後の1フレーム画像あたりの人体解析処理の処理時間は、Tbc×N/Rc_b=250×8/4=500[msec]となる。したがって、処理待ちの時間は500-400=100msecとなり、割り当て変更後のスループットは、1000msec/max[400msec,500msec]=2フレーム/秒となる。一方、割り当て変更前のスループットは、1000msec/max[202msec,1001msec]≒1フレーム/秒となる。したがって、割り当ての変更処理を行うことによって、スループットが向上していることが分かる。
【0066】
なお、上述したように、特許文献1の技術では、対象物の数が計算資源の負荷に対応している。したがって、特許文献1の技術を上述した具体例に適用すると、顔解析処理の平均対象物数(16個)の方が人体解析処理の平均対象物数(8個)よりも多いので、人体解析処理よりも顔解析処理の方により多くのCPUコアを割り当ててしまう。しかしながら、上述したように、処理必要時間については、人体解析処理の処理必要時間の方が顔解析処理の処理必要時間よりも長い。したがって、特許文献1の技術では、同一のフレーム画像の解析処理について、顔解析処理が人体解析処理よりもはるかに早く終了してしまい、人体解析処理が終了するまでに長い処理待ちが発生し、スループットを向上させることができないおそれがある。具体的には、特許文献1にかかる技術では、対象物数の比から、6個のCPUコアのうち、顔解析処理に4個、人体解析処理に2個のCPUコアが割り当てられる。すると、顔解析処理の処理時間は、50×16/4=200msecとなり、人体解析処理の処理時間は、250×8/2=1000msecとなる。したがって、処理待ちの時間は1000-200=800msecとなり、割り当て変更後のスループットは、1000msec/max[200msec,1000msec]=1フレーム/秒となる。したがって、実施の形態1にかかる方法は、特許文献1にかかる技術よりもスループットを向上させることが可能となる。
【0067】
(実施の形態2)
次に、実施の形態2について説明する。実施の形態2では、解析処理を実行する計算資源が、CPUだけでなく、ハードウェアアクセラレータも含む点で、実施の形態1と異なる。なお、実施の形態2にかかる画像処理システム20の構成については、実施の形態1にかかるものと実質的に同様であるので、説明を省略する。
【0068】
図10は、実施の形態2にかかる画像処理装置100の構成を示す図である。画像処理装置100は、主要なハードウェア構成として、制御部102と、記憶部104と、通信部106と、インタフェース部108とを有する。ここで、制御部102は、少なくとも1つのCPU(第1の計算資源)と、少なくとも1つのハードウェアアクセラレータ(第2の計算資源)とを含む。ハードウェアアクセラレータは、CPUよりも性能(処理能力)が高い計算資源である。「処理能力」とは、例えば処理速度である。ハードウェアアクセラレータは、GPU、FPGA、又は、深層学習用等の専用ハードウェアを含んでもよい。実施の形態2では、ハードウェアアクセラレータ(以後、単に「アクセラレータ」と称することがある)がGPUである例について説明する。制御部102以外のハードウェアについては、実施の形態1と実質的に同様であってもよい。
【0069】
実施の形態2にかかる画像処理装置100は、構成要素として、画像取得部110と、資源割当部112と、解析実行部120と、解析状況監視部130と、割当変更部240とを有する。なお、割当変更部240以外の構成要素については、実施の形態1にかかるものと実質的に同様であるので、説明を省略する。つまり、実施の形態1にかかる画像処理装置100は、実施の形態1と同様に、図5に示したS100~S116の処理を行う。
【0070】
割当変更部240は、割当変更手段としての機能を有する。割当変更部240は、CPU割当決定部142と、アクセラレータ割当決定部242とを有する。アクセラレータ割当決定部242は、アクセラレータ割当決定手段としての機能を有する。実施の形態2にかかる割当変更部240は、CPU(第1の計算資源)及びアクセラレータ(第2の計算資源)の割り当てを決定する。
【0071】
次に、実施の形態2にかかる画像処理装置100によって実行される画像処理方法について説明する。ここで、実施の形態2にかかる画像処理方法について、図5のS20の処理以外の処理については実施の形態1にかかる処理と実質的に同様であるので、説明を省略する。但し、実施の形態2においては、S106の処理で取得される解析処理ログ情報、及び、S114において算出される対象物情報が、実施の形態1と異なる。解析処理ログ情報について、図8の例では、各解析処理は全てCPUによって実行されているが、実施の形態2では、一部又は全ての解析処理が、アクセラレータ(例えばGPU)によって実行され得る。
【0072】
図11は、実施の形態2にかかる対象物情報を例示する図である。図11に示すように、実施の形態2では、対象物処理時間(平均対象物処理時間)は、解析処理を実行したハードウェアの種類(CPU及びGPU)ごとに算出される。図11の例では、「顔」については、GPUによる解析処理の「直近の対象物処理時間の平均(平均対象物処理時間)」はTfg[msec/個]である。また、「人体」については、GPUによる解析処理の「直近の対象物処理時間の平均(平均対象物処理時間)」はTbg[msec/個]である。なお、各解析処理がCPUかGPUのいずれの計算資源で実行されたかについては、解析処理ログ情報に示されている。対象物情報のその他の情報については、図8に示した実施の形態1にかかるものと実質的に同様であるので、説明を省略する。
【0073】
図12は、実施の形態2にかかる画像処理装置によって実行される割り当て変更処理(S20)を示すフローチャートである。割当変更部240は、図6に示したS22~S28と実質的に同様の処理を行う(ステップS200)。なお、S28の処理については、CPU割当決定部142が、各解析処理それぞれのCPUの割当資源量を、アクセラレータ割当決定部242に出力する。つまり、実施の形態2では、資源割当部112は、S26で決定された割当資源量で計算資源の割り当てを行うわけではない。
【0074】
割当変更部240(アクセラレータ割当決定部242)は、各解析処理それぞれの割当資源量を取得する(ステップS202)。なお、このとき取得される割当資源量は、CPUの割当資源量である。つまり、実施の形態2においても、割り当て処理を行う際には、実施の形態1と同様に、まず、各解析処理にCPUを割り当てたと仮定した処理を行う。これにより、CPUだけでなくGPUを解析処理に割り当てる処理の複雑化を抑制することができる。
【0075】
割当変更部240は、対象物1つあたりの割当資源量が多い解析処理を選択する(ステップS204)。具体的には、アクセラレータ割当決定部242は、各解析処理について、対象物1つあたりの割当資源量を算出する。さらに具体的には、アクセラレータ割当決定部242は、顔解析処理の対象物(顔)1つあたりの割当資源量を、Rc_f/Mと算出する。同様に、アクセラレータ割当決定部242は、人体解析処理の対象物(人体)1つあたりの割当資源量を、Rc_b/Nと算出する。アクセラレータ割当決定部242は、Rc_f/MとRc_b/Nとを比較して、大きい方に対応する解析処理を選択する。例えば、Rc_f/M<Rc_b/Nであれば、アクセラレータ割当決定部242は、人体解析処理を選択する。
【0076】
割当変更部240(アクセラレータ割当決定部242)は、S204で選択された解析処理に対してGPU(アクセラレータ)を割り当てると決定する(ステップS206)。例えば、S204で人体解析処理が選択された場合、アクセラレータ割当決定部242は、人体解析処理にGPUを割り当てる。これにより、処理負荷が高いと考えられる解析処理に対して、優先的に、アクセラレータを割り当てることができる。したがって、スループットを向上させることが可能となる。
【0077】
なお、Rc_f/M=Rc×Tfc/(Tfc×M+Tbc×N)であり、Rc_b/N=Rc×Tbc/(Tfc×M+Tbc×N)である。したがって、対象物1つあたりの割当資源量が多い解析処理とは、CPUを用いて行った各解析処理に対応する平均対象物処理時間(Tfc,Tbc)が長い解析処理であると言える。したがって、アクセラレータ割当決定部242は、複数の解析処理のうち、CPUを用いて行った対象物処理時間が長い解析処理に対して、GPUを割り当てると決定する。
【0078】
割当変更部240(アクセラレータ割当決定部242)は、割り当てられたGPUのCPU換算数が対象物数以上の解析処理を、CPUの割り当て対象から除外する(ステップS208)。ここで、CPU換算数とは、GPU(第2の計算資源)の量をCPU(第1の計算資源)の量に仮想的に換算した換算資源量に対応する。したがって、割当変更部240は、換算資源量に対応する数がGPUを割り当てると決定された解析処理に対応する対象物の数以上となる場合に、当該解析処理にCPUを割り当てないと決定する。
【0079】
具体的には、アクセラレータ割当決定部242は、CPU換算数を算出する。具体的には、アクセラレータ割当決定部242は、GPUが割り当てられた解析処理について、CPUの対象物処理時間をGPUの対象物処理時間で除算することによって、CPU換算数を算出する。例えば、人体解析処理にGPUが割り当てられたとすると、アクセラレータ割当決定部242は、CPU換算数を、Tbc/Tbg[CPU/GPU]と算出する。また、顔解析処理にGPUが割り当てられたとすると、アクセラレータ割当決定部242は、CPU換算数を、Tfc/Tfg[CPU/GPU]と算出する。なお、算出された値が整数でない場合、アクセラレータ割当決定部242は、算出された値に最も近い整数を、CPU換算数(換算資源量)として決定してもよい。
【0080】
アクセラレータ割当決定部242は、CPU換算数と対象物数(平均対象物数)とを比較する。例えば、人体解析処理にGPUが割り当てられたとすると、Tbc/Tbgと人体解析処理の平均対象物数Nとを比較する。そして、アクセラレータ割当決定部242は、Tbc/Tbg≧Nである場合に、GPUが割り当てられた人体解析処理を、CPUの割り当て対象から除外する。つまり、アクセラレータ割当決定部242は、人体解析処理にCPUを割り当てないと決定する。また、例えば、顔解析処理にGPUが割り当てられたとすると、Tfc/Tfgと顔解析処理の平均対象物数Mとを比較する。そして、アクセラレータ割当決定部242は、Tfc/Tfg≧Mである場合に、GPUが割り当てられた顔解析処理を、CPUの割り当て対象から除外する。つまり、アクセラレータ割当決定部242は、顔解析処理にCPUを割り当てないと決定する。
【0081】
このように、GPUが割り当てられた解析処理をCPUの割り当て対象から除外するのは、このような解析処理にCPUを割り当てても、割り当てられたCPUは解析処理に使用されない可能性が極めて高いからである。つまり、ある解析処理に割り当てられたGPUのCPU換算数が対象物数以上の場合、1つのフレーム画像の全ての対象物についてGPUを用いて処理する時間は、1つの対象物についてCPUを用いて処理する時間よりも短い。例えば、人体解析処理に割り当てられたGPUのCPU換算数が対象物数以上の場合、1つのフレーム画像の全ての人体についてGPUを用いて処理する時間は、1つの人体についてCPUを用いて処理する時間よりも短い。したがって、その解析処理については、GPUだけを用いて処理した方が早い。したがって、上述した条件では、GPUが割り当てられた解析処理をCPUの割り当て対象から除外する。
【0082】
割当変更部240は、CPU割当て対象の解析処理に割り当てるCPUの割当資源量を決定する(ステップS210)。具体的には、割当変更部240は、仮想CPUコア総数と、各解析処理の処理必要時間とに基づいて、各解析処理に割り当てるCPUコア数を決定する。ここで、「仮想CPUコア総数」とは、GPUのCPU換算数(換算資源量)とCPUコア数(第1の計算資源の量)との合計である。さらに具体的には、割当変更部240は、各解析処理の処理必要時間の比と仮想CPUコア総数とに応じて各解析処理の割当資源量(CPUコア数)を決定する。
【0083】
ここで、図11の例において、CPUコア数をRc、GPUの数を1個とする。また、人体解析処理にGPUが割り当てられると決定されたとする。このとき、仮想CPUコア総数Rvは、Rv=Rc+(Tbc/Tbg)と算出される。また、顔解析処理のCPUの処理必要時間と人体解析処理のCPUの処理必要時間との比は、Tfc×M:Tbc×Nである。このとき、顔解析処理に割り当てられる仮想CPUコア数は、Rv_f=Rv×(Tfc×M)/(Tfc×M+Tbc×N)と算出される。また、人体解析処理に割り当てられる仮想CPUコア数は、Rv_b=Rv×(Tbc×N)/(Tfc×M+Tbc×N)と算出される。なお、算出された値が整数でない場合、算出された値に最も近い整数が、割り当てられる資源量(仮想CPUコア数)として決定される。
【0084】
そして、割当変更部240は、各解析処理について、割り当てられる仮想CPUコア数から割り当てられるGPUのCPU換算数を減算した値を、その解析処理に割り当てられるCPUコア数と決定する。上記の例では、顔解析処理にGPUが割り当てられないので、割当変更部240は、顔解析処理に割り当てられるCPUコア数を、Rv_fと決定する。また、人体解析処理には1個のGPUが割り当てられるので、割当変更部240は、人体解析処理に割り当てられるCPUコア数を、Rv_b-(Tbc/Tbg)と決定する。
【0085】
その後、割当変更部240は、各解析処理それぞれの割当資源量を出力する(ステップS212)。具体的には、割当変更部240は、解析処理ごとに、どの計算資源(CPU及びGPU)をそれぞれどれだけ割り当てるかを示す情報を出力する。これにより、資源割当部112は、決定された(変更された)割当資源量で、各解析処理に計算資源を割り当てる。これにより、各解析処理に割り当てられる仮想CPUコア数の比がCPUによる処理必要時間の比に対応するように変更されるので、処理待ちの時間が低減され得る。したがって、スループットが向上し得る。
【0086】
なお、GPUが複数ある場合、全てのGPUが割り当てられるまで、S204~S210の処理が繰り返されてもよい。この場合、例えばGPUの数が3個であるとき、S204~S210の処理が3回繰り返される。あるいは、全てのGPUが、S206の処理で割り当てられるようにしてもよい。
【0087】
<第1の具体例>
上述した実施の形態2に係る処理を、具体的な数値を用いて説明する。ここで、顔解析処理のフレーム処理時間をTif=202msec、人体解析処理のフレーム処理時間をTib=1001msecとする。また、閾値Tth1=200msecとする。また、顔解析処理の平均対象物数をM=16個、人体解析処理の平均対象物数をN=8個とする。また、顔解析処理の対象物処理時間をTfc=50msec/個、人体解析処理の対象物処理時間をTbc=250msec/個とする。したがって、図5に示したS102~S116の処理の具体例については、上述した実施の形態1の具体例と同じであるので、説明を省略する。
【0088】
アクセラレータ割当決定部242は、顔解析処理の対象物(顔)1つあたりの割当資源量を、Rc_f/M=2/16=1/8と算出する。同様に、アクセラレータ割当決定部242は、人体解析処理の対象物(人体)1つあたりの割当資源量を、Rc_b/N=4/8=1/2と算出する。したがって、1/8<1/2であるので、アクセラレータ割当決定部242は、人体解析処理を選択する(S204)。したがって、アクセラレータ割当決定部242は、人体解析処理にGPUを割り当てる(S206)。なお、このことと同義であるが、アクセラレータ割当決定部242は、Tfc(=50)<Tbc(=250)であるから、対象物処理時間が長い人体解析処理に対してGPUを割り当てると決定する(S204,206)。
【0089】
また、GPUによる顔解析処理の対象物処理時間をTfg=25msec/個、GPUによる人体解析処理の対象物処理時間をTbg=31msec/個とする。アクセラレータ割当決定部242は、人体解析処理に関するCPU換算数を、Tbc/Tbg[CPU/GPU]=250/31≒8[CPU/GPU]と算出する。そして、Tbc/Tbg≒8≧8(=N)であるから、アクセラレータ割当決定部242は、GPUが割り当てられた人体解析処理を、CPUの割り当て対象から除外する(S208)。また、割当変更部240は、人体解析処理にCPUを割り当てないので、顔解析処理に全てのCPUコアを割り当てると決定する。つまり、割当変更部240は、顔解析処理に、6個のCPUコアを割り当てると決定する(S210)。
【0090】
この場合、割り当て変更後の1フレーム画像あたりの顔解析処理の処理時間は、Tfc×M/Rv_f=50×16/6≒100[msec]となる。また、割り当て変更後の1フレーム画像あたりの人体解析処理の処理時間は、Tbc×N/Rv_b=250×8/8≒250[msec]となる。なお、このことは、GPUについて、Tbg×N/(割り当てられるGPUの個数)=31×8/1=248≒250を算出することと同義である。したがって、処理待ちの時間は250-100=150msecとなり、割り当て変更後のスループットは、1000msec/max[100msec,250msec]≒4フレーム/秒となる。一方、割り当て変更前のスループットは、1000msec/max[202msec,1001msec]≒1フレーム/秒となる。したがって、割り当ての変更処理を行うことによって、スループットが向上していることが分かる。
【0091】
なお、上述したように、特許文献1の技術では、対象物の数が計算資源の負荷に対応している。したがって、特許文献1の技術を上述した具体例に適用すると、顔解析処理の平均対象物数(16個)の方が人体解析処理の平均対象物数(8個)よりも多いので、人体解析処理ではなく顔解析処理の方にGPUを割り当ててしまう。しかしながら、上述したように、処理必要時間は人体解析処理の方が顔解析処理よりも長い。したがって、特許文献1の技術では、同一のフレーム画像の解析処理について、顔解析処理が人体解析処理よりもはるかに早く終了してしまい、人体解析処理が終了するまでに長い処理待ちが発生し、スループットを向上させることができないおそれがある。これに対し、実施の形態2では、上述したように、スループットを向上させることが可能となる。
【0092】
<第2の具体例>
次に、第2の具体例について説明する。第2の具体例では、S208の処理で人体解析処理をCPU割り当て対象から除外しない例について説明する。ここで、M=16、N=16とする。なお、Tfc=50msec/個、Tbc=250msec/個、Tfg=25msec/個、Tbg=31msec/個とする。この場合、CPU割当決定部142は、顔解析処理の処理必要時間を、Tfc×M=50×16=800[msec]と算出する(S24)。また、CPU割当決定部142は、人体解析処理の処理必要時間を、Tbc×N=250×16=4000[msec]と算出する(S24)。また、CPU割当決定部142は、処理必要時間の比を、Tfc×M:Tbc×N=800:4000=1:5と算出する。
【0093】
CPU割当決定部142は、顔解析処理に割り当てられるCPU資源量を、Rc_f=Rc×(Tfc×M)/(Tfc×M+Tbc×N)=6×(1/(1+5))=1[個]と算出する。また、CPU割当決定部142は、人体解析処理に割り当てられる資源量を、Rc_b=Rc×(Tbc×N)/(Tfc×M+Tbc×N)=6×(5/(1+5))=5[個]と算出する。
【0094】
アクセラレータ割当決定部242は、顔解析処理の対象物(顔)1つあたりの割当資源量を、Rc_f/M=1/16と算出する。同様に、アクセラレータ割当決定部242は、人体解析処理の対象物(人体)1つあたりの割当資源量を、Rc_b/N=5/16と算出する。したがって、1/16<5/16であるので、アクセラレータ割当決定部242は、人体解析処理を選択する(S204)。したがって、アクセラレータ割当決定部242は、人体解析処理にGPUを割り当てる(S206)。
【0095】
アクセラレータ割当決定部242は、人体解析処理に関するCPU換算数を、Tbc/Tbg[CPU/GPU]=250/31≒8[CPU/GPU]と算出する。そして、Tbc/Tbg≒8<16(=N)であるから、アクセラレータ割当決定部242は、GPUが割り当てられた人体解析処理を、CPUの割り当て対象から除外しない(S208)。
【0096】
このとき、割当変更部240は、仮想CPUコア総数Rvを、Rv=Rc+(Tbc/Tbg)=6+(250/31)≒6+8=14と算出する。割当変更部240は、顔解析処理に割り当てられる仮想CPUコア数を、Rv_f=Rv×(Tfc×M)/(Tfc×M+Tbc×N)=14×(1/(1+5))≒2と算出する。ここで、顔解析処理にはGPUが割り当てられないので、割当変更部240は、顔解析処理に、2個のCPUコアを割り当てられると決定する(S210)。また、割当変更部240は、人体解析処理に割り当てられる仮想CPUコア数を、Rv_b=Rv×(Tbc×N)/(Tfc×M+Tbc×N)=14×(5/(1+5))≒12と算出する。ここで、人体解析処理には1個のGPUが割り当てられ、Tbc/Tbg[CPU/GPU]=8個であるので、1個のGPUはCPUコアの8個分に対応する。したがって、割当変更部240は、人体解析処理に、1個のGPUと、4個(=12-8)のCPUコアを割り当てると決定する。
【0097】
この場合、割り当て変更後の1フレーム画像あたりの顔解析処理の処理時間は、Tfc×M/Rv_f=50×16/2≒400[msec]となる。また、割り当て変更後の1フレーム画像あたりの人体解析処理の処理時間は、Tbc×N/Rv_b=250×8/12≒170[msec]となる。したがって、処理待ちの時間は400-170=230msecとなり、割り当て変更後のスループットは、1000msec/max[400msec,170msec]=2.5フレーム/秒となる。一方、割り当て変更前のスループットは、1000msec/max[202msec,1001msec]≒1フレーム/秒となる。したがって、割り当ての変更処理を行うことによって、スループットが向上していることが分かる。
【0098】
(変形例)
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、図5等に示したフローチャートの各処理の順序は、適宜、変更可能である。
【0099】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD-ROM(Read Only Memory)、CD-R、CD-R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM(Random Access Memory))を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【0100】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記によって限定されるものではない。本願発明の構成や詳細には、発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0101】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
画像に含まれる複数の種類の対象物ごとに解析処理を並行して実行する解析実行手段と、
複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる資源割当手段と、
同一の前記画像の全体に対する複数の前記解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間を算出する算出手段と、
複数の前記解析処理の間の前記第1の処理時間の差が予め定められた閾値以上となったときに、前記第1の処理時間の差が小さくなるように前記計算資源の割り当ての変更処理を行う割当変更手段と、
を有し、
前記資源割当手段は、前記割当変更手段による前記変更処理に応じて、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる、
画像処理装置。
(付記2)
前記割当変更手段は、複数の前記解析処理それぞれによって1つの画像あたりの検出された対象物の数と、複数の前記解析処理それぞれによる対象物の1つあたりの処理時間である第2の処理時間とに基づいて、複数の前記解析処理それぞれに割り当てる前記計算資源の量を決定する、
付記1に記載の画像処理装置。
(付記3)
前記割当変更手段は、複数の前記解析処理それぞれについて、前記対象物の数と前記第2の処理時間とを用いて算出された、1つの画像に対する前記解析処理それぞれに必要な処理時間である第3の処理時間に基づいて、複数の前記解析処理それぞれに割り当てる前記計算資源の量を決定する、
付記2に記載の画像処理装置。
(付記4)
前記割当変更手段は、複数の前記解析処理に関する前記第3の処理時間の比に応じて、複数の前記解析処理それぞれに割り当てる前記計算資源の量を決定する、
付記3に記載の画像処理装置。
(付記5)
複数の前記計算資源は、少なくとも1つの第1の計算資源と、前記第1の計算資源よりも処理能力が高い少なくとも1つの第2の計算資源とを含み、
前記割当変更手段は、前記第1の計算資源及び前記第2の計算資源の割り当てを決定する、
付記1から4のいずれか1項に記載の画像処理装置。
(付記6)
前記割当変更手段は、複数の前記解析処理のうち、前記第1の計算資源を用いて行った複数の前記解析処理それぞれによる対象物の1つあたりの処理時間である第2の処理時間が長い前記解析処理に対して、前記第2の計算資源を割り当てると決定する、
付記5に記載の画像処理装置。
(付記7)
前記割当変更手段は、前記第2の計算資源の量を前記第1の計算資源の量に仮想的に換算した換算資源量と前記第1の計算資源の量との合計と、複数の前記解析処理それぞれについて前記対象物の数と前記第2の処理時間とを用いて算出された1つの画像に対する複数の前記解析処理それぞれに必要な処理時間である第3の処理時間とに基づいて、複数の前記解析処理それぞれに割り当てる前記第1の計算資源の量を決定する、
付記6に記載の画像処理装置。
(付記8)
前記割当変更手段は、前記換算資源量に対応する数が前記第2の計算資源を割り当てると決定された前記解析処理に対応する対象物の数以上となる場合に、当該解析処理に前記第1の計算資源を割り当てないと決定する、
付記7に記載の画像処理装置。
(付記9)
画像に含まれる複数の種類の対象物ごとに実行される解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当て、
前記複数の種類の対象物ごとに解析処理を並行して実行し、
同一の前記画像の全体に対する複数の対象物の前記解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間を算出し、
複数の前記解析処理の間の前記第1の処理時間の差が予め定められた閾値以上となったときに、前記第1の処理時間の差が小さくなるように前記計算資源の割り当ての変更処理を行い、
前記変更処理に応じて、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てる、
画像処理方法。
(付記10)
複数の前記解析処理それぞれによって1つの画像あたりの検出された対象物の数と、複数の前記解析処理それぞれによる対象物の1つあたりの処理時間である第2の処理時間とに基づいて、複数の前記解析処理それぞれに割り当てる前記計算資源の量を決定する、
付記9に記載の画像処理方法。
(付記11)
複数の前記解析処理それぞれについて、前記対象物の数と前記第2の処理時間とを用いて算出された、1つの画像に対する前記解析処理それぞれに必要な処理時間である第3の処理時間に基づいて、複数の前記解析処理それぞれに割り当てる前記計算資源の量を決定する、
付記10に記載の画像処理方法。
(付記12)
複数の前記解析処理に関する前記第3の処理時間の比に応じて、複数の前記解析処理それぞれに割り当てる前記計算資源の量を決定する、
付記11に記載の画像処理方法。
(付記13)
複数の前記計算資源は、少なくとも1つの第1の計算資源と、前記第1の計算資源よりも処理能力が高い少なくとも1つの第2の計算資源とを含み、
前記第1の計算資源及び前記第2の計算資源の割り当てを決定する、
付記9から12のいずれか1項に記載の画像処理方法。
(付記14)
複数の前記解析処理のうち、前記第1の計算資源を用いて行った複数の前記解析処理それぞれによる対象物の1つあたりの処理時間である第2の処理時間が長い前記解析処理に対して、前記第2の計算資源を割り当てると決定する、
付記13に記載の画像処理方法。
(付記15)
前記第2の計算資源の量を前記第1の計算資源の量に仮想的に換算した換算資源量と前記第1の計算資源の量との合計と、複数の前記解析処理それぞれについて前記対象物の数と前記第2の処理時間とを用いて算出された1つの画像に対する複数の前記解析処理それぞれに必要な処理時間である第3の処理時間とに基づいて、複数の前記解析処理それぞれに割り当てる前記第1の計算資源の量を決定する、
付記14に記載の画像処理方法。
(付記16)
前記換算資源量に対応する数が前記第2の計算資源を割り当てると決定された前記解析処理に対応する対象物の数以上となる場合に、当該解析処理に前記第1の計算資源を割り当てないと決定する、
付記15に記載の画像処理方法。
(付記17)
画像に含まれる複数の種類の対象物ごとに実行される解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てるステップと、
前記複数の種類の対象物ごとに解析処理を並行して実行するステップと、
同一の前記画像の全体に対する複数の対象物の前記解析処理それぞれの処理開始時刻から処理終了時刻までの期間である第1の処理時間を算出するステップと、
複数の前記解析処理の間の前記第1の処理時間の差が予め定められた閾値以上となったときに、前記第1の処理時間の差が小さくなるように前記計算資源の割り当ての変更処理を行うステップと、
前記変更処理に応じて、複数の前記解析処理それぞれに対して複数の計算資源の少なくとも1つを割り当てるステップと、
をコンピュータに実行させるプログラムが格納された非一時的なコンピュータ可読媒体。
【符号の説明】
【0102】
1 画像処理装置
2 解析実行部
4 資源割当部
6 算出部
8 割当変更部
20 画像処理システム
30 撮像装置
100 画像処理装置
102 制御部
104 記憶部
106 通信部
108 インタフェース部
110 画像取得部
112 資源割当部
120 解析実行部
122 顔解析実行部
124 人体解析実行部
130 解析状況監視部
132 画像処理時間算出部
134 割当変更判定部
136 対象物情報算出部
140 割当変更部
142 CPU割当決定部
240 割当変更部
242 アクセラレータ割当決定部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12