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