以下に、本願の開示する検出装置、検出方法および検出プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。
図1は、本実施例1にかかるシステムの一例を説明するための図である。図1に示すように、カメラ10a,10b,10c,10dと、検出装置100とを有する。図示を省略するが、競技エリア5において、複数の選手がボールを用いた競技を行うものとする。本実施例1では一例として、選手がバスケットボールを行う場合について説明を行うが、選手が行う競技はバスケットボールに限られない。たとえば、選手が行う競技は、サッカー、バスケット、ハンドボール、ホッケー、ラグビー、ラクロス等の競技を含む。カメラ10a,10b,10c,10dと、検出装置100とは相互に接続される。
カメラ10a〜10dは、競技エリア5の映像を撮影するカメラである。本実施例1では、一例として、カメラ10a〜10dを用いて、競技エリア5を分割して撮影する。図2は、カメラの撮影範囲の一例を示す図である。図2に示すように、カメラ10aの撮影範囲は撮影範囲11aである。カメラ10bの撮影範囲は撮影範囲11bである。カメラ10cの撮影範囲は撮影範囲11cである。カメラ10dの撮影範囲は撮影範囲11dである。撮影範囲11a〜11dにより、競技エリア5全体を撮影することができる。
カメラ10a〜10dは、撮影範囲の映像データを、検出装置100に送信する。映像データは、時系列に並んだ複数の画像フレームを含む。画像フレームは、1コマの静止画像のデータである。以下の説明では、カメラ10a〜10dをまとめて、適宜、カメラ10と表記する。なお、映像データには、映像データを撮影したカメラ10を識別する情報が付与される。
検出装置100は、カメラ10から映像データに含まれる各画像フレームを解析し、競技エリア5上の選手およびボールの位置を追跡し、追跡結果を基にしてイベントを検出する処理を繰り返し、スタッツ情報を生成する装置である。検出装置100は、イベントを検出する場合に、イベントの信頼度を算出し、信頼度の低いイベントが存在する場合には、予め学習しておいた学習器を用いて、イベントの再検出を行う。
イベントは、競技中に発生する所定の事象である。たとえば、競技がバスケットボールである場合には、イベントは、パス、シュート、リバウンド、ドリブル、スティール等に対応する。
図3は、本実施例1に係る検出装置の構成を示す機能ブロック図である。図3に示すように、この検出装置100は、通信部110、入力部120、表示部130、記憶部140、制御部150を有する。
通信部110は、ネットワーク等を介して、カメラ10との間でデータ通信を実行する処理部である。たとえば、カメラ10から映像データを受信する。通信部110は、受信した映像データを、制御部150に出力する。通信部110は、通信装置の一例である。
入力部120は、検出装置100に各種の情報を入力するための入力装置である。入力部120は、たとえば、キーボードやマウス、タッチパネル等に対応する。
表示部130は、制御部150から出力される各種の情報を表示するための表示装置である。表示部130は、たとえば、液晶ディスプレイ、タッチパネル等に対応する。表示部130は、制御部150から、スタッツ情報を受け付けた場合には、スタッツ情報を表示する。
記憶部140は、バッファ140a、変換テーブル140b、選手管理テーブル140c、ボール管理テーブル140d、イベント定義情報140e、イベントファイル140f、第1学習器140g、第2学習器140h、状態管理テーブル165を有する。記憶部140は、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子や、HDD(Hard Disk Drive)などの記憶装置に対応する。
バッファ140aは、カメラ10から送信される映像データを保持するバッファである。図4は、本実施例1に係るバッファのデータ構造の一例を示す図である。図4に示すように、バッファ140aは、複数のテーブル141a,141b,141c,141dを有する。
テーブル141aは、カメラ10aが撮影した映像データを格納するテーブルである。テーブル141bは、カメラ10bが撮影した映像データを格納するテーブルである。テーブル141cは、カメラ10cが撮影した映像データを格納するテーブルである。テーブル141dは、カメラ10dが撮影した映像データを格納するテーブルである。
テーブル141a〜141dはそれぞれ、カメラ識別情報と、フレーム番号と、時刻と、画像フレームとを対応づける。カメラ識別情報は、カメラ10を一意に識別する情報である。フレーム番号は、画像フレームを一意に識別する情報である。時刻は、画像フレームを撮影した時刻を示す。画像フレームは、フレーム番号に対応する画像フレームである。
変換テーブル140bは、カメラ10が撮影した画像フレーム上の座標と、競技エリア5上の座標とを対応づけるテーブルである。図5は、本実施例1に係る変換テーブルのデータ構造の一例を示す図である。図5に示すように、変換テーブル140bは、第1変換テーブル142aと、第2変換テーブル142bと、第3変換テーブル142cと、第4変換テーブル142dとを有する。
第1変換テーブル142aは、カメラ10aが撮影する画像フレーム上の座標と、競技エリア5上の座標とを対応づけるテーブルである。第2変換テーブル142bは、カメラ10bが撮影する画像フレーム上の座標と、競技エリア5上の座標とを対応づけるテーブルである。第3変換テーブル142cは、カメラ10cが撮影する画像フレーム上の座標と、競技エリア5上の座標とを対応づけるテーブルである。第4変換テーブル142dは、カメラ10dが撮影する画像フレーム上の座標と、競技エリア5上の座標とを対応づけるテーブルである。
ここでは一例として、第2変換テーブル142bのデータ構造について説明する。図6は、第2変換テーブルのデータ構造の一例を示す図である。図6に示すように、第2変換テーブル142bは、画像フレーム座標と、全体座標とを対応づける。画像フレーム座標は、カメラ10bが撮影した画像フレーム上の座標を示すものである。画像フレーム座標を、ピクセルによって示す。全体座標は、競技エリア5の座標を示すものである。全体座標の単位を「m」とする。たとえば、画像フレーム座標「0,1」は、全体座標「25.2,13,6」に対応する。
図7は、画像フレーム座標系と全体座標系との関係を説明するための図である。図7において、画像フレーム5bは、ある時刻において、カメラ10bにより撮影された画像フレームに対応する。たとえば、画像フレーム5b上の画像フレーム座標(xn,yn)は、競技エリア5上の全体座標(Xn,Yn)に対応する。
ここでは説明を省略するが、第1変換テーブル142a、第3変換テーブル142c、第4変換テーブル142dも同様にして、画像フレーム座標と、全体座標との関係を定義する。
図3の説明に戻る。選手管理テーブル140cは、各画像フレームから検出された各選手に関する各種の情報を保持するテーブルである。図8は、本実施例1に係る選手管理テーブルのデータ構造の一例を示す図である。図8に示すように、この選手管理テーブル140dは、選手識別情報と、チーム識別情報と、時刻と、座標と、評価値とを対応付ける。
選手識別情報は、選手を一意に識別する情報である。チーム識別情報は、選手の属するチームを一意に識別する情報である。時刻は、時刻を示す情報である。座標は、選手の座標(全体座標系の座標)を示す。評価値は、該当する情報の確からしさを数値化したものである。評価値は、値が大きいほど、より確からしいとする。たとえば、チーム識別情報「A」のチームに属する選手識別情報「H101」の選手は、時刻「T1」において、座標「xa11,ya11」に位置し、この情報の評価値が「0.9」であることが示される。
ボール管理テーブル140dは、各画像フレームから検出されたボールに関する各種の情報を保持するテーブルである。図9は、本実施例1に係るボール管理テーブルのデータ構造の一例を示す図である。図9に示すように、このボール管理テーブル140dは、時刻と、座標と、評価値とを対応付ける。
時刻は時刻を示す情報である。座標は、ボールの座標(全体座標系の座標)を示す。評価値は、該当する情報の確からしさを数値化したものである。評価値は、数値が大きいほど、より確からしいとする。たとえば、時刻「T1」において、ボールが「x1、y1」に位置し、この情報の評価値が「0.9」であることが示される。
イベント定義情報140eは、ボールの状態遷移に対応するイベント種別を定義する情報である。図10は、本実施例1に係るイベント定義情報のデータ構造の一例を示す図である。図10に示すように、イベント定義情報140eは、イベント種別と、状態遷移とを対応付ける。イベント種別は、イベントの種別を示すものである。
状態遷移は、ボールの状態の遷移を示すものである。ボールの状態は、ボールの移動軌跡と、選手の移動軌跡とを基にして特定される状態である。一例として、ボールの状態「A#X」、「B#Y」、「#ゴール」、「※」を定義する。「A#X」は、Aチームの選手Xの座標とボールの座標との距離が所定距離未満となる時間が、所定時間以上であることを示す。「B#Y」は、Bチームの選手Yの座標とボールの座標との距離が所定距離未満となる時間が、所定時間以上であることを示す。「#ゴール」は、ボールの位置が、ゴールを基準とする所定領域に含まれることを示す。「※」は、ボールの状態が、どのような状態であってもよいことを示す。
状態遷移「A#X1→※→A#X2」または「B#Y1→※→B#Y2」となる場合に、イベント種別は「パス」となる。状態遷移「A#X1→※→A#X2」は、ボールの状態が、Aチームの選手X1の座標から、Aチームの選手X2の座標に遷移したことを示す。状態遷移「B#Y1→※→B#Y2」は、ボールの状態が、Bチームの選手Y1の座標から、Bチームの選手Y2の座標に遷移したことを示す。
状態遷移「A#X→※→B#Y」または「B#Y→※→A#X」となる場合に、イベント種別は「スティール」となる。状態遷移「A#X→※→B#Y」は、ボールの状態が「A#X」から「B#Y」に遷移したことを示す。状態遷移「B#Y→※→A#X」は、ボールの状態が「B#Y」から「A#X」に遷移したことを示す。
状態遷移「A#X→※→#ゴール」または「B#Y→※→#ゴール」となる場合に、イベント種別は「シュート」となる。状態遷移「A#X→※→#ゴール」は、ボールの状態が「A#X」から「#ゴール」に遷移したことを示す。状態遷移「B#Y→※→#ゴール」は、ボールの状態が「B#Y」から「#ゴール」に遷移したことを示す。
状態遷移「A#X→A#X」または「B#Y→B#Y」となる場合に、イベント種別「ドリブル」となる。状態遷移「A#X→A#X」は、ボールの状態「A#X」が、所定時間以上継続していることを示す。状態遷移「B#Y→B#Y」は、ボールの状態「B#Y」が、所定時間以上継続していることを示す。
ここで、図10に示した、イベント種別と、状態遷移との関係は一例であり、他のイベント種別と、状態遷移とを対応付けてもよい。他のイベント種別には、アシスト、フリースロー、ファウル等が含まれる。また、イベント種別の「シュート」を「シュート(成功)」、「シュート(失敗)」、「2ポイントシュート」、「3ポイントシュート」等に区別して登録してもよい。各イベント種別に対応する状態遷移は、予め所定の状態遷移が設定される。
イベントファイル140fは、競技中に発生したイベントの情報を保持するファイルである。図11は、本実施例1に係るイベントファイルのデータ構造の一例を示す図である。図11に示すように、このイベントファイル140fは、時刻と、イベント種別と、選手識別情報と、信頼度とを対応付ける。時刻は、時刻の情報を示す。イベント種別は、イベントの種別を示す。選手識別情報は、選手を一意に識別する情報である。信頼度は、該当する情報の信頼具合を数値化したものである。信頼度は、数値が大きいほど、信頼できるものとする。
たとえば、図11の1行目では、時刻「T4」において、選手識別情報「H101」の選手がイベント種別「パス」を行い、この情報の信頼度が「0.8」であることが示される。
第1学習器140gは、深層学習等により、各選手の座標と、イベント種別との関係を学習した学習器である。図12は、本実施例1に係る第1学習器の一例を説明するための図である。図12に示すように、第1学習器140gは、ニューラルネットワークの構造を有し、入力層20a、隠れ層20b、出力層20cを持つ。入力層20a、隠れ層20b、出力層20cは、複数のノードがエッジで結ばれる構造となっている。隠れ層20b、出力層20cは、活性化関数と呼ばれる関数とバイアス値とを持ち、エッジは、重みを持つ。
入力層30aに含まれる各ノードに、各選手の座標を入力すると、隠れ層20bを通って、出力層20cの各ノードから、各イベント種別の確率が出力される。たとえば、出力層20cの各ノードから、イベント種別「パス」、「スティール」、「シュート」、「ドリブル」、「リバウンド」の各確率が出力される。
第2学習器140hは、機械学習により、イベント(イベント種別)の発生順序を学習した学習器である。図13は、本実施例1に係る第2学習器の一例を説明するための図である。図13に示すように、第2学習器140hは、イベント種別に対応づけられた複数のノードが、エッジにより接続されている。また、遷移元のノードと遷移先のノードとを結ぶエッジには、遷移する確率が付与されている。
たとえば、ノード21,23cは、イベント種別「シュート」に対応するノードである。ノード22aは、イベント種別「リバウンド」に対応するノードである。ノード22b,23aは、ノード種別「パス」に対応するノードである。ノード22bは、ノード種別「ドリブル」に対応するノードである。図13では一例として、ノード21,22a〜22c,23a〜23cを示すが、他のノードが含まれていてもよい。
ノード21の遷移先は、ノード22a,22b,22cとなる。ノード21からノード22aへの遷移の確率は「90%」である。ノード21からノード22bへの遷移の確率は「5%」である。ノード21からノード22cへの遷移の確率は「5%」である。ノード22aの遷移先は、ノード23a,23b,23cとなる。ノード22aからノード23aへの遷移の確率は「45%」である。ノード22aからノード23bへの遷移の確率は「25%」である。ノード22aからノード23cへの遷移の確率は「30%」である。
状態管理テーブル165は、時刻とボールの状態との関係を含むテーブルである。状態管理テーブル165に関する説明は後述する。
図3の説明に戻る。制御部150は、受信部150a、ボール検出部150b、選手検出部150c、イベント検出部150d、信頼度算出部150e、再検出部150f、スタッツ情報生成部150g、出力部150hを有する。制御部150は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などによって実現できる。また、制御部150は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによっても実現できる。なお、後述のボール検出部150bおよび選手検出部150cは、評価値を算出する処理を実行し、この評価値を算出する処理は、図示しない評価値算出部の処理に対応する。
受信部150aは、カメラ10から映像データを受信する処理部である。受信部150aは、受信した映像データを、バッファ140aに格納する。受信部150aは、カメラ10aから受信した映像データを、バッファ140aのテーブル141aに格納する。受信部150aは、カメラ10bから受信した映像データを、バッファ140aのテーブル141bに格納する。受信部150aは、カメラ10cから受信した映像データを、バッファ140aのテーブル141cに格納する。受信部150aは、カメラ10dから受信した映像データを、バッファ140aのテーブル141dに格納する。
ボール検出部150bは、バッファ140aに格納された各画像フレームから、ボール候補の位置を検出する処理部である。ボール検出部150bは、ボールの領域を検出する処理、ボールの領域を予測する処理、評価値を算出する処理を実行する。
ボール検出部150bが、ボールの領域を検出する処理について説明する。ここでは一例として、バッファ140aのテーブル141aに格納されたカメラ10aに撮影された映像データ(画像フレーム)から、ボールの領域を検出する処理について説明する。ボール検出部150bは、テーブル141aから、時刻T1の画像フレームと、時刻T2の画像フレームとの差分画像を生成する。ボール検出部150bは、差分画像に残った領域の面積と、ボールの面積を定義したテンプレートとの比較を行い、テンプレートの面積との差が閾値未満となる差分画像上の領域を、ボールの領域として検出する。
図14は、本実施例1に係るボール検出部の処理を説明するための図(1)である。図14に示す例では、差分画像15に、領域15a,15b,15cが含まれている。たとえば、テンプレートに定義された面積との差分が閾値未満となる領域を、領域15cとする。この場合には、ボール検出部150bは、領域15cをボールの領域として検出する。
ボール検出部150bが、ボールの領域を予測する処理について説明する。図15は、本実施例1に係るボール検出部の処理を説明するための図(2)である。一例として、領域18は、時刻t−2において検出されたボールの領域とする。領域19は、時刻t−1において検出されたボールの領域とする。
ボール検出部150bは、領域19を基準とし、ボールの形状および速度を基にして、時刻tにおけるボールの移動先の領域25を予測する。たとえば、ボール検出部150bは、時刻t−1、t−2のボールの移動距離、時刻差を基にして、ボールの速度を算出してもよい。
ボール検出部150bが、評価値を算出する処理について説明する。ここでは、上記のボールを検出する処理により、ボール検出部150bが、ボールを検出した場合と、ボールを検出できなかった場合に分けて説明を行う。
ボール検出部150bが、ボールを検出した場合の、評価値を算出する処理について説明する。図16は、本実施例1に係るボール検出部の処理を説明するための図(3)である。図16において、ボール検出部150bが検出したボールの領域を、領域15cとする。ボール検出部150bが予測したボールの領域を、領域25とする。
ボール検出部150bは、式(1)を基にして、領域15cの評価値を算出する。式(1)において、「Et」は、時刻tにおける評価値を示す。「l」は、検出したボールの領域15cと、予測したボールの領域25との距離を示す。「L」は予め設定される閾値であり、たとえば、1よりも大きい値が設定される。
Et=1−(l/L)・・・(1)
ボール検出部150bは、時刻と、座標と、評価値とを対応付けて、ボール管理テーブル140dに登録する。座標は、ボールを検出する処理で検出した領域(たとえば、領域15c)の中心座標である。
ボール検出部150bが、ボールを検出していない場合の、評価値を算出する処理について説明する。ボール検出部150bは、ボールを検出していない場合には、ボールの領域を予測する処理で予測した領域を、ボールの領域と仮定する。ボール検出部150bは、式(2)を基にして、評価値を算出する。式(2)において、「Et」は、時刻tにおける評価値を示す。「Et−1」は、時刻t−1における評価値を示す。「n」は、ロストのペナルティであり、nには、0〜1の値が設定される。
Et=Et−1−n・・・(2)
ボール検出部150bは、時刻と、座標と、評価値とを対応付けて、ボール管理テーブル140dに登録する。座標は、予測したボールの領域(たとえば、領域25)の中心座標である。
ボール検出部150bは、上記処理を繰り返し実行することで、各時刻のボールの座標、評価値をボール管理テーブル140dに登録していく。
図3の説明に戻る。選手検出部150cは、各画像フレームから選手を検出する処理部である。ここでは、選手検出部150cは、バッファ140aのテーブル141aに格納されたカメラ10aに撮影された映像データ(画像フレーム)から、選手を検出する処理について説明する。選手検出部150cは、テーブル141aから、時刻T1の画像フレームと、時刻T2の画像フレームとの差分画像を生成する。選手検出部150cは、差分画像に残った領域の面積と、選手の面積を定義したテンプレートとの比較を行い、テンプレートの面積との差が閾値未満となる差分画像上の領域を、選手として検出する。
選手検出部150cは、差分画像から算出した選手の座標(画像フレーム座標)を、変換テーブル140bを基にして、全体座標に変換する。選手検出部150cは、選手にユニークな選手識別情報を割り当てる。選手検出部150cは、選手の運動予測を行って、異なる時刻から検出される同一の選手を追跡する。また、選手検出部150cは、事前に設定される各チームのユニフォームの特徴を基にして、選手識別情報にチーム識別情報を割り当てる。ユニフォームの特徴は、ユニフォームの色等が含まれる。ボール検出部150bは、選手識別情報と、チーム識別情報と、時刻と、選手の座標(全体座標)とを対応づけて、選手管理テーブル140cに登録する。
ところで、選手検出部150cは、選手の領域について、評価値を算出する処理を実行する。図17は、本実施例1に係る選手検出部の処理を説明するための図である。たとえば、時刻t−1において検出された選手の領域を領域26aとし、時刻tにおいて検出された選手の領域を領域26とする。選手検出部150cは、領域26aと、領域26bとの類似度を算出し、算出した類似度を、領域26bの評価値として算出する。
選手検出部150cは、類似度をどのように算出してもよいが、たとえば、式(3)を基にして類似度を算出してもよい。式(3)において、「e」は、類似度(評価値)を示す。ft(x+m,y+n)は、時刻tの選手の領域において、座標(x+m,y+n)の画素値を示す。ft(x+m−i,y+n−j)は、時刻t−1の選手の領域において、座標(x+m−i,y+n−j)の画素値を示す。i,jには、予め設定された値が代入される。
選手検出部150cは、上記処理を実行することで、選手の領域の評価値を算出する。選手検出部150cは、選手の座標(選手の領域の中心座標)に、評価値を対応付けて、選手管理テーブル140cに登録する。
図3の説明に戻る。イベント検出部150dは、特定の物体の移動軌跡を特定し、特定した移動軌跡を基にして、イベントを検出する処理部である。たとえば、イベント検出部150dは、ボールの状態を判定する処理、イベントを検出する処理を行う。
イベント検出部150dが行う、ボールの状態を判定する処理について説明する。イベント検出部150dは、選手管理テーブル140cに登録された各時刻の選手の座標を追跡することで、各選手の移動軌跡を特定する。イベント検出部150dは、ボール管理テーブル140dに登録された各時刻のボールの座標を追跡することで、ボールの移動軌跡を特定する。
イベント検出部150dは、各選手の移動軌跡と、ボールの移動軌跡との関係を基にして、各時刻のボールの状態を判定する。イベント検出部150dは、各選手の移動軌跡と、ボールの移動軌跡とを比較して、Aチームの選手Xの座標とボールの座標との距離が所定距離未満となる時間が、所定時間以上である場合には、ボールの状態を「A#X」とする。イベント検出部150dは、Bチームの選手Yの座標とボールの座標との距離が所定距離未満となる時間が、所定時間以上である場合には、ボールの状態を「B#Y」とする。イベント検出部150dは、ボールの位置が、ゴールを基準とする所定領域に含まれる場合に、ボールの状態を「#ゴール」とする。イベント検出部150dは、ボールの状態が「A#X」、「B#Y」、「#ゴール」のいずれにも該当しない場合には、ボールの状態を「※」とする。
なお、イベント検出部150dが行う、上述した、ボールの状態を判定するための判定ポリシーは一例であり、他の判定ポリシーにより、ボールの状態を判定してもよい。
イベント検出部150dは、時刻とボールの状態とを対応付けて、状態管理テーブルに登録する。図18は、本実施例1に係るイベント検出部の処理を説明するための図(1)である。図18において、移動軌跡160aを、選手識別情報「H101」の移動軌跡とする。移動軌跡160bを、ボールの移動軌跡とする。移動軌跡160cを、選手識別情報「H102」の移動軌跡とする。この移動軌跡160a〜160cの関係に基づき、状態管理テーブル165が生成される。状態管理テーブル165は、時刻と、状態とを対応付ける。
移動軌跡160aにおいて、各時刻T1〜T5の選手の各座標をそれぞれ61a〜65aとする。移動軌跡160bにおいて、各時刻T1〜T8のボールの各座標をそれぞれ61b〜67bとする。移動軌跡160cにおいて、各時刻T3〜T8の選手の各座標をそれぞれ61c〜66cとする。
図18の時刻T1〜T3において、移動軌跡160aと、移動軌跡160bとの距離が所定距離未満であり、かつ、この状態が所定時間以上であるとする。そうすると、イベント検出部150dは、時刻T1〜T3のボールの状態を「A#H101」と判定する。
時刻T4〜T6において、ボールの状態は、「A#X」、「B#Y」、「#ゴール」に属さないため、イベント検出部150dは、時刻T4〜T6のボールの状態を「※」と判定する。
時刻T7〜T8において、移動軌跡160cと、移動軌跡160bとの距離が所定距離未満であり、かつ、この状態が所定時間以上であるとする。そうすると、イベント検出部150dは、時刻T7〜T8のボールの状態を「A#H101」と判定する。
図19は、本実施例1に係るイベント検出部の処理を説明するための図(2)である。図19において、移動軌跡160bを、ボールの移動軌跡とする。移動軌跡160cを、選手識別情報「H102」の移動軌跡とする。領域166を、ゴールを基準とする所定領域とする。
移動軌跡160bにおいて、各時刻T5〜T13のボールの各座標をそれぞれ64b〜72bとする。移動軌跡160cにおいて、各時刻T3〜T13の選手の各座標をそれぞれ61c〜71cとする。
図19の時刻T5,T6において、ボールの状態は、「A#X」、「B#Y」、「#ゴール」に属さないとすると、イベント検出部150dは、時刻T5〜T6のボールの状態を「※」と判定する。
図19の時刻T7〜T10において、移動軌跡160cと、移動軌跡160bとの距離が所定距離未満であり、かつ、この状態が所定時間以上であるとする。そうすると、イベント検出部150dは、時刻T7〜T10のボールの状態を「A#H102」と判定する。
図19の時刻T11,T12において、ボールの状態は、「A#X」、「B#Y」、「#ゴール」に属さないとすると、イベント検出部150dは、時刻T11,T12のボールの状態を「※」と判定する。
図19の時刻T13において、移動軌跡160bが領域166に侵入したとする。そうすると、イベント検出部150dは、時刻T13のボールの状態を「#ゴール」と判定する。
続いて、イベント検出部150dが行う、イベントを検出する処理について説明する。イベント検出部150dは、イベント定義情報140eと、状態管理テーブル165とを基にして、イベント種別を検出する。
たとえば、イベント検出部150dは、状態管理テーブル165の状態を時系列に走査し、イベント定義情報140eで定義した状態遷移にヒットするか否かを判定する。イベント検出部150dは、イベント定義情報140eで定義した状態遷移にヒットする場合には、ヒットした状態遷移に対応するイベント種別が発生したと判定する。イベント検出部150dは、イベントの発生した時刻、イベント種別、イベント種別に対応する選手識別情報を対応付けて、イベントファイル140fに登録する。
イベントの発生した時刻、イベント種別に対応する選手識別情報の一例について説明する。イベント種別が「パス」である場合には、状態遷移「A#X1→※→A#X2」において、ポールの状態が最初に「※」となった時刻を、イベント種別の発生した時刻とする。イベント種別に対応する選手識別情報は「X1」となる。同様に、状態遷移「B#Y1→※→B#Y2」において、ポールの状態が最初に「※」となった時刻を、イベント種別の発生した時刻とする。イベント種別に対応する選手識別情報は「Y1」となる。
イベント種別が「スティール」である場合には、状態遷移「A#X→※→B#Y」において、ポールの状態が最初に「※」となった時刻を、イベント種別の発生した時刻とする。イベント種別に対応する選手識別情報は「X」となる。同様に、状態遷移「B#Y→※→A#X」において、ポールの状態が最初に「※」となった時刻を、イベント種別の発生した時刻とする。イベント種別に対応する選手識別情報は「Y」となる。
イベント種別が「シュート」である場合には、状態遷移「A#X→※→#ゴール」において、ポールの状態が最初に「※」となった時刻を、イベント種別の発生した時刻とする。イベント種別に対応する選手識別情報は「X」となる。同様に、状態遷移「B#Y→※→#ゴール」において、ポールの状態が最初に「※」となった時刻を、イベント種別の発生した時刻とする。イベント種別に対応する選手識別情報は「Y」となる。
イベント種別が「ドリブル」である場合には、状態遷移「A#X→A#X」が繰り返される間の時刻を、イベント種別の発生した時刻とする。イベント種別に対応する選手識別情報は「X」となる。同様に、状態遷移「B#Y→B#Y」が繰り返される間の時刻を、イベント種別の発生した時刻とする。イベント種別に対応する選手識別情報は「Y」となる。
たとえば、図18で示した状態管理テーブル165を用いて説明すると、時刻T3〜時刻T7の状態遷移が、イベント種別「パス」の状態遷移「A#X→A#X」にヒットする。イベント検出部150dは、時刻「T4」にイベント種別「パス」のイベントが発生したと判定する。また、時刻「T4」に発生したイベント種別「パス」に対応する選手識別情報は「H101」となる。この場合には、イベント検出部150dは、時刻「T4」、イベント種別「パス」、選手識別情報「H101」を対応付けて、イベントファイル140fに登録する。
図19で説明した状態管理テーブル165を用いて説明すると、時刻T7〜時刻T10の状態が、イベント種別「ドリブル」の状態遷移「A#X→A#X」にヒットする。イベント検出部150dは、時刻「T7〜T10」にイベント種別「ドリブル」のイベントが発生したと判定する。また、時刻「T7〜T10」に発生したイベント種別「ドリブル」に対応する選手識別情報は「H102」となる。この場合には、イベント検出部150dは、時刻「T7〜T10」、イベント種別「ドリブル」、選手識別情報「H102」を対応付けて、イベントファイル140fに登録する。
図19で説明した状態管理テーブル165を用いて説明すると、時刻T10〜時刻T13の状態が、イベント種別「シュート」の状態遷移「A#X→#ゴール」にヒットする。イベント検出部150dは、時刻「T11」にイベント種別「シュート」のイベントが発生したと判定する。また、時刻「T11」に発生したイベント種別「シュート」に対応する選手識別情報は「H102」となる。この場合には、イベント検出部150dは、時刻「T11」、イベント種別「シュート」、選手識別情報「H102」を対応付けて、イベントファイル140fに登録する。
イベント検出部150dは、上記処理を実行することで、イベントを検出し、イベントの発生した時刻、イベント種別、イベント種別に対応する選手識別情報を対応付けて、イベントファイル140fに登録する。
図3の説明に戻る。信頼度算出部150eは、イベント検出部150dにより検出されたイベントの信頼度を算出する処理部である。たとえば、信頼度算出部150eは、イベントに関連するボールの移動軌跡の評価値と、選手の移動軌跡の評価値とを基にして、イベントの信頼度を算出する。
信頼度算出部150eの処理の一例について説明する。信頼度算出部150eは、イベントファイル140fを参照し、ブランクとなっていないイベント種別を選択する。信頼度算出部150eは、選択したイベント種別に対応する時刻と、選択したイベント種別に対応する選手識別情報とを特定する。以下の説明では、イベント種別に対応する時刻を、「イベント発生時刻」と表記する。イベント種別に対応する選手識別情報を、「特定識別情報」と表記する。信頼度算出部150eは、イベント発生時刻を基準とした所定の時間範囲と、ボール管理テーブル140dとを比較して、時間範囲に対応するボールの各評価値を特定する。
また、信頼度算出部150eは、選手管理テーブル140cの特定識別情報に対応するレコードのうち、イベント発生時刻を基準とした所定の時間範囲に対応する選手の各評価値を特定する。
信頼度算出部150eは、特定したボールの各評価値と、選手の各評価値との平均値を算出し、算出した平均値を、該当するイベント種別の信頼度とする。信頼度算出部150eは、各イベント種別について各信頼度を算出し、算出した各信頼度を、イベントファイル140fに登録する。
再検出部150fは、イベントファイル140fを参照し、信頼度が閾値Th未満となるイベント種別が存在する場合に、第1学習器140gまたは第2学習器140hを用いて、イベントの再検出を行う処理部である。再検出部150fは、第1学習器140gおよび第2学習器140hの双方を用いて、イベントの再検出を行ってもよい。再検出部150fが、第1学習器140gを用いるのか、第2学習器140hを用いるのか、第1学習器140gおよび第2学習器を用いるのかは、予め設定されているものとする。
たとえば、閾値Thを「0.5」とすると、図11に示した各時刻のイベント種別のうち、時刻「T12」の信頼度が「0.2」となるため、閾値Th未満となる。この場合には、再検出部150fは、時刻「T12」のイベントの再検出を行うと判定する。
再検出部150fが、第1学習器140gを基にして、イベントを再検出する処理の一例について説明する。再検出部150fは、信頼度が閾値Th未満となるイベント種別の時刻を特定する。再検出部150fは、特定した時刻に対応する各選手の座標を、選手管理テーブル140cから取得する。再検出部150fは、各選手の座標を、第1学習器140gの入力層20aの各ノードに入力することで、出力層20cの各ノードから、各イベント種別の確率を取得する。
再検出部150fは、出力層20cの各ノードから取得したイベント種別の確率のうち、確率が最大となるイベント種別を検出(再検出)する。再検出部150fは、イベントファイルに登録された、信頼度が閾値未満となるイベント種別を、再検出したイベント種別によって、更新する処理を行う。
再検出部150fが、第2学習器140hを基にして、イベントを再検出する処理の一例について説明する。再検出部150fは、信頼度が閾値Th未満となるイベント種別を特定し、特定したイベント種別に至るイベント種別の発生順序を特定する。再検出部150fは、発生順序と、第2学習器140hとを比較し、信頼度が閾値Th未満となるイベント種別の代わりとなるイベント種別を再検出する。
図20は、本実施例1に係る再検出部の処理を説明するための図である。たとえば、イベントファイル140fのデータの内容を、イベントファイル140−1fに示すものとする。図20において、信頼度が閾値Th未満となるイベント種別は時刻「T4」の「ドリブル」となる。また、特定したイベント種別に至るイベント種別の発生順序は、「シュート」→「リバウンド」となる。
再検出部150fは、発生順序「シュート」→「リバウンド」と、図13に示した第2学習器140hとを比較すると、「シュート」→「リバウンド」の次に発生し得るイベント種別は、「パス」、「ドリブル」、「シュート」のいずれかとなる。たとえば、パスの確率を「45%」とし、ドリブルの確率を「25%」とし、シュートの確率を「30%」とする。再検出部150fは、確率の最も高い「パス」を、「シュート」→「リバウンド」の次に発生し得るイベント種別として特定(再検出)する。再検出部150fは、イベントファイルに登録された、信頼度が閾値未満となるイベント種別を、再検出したイベント種別によって、更新する処理を行う。
再検出部150fが、第1学習器140gおよび第2学習器140hを用いて、イベントを再検出する処理の一例について説明する。再検出部150fは、上述した第1学習器140gを用いて、イベントを再検出する処理と同様にして、確率が最も高いイベント種別を特定する。第1学習器140gを用いて特定したイベント種別の確率を「P1」とする。
再検出部140fは、上述した第2学習器140hを用いて、イベントを再検出する処理と同様にして、確率が最も高いイベント種別を特定する。第2学習器140hを用いて特定したイベント種別の確率を「P2」とする。
再検出部140fは、P1とP2とを比較し、P1がP2よりも大きい場合には、第1学習器140gを用いて検出したイベント種別により、信頼度が閾値未満となるイベント種別を更新する。一方、再検出部140fは、P1とP2とを比較し、P2がP1よりも大きい場合には、第2学習器140hを用いて検出したイベント種別により、信頼度が閾値未満となるイベントを更新する。
再検出部140fは、競技が終了するまで、イベントを再検出して、イベントファイル140fを更新する処理を繰り返し実行する。再検出部140fは、競技の終了の有無に関する情報を、外部装置から受け付けてもよいし、管理者が入力部120を操作して、競技の終了の有無を、検出装置100に入力してもよい。
スタッツ情報生成部150gは、競技が終了した旨の情報を受け付けた場合に、イベントファイル140fを基にして、スタッツ情報を生成する処理部である。スタッツ情報生成部150gは、生成したスタッツ情報を、出力部150hに出力する。
たとえば、スタッツ情報生成部150gは、イベントファイル140fの各レコードを走査し、選手識別情報毎に、各イベント種別の回数を集計することで、スタッツ情報を生成する。図21は、本実施例1に係るスタッツ情報の一例を示す図である。スタッツ情報170は、選手識別情報と、氏名と、イベント発生回数とを対応付ける。イベント発生回数には、パスの回数、スティールの回数、シュートの回数、ドリブルの回数等が含まれる。
スタッツ情報生成部150gは、選手情報を管理するシステム(図示略)等から、選手識別情報に対応する氏名の情報を取得し、スタッツ情報170に登録する。また、スタッツ情報生成部150gは、試合のスコア、パスの成功率、シュートの成功率等に関する情報を、システム(図示略)から取得する場合には、スタッツ情報170に、かかる情報を登録してもよい。
出力部150hは、スタッツ情報をスタッツ情報生成部150gから取得した場合に、取得したスタッツ情報を、表示部130に出力して表示させる処理部である。出力部150hは、ネットワーク等を介して、外部装置からスタッツ情報の要求を受け付けた場合には、要求元の外部装置にスタッツ情報を送信する。
次に、本実施例1に係る検出装置の処理手順の一例について説明する。図22および図23は、本実施例1に係る検出装置の処理手順を示すフローチャートである。図22について説明する。検出装置100のボール検出部150bおよび選手検出部150cは、バッファ140aから、画像フレームを取得する(ステップS101)。
ボール検出部150bおよび選手検出部150cは、差分画像を生成する(ステップS102)。ボール検出部150bは、ボールを検出し(ステップS103a)、検出したボールの評価値を算出し(ステップS104a)、ボールの座標を全体座標系へ統合する(ステップS105a)。
選手検出部150cは、選手を検出し(ステップS103b)、検出した選手の評価値を算出し(ステップS104b)、選手の座標を全体座標系へ統合する(ステップS105b)。
検出装置100のイベント検出部150dは、ボールの移動軌跡および選手の移動軌跡を特定する(ステップS106)。イベント検出部150dは、イベント定義情報を基にして、イベントを検出する(ステップS107)。
イベント検出部150dは、検出したイベントの情報をイベントファイル140fに登録する(ステップS108)。検出装置100の信頼度算出部150eは、イベントの信頼度を算出する(ステップS109)。
図23の説明に移行する。検出装置100の再検出部150fは、イベントの信頼度が閾値Th未満であるか否かを判定する(ステップS110)。再検出部150fは、イベントの信頼度が閾値Th未満でない場合には(ステップS110,No)、ステップS113に移行する。
再検出部150fは、イベントの信頼度が閾値Th未満である場合には(ステップS110,Yes)、第1学習器140gおよび/または第2学習器140hを基にして、イベントを再検出する(ステップS111)。再検出部150fは、再検出したイベントにより、イベントファイル140fを更新する(ステップS112)。
検出装置100は、競技が終了したか否かを判定する(ステップS113)。検出装置100は、競技が終了した場合には(ステップS113,Yes)、ステップS114に移行する。検出装置100は、競技が終了していない場合には(ステップS113,No)、図22のステップS101に移行する。
検出装置100のスタッツ情報生成部150gは、イベントファイル140fを基にして、スタッツ情報170を生成する(ステップS114)。検出装置100の出力部150hは、スタッツ情報170を表示部130に表示させる(ステップS115)。
次に、本実施例1に係る検出装置100の効果について説明する。検出装置100は、ボールおよび選手の移動軌跡を基にして、イベントを検出する場合に、イベントの信頼度を算出する。検出装置100は、イベントの信頼度が閾値未満である場合に、機械学習、深層学習の結果得られる第1学習器140g、第2学習器140hを用いて、イベントの再検出を行い、再検出したイベントにより、信頼度が閾値未満となるイベントを修正する。これによって、競技中のイベントの検出精度を向上させることができる。また、イベントの検出精度が向上することによって、このイベントの検出結果を用いて生成されるスタッツ情報を精度よく生成することもできる。
たとえば、検出装置100は、ボールの領域の予測位置と、実際のボールの領域との距離に基づいて、ボールの領域の評価値を算出する。検出装置100は、選手の予測位置の画像と、選手の画像との類似度を評価値として算出する。そして、検出装置100は、イベント検出で用いたボールの領域の評価値と、選手の領域の評価値とを基にして、イベントの信頼度を算出する。このため、イベントを検出する根拠となったボールの領域および選手の領域の評価値に応じた信頼度を算出することができる。
図24は、本実施例2に係る検出装置の構成を示す機能ブロック図である。ここでは説明を省略するが、検出装置200は、図1で説明したシステムの検出装置100と同様にして、カメラ10に接続されているものとする。カメラ10に関する説明は、実施例1で説明した内容と同様である。
図24に示すように、検出装置200は、通信部210、入力部220、表示部230、記憶部240、制御部250を有する。
通信部210は、ネットワーク等を介して、カメラ10との間でデータ通信を実行する処理部である。たとえば、カメラ10から映像データを受信する。通信部210は、受信した映像データを、制御部250に出力する。通信部210は、通信装置の一例である。
入力部220は、検出装置200に各種の情報を入力するための入力装置である。入力部220は、たとえば、キーボードやマウス、タッチパネル等に対応する。
表示部230は、制御部250から出力される各種の情報を表示するための表示装置である。表示部230は、たとえば、液晶ディスプレイ、タッチパネル等に対応する。表示部230は、制御部250から、スタッツ情報を受け付けた場合には、スタッツ情報を表示する。
記憶部240は、バッファ140a、変換テーブル140b、選手管理テーブル140c、ボール管理テーブル140d、イベント定義情報140e、イベントファイル140f、第1学習器140g、第2学習器140h、状態管理テーブル165を有する。また、記憶部240は、順序定義情報240aを有する。記憶部240は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。記憶部240に含まれる各情報140a〜140h、165に関する説明は、実施例1で説明した情報140a〜140h、165に関する説明と同様であるため、同一の符号を付して説明を省略する。
順序定義情報240aは、イベントの一般的な発生順序を定義する情報である。図25は、本実施例2に係る順序定義情報のデータ構造の一例を示す図である。図25に示すように、この順序定義情報240aは、イベント種別と、順序とを対応付ける。イベント種別は、イベントの種別を示すものである。順序は、イベントの発生順序を示す。
たとえば、順序定義情報240aの1行目では、イベント種別「リバウンド」は、イベント種別「シュート」の次に発生する旨が定義されている。順序定義情報240aの2行目では、イベント種別「アシスト」の後にイベント種別「シュート」が発生する旨が定義されている。順序定義情報240aの3行目では、イベント種別「フリースロー」は、イベント種別「ファウル」の次に発生する旨が定義されている。なお、「※」は、イベント種別が、どのようなイベント種別であってもよいことを示す。
制御部250は、受信部150a、ボール検出部150b、選手検出部150c、イベント検出部150d、信頼度算出部150e、再検出部150f、イベント補間部250aスタッツ情報生成部150g、出力部150hを有する。制御部250は、CPUやMPUなどによって実現できる。また、制御部250は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
ここで、受信部150a、ボール検出部150b、選手検出部150c、イベント検出部150d、信頼度算出部150eに関する説明は、実施例1で説明したものと同様であるため、同一の符号を付して説明を省略する。また、再検出部150f、スタッツ情報生成部150g、出力部150hに関する説明は、実施例1で説明したものと同様であるため、同一の符号を付して説明を省略する。
イベント補間部250aは、イベントファイル140fを基にして、あるイベントの時刻から、次のイベントが発生するまでの時刻までの時間が所定時間以上である場合に、イベントを補間する処理部である。イベント補間部250aは、第1学習器140gまたは第2学習器140hを用いて、イベントを補間する。
図26は、本実施例2に係るイベント補間部の処理を説明するための図である。たとえば、イベントファイル140fのデータの内容を、イベントファイル140−2fに示すものとする。イベント補間部250aは、イベントファイル140−2fの各レコードを走査し、イベントの間隔が所定時間以上となる区間を特定する。たとえば、イベント補間部250aは、イベントの間隔が所定時間以上となる区間「T2〜T5」を特定する。
イベント補間部250aが、第1学習器140gを用いてイベントを補間する場合について説明する。イベント補間部250aは、特定した区間に含まれる時刻のうち、中央の時刻を特定する。たとえば、イベント補間部250aは、区間が「T2〜T5」である場合には、時刻「T3」を特定する。
イベント補間部250aは、特定した時刻に対応する各選手の座標を、選手管理テーブル140cから取得する。イベント補間部250aは、各選手の座標を、第1学習器140gの入力層20aの各ノードに入力することで、出力層20cの各ノードから、各イベント種別の確率を取得する。
イベント補間部250aは、出力層20cの各ノードから取得したイベント種別の確率のうち、確率が最大となるイベント種別を検出する。イベント補間部250aは、イベントファイル140fに対して、上記の処理により特定した時刻に、検出したイベント種別の情報を登録する処理を行う。たとえば、イベント補間部250aは、第1学習器140gから検出したイベント種別が「リバウンド」である場合には、時刻「T3」に対応するイベント種別に、「リバウンド」を登録する。
イベント補間部250aが、第2学習器140hを用いてイベントを補間する場合について説明する。イベント補間部250aは、特定した区間の開始時刻より一つ前の時刻で検出されたイベント種別を特定する。たとえば、イベント補間部250aは、区間が「T2〜T5」である場合には、時刻「T1」のイベント種別「シュート」を特定する。また、イベント補間部260aは、特定したイベント種別に至るイベント種別の発生順序を特定する。図26では図示を省略するが、たとえば、イベント種別「シュート」の前にイベント種別「パス」が存在している場合には、発生順序は「パス」→「シュート」となる。
イベント補間部250aは、発生順序と、第2学習器140hとを比較して、発生順序(たとえば、「パス」→「シュート」)の次に発生し得るイベント種別のうち、確率が最大となるイベント種別を特定する。イベント補間部250aは、特定した区間に含まれる時刻のうち、中央の時刻に対応するイベント種別として、第2学習器140hを基に特定した、イベント種別を、イベントファイル140fに登録する。
イベント補間部250aが、第1学習器140gおよび第2学習器140hを用いて、イベントを補間する場合について説明する。イベント補間部250aは、上述した第1学習器140gを用いて、イベントを検出する処理と同様にして、確率が最も高いイベント種別を特定する。第1学習器140gを用いて特定したイベント種別の確率を「P1」とする。
イベント補間部250aは、上述した第2学習器140hを用いて、イベントを検出する処理と同様にして、確率が最も高いイベント種別を特定する。第2学習器140hを用いて特定したイベント種別の確率を「P2」とする。
イベント補間部250aは、P1とP2とを比較し、P1がP2よりも大きい場合には、第1学習器140gを用いて検出したイベント種別により、イベントを補間する。一方、イベント補間部250aは、P1とP2とを比較し、P2がP1よりも大きい場合には、第2学習器140hを用いて検出したイベント種別により、イベントを補間する。
図24の説明に戻る。イベント修正部250bは、順序定義情報240aを基にして、イベントファイル140fのイベント種別を修正する処理部である。イベント修正部250bは、イベントファイル140fのイベント種別を時系列に走査し、イベント種別の順序が、順序定義情報240aで定義された順序に対応しているか否かを判定する。
イベント修正部250bは、イベント種別の順序が、順序定義情報240aで定義された順序に対応していない場合には、順序定義情報240aで定義された順序となるように、イベント種別を修正する。
図27は、本実施例2に係るイベント修正部の処理を説明するための図である。たとえば、イベントファイル140fのデータの内容を、イベントファイル140−3fに示すのとする。たとえば、図25に示す順序定義情報240aによれば、イベント種別「シュート」の次のイベント種別は「リバウンド」となっている。このため、イベント修正部250bは、時刻「T3」のイベント種別「ドリブル」を、イベント種別「リバウンド」に設定する。
なお、競技中においては、必ずしも、予め定義したイベント種別の順番でイベントが発生するとは限らない場合や、所定時間以上、イベントが発生しない場合がある。このため、イベント補間部250a、イベント修正部250bの機能を有効にするかを利用者は適宜選択可能であるものとする。
次に、本実施例2に係る検出装置200の処理手順の一例について説明する。図28および図29は、本実施例2に係る検出装置の処理手順を示すフローチャートである。図28について説明する。検出装置200のボール検出部150bおよび選手検出部150cは、バッファ140aから、画像フレームを取得する(ステップS201)。
ボール検出部150bおよび選手検出部150cは、差分画像を生成する(ステップS202)。ボール検出部150bは、ボールを検出し(ステップS203a)、検出したボールの評価値を算出し(ステップS204a)、ボールの座標を全体座標系へ統合する(ステップS205a)。
選手検出部150cは、選手を検出し(ステップS203b)、検出した選手の評価値を算出し(ステップS204b)、選手の座標を全体座標系へ統合する(ステップS205b)。
検出装置200のイベント検出部150dは、ボールの移動軌跡および選手の移動軌跡を特定する(ステップS206)。イベント検出部150dは、イベント定義情報140eを基にして、イベントを検出する(ステップS207)。
イベント検出部150dは、検出したイベントの情報をイベントファイル140fに登録する(ステップS208)。検出装置200の信頼度算出部150eは、イベントの信頼度を算出する(ステップS209)。
図29の説明に移行する。検出装置200の再検出部150fは、イベントの信頼度が閾値Th未満であるか否かを判定する(ステップS210)。再検出部150fは、イベントの信頼度が閾値Th未満でない場合には(ステップS210,No)、ステップS213に移行する。
再検出部150fは、イベントの信頼度が閾値Th未満である場合には(ステップS210,Yes)、第1学習器140gおよび/または第2学習器140hを基にして、イベントを再検出する(ステップS211)。再検出部150fは、再検出したイベントにより、イベントファイル140fを更新する(ステップS212)。
検出装置200は、競技が終了したか否かを判定する(ステップS213)。検出装置200は、競技が終了した場合には(ステップS213,Yes)、ステップS214に移行する。一方、検出装置200は、競技が終了していない場合には(ステップS213,No)、図28のステップS201に移行する。
検出装置200のイベント補間部250aは、イベントファイル140fの各レコードを走査する(ステップS214)。イベント補間部250aは、イベント間隔が所定時間以上となる区間が存在する場合に、イベントを補間する(ステップS215)。
検出装置200のイベント修正部250bは、イベントファイル140fの各レコードを時系列に走査し、イベント種別の順序を特定する(ステップS216)。イベント修正部250bは、順序定義情報240aを基にして、イベント種別を修正する(ステップS217)。
検出装置200のスタッツ情報生成部150gは、イベントファイル140fを基にして、スタッツ情報170を生成する(ステップS218)。検出装置200の出力部150hは、スタッツ情報170を表示部230に表示させる(ステップS219)。
次に、本実施例2に係る検出装置200の効果について説明する。検出装置200は、ボールおよび選手の移動軌跡を基にして、イベントを検出する処理を行い、イベントファイル140fを生成する。検出装置200は、イベントファイル140fの各レコードを走査し、イベント間隔が所定時間以上となる区間が存在する場合に、イベントを補間する処理を実行する。これにより、検出装置200が、イベント検出部150dが検出できなかったイベントを検出することができ、競技中のイベントの検出精度を向上させることができる。
また、検出装置200は、イベントファイル140fの各レコードを時系列に走査し、イベント種別の順序を特定し、順序定義情報240aを基にして、イベント種別を修正する。これにより、イベント種別の発生順序が、順序定義情報に定義された順序と異なる場合に、最適なイベント種別に修正することができ、競技中のイベントの検出精度を向上させることができる。
本実施例3では、実施例1の検出装置100、実施例2の検出装置200が実行し得るその他の処理について説明する。たとえば、検出装置100,200の処理は、カメラ20から送信される映像データをリアルタイムに取得して処理する場合について説明しているが、これに限定されるものではない。たとえば、検出装置100,200は、通信部310、入力部220等から、選手管理テーブル140cおよびボール管理テーブル140dを含むファイルを事前に受け付け、オフラインで、イベントの検出を行い、スタッツ情報を生成してもよい。
図30は、本実施例3に係る検出装置の構成を示す機能ブロック図である。図30に示すように、この検出装置300は、通信部310、入力部320、表示部330、記憶部340、制御部350を有する。
通信部310は、ネットワーク等を介して、外部装置とデータ通信を実行する処理部である。たとえば、外部装置は、実施例1、2で説明した検出装置100,200と同様にしてカメラ20に接続され、選手管理テーブル140c、ボール管理テーブル140dを生成する。外部装置は、選手管理テーブル140cおよびボール管理テーブル140dを含むファイルを生成し、生成したファイルを検出装置300に送信する。通信部310は、通信装置の一例である。
入力部320は、検出装置300に各種の情報を入力するための入力装置である。入力部320は、たとえば、キーボードやマウス、タッチパネル等に対応する。
表示部330は、制御部350から出力される各種の情報を表示するための表示装置である。表示部330は、たとえば、液晶ディスプレイ、タッチパネル等に対応する。表示部330は、制御部350から、スタッツ情報を受け付けた場合には、スタッツ情報を表示する。
記憶部340は、選手管理テーブル140c、ボール管理テーブル140d、イベント定義情報140e、イベントファイル140f、第1学習器140g、第2学習器140h、状態管理テーブル165、順序定義情報240aを有する。記憶部340は、RAM、ROM、フラッシュメモリなどの半導体メモリ素子や、HDDなどの記憶装置に対応する。記憶部340に含まれる各情報140c〜140h、165、240aに関する説明は、実施例1、2で説明した情報140a〜140h、165、240aに関する説明と同様であるため、同一の符号を付して説明を省略する。
制御部350は、受信部350a、イベント検出部350b、信頼度算出部150e、再検出部150f、イベント補間部250a、イベント修正部250b、スタッツ情報生成部150g、出力部150hを有する。制御部350は、CPUやMPUなどによって実現できる。また、制御部350は、ASICやFPGAなどのハードワイヤードロジックによっても実現できる。
ここで、信頼度算出部150e、再検出部150f、イベント補間部250a、イベント修正部250b、スタッツ情報生成部150g、出力部150hに関する説明は、実施例1、2で説明したものと同様であるため、同一の符号を付して説明を省略する。
受信部350aは、外部装置からファイルを受信する処理部である。外部装置から受信するファイルには、選手管理テーブル140cおよびボール管理テーブル140dが含まれる。受信部350aは、選手管理テーブル140cおよびボール管理テーブル140dを、記憶部340に格納する。
イベント検出部350bは、特定の物体の移動軌跡を特定し、特定した移動軌跡を基にして、イベントを検出する処理部である。たとえば、イベント検出部350bは、ボールの状態を判定する処理、イベントを検出する処理を行う。
イベント検出部350bのボールの状態を判定する処理およびイベントを検出する処理は、実施例1で説明したイベント検出部150dの処理と同様である。なお、選手管理テーブル140cおよびボール管理テーブル140dには、競技開始の時刻から、競技終了の時刻までの情報が含まれているため、イベント検出部350bは、選手管理テーブル140cおよびボール管理テーブル140dの各レコードを走査して、ボールの移動軌跡、選手の移動軌跡を特定し、イベント定義情報140eを基にして、イベントを検出する処理を繰り返し実行する。
次に、本実施例3に係る検出装置300の処理手順の一例について説明する。図31および図32は、本実施例3に係る検出装置の処理手順を示すフローチャートである。図31において、検出装置300の受信部350aは、ファイルを受け付け、ファイルに含まれるボール管理テーブル140d、選手管理テーブル140cを記憶部340に登録する(ステップS301)。
検出装置300のイベント検出部350bは、ボールの移動軌跡および選手の移動軌跡を特定する(ステップS302)。イベント検出部350bは、イベント定義情報140eを基にして、イベントを検出する(ステップS303)。
イベント検出部350bは、検出したイベントの情報をイベントファイル140fに登録する(ステップS304)。検出装置300の信頼度算出部150eは、イベントの信頼度を算出する(ステップS305)。
検出装置300の再検出部150fは、イベントの信頼度が閾値Th未満であるか否かを判定する(ステップS306)。再検出部150fは、イベントの信頼度が閾値Th未満でない場合には(ステップS306,No)、ステップS309に移行する。
再検出部150fは、イベントの信頼度が閾値Th未満である場合には(ステップS306,Yes)、第1学習器140gおよび/または第2学習器140hを基にして、イベントを再検出する(ステップS307)。再検出部150fは、再検出したイベントにより、イベントファイル140fを更新する(ステップS308)。
検出装置300は、イベント検出が終了したか否かを判定する(ステップS309)。検出装置300は、イベント検出が終了した場合には(ステップS309,Yes)、図32のステップS311に移行する。一方、検出装置300は、競技が終了していない場合には(ステップS309,No)、ステップS310に移行する。検出装置300のイベント検出部350bは、イベント定義情報140eを基にして、次のイベントを検出し(ステップS310)、ステップS304に移行する。
図32の説明に移行する。検出装置300のイベント補間部250aは、イベントファイル140fの各レコードを走査する(ステップS311)。イベント補間部250aは、イベント間隔が所定時間以上となる区間が存在する場合に、イベントを補間する(ステップS312)。
検出装置300のイベント修正部250bは、イベントファイル140fの各レコードを時系列に走査し、イベント種別の順序を特定する(ステップS313)。イベント修正部250bは、順序定義情報240aを基にして、イベント種別を修正する(ステップS314)。
検出装置300のスタッツ情報生成部150gは、イベントファイル140fを基にして、スタッツ情報170を生成する(ステップS315)。検出装置300の出力部150hは、スタッツ情報170を表示部330に表示させる(ステップS316)。
次に、本実施例3に係る検出装置300の効果について説明する。検出装置300は、競技中に外部装置に生成されたファイルを事前に受信しておき、受信しておいたファイルに含まれる選手管理テーブル140c、ボール管理テーブル140dを基にして、イベントの検出し、イベントの信頼度を算出する。そして、検出装置300は、イベントの信頼度が閾値未満である場合に、機械学習、深層学習の結果得られる第1学習器140g、第2学習器140hを用いて、イベントの再検出を行い、再検出したイベントにより、信頼度が閾値未満となるイベントを修正する。これにより、オフラインで、イベントを検出した場合の検出精度を向上させることができ、このイベントの検出結果を用いて生成されるスタッツ情報を精度よく生成することもできる。
次に、本実施例1、2、3で用いる第1学習器140gおよび第2学習器140hを学習する処理の一例について説明する。
図33は、第1学習器の学習処理を説明するための図である。検出装置100(200,300)は、教師データ145aを受け付ける。教師データ145aは、配置パターンと、イベントの確率とを対応付ける。配置パターンは、各選手の座標を示すものである。イベントの確率は、該当する配置パターンにおいて、発生するイベントの確率を示すものである。各選手の座標をまとめて、「X,Y」を表記する。
たとえば、配置パターン「X1,Y1」となる場合には、「シュート」が発生する確率が「100%」であり、他のイベントが発生する確率が「0」であることが示される。配置パターン「X2,Y2」となる場合には、「ドリブル」が発生する確率が「100%」であり、他のイベントが発生する確率が「0」であることが示される。配置パターン「X3,Y3」となる場合には、「パス」が発生する確率が「100%」であり、他のイベントが発生する確率が「0」であることが示される。
検出装置100は、配置パターン「X1,Y1」を、第1学習器140gの入力層20aに入力し、出力層20cのノードのうち、シュートの確率を出力するノードの値が100%となり、他のノードから出力される値0%に近づくように、隠れ層20bおよび出力層20cのバイアス値、エッジの重みを調整する。
検出装置100は、配置パターン「X2,Y2」を、第1学習器140gの入力層20aに入力し、出力層20cのノードのうち、ドリブルの確率を出力するノードの値が100%となり、他のノードから出力される値0%に近づくように、隠れ層20bおよび出力層20cのバイアス値、エッジの重みを調整する。配置パターン「X3,Y3」を、第1学習器140gの入力層20aに入力し、出力層20cのノードのうち、パスの確率を出力するノードの値が100%となり、他のノードから出力される値0%に近づくように、隠れ層20bおよび出力層20cのバイアス値、エッジの重みを調整する。
検出装置100は、教師データ145aに含まれる配置パターンと、イベントの確率との関係を用いて、上記処理を繰り返し実行することで、第1学習器140gの学習を行う。上記の実施例1〜3では説明を省略したが、図33で説明した学習処理を行う学習部を、検出装置100,200,300が有していてもよい。
図34は、第2学習器の学習処理を説明するための図である。検出装置100(200,300)は、教師データ145bを受け付ける。教師データ145bは、項番と、イベント発生パターンとを対応付ける。項番は、各レコードを識別する情報である。イベント発生パターンは、たとえば、一定区間において発生したイベントの順番の実績を示すものである。
検出装置100は、教師データ145bの各レコードのイベント発生パターンを集計し、あるイベント種別から他のイベント種別に移行する確率を算出する。検出装置100は、集計結果を基にして、第2学習器140hを学習する。なお、利用者は、第2学習器140hを参照し、過去の経験などを基に、第2学習器140hの確率等を修正してもよい。上記の実施例1〜3では説明を省略したが、図34で説明した学習処理を行う学習部を、検出装置100,200,300が有していてもよい。
次に、本実施例1〜3に示した検出装置100、200,300と同様の機能を実現するコンピュータのハードウェア構成の一例について説明する。図35は、検出装置と同様の機能を実現するコンピュータのハードウェアを説明するための図である。
図35に示すように、コンピュータ400は、各種演算処理を実行するCPU401と、ユーザからのデータの入力を受け付ける入力装置402と、ディスプレイ403とを有する。また、コンピュータ400は、記憶媒体からプログラム等を読み取る読み取り装置404と、有線または無線ネットワークを介してカメラ10、外部装置、システム等との間でデータの授受を行うインタフェース装置405とを有する。また、コンピュータ400は、各種情報を一時記憶するRAM406と、ハードディスク装置407とを有する。そして、各装置401〜407は、バス408に接続される。
ハードディスク装置407は、受信プログラム407a、ボール検出プログラム407b、選手検出プログラム407c、イベント検出プログラム407d、信頼度算出プログラム407eを有する。ハードディスク装置407は、再検出プログラム407f、イベント補間プログラム407g、イベント修正プログラム407h、スタッツ情報生成プログラム407i、出力プログラム407jを有する。CPU401は、各プログラム407a〜407jを読み出してRAM406に展開する。
受信プログラム407aは、受信プロセス406aとして機能する。ボール検出プログラム407bは、ボール検出プロセス406bとして機能する。選手検出プログラム407cは、選手検出プロセス406cとして機能する。イベント検出プログラム407dは、イベント検出プロセス406dとして機能する。信頼度算出プログラム407eは、信頼度算出プロセス406eとして機能する。再検出プログラム407fは、再検出プロセス406fとして機能する。イベント補間プログラム407gは、イベント補間プロセス406gとして機能する。イベント修正プログラム407hは、イベント修正プロセス406hとして機能する。スタッツ情報生成プログラム407iは、スタッツ情報生成プロセス406iとして機能する。出力プログラム407jは、出力プロセス406jとして機能する。
受信プロセス406aの処理は、受信部150a,350aの処理に対応する。ボール検出プロセス406bの処理は、ボール検出部150bの処理に対応する。選手検出プロセス406cの処理は、選手検出部150cの処理に対応する。イベント検出プロセス406dの処理は、イベント検出部150d、350bの処理に対応する。信頼度算出プロセス406eの処理は、信頼度算出部150eの処理に対応する。再検出プロセス406fは、再検出部150fの処理に対応する。イベント補間プロセス406gの処理は、イベント補間部250aの処理に対応する。イベント修正プロセス406hの処理は、イベント修正部250bの処理に対応する。スタッツ情報生成プロセス406iの処理は、スタッツ情報生成部150gの処理に対応する。出力プロセス406jの処理は、出力部150hの処理に対応する。
なお、各プログラム407a〜407jについては、必ずしも最初からハードディスク装置407に記憶させておかなくても良い。例えば、コンピュータ400に挿入されるフレキシブルディスク(FD)、CD−ROM、DVD、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させておく。そして、コンピュータ400が各プログラム407a〜407dを読み出して実行するようにしても良い。
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)時系列の複数の画像フレームに含まれる特定の物体の位置をそれぞれ検出した結果に基づき、前記特定の物体の移動軌跡を特定し、前記移動軌跡を基にして、前記特定の物体の動きにかかわる複数のイベントのいずれかが発生したことを検出するイベント検出部と、
前記移動軌跡に関する評価値を基にして、前記移動軌跡から発生が検出された第一のイベントとしての確からしさを示す信頼度を算出する信頼度算出部と、
前記第一のイベントに対応する前記信頼度が閾値未満である場合に、前記特定の物体の位置と前記複数のイベントそれぞれとの関係を学習した第一学習結果、および前記複数のイベントそれぞれの発生順序を学習した第二学習結果の少なくとも一方を基にして、前記複数のイベントのいずれかが発生したことを再度検出する再検出部と
を有することを特徴とする検出装置。
(付記2)前記画像フレーム上の前記特定の物体の予測位置の画像と前記特定の物体の画像との類似度、および、前記特定の物体の予測位置と前記特定の物体の位置との乖離の少なくとも一方を基にして、前記移動軌跡に関する前記評価値を算出する評価値算出部を更に有することを特徴とする付記1に記載の検出装置。
(付記3)前記特定の物体は人物およびボールを示し、前記検出部は、前記人物の第一の移動軌跡と前記ボールの第二の移動軌跡とを基にして前記イベントを検出し、
前記信頼度算出部は、前記イベントに関連する前記第一の移動軌跡の第一の評価値と前記ボールの第二の移動軌跡の第二の評価値とを基にして、前記イベントの前記信頼度を算出することを特徴とする付記1または2に記載の検出装置。
(付記4)前記イベント検出部は、前記特定の物体の前記移動軌跡が特定の条件を満たす度に、前記特定の条件に応じて、前記複数のイベントのいずれかが発生したことを検出し、
前記第一のイベントを検出した第一時刻から、第二のイベントを検出した第二時刻との時間が所定時間以上である場合には、前記第一学習結果および前記第二学習結果の少なくとも一方を基にして、前記第一時刻から前記第二時刻までに発生した第三のイベントを補間するイベント補間部を更に有することを特徴とする付記1、2または3に記載の検出装置。
(付記5)コンピュータが、
時系列の複数の画像フレームに含まれる特定の物体の位置をそれぞれ検出した結果に基づき、前記特定の物体の移動軌跡を特定し、前記移動軌跡を基にして、前記特定の物体の動きにかかわる複数のイベントのいずれかが発生したことを検出し、
前記移動軌跡に関する評価値を基にして、前記移動軌跡から発生が検出された第一のイベントとしての確からしさを示す信頼度を算出し、
前記第一のイベントに対応する前記信頼度が閾値未満である場合に、前記特定の物体の位置と前記複数のイベントそれぞれとの関係を学習した第一学習結果、および前記複数のイベントそれぞれの発生順序を学習した第二学習結果の少なくとも一方を基にして、前記複数のイベントのいずれかが発生したことを再度検出する
処理を実行することを特徴とする検出方法。
(付記6)前記評価値を算出する処理は、前記画像フレーム上の前記特定の物体の予測位置の画像と前記特定の物体の画像との類似度、および、前記特定の物体の予測位置と前記特定の物体の位置との乖離の少なくとも一方を基にして、前記移動軌跡に関する前記評価値を算出する付記5に記載の検出方法。
(付記7)前記イベントを検出する処理は、前記特定の物体は人物およびボールを示し、前記検出部は、前記人物の第一の移動軌跡と前記ボールの第二の移動軌跡とを基にして前記イベントを検出し、前記信頼度を算出する処理は、前記イベントに関連する前記第一の移動軌跡の第一の評価値と前記ボールの第二の移動軌跡の第二の評価値とを基にして、前記イベントの前記信頼度を算出することを特徴とする付記5または6に記載の検出方法。
(付記8)前記イベントを検出する処理は、前記特定の物体の前記移動軌跡が特定の条件を満たす度に、前記特定の条件に応じて、前記複数のイベントのいずれかが発生したことを検出し、
前記第一のイベントを検出した第一時刻から、第二のイベントを検出した第二時刻との時間が所定時間以上である場合には、前記第一学習結果および前記第二学習結果の少なくとも一方を基にして、前記第一時刻から前記第二時刻までに発生した第三のイベントを補間する処理を更に実行することを特徴とする付記5、6または7に記載の検出方法。
(付記9)時系列の複数の画像フレームに含まれる特定の物体の位置をそれぞれ検出した結果に基づき、前記特定の物体の移動軌跡を特定し、前記移動軌跡を基にして、前記特定の物体の動きにかかわる複数のイベントのいずれかが発生したことを検出し、
前記移動軌跡に関する評価値を基にして、前記移動軌跡から発生が検出された第一のイベントとしての確からしさを示す信頼度を算出し、
前記第一のイベントに対応する前記信頼度が閾値未満である場合に、前記特定の物体の位置と前記複数のイベントそれぞれとの関係を学習した第一学習結果、および前記複数のイベントそれぞれの発生順序を学習した第二学習結果の少なくとも一方を基にして、前記複数のイベントのいずれかが発生したことを再度検出する
処理をコンピュータに実行させることを特徴とする検出プログラム。
(付記10)前記評価値を算出する処理は、前記画像フレーム上の前記特定の物体の予測位置の画像と前記特定の物体の画像との類似度、および、前記特定の物体の予測位置と前記特定の物体の位置との乖離の少なくとも一方を基にして、前記移動軌跡に関する前記評価値を算出する付記9に記載の検出プログラム。
(付記11)前記イベントを検出する処理は、前記特定の物体は人物およびボールを示し、前記検出部は、前記人物の第一の移動軌跡と前記ボールの第二の移動軌跡とを基にして前記イベントを検出し、前記信頼度を算出する処理は、前記イベントに関連する前記第一の移動軌跡の第一の評価値と前記ボールの第二の移動軌跡の第二の評価値とを基にして、前記イベントの前記信頼度を算出することを特徴とする付記9または10に記載の検出プログラム。
(付記12)前記イベントを検出する処理は、前記特定の物体の前記移動軌跡が特定の条件を満たす度に、前記特定の条件に応じて、前記複数のイベントのいずれかが発生したことを検出し、
前記第一のイベントを検出した第一時刻から、第二のイベントを検出した第二時刻との時間が所定時間以上である場合には、前記第一学習結果および前記第二学習結果の少なくとも一方を基にして、前記第一時刻から前記第二時刻までに発生した第三のイベントを補間する処理を更に実行することを特徴とする付記9、10または11に記載の検出プログラム。