(57)【要約】【課題】ハードウェアリソースの稼働率を改善すること。【解決手段】利用可能な空きプロセスＰ３，Ｐ４と既に処理中のプロセスＰ１，Ｐ２で解析対象の映像データＶ２を按分し、全てのプロセスＰ１〜Ｐ４が同時に解析処理を完了するように、処理中のプロセスＰ１，Ｐ２に割り当てられた未解析の処理区間の長さを考慮してスケジューリングする。【選択図】図１
2014228924.tif 000002
【特許請求の範囲】
【請求項１】
各プロセスが同時に解析処理を完了するように、処理中のプロセスに割り当てられた未解析の処理区間を含めて解析対象の映像データを按分し、未使用のプロセスと前記処理中のプロセスにそれぞれ割り当てる割当手段と、
各プロセスの識別子と当該各プロセスにそれぞれ割り当てられた処理区間との対応データを映像解析用のスケジュールとして記憶しておく記憶手段と、
を有することを特徴とする並列分散映像解析装置。
【請求項２】
コンピュータにより、
各プロセスが同時に解析処理を完了するように、処理中のプロセスに割り当てられた未解析の処理区間を含めて解析対象の映像データを按分し、未使用のプロセスと前記処理中のプロセスにそれぞれ割り当てる割当ステップと、
各プロセスの識別子と当該各プロセスにそれぞれ割り当てられた処理区間との対応データを映像解析用のスケジュールとして記憶手段に記憶しておく記憶ステップと、
を有することを特徴とする並列分散映像解析方法。
【請求項３】
請求項２に記載の並列分散映像解析方法をコンピュータに実行させることを特徴とする並列分散映像解析プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、映像を解析する技術に関する。
【背景技術】
【０００２】
映像中のフレームから抽出した画像・音データの物理的特徴（画素輝度、音声周波数、音声強度等）を用いて、カット点やカメラワーク、テロップ、音楽区間等のイベントを検出する映像解析技術がある（特許文献１、２）。
【０００３】
この技術では、通常、時間的に前後関係のある２枚以上のフレームを逐次的に比較・差分する演算処理を映像の最初から最後まで行うため、フレームの数に比例した時間がかかってしまう。
【０００４】
そこで、特許文献３では、映像データを複数の処理区間に分割し、隣り合う処理区間に互いにオーバラップする区間を持たせて並列に映像解析することにより、イベントの発生区間を正確に検出しながら、映像解析の処理時間を短縮している。また、非特許文献１では、イベント検出の状態に応じてオーバラップ区間を動的に延長することにより、最小限のオーバラップ処理区間でイベントの発生区間を検出している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第２８３９１３２号公報
【特許文献２】特許第３４８８６２６号公報
【特許文献３】特許第３７８５０６８号公報
【非特許文献】
【０００６】
【非特許文献１】後藤、外２名、“並列分散による映像イベント検出の高速化”、情報処理学会研究報告、Vol.2012-AVM-76、No.2、2012年2月23日、p.1-6
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ハードウェアリソースの物理的な制約から同時的・並列的に実行可能なプロセスの数には上限があるため、分割された全ての処理区間に対してプロセスを割り当てることができない場合がある。
【０００８】
特に映像データが複数の場合、分割された処理区間の総数が膨大になるため、それら全ての処理区間に対してプロセスを常に割り当てることは更に困難となる。
【０００９】
すなわち、映像データを解析するためのタスクに対してプロセスの数を十分に確保できないという課題がある。これについて、十分な数のプロセスを確保するまでプロセスの割当処理を待機しておき、他のタスクの完了に伴って割当可能な数のプロセスが確保できたタイミングで割り当て、映像の解析処理を開始する方法もある。しかし、タスクが開始されるまでの待機時間が長くなり、ハードウェアリソースの稼働率が低下してしまう。
【００１０】
本発明は、上記事情を鑑みてなされたものであり、ハードウェアリソースの稼働率を改善すること目的とする。
【課題を解決するための手段】
【００１１】
請求項１に記載の並列分散映像解析装置は、各プロセスが同時に解析処理を完了するように、処理中のプロセスに割り当てられた未解析の処理区間を含めて解析対象の映像データを按分し、未使用のプロセスと前記処理中のプロセスにそれぞれ割り当てる割当手段と、各プロセスの識別子と当該各プロセスにそれぞれ割り当てられた処理区間との対応データを映像解析用のスケジュールとして記憶しておく記憶手段と、を有することを要旨とする。
【００１２】
請求項２に記載の並列分散映像解析方法は、コンピュータにより、各プロセスが同時に解析処理を完了するように、処理中のプロセスに割り当てられた未解析の処理区間を含めて解析対象の映像データを按分し、未使用のプロセスと前記処理中のプロセスにそれぞれ割り当てる割当ステップと、各プロセスの識別子と当該各プロセスにそれぞれ割り当てられた処理区間との対応データを映像解析用のスケジュールとして記憶手段に記憶しておく記憶ステップと、を有することを要旨とする。
【００１３】
請求項３に記載の並列分散映像解析プログラムは、請求項２に記載の並列分散映像解析方法をコンピュータに実行させることを要旨とする。
【００１４】
以上より、本発明によれば、各プロセスが同時に解析処理を完了するように、処理中のプロセスに割り当てられた未解析の処理区間を含めて解析対象の映像データを按分し、未使用のプロセスと上記処理中のプロセスにそれぞれ割り当てるため、解析対象である映像データの処理区間が処理中のプロセスにも割り当てられることから、ハードウェアリソースの高い稼働率を実現できる。
【発明の効果】
【００１５】
本発明によれば、ハードウェアリソースの高い稼働率を実現できる。
【図面の簡単な説明】
【００１６】
【図１】プロセス割当時のスケジューリングの例を示す図である。
【図２】基本処理区間長の算出式を説明する際の参照図である。
【図３】並列分散映像解析装置の機能ブロック構成を示す図である。
【図４】タスクデータの例を示す図である。
【図５】スケジュールデータの例を示す図である。
【図６】映像解析処理フローの全体を示すフローチャートである。
【図７】割当可能ワーカ調査処理フローを示すフローチャートである。
【図８】処理区間計算・割当処理フローを示すフローチャートである。
【図９】処理区間の割当例を示す図である。
【図１０】イベント検出処理フローを示すフローチャートである。
【図１１】処理区間延長結果の例を示す図である。
【図１２】検出結果統合処理フローを示すフローチャートである。
【図１３】並列分散映像解析装置の構築例を示す図である。
【発明を実施するための形態】
【００１７】
最初に、本発明について概説する。
【００１８】
本発明は、利用可能な空きプロセスと既に処理中のプロセスで解析対象の映像データを按分し、全てのプロセスが同時に解析処理を完了するように、処理中のプロセスに割り当てられた未解析の処理区間の長さを考慮してスケジューリングすることにより、ハードウェアリソースの高い稼働率を実現するようにしている。
【００１９】
これについて、図１を参照しながら説明する。例えば、プロセスの最大数は４つとする。また、ある映像データＶ１を解析するためのタスクＴ１に対して既に２つのプロセスＰ１，Ｐ２が割り当てられており、現在解析中とする（図１（ａ））。
【００２０】
このとき、新たな映像データＶ２を解析するため、解析用の指定プロセス数を４つとする新規タスクＴ２が入力された場合、指定された４つのプロセスで同時に解析処理を完了するように、上記処理中のプロセスＰ１，Ｐ２にも当該映像データＶ２の解析処理を割り当てる。
【００２１】
具体的には、まず、その新たな映像データＶ２の映像長と、処理中のプロセスＰ１，Ｐ２に割り当てられた未解析の処理区間長との合計を、４つのプロセスＰ１〜Ｐ４で按分する（図１（ｂ））。
【００２２】
そして、按分された複数の処理区間Ｒ１〜Ｒ４のうち、上記未解析の処理区間を含む処理区間Ｒ１，Ｒ２を処理中のプロセスＰ１，Ｐ２にそれぞれ割り当て、それ以外の処理区間Ｒ３，Ｒ４を未使用のプロセスＰ３，Ｐ４にそれぞれ割り当てる（図１（ｃ））。
【００２３】
そして、プロセスＰ３，Ｐ４は、直ちに各処理区間Ｒ３，Ｒ４での解析処理（並列に映像解析）を開始し、プロセスＰ１，Ｐ２は、既に割り当てられているタスクＴ１の解析処理が完了した後に、タスクＴ２の処理区間Ｒ１，Ｒ２（図１（ｃ）の斜線部分を除く区間）の解析処理を開始するようにスケジューリングする。
【００２４】
つまり、全てのプロセスＰ１〜Ｐ４での解析処理が同時に完了するように、未使用のプロセスＰ３，Ｐ４以外に、処理中のプロセスＰ１，Ｐ２にも当該映像データＶ２の解析処理を割り当てるため、映像の並列解析処理時にハードウェアリソースを最大限に利用することが可能となる。
【００２５】
ここで、そのようなスケジューリング時に用いる処理区間長の算出式についても予め概説しておく。図２に示すように、ｎ個のプロセスＰｉ（Ｐ１〜Ｐｍ：処理中のプロセス、Ｐｍ＋１〜Ｐｎ：未使用のプロセス）で映像長Ｌの映像データＶ２を解析処理する場合、各プロセスＰｉの処理速度が等しいとすると、以下の式（１）が成立する。
【数１】
2014228924.tif 000003
【００２６】
但し、ｄは、未使用のプロセスＰｍ＋１〜Ｐｎにそれぞれ割り当てられる各未処理区間長であり、ｇｉは、処理中のプロセスＰ１〜Ｐｍにそれぞれ既に割り当てられていた未解析の各処理区間長である。
【００２７】
この式（１）を変形すると以下の式（２）になるため、ある映像データＶを解析するための新規タスクＴが入力された場合には、その式（２）を用いてｄの値を算出し、ｄ長の各処理区間を未使用のプロセスＰｍ＋１〜Ｐｎにそれぞれ割り当て、（ｄ−ｇｉ）長の各処理区間を処理中のプロセスＰ１〜Ｐｍにそれぞれ割り当てるようにスケジューリングする。
【数２】
2014228924.tif 000004
【００２８】
但し、“ｇｉ＜ｄ”が条件となる。仮にｇｉの値が全て等しい（ｇ１＝ｇ２＝…＝ｇｍ＝ｇ）ならば、式（２）より以下の式（３）が成立するため、それを変形した以下の式（４）が条件式となる。
【数３】
2014228924.tif 000005
【数４】
2014228924.tif 000006
【００２９】
以下、本発明を実施する一実施の形態について図面を用いて説明する。以降、プロセスを実行する環境のことをワーカという。例えば、ＣＰＵやマルチコアＣＰＵの場合は物理コアがあり、ハイパースレッディングが可能なＣＰＵの場合は論理コアがある。映像処理のようなＣＰＵ処理性能に依存する処理は、１つのワーカで複数のプロセスを実行させるのは効率が悪く、１ワーカに１プロセスを割り当てて実行させるのがよい。
【００３０】
図３は、本実施の形態に係る並列分散映像解析装置１の機能ブロック構成を示す図である。この並列分散映像解析装置１は、映像解析用のタスクの入力を受け付けるタスク受付部１１と、そのタスクデータを記憶するタスク記憶部１２と、入力された映像データを記憶する映像記憶部１３と、タスクへのワーカ割当処理等を実行するタスク割当部１４と、ワーカに割り当てられた処理区間等を映像解析用のスケジュールデータとして記憶するワーカスケジュール記憶部１５と、処理中のワーカに既に割り当てられている未解析の処理区間長等を記憶する未処理長記憶部１６と、複数のワーカにより映像データを解析するワーカ部１７と、各解析結果を中間結果データとして記憶する中間結果記憶部１８と、中間結果データを統合する結果統合部１９と、統合データを記憶する処理結果記憶部２０と、で構成される。
【００３１】
これらの各機能部は、メモリやＣＰＵを備えたコンピュータで実現できる。また、各機能部の処理は、プログラムにより実行可能である。これらは互いに、バス、イーサネットケーブル、ＵＳＢケーブル等による有線接続、無線ＬＡＮ等の通信手段を用いて相互通信可能に接続されている。
【００３２】
次に、図４〜図１２を参照しながら、並列分散映像解析装置１の動作について説明する。
【００３３】
最初に、タスクデータについて説明する。タスクデータは、ユーザによって生成された映像解析用のタスクであり、タスク受付部１１によってその入力が受け付けられた後に、タスク記憶部１２に記憶される。
【００３４】
タスクデータの例を図４に示す。タスクデータには、タスクのＩＤと、そのタスクで解析される映像データのＩＤと、そのタスクで指定されたワーカの数と、そのタスクの処理状態を示した処理状態フラグとが対応付けて格納される。
【００３５】
例えば、ユーザにより映像データＩＤと指定ワーカ数が入力されると、それ用のタスクＩＤを付与した１つのタスクが生成され、タスクデータのレコードに追加される。但し、処理状態フラグは、「処理前」、「処理中」、「処理完了」のうちいずれかが処理段階に応じて設定される。
【００３６】
次に、スケジュールデータについて説明する。スケジュールデータは、ワーカに対して割り当てられた映像データの処理区間等を示したワーカスケジュールであり、このワーカスケジュールに基づいて映像データの解析処理が実行される。タスク割当部１４によってその割当処理等が実行された後にワーカスケジュール記憶部１５に記憶され、ワーカによる解析処理が完了した後に該当レコードが削除される。
【００３７】
スケジュールデータの例を図５に示す。スケジュールデータには、ワーカスケジュールのＩＤと、そのワーカスケジュールで処理されるタスクのＩＤと、そのタスクに対して割り当てられたワーカのＩＤと、処理中フレームのタイムスタンプと、処理開始フレームのタイムスタンプと、処理終了フレームのタイムスタンプと、そのワーカスケジュールの処理状態を示した状態フラグとが対応付けて格納される。
【００３８】
状態フラグには「処理前」又は「処理中」が処理段階に応じて設定される。「処理前」とは、ワーカでの解析処理が開始されていない状態を表している。一方、「処理中」とは、解析処理を実行中であることを表している。
【００３９】
また、処理開始フレームのタイムスタンプと処理終了フレームのタイムスタンプとは、割り当てられた処理区間の開始点と終了点を表している。ワーカは、この処理区間に含まれるフレームに対してイベントの検出処理を実行する。また、処理中フレームとは、ワーカが現在処理中のフレームのタイムスタンプを表している。
【００４０】
続いて、並列分散映像解析装置１で行う映像解析処理の全体動作について説明する。
【００４１】
図６は、映像解析処理の全体を示すフローチャートである。まず、タスク割当部１４が、タスクデータをタスク記憶部１２から取得して、全てのタスクの処理状態フラグが「処理完了」であるかを判定する（ステップＳ１０１）。
【００４２】
そして、全てのタスクの処理状態フラグが「処理完了」でない場合、入力が一番古く、処理状態フラグが「処理前」のタスクをタスクデータから取得する（ステップＳ１０２）。
【００４３】
次に、タスク割当部１４は、割当ワーカＩＤをワーカスケジュール記憶部１５から取得して、ワーカスケジュールに対して既に割り当てられている割当済ワーカの総数を求め、並列分散映像解析装置１で実行可能な最大ワーカ数から未使用の空きワーカ数ａを算出する（ステップＳ１０３）。
【００４４】
次に、タスク割当部１４は、その空きワーカ数ａが、ステップＳ１０２で取得した対象タスクの指定ワーカ数ｒ以上であるかを判定する（ステップＳ１０４）。
【００４５】
そして、空きワーカ数ａが指定ワーカ数ｒよりも小さい（ａ＜ｒ）場合、割当可能ワーカ調査処理により、現在処理中であるが割当可能なワーカ数ｐを求め（ステップＳ１０５）、空きワーカ数ａと割当可能ワーカ数ｐの合計と指定ワーカ数ｒとの比較結果から、対象タスクを指定ワーカ数ｒで処理できるかを判定する（ステップＳ１０６）。
【００４６】
一方、空きワーカ数ａが指定ワーカ数ｒ以上（ａ≧ｒ）の場合、又は、ステップＳ１０６で処理可能（（ａ＋ｐ）≧ｒ）な場合、処理区間計算・割当処理により、対象タスクの映像データを按分し、空きワーカや割当可能ワーカに割り当てる（ステップＳ１０７）。
【００４７】
ステップＳ１０７の後、タスク割当部１４は、その割当処理時に生成されたワーカスケジュールの状態フラグを「処理中」に変更し（ステップＳ１０８）、ワーカ部１７が、イベント検出処理を実行した後に（ステップＳ１０９）、そのワーカスケジュールをワーカスケジュール記憶部１５から削除する（ステップＳ１１０）。
【００４８】
その後、タスク割当部１４は、対象タスクに関連する全てのワーカスケジュールの検出結果が中間結果記憶部１８に記憶されているかを判定する（ステップＳ１１１）。
【００４９】
そして、関連する全ワーカスケジュールの検出結果が記憶されている場合、結果統合部１９は、それら全ての検出結果を統合する（ステップＳ１１２）。
【００５０】
一方、関連する全ワーカスケジュールの検出結果が記憶されていない場合、又は、ステップＳ１１２の後、タスク割当部１４は、対象タスクにおいて状態フラグが「処理前」のワーカスケジュールが存在するかを判定し（ステップＳ１１３）、存在する場合にはステップＳ１０８に戻り、存在しない場合には本フローを終了する。
【００５１】
尚、ステップＳ１０６で処理不可能（（ａ＋ｐ）＜ｒ）な場合、又は、ステップＳ１０１で全てのタスクの処理状態フラグが「処理完了」の場合には、直ちに本フローを終了する。
【００５２】
次に、図７を参照しながら、割当可能ワーカ調査処理（図６のステップＳ１０５）について説明する。まず、タスク割当部１４は、全てのワーカスケジュールをワーカスケジュール記憶部１５から取得して、以下の式（５）より、各ワーカの未処理区間長ｇｉを算出する（ステップＳ２０１）。
【数５】
2014228924.tif 000007
【００５３】
但し、ｅｉは、各ワーカスケジュールの処理終了フレームのタイムスタンプであり、ｃｉは、そのワーカスケジュールの処理中フレームのタイムスタンプである。
【００５４】
ここで、１つのワーカが複数のタスクスケジュールに割り当てられているかを判定し（ステップＳ２０２）、その場合には該当する全てのワーカスケジュールの未処理区間長ｇｉを合計することにより、各ワーカの未処理区間長ｇｉを算出する（ステップＳ２０３）。
【００５５】
その後、各ワーカが以下の式（６）の条件式を満たすかを判定する（ステップＳ２０４）。この条件式を満たすワーカは、「処理中」ではあるが、新たに処理区間を割当可能なワーカとなる。
【数６】
2014228924.tif 000008
【００５６】
式（６）は、式（４）の変形式である。式（４）の右辺分母のｎは指定ワーカ数ｒに相当し、ｍは（指定ワーカ数ｒ−空きワーカ数ａ）に相当するため、式（６）の右辺分母ではａに変形している。
【００５７】
そして、式（６）の条件式を満たすワーカがあれば、そのワーカのＩＤと当該ワーカの未処理区間長ｇｉとを対応付けて未処理長記憶部１６に記憶し（ステップＳ２０５）、割当可能ワーカ数ｐ（初期値：０）をインクリメントする（ステップＳ２０６）。
【００５８】
その後、テップＳ２０４〜テップＳ２０６を全てのワーカスケジュールに対して実行し（ステップＳ２０７）、未処理長記憶部１６内の対応データを未処理区間長ｇｉの小さい順にソートして（ステップＳ２０８）、本フローを終了する。
【００５９】
次に、図８を参照しながら、処理区間計算・割当処理（図６のステップＳ１０７）について説明する。まず、タスク割当部１４は、指定ワーカ数ｒと空きワーカ数ａとを比較する（ステップＳ３０１）。
【００６０】
そして、指定ワーカ数ｒが空きワーカ数ａよりも大きい（ｒ＞ａ）場合、指定ワーカ数ｒと空きワーカ数ａから不足ワーカ数ｍ（初期値：０）を算出し（ステップＳ３０２）、未処理長記憶部１６から未処理区間長が短い順にｍ個分だけ、割当可能ワーカの未処理区間長ｇｉとそのワーカのＩＤを取得して（ステップＳ３０３）、その合計長Ｌｒ（初期値：０）を算出する（ステップＳ３０４）。
【００６１】
一方、指定ワーカ数ｒが空きワーカ数ａ以下（ｒ≦ａ）場合、前述のステップＳ１０２で取得した対象タスクに対して空きワーカのみで処理できることから、ステップＳ３０２〜ステップＳ３０４は実行しない。
【００６２】
その後、指定ワーカ数ｒを分割数ｄｖに設定し（ステップＳ３０５）、対象タスクである映像データの映像長Ｌを映像記憶部１３から取得する（ステップＳ３０６）。
【００６３】
そして、以下の式（７）より、対象タスクの映像データを解析処理するための基本処理区間長ｄを算出する（ステップＳ３０７）。
【数７】
2014228924.tif 000009
【００６４】
その後、この基本処理区間長ｄを用いて、各ワーカに与えられるワーカスケジュールＰｉの処理開始フレームのタイムスタンプｓｉと処理終了フレームのタイムスタンプｅｉを算出する。
【００６５】
具体的には、変数ｉ，ｊの各初期値を１とし、ｍ個の処理中の割当可能ワーカに対する処理区間を求める場合（１≦ｉ≦ｍ）には、未処理区間の処理完了後に新たに割り当てようとする処理区間を開始させるため、基本処理区間長ｄから自身の未処理区間長ｇｊを引いた長さ分の処理区間長（ｄ−ｇｊ）を割り当てる。
【００６６】
つまり、（１≦ｉ≦ｍ）のワーカスケジュールＰｉについては、以下の式（８）及び式（９）より、処理開始フレームのタイムスタンプｓｉと処理終了フレームのタイムスタンプｅｉを算出し、そのワーカスケジュールＰｉ（ｓｉ，ｅｉ）に割当可能ワーカを割り当てる（ステップＳ３０８）。
【数８】
2014228924.tif 000010
【００６７】
一方、ａ個の空きワーカに対する処理区間を求める場合（ｍ＜ｉ≦ａ＋ｍ）には、基本処理区間長ｄの長さ分の処理区間長ｄを割り当てる。
【００６８】
つまり、（ｍ＜ｉ≦ａ＋ｍ）のワーカスケジュールＰｉについては、以下の式（１０）及び式（１１）より、処理開始フレームのタイムスタンプｓｉと処理終了フレームのタイムスタンプｅｉを算出し、そのワーカスケジュールＰｉ（ｓｉ，ｅｉ）に空きワーカを割り当てる（ステップＳ３０９）。
【数９】
2014228924.tif 000011
【００６９】
最後に、対象タスクの処理状態フラグを「処理前」から「処理中」に変更する（ステップＳ３１０）。
【００７０】
以上より、全てのワーカの処理区間を同じ長さに設定し、全てのワーカの処理が同時に完了するようにスケジューリングすることが可能となる。
【００７１】
ここで、図９を参照しながら、処理区間の割当例について説明する。指定ワーカ数が４つの場合に、２つの処理中のワーカＷ１，Ｗ２と、２つの空きワーカＷ３，Ｗ４に処理区間を割り当てる具体例である。
【００７２】
処理中のワーカＷ１，Ｗ２には、映像長が５，０００（ｍｓ）の映像データＶ１を解析するためのタスクＴ１が与えられている。そして、ワーカＷ１には、ワーカスケジュールＰ１［０〜２，５００（ｍｓ）］が既に割り当てられ、ワーカＷ２には、ワーカスケジュールＰ２［２，５００〜５，０００（ｍｓ）］が既に割り当られている。各ワーカＷ１，Ｗ２の未処理区間長はそれぞれ５００（ｍｓ）であり、タスクＴ１の映像データＶ１全体で１，０００（ｍｓ）が未処理である（図９（ａ））。
【００７３】
このとき、映像長が１０，０００（ｍｓ）の映像データＴ２が入力され、それを解析するためのタスクＴ２が与えられた場合、映像データＶ１の未処理区間Ｌｒと映像データＶ２の映像長Ｌとの合計長１１，０００（ｍｓ）を４つのワーカＷ１〜Ｗ４で処理するように、前述の式（７）を用いて２，７５０（ｍｓ）の基本処理区間長ｄを求め、全てのワーカＷ１〜Ｗ４が当該基本処理区間長ｄを処理するようにスケジューリングする（図９（ｂ））。
【００７４】
本例の場合、映像データＶ１の未処理区間長（５００（ｍｓ））を考慮して、ワーカＷ１には、ワーカスケジュールＰ３［０〜２，２５０（ｍｓ）］を割り当て、ワーカＷ２には、ワーカスケジュールＰ４［２，２５０〜５，５００（ｍｓ）］を割り当てる。また、映像データＶ２からワーカスケジュールＰ３，Ｐ４を差し引いた残り映像区間を基にして、ワーカＷ３には、ワーカスケジュールＰ５［５，５００〜７，７５０（ｍｓ）］を割り当て、ワーカＷ４には、ワーカスケジュールＰ６［７，７５０〜１０，０００（ｍｓ）］を割り当てる。
【００７５】
そして、ワーカＷ３，Ｗ４は、実行中のタスクがないので、割り当てられた後、直ちにタスクＴ２の解析処理を開始する。一方、ワーカＷ１，Ｗ２は、タスクＴ１を実行中のため、そのタスクＴ１の完了後にタスクＴ２を実行する。その際、ワーカスケジュールＰ１，Ｐ２は、処理完了時にワーカスケジュール記憶部１５から削除される（図９（ｃ））。
【００７６】
このような割当処理により、全てのワーカの処理区間長が等しくなるので、各ワーカの処理速度が等しい場合には解析処理を同時に終了することができる。尚、処理速度がワーカ毎に異なる場合には、上記の処理区間計算方法をベースにしながら、処理速度の影響を考慮してワーカ毎に処理区間長を調整して按分する方法が考えられる。
【００７７】
次に、図１０を参照しながら、イベント検出処理（図６のステップＳ１０９）について詳述する。
【００７８】
まず、ワーカ部１７は、複数のワーカにより、タスク割当部１４によって割り当てられた処理区間の処理開始フレームからイベントの検出処理を開始する（ステップＳ４０１）。
【００７９】
そして、処理終了フレームに到達すると（ステップＳ４０２）、処理中のフレームにおけるイベントの検出状態（「検出中」又は「未検出」）を判定し（ステップＳ４０３）、この判定結果を基にして処理区間を延長するかを判断する。
【００８０】
ここで、イベントを「検出中」の場合、すなわち、次の処理区間までイベントが継続して存在する場合には、現在検出中のイベントが終了するまで、処理区間を延長しながらイベントの検出処理を継続する（ステップＳ４０４）。
【００８１】
その後、イベントの検出処理が完了すると、ステップＳ４０３の判定結果がＮｏとなり、検出したイベントの発生区間（開始フレームのタイムスタンプと終了フレームのタイムスタンプ）と検出処理に応じた補助情報（例えば、カメラワーク検出時のカメラの動き情報やテロップ検出時のテロップの出現座標）を中間結果記憶部１８に送信し（ステップＳ４０５）、本フローを終了する。
【００８２】
処理区間延長結果の例を図１１に示す。例えば、図１１（ａ）に示すように、ワーカスケジュールＰ１［０〜１０，０００（ｍｓ）］がワーカＷ１に割り当てられ、ワーカスケジュールＰ２［１０，０００〜２０，０００（ｍｓ）］がワーカＷ２に割り当てられており、処理終了フレームのタイムスタンプ［１０，０００（ｍｓ）］に到達したときに、ワーカＷ１においてイベントの検出中であったとする。
【００８３】
この場合、そのワーカＷ１は、処理終了フレームのタイムスタンプを映像後方に変更しながら解析処理を継続し、図１１（ｂ）に示すように、イベントの検出処理が終了したとき（ここではタイムスタンプが［１３，０００（ｍｓ）］の地点）に解析処理を終了する。
【００８４】
このように処理区間を延長することにより、ワーカＷ１で解析処理されるワーカスケジュールＰ１の終了点が３，０００（ｍｓ）分だけ映像後方に変更されるので、ワーカスケジュール記憶部１５に記憶される処理区間のデータが更新される。すなわち、処理開始点が０（ｍｓ）、処理終了点が１０，０００（ｍｓ）と記憶されていた処理区間のデータは、０（ｍｓ）、１３，０００（ｍｓ）にそれぞれ変更され、ワーカスケジュール記憶部１５に記憶される。
【００８５】
次に、図１２を参照しながら、検出結果統合処理（図６のステップＳ１１２）について詳述する。
【００８６】
まず、結果統合部１９は、対象タスクの各検出結果を中間結果記憶部１８から取得して（ステップＳ５０１）、処理区間順に１つの処理結果として統合する（ステップＳ５０２）。
【００８７】
このとき、解析処理において処理区間の延長が発生していると、複数のワーカで重複した映像区間が処理されたことになる。そこで、オーバラップしている処理区間の検出結果が存在するかを判定し（ステップＳ５０３）、存在する場合には、時間的に映像の先頭に近い処理区間で検出した検出結果を当該処理区間の正しい検出結果とみなして統合する（ステップＳ５０４）。
【００８８】
そして、対象タスクで検出された全ての処理結果を統合した後（ステップＳ５０５）、タスクの処理状態フラグを「処理完了」に変更する（ステップＳ５０６）。
【００８９】
以上で映像解析処理についての説明を終了する。
【００９０】
これまで説明した並列分散映像解析装置１の構築例を図１３に示す。図１３（ａ）に示すように、マルチコアＣＰＵの１つのコア（１）がタスク割当部としてタスク管理を行い、これに接続された複数のコア（２）〜（４）が複数のワーカＷとして並列に映像解析するようにしても構わない。
【００９１】
また、図１３（ｂ）に示すように、１台のサーバがタスク割当部としてタスク管理を行い、これに接続された複数のサーバ（１）〜（３）が複数のワーカＷとして並列に映像解析するようにしても構わない。
【００９２】
これら以外にも、マルチコアＣＰＵを持つ複数のサーバにより、映像の解析処理を並列して実行するように構成してもよい。このように、各ワーカが独立して動作可能な環境であればワーカの構築形態はどのような形態でも採用できる。
【００９３】
以上より、本実施の形態によれば、利用可能な空きワーカと既に処理中のワーカで解析対象の映像データを按分し、全てのワーカが同時に解析処理を完了するように、処理中のワーカに割り当てられた未解析の処理区間の長さを考慮してスケジューリングするので、ハードウェアリソースの稼働率を高く保ちながら、並列分散による高速な映像解析を実現できる。
【００９４】
また、本実施の形態によれば、分割した処理区間の終了時点でイベント検出中である場合、処理区間を延長させて他のワーカとの処理区間にオーバラップ区間を発生させるので、精度の高い解析処理が可能であると共に、必要以上のオーバラップ区間を多発させることなく、更に効率的な稼働による映像解析が可能になる。
【００９５】
また、上述した並列分散映像解析装置１の各機能部の機能を実行するプログラムをコンピュータに搭載することにより、当該コンピュータを並列分散映像解析装置１として機能させる映像解析処理用プログラムを構築することも可能である。
【符号の説明】
【００９６】
１…並列分散映像解析装置
１１…タスク受付部
１２…タスク記憶部
１３…映像記憶部
１４…タスク割当部
１５…ワーカスケジュール記憶部
１６…未処理長記憶部
１７…ワーカ部
１８…中間結果記憶部
１９…結果統合部
２０…処理結果記憶部
Ｓ１０１〜Ｓ１１３、Ｓ２０１〜Ｓ２０８、Ｓ３０１〜Ｓ３１０、Ｓ４０１〜Ｓ４０５、Ｓ５０１〜Ｓ５０６…ステップ
【図１】
2014228924.tif 000012
【図２】
2014228924.tif 000013
【図３】
2014228924.tif 000014
【図４】
2014228924.tif 000015
【図５】
2014228924.tif 000016
【図６】
2014228924.tif 000017
【図７】
2014228924.tif 000018
【図８】
2014228924.tif 000019
【図９】
2014228924.tif 000020
【図１０】
2014228924.tif 000021
【図１１】
2014228924.tif 000022
【図１２】
2014228924.tif 000023
【図１３】
2014228924.tif 000024