以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態に係る行動分析装置は、人物を含む元画像データだけでなく、元画像データ内の人物の行動に由来する他のデータ(骨格画像データ、挙動画像データ)も用いることにより、元画像内の人物の行動を分析する。
本実施形態では、人物の行動に由来する他のデータも用いるため、人物以外の画像(背景、風景)が変化する場合でも、人物の行動を正確に分析することができる。そして、本実施形態に係る行動分析装置は、例えば、運転手、乗客、歩行者、買い物客などの様々な人物の行動を監視するシステムに適用することができる。
すなわち、本実施形態では、時系列の画像群に写っている人間の行動を認識する装置を提供する。本実施形態では、動画に映っている人の行動を、ニューラルネットワーク等の機械学習を用いて認識する。
本実施形態に係る行動分析装置は、動画からフレームごとに分割された画像群を読み込み、骨格推定技術を適用して、画像から人間の主要な骨格を抽出することにより、骨格として画像化する。さらに、本実施形態では、時間軸上で連続した骨格画像からオプティカルフロー等の画像間の動きの変化を抽出し、挙動画像として画像化する。
本実施形態では、それらの画像群(元画像群、骨格画像群、挙動画像群)を元に時系列のシーケンスデータとしてまとめ、ニューラルネットワーク等の機械学習技術により、入力データと行動との関係性を学習する。
機械学習に入力するデータとして骨格画像のデータと挙動画像のデータも含めることにより、人間以外の物体に起因するノイズ、および背景の変化に起因するノイズによる影響を抑制できる。さらに、人間の骨格に基づく姿勢の情報と姿勢の変化の情報とを機械学習に用いることにより、元画像データのみを使用する従来技術に比べて、高精度な行動認識が可能となる。
本実施形態に係る行動分析装置は、プロセッサと記憶装置を備える計算機を用いることにより実現してもよい。プロセッサは、例えば、元画像データの加工と、機械学習による学習および推論とを実行する。記憶装置は、例えば、各画像データと、各中間データと、機械学習モデルと、推論結果とを格納する。
プロセッサは、例えば、動画データから抽出された各元画像データに対し、骨格画像データと挙動画像データとを算出する。次に、プロセッサは、各元画像データと各骨格画像データと各挙動画像データとを時系列データ(シーケンスデータ)としてまとめる。プロセッサは、ニューラルネットワーク等の機械学習を用いることにより、時系列データと元画像データに写っている人間の行動との関係を学習し、モデルデータを算出する。プロセッサは、推論時には、時系列データをモデルデータへ入力することにより、元画像データに写っている人間の行動の認識結果を算出する。
図1〜図15を用いて第1実施例を説明する。本実施例は、本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。
以後の説明では「コンピュータプログラム」を主語として説明する場合がある。コンピュータプログラムは、プロセッサによって実行されることで、定められた処理をメモリ及び通信ポート(通信制御装置)を用いながら行う。したがって、コンピュータプログラムに代えてプロセッサを主語として説明することもできるし、プロセッサを有する計算機を主語として説明することもできる。
なお、コンピュータプログラムの少なくとも一部または全部を専用ハードウェアで実現してもよい。コンピュータプログラムは、モジュール化されていてもよい。コンピュータプログラムは、記録媒体に固定されて流通してもよいし、あるいは、プログラム配信サーバから通信ネットワークを介して配布されてもよい。プロセッサがコンピュータプログラムを読み込んで実施することにより、後述する機能11〜16が実現される。
図1は、「行動分析装置」としての行動認識装置1の全体構成を示す。行動認識装置1は、元画像データに含まれる人物の行動がどのような行動であるか認識する。
行動認識装置1は、例えば、元画像取得部11と、骨格画像生成部12と、挙動画像生成部13と、シーケンスデータ生成部14と、モデル生成部15と、推論部16とを備えることができる。
元画像取得部11は、撮影時間の異なる複数の元画像データ131を取得する。元画像取得部11は、例えば、動画ファイル、連続的に撮影された静止画ファイルなどから、同一の被写体についての撮影時間の異なる画像データ131を取得する。これら撮影時間の異なる画像データ131に基づいて骨格画像データ132が作成されるため、元画像データ131と呼ぶ。元画像データは、行動認識装置1内に保存されていてもよいし、行動認識装置1がアクセス可能な外部のストレージ装置に保存されていてもよい。
骨格画像生成部12は、元画像取得部11により取得された元画像データ131に基づいて、元画像データ131に写っている人物1311の骨格を推定し、推定された骨格の画像データ132を生成する。
挙動画像生成部13は、骨格画像生成部12により生成された骨格画像132に基づいて、骨格の時間変化(動作方向、挙動)を示す挙動画像データ133を生成する。
シーケンスデータ生成部14は、各元画像データ131と各骨格画像データ132と各挙動画像データ133とを含むシーケンスデータを生成する。
モデル生成部15は、シーケンスデータ生成部14により生成される学習用シーケンスデータ(図7で後述)に基づいて、人物の行動パターンの学習と推論とが可能な所定のモデルのデータを生成する。
推論部16は、シーケンスデータ生成部14により作成された推論用シーケンスデータ(図9で後述)とモデル生成部15により生成されたモデルデータとに基づいて、推論用シーケンスデータに含まれる人物の行動を認識し、その認識結果を出力する。
<行動認識装置の構成>
図2は、行動認識装置1のハードウェアおよびソフトウェアの構成例(機能ブロック図)である。
行動認識装置1は、例えば、中央演算処理装置110と、入出力装置120と、記憶装置130とを備える。
中央演算処理装置110は、マイクロプロセッサおよびプログラムメモリ(いずれも不図示)を有し、行動認識装置1として機能するための必要な演算処理および制御処理等を行う。中央演算処理装置110は、所定のコンピュータプログラム111〜116を実行する。各コンピュータプログラム111〜116は、図1で述べた各機能11〜16に対応する。
元画像取得プログラム111は、元画像データを取得するコンピュータプログラムである。元画像取得プログラム111は、例えば、記憶装置130に格納されている元画像データ131を認識対象(分析対象)のデータとして読み込む。元画像取得プログラム111は、カメラ140で撮影された元画像データを読み込んでもよいし、記憶装置130に格納された元画像データを読み込んでもよい。元画像取得プログラム111は、オペレーティングシステムの有する機能、あるいはデバイスドライバなどが持つ機能として実現されてもよい。または、元画像取得プログラム111は、骨格画像生成プログラム112の一部として設けられてもよい。
骨格画像生成プログラム112は、元画像データ131に写っている人間の主要部分(例えば、顔および手足等)のパーツを認識して骨格として抽出し、骨格画像データ132を生成するコンピュータプログラムである。
挙動画像生成プログラム113は、時間的に連続した骨格画像データ132をもとに骨格の動きを表す挙動を抽出し、挙動画像データ133を生成するコンピュータプログラムである。
シーケンスデータ生成プログラム114は、一連の動きを表す時系列の画像データ131〜133を集約して、シーケンスデータ135,137を生成するコンピュータプログラムである。
モデル生成プログラム115は、シーケンスデータから被写体である人間の動きを機械学習して、「モデル」としてのモデルデータ136を生成するコンピュータプログラム(学習プログラム)である。
推論プログラム116は、推論用シーケンスデータをモデルへ入力することにより、各シーケンスでの人間の動きを認識するコンピュータプログラムである。
入出力装置120は、ユーザとの間で情報を入出力する装置である。入出力装置120は、情報出力装置121と情報入力装置122とを備える。情報出力装置121としては、例えば、ディスプレイ、プリンタ(いずれも不図示)などがある。情報入力装置122としては、例えば、キーボード、マウス、タッチパネル、カメラ、スキャナ(いずれも不図示)などがある。情報出力装置と情報入力装置との両方を兼ねる装置でもよい。外部のカメラ140で撮影された動画ファイルを記憶装置130または中央演算処理装置110のいずれかまたは両方に入力させることもできる。
記憶装置130は、例えば、中央演算処理装置110での処理対象となるデータと処理後のデータ等とを格納する装置である。
記憶装置130には、例えば、元画像データ131と、骨格画像データ132と、挙動画像データ133と、正解データ134と、学習用シーケンスデータ135と、モデルデータ136と、推論用シーケンスデータ137とが格納される。
上述の通り、元画像データ131は、動画を例えばフレーム毎の画像単位で分割した元画像群である。骨格画像データ132は、元画像データ131をもとに人の主要な骨格を抽出した画像データである。挙動画像データ133は、骨格画像データ132をもとに時間的に連続した画像内の人間の動きにどのような変化があったかの情報を抽出した画像データである。
正解データ134は、元画像データ131に含まれる人間の行動パターンの正解を示すデータである。学習用シーケンスデータ135は、元画像データ131と骨格画像データ132と挙動画像データ133と正解データ134とをもとに、ひとまとまりの時系列データとして加工されたデータである。モデルデータ136は、学習用シーケンスデータ135を機械学習させることで得られる学習済モデルのデータである。推論用シーケンスデータ137は、元画像データ131と骨格画像データ132と挙動画像データ133とをもとに、ひとまとまりの時系列データとして加工されたデータである。
上述のコンピュータプログラムとデータの少なくとも一部または全部を、フラッシュメモリデバイス、ハードディスク、磁気テープ、光ディスクなどの記録媒体MMに格納して流通させることもできる。コンピュータプログラムおよびデータの少なくとも一部を、通信ネットワークを介して配信することもできる。
<元画像データ>
図3は、元画像データ131の例を示す。元画像データ131は、例えば、動画データ(動画ファイル)をフレーム単位で分割してファイルとして格納したデータである。
図3(1),図3(2)は、撮影時間の異なる元画像データ131(1),131(2)を示す。各元画像データ131(1),131(2)には、対象の人物1311(1),1311(2)と、背景1312とが含まれている。図3は、被写体である人間1311が街路灯1312の前を横切って走っている画像を例に挙げている。この場合、元画像データ131(1),131(2)は、動作中の人物を撮影しているため、それぞれ人間1311の画像が異なる。これに対して、固定された街路灯などの背景1312は、元画像データ131(1),131(2)間で変化しない。
図3(1)に示すように、各元画像データ131には、ファイル名F131が自動的に付与される。図3に示す例では、元画像であることを示す「raw」に時間的順序を示す数値を付与することにより、元画像データのファイル名が生成される。
<骨格画像データ>
図4は、骨格画像データ132の例を示す。図4(1)に示す骨格画像データ132(1)は、図3(1)に示す元画像データ131(1)から得られる骨格情報から生成されたデータである。図4(2)に示す骨格画像データ132(2)は、図3(2)に示す元画像データ131(2)から得られる骨格情報から生成されたデータである。
図3(1)の元画像データ131(1)に含まれる人間1311(1)から骨格だけの人物1322(1)が生成される。同様に、図3(2)の元画像データ131(2)に含まれる人間1311(2)から骨格だけの人物1322(2)が生成される。
骨格画像は、人の頭および手足等の主要なパーツにおける主要な関節を点でプロットし、一部の点と点とを線で結合したものである。骨格画像データ132には元画像データ131における背景は含まれないため、人間の行動を認識する上でノイズとなる情報は除外される。さらに、骨格情報を抽出することにより、人間の姿勢をより明確に認識することができる。
図4(3)に示すように、骨格画像データ132にもファイル名F132が自動的に付与される。図4に示す例では、骨格画像であることを示す「pose」に時間的順序を示す数値を付与することにより、骨格画像データのファイル名が生成される。
<挙動画像データ>
図5は、挙動画像データ133の例を示す。挙動画像データ133は、骨格画像データ132の各画像のうち、時間的に隣接する画像から人間の骨格の動きの変化を挙動情報として抽出し、抽出された挙動情報を画像として保存したデータである。
図5(1)に示す挙動画像データ133(1)は、図4(1)に示す骨格画像データ132(1)と図4(2)に示す骨格画像データ132(2)とからオプティカルフローを抽出し、抽出された画素毎のオプティカルフローを矢印で表現したデータである。同様に、図5(2)に示す挙動画像データ133(2)は、図4(2)に示す骨格画像データ132(2)と時間的に次の骨格画像データ(不図示)とからオプティカルフローを抽出することにより生成されたデータである。
図5(3)に示すように、挙動画像データ133にもファイル名F133が自動的に付与される。図5に示す例では、挙動画像であることを示す「flow」に時間的順序を示す数値を付与することにより、挙動画像データのファイル名が生成される。
<正解データ>
図6は、正解データ134の例を示す。正解データ134は、元画像データ131のファイル名1341と正解1342とから構成される。
正解1342とは、画像に写っている人間の行動を分類する識別子(ID)である。正解1342では、例えば、歩いている人は「0」、走っている人は「1」、座っている人は「2」、のように任意の分類を定義可能である。図6の例では、各ファイル1341には、いずれも走っている人を示すID「1」が付与されている。
これら以外に、ジャンプしている、しゃがもうとしている、立ち上がろうとしている、座ろうとしている、何かを持ち上げようとしている、何かを置こうとしている、のような行動パターンを定義し、その行動パターンに識別子を割り当ててもよい。
<学習用シーケンスデータ>
図7は、学習用シーケンスデータ135の例を示す。学習用シーケンスデータ135は、一連の時系列データ(元画像データ131,骨格画像データ132,挙動画像データ133)をもとに生成されている。人間の行動を認識するモデルデータは、学習用シーケンスデータ135を用いて機械学習を行うことにより生成される。
学習用シーケンスデータ135は、例えば、シーケンス識別子1351(図中、sid)と、時間的順序識別子1352(図中、tid)と、元画像データのファイル名1353と、骨格画像データのファイル名1354と、挙動画像データのファイル名1355と、分類クラス(分類結果)1356とを備える。識別子1351,1352は、行動認識装置1内で一意であればよい。
図7の例では、時間的順序識別子1352の数は「3」である場合を示す。識別子1352の数は「3」以外の数でもよい。図7の例では、骨格画像データと挙動画像データとは、それぞれ同一時刻の元画像データから生成された画像データである。
<モデルデータ>
図8は、モデルデータ136の例を示す。モデルデータ136は、例えば、データ種類1361と、データ項目1362と、値1363とを備える。
データ種類1361は、機械学習により得られたモデルの設定データ13611と学習済モデル13612とを備える。設定データ13611および学習済モデル13612は、それぞれデータ項目1362とその値1363とを含む。
設定データ13611のデータ項目1362は、例えば、元画像shape 1362Aと、骨格画像shape 1362Bと、挙動画像shape 1362Cと、出力shape 1362Dと、各層の処理内容1362Eおよび1362Fとを含む。
元画像shape 1362Aは、元画像データ131の構造を表す。元画像shape 1362Aの値1363には、例えば(256,256,3)が設定される。これは、高さ256画素、幅256画素、3チャンネル(通常RGB)であることを表す。
骨格画像shape 1362Bと挙動画像shape 1362Cも同様である。すなわち、骨格画像shape 1362Bは、骨格画像データ132の構造を示す。挙動画像shape 1362Cは、挙動画像データ133の構造を示す。挙動画像データはグレー画像であるため、1チャンネルである。
出力shape 1362Dの値1363には、(10)が設定されている。これは、10種類の行動パターンがあることを表す。
機械学習のアルゴリズムがニューラルネットワークの場合、各層の処理内容が、1層目処理1362E、2層目処理1362Fのように表される。その他、処理内容に関する様々な設定が設定データ13611に記載される。
学習済モデル13612には、シーケンスデータから人間の行動の認識結果(行動の識別子)を得るためのモデルのパラメータが格納される。機械学習による学習処理が行われるまで、学習済モデル13612の値1363には値が格納されない。学習処理が行われた後で、自動的に計算された値が値1363へ格納される。なお、モデルのパラメータはユーザが把握している必要はなく、機械学習モデルを呼び出した際にコンピュータプログラム内で自動的に使用される。
<推論用シーケンスデータ>
図9は、推論用シーケンスデータ137の例を示す。推論用シーケンスデータ137は、画像に含まれる人間の行動を判別する際に使用されるデータであり、図8で述べたモデルに入力される。
推論用シーケンスデータ137は、図7で述べた学習用シーケンスデータ135と同様に、例えば、シーケンス識別子1371と、時間的順序識別子1372と、元画像データのファイル名1373と、骨格画像データのファイル名1374と、挙動画像データのファイル名1375と、分類クラス1376とを備える。分類クラス1376には、推論処理後に、行動パターンの判定結果である識別子が格納される。
<行動認識装置における処理概要>
行動認識装置1の処理概要を説明する。中央演算処理装置110は、骨格画像生成プログラム112により呼び出される元画像取得プログラム111を用いて、記憶装置130から元画像データ131を読み込む。続いて中央演算処理装置110は、骨格画像生成プログラム112を用いて、元画像データ131から骨格画像データ132を生成し、生成した骨格画像データ132を記憶装置130へ格納する。次に、中央演算処理装置110は、挙動画像生成プログラム113を実行し、記憶装置130から骨格画像データ132を読み込み、骨格画像データ132から挙動画像データ133を生成する。中央演算処理装置110は、生成した挙動画像データ133を記憶装置130へ格納する。
中央演算処理装置110は、シーケンスデータ生成プログラム114を実行する。中央演算処理装置110は、記憶装置130から、元画像データ131と骨格画像データ132と挙動画像データ133と正解データ134とを読み込み、学習用シーケンスデータ135を生成する。中央演算処理装置110は、生成した学習用シーケンスデータ135を記憶装置130へ格納する。
中央演算処理装置110は、モデル生成プログラム115を実行する。中央演算処理装置110は、記憶装置130から学習用シーケンスデータ135とモデルデータ136とを読み込んで機械学習を行い、モデルデータ136を得る。中央演算処理装置110は、新たに生成されたモデルデータ136を記憶装置130に上書き保存する。
中央演算処理装置110は、推論プログラム116を実行する。中央演算処理装置110は、記憶装置130からモデルデータ136と推論用シーケンスデータ137とを読み込み、各シーケンスにおける認識結果(行動分類クラス)を求める。中央演算処理装置110は、生成した推論用シーケンスデータ137を記憶装置130に上書き保存する。それぞれの処理について、以下詳細に説明する。
<骨格推定処理>
図10は、骨格画像生成プログラム112が実行する骨格画像データ生成処理を示すフローチャートである。ここでの動作主体は、中央演算処理装置110により実行される骨格画像生成プログラム112である。骨格画王データ生成処理では、図3のような元画像データ群から、各元画像データに写っている人間の骨格の座標を推定し、骨格画像として描画する。
骨格画像生成プログラム112は、記憶装置130から元画像データ131を読み込む(S21)。以下では、図3で述べた元画像データ131が中央演算処理装置110に読み込まれたと仮定して説明する。
骨格画像生成プログラム112は、各元画像データ131から被写体である人間の骨格座標を算出し、骨格画像データ132を生成する(S22)。
人間の骨格座標を求める手法には種々あるが、例えば非特許文献1に記載された方法を用いてもよい。この方法は、画像内に写っている人間の、人体の各部位の位置と各部位間の関係性の特徴とを抽出し、人体毎の骨格座標を求める。
算出対象の骨格の部位は、用途に応じて変更可能である。本実施例では、例えば、鼻、首、右肩、左肩、右肘、左肘、右手、左手、右腰、左腰、右膝、左膝、右足、左足、の合計14点を取得する場合を説明する。算出対象の各部位の座標を抽出した後、抽出された骨格座標群をプロットし、プロットされた骨格座標群のうち一部の座標間を直線で結合することにより、骨格画像データ132を生成する。
例えば、図3(1),(2)に示す元画像データ131(1),(2)に対して、抽出後の骨格座標をもとに計算すると、図4(1),(2)に示す骨格画像データ132(1),132(2)が生成される。なお、骨格画像データ132の背景は、例えば白色や黒色等にすればよい。
最後に、骨格画像生成プログラム112は、ステップS22で生成した骨格画像データ132を記憶装置130へ格納する(S23)。
<挙動抽出処理>
図11は、挙動画像生成プログラム113が実行する挙動画像データ生成処理を示すフローチャートである。ここでの動作主体は、中央演算処理装置110により実行される挙動画像生成プログラム113である。挙動画像データ生成処理では、図4に示す骨格画像群から、各部位の時間的変化を抽出し、挙動画像データ133として描画する。
挙動画像生成プログラム113は、記憶装置130から骨格画像データ132を読み込む(S31)。以下では、例えば、図4に示す骨格画像データ132(1),(2)のようなデータが読み込まれたものとして説明する。
挙動画像生成プログラム113は、各骨格画像データ132から、骨格の動きとしてのオプティカルフローを抽出し、挙動画像データ133を生成する(S32)。ここでオプティカルフローとは、時間的に連続する画像の中で、物体の動きをベクトルで表現したものである。オプティカルフローの計算方法には種々あるが、例えばLucas−Kanade法を用いることができる。図4(1),(2)に示す骨格画像データ132(1),(2)を元にオプティカルフローを求めると、図5(1)に示す挙動画像データ133(1)が生成される。挙動画像データ内の矢印は、矢印の始点から終点に向かって、画像内の画素に動きがあったことを表している。
挙動画像生成プログラム113は、ステップS32で生成した挙動画像データ133を記憶装置130へ格納する(S33)。
<シーケンス生成処理>
図12は、シーケンスデータ生成プログラム114が実行するシーケンスデータ生成処理を示すフローチャートである。ここでの動作主体は、中央演算処理装置110により実行されるシーケンスデータ生成プログラム114である。シーケンスデータ生成処理では、図7で述べた学習用シーケンスデータ135または図9で述べた推論用シーケンスデータ137を生成する。
まず最初に、シーケンスデータ生成プログラム114は、元画像データ131と骨格画像データ132と挙動画像データ133と正解データ134とを記憶装置130から読み込む(S41)。例えば、図3、図4、図5、図6で述べたデータが読み込まれたものとして、以下説明する。
シーケンスデータ生成プログラム114は、各画像データ131,132,133に一意に付与されている時系列を表す変数tに「1」を代入する(S42)。シーケンスデータ生成プログラム114は、一つのシーケンスとして構成する所定時間内のデータを取得する(S43)。ここでは、「t」から「t+n−1」までのデータを一つのシーケンスとして取り扱う。変数nは、一つのシーケンスの長さを表している。例えば、「t=1、n=3」の場合、一つのシーケンスとなるのは、時間が「1」、「2」、「3」のデータである。
例えば図7では、元画像データのファイル名1353、骨格画像データのファイル名1354、挙動画像データのファイル名1355のうち、各ファイル名中の時間的順序を示す値が「0001」、「0002」、「0003」であるデータが一つのシーケンスとして使用される。すなわちこの場合は「1」、「2」、「3」となる。
シーケンスデータ生成プログラム114は、シーケンスデータのシーケンス識別子(sid)と時間的順序識別子(tid)とを設定する(S44)。シーケンス識別子には、各シーケンスデータを一意に識別する値を格納する。図7のシーケンス識別子1351に示すように、「1」から順に格納する。時間的順序識別子は、各シーケンスデータ内での順序を表す値である。図7の時間的順序識別子1352に示すように、時間が古いものから順に「1」、「2」、「3」のように設定される。
シーケンスデータ生成プログラム114は、各シーケンスデータの分類クラスを設定する(S45)。分類クラスとは、各シーケンスにおける人間の行動パターンを表す識別子である。例えば、「歩いている人」は「0」、「走っている人」は「1」のように、分類クラスは設定される。
分類クラスは、学習処理時と推論処理時とで、それぞれ格納する値が異なる。推論処理時には、分類クラスの値を設定せず、空白にしておく。学習処理時には、正解データをもとに分類クラスの値を設定する。分類クラスの値の決め方には種々あるが、例えば、同一シーケンス内における多数決で分類クラスを決定する方法が考えられる。
図7の「sid=1」の場合で説明する。元画像データは、「raw_0001.jpg」、「raw_0002.jpg」、「raw_0003.jpg」の3つである。これら3つの元画像データを正解データと照合すると、すべて正解は「1」である。したがって、3つのファイルの多数決により、「sid=1」のシーケンスの分類クラスは「1」となる。分類クラスを多数決で決定できない場合は、例えば、候補となる分類クラスの中からランダムで決定したり、またはそのシーケンスにおける最大の「tid」を持つ分類クラスを使用するなどすればよい。
続いて、シーケンスデータ生成プログラム114は、変数tに「t+n」を代入する(S46)。すなわち、次のシーケンスの開始の時間を設定する。
シーケンスデータ生成プログラム114は、「t+n−1」が最大の時間tmaxより大きいかどうか判定する(S47)。この条件が成立する場合(S47:YES)、シーケンスをこれ以上設定できないことを表す。条件が成立しない場合(S47:NO)、シーケンスデータ生成プログラム114は、ステップS43へ戻って、次のシーケンスを生成する。条件が成立する場合(S47:YES)、ステップS48へ進む。
シーケンスデータ生成プログラム114は、生成されたシーケンスデータを記憶装置130へ格納する(S48)。学習処理用にシーケンスデータ生成処理が呼び出された場合は、学習用シーケンスデータ135として記憶装置130に格納される。推論処理用にシーケンスデータ生成処理が呼び出された場合は、推論用シーケンスデータ137として記憶装置130へ格納される。
<学習処理>
図13は、モデル生成プログラム115が実行するモデル生成処理(学習処理)を示すフローチャートである。ここでの動作主体は中央演算処理装置110により実行されるモデル生成プログラム115である。モデル生成処理では、図7で述べた学習用シーケンスデータ135を生成した後で、この学習用シーケンスデータ135から図8で述べたモデルデータ136を生成する。
モデル生成プログラム115は、シーケンスデータ生成プログラム114により学習用シーケンスデータ135を生成させる(S51)。このステップS51では、図12で述べたシーケンスデータ生成処理が呼び出され、前述した処理が実行される。
モデル生成プログラム115は、生成された学習用シーケンスデータ135を記憶装置130から読み込み(S52)、機械学習により学習用シーケンスデータ135からモデルデータ136を生成する(S53)。
機械学習の手法は種々あるが、例えばディープラーニングを用いることができる。ディープラーニングを用いる場合、様々なモデルを定義可能である。図14にニューラルネットワークの構成例を示す。
図14では、入力として、元画像データ131、骨格画像データ132、挙動画像データ133を、時間的順序識別子(tid)毎にひとつにまとめたマルチチャンネルの画像データとして、CNN(Convolutional Neural Network)21に入力して特徴を抽出し、さらにLSTM(Long Short−Term Memory)22により時系列としての特徴抽出を行って、最終的な分類クラスを出力する(23,24)。CNNとLSTMとでの処理時には、活性化関数またはプーリングまたはドロップアウト等の処理を加えてもよい。
ディープラーニングの出力として、各シーケンスデータの分類クラスを設定する。図14の構成は一例であり、様々な変更が可能である。図14で述べたニューラルネットワークに学習用シーケンスデータ135を入力し、誤差逆伝播法等により学習させることにより、画像内の人間の行動パターンを推測可能なモデルデータ136が生成される。
図13に戻る。モデル生成プログラム115は、ステップS53で生成されたモデルデータ136を記憶装置130に格納する(S54)。
<推論処理>
図15は、推論プログラム116の実行する推論処理を示すフローチャートである。動作主体は、中央演算処理装置110により実行される推論プログラム116である。推論処理では、図9で述べた推論用シーケンスデータ137を生成した後、この推論用シーケンスデータ137と図8で述べたモデルデータ136とをもとに、各シーケンスにおける分類クラスを推定する。
推論プログラム116は、シーケンスデータ生成プログラム114により推論用シーケンスデータ137を生成させる(S61)。ステップS61では、シーケンスデータ生成処理が呼び出され、前述の処理が実行される。
推論プログラム116は、推論用シーケンスデータ137とモデルデータ136とを記憶装置130から読み込み(S62)、推論処理により、推論用シーケンスデータ137をモデルデータ136へ入力して、各シーケンスの分類クラスを求める(S63)。
図14で述べたニューラルネットワークに対し、学習時と同様に、元画像データと骨格画像データと挙動画像データとを時間的順序識別子(tid)毎のひとまとまりのマルチチャンネル画像データとして入力すると、softmax処理23により、各シーケンスの分類クラスの確率が出力される。例えば、「走っている」を表す分類クラス「1」の確率が「0.9」であれば、入力されたデータ群に含まれる人間の行動を「走っている」と判定できる。行動の認識結果を示す識別子は、分類クラスに格納される。
推論プログラム116は、ステップS63で生成された推論用シーケンスデータ137を記憶装置130に上書き保存する(S64)。
以上説明したように、本実施例によれば、元画像データ131から骨格画像データ132および挙動画像133データを生成し、機械学習によるモデルデータ136を生成することにより、時系列の画像データに写っている人間の行動を判定することができる。
本実施例では、人間の行動の認識に際して骨格画像データ132を使用するため、人間とは無関係の背景の情報を排除できる。さらに、本実施例では、人間の骨格としての特徴を抽出するため、人間の行動を高精度に判定することができる。さらに、本実施例では、挙動画像データ133も使用するため、時系列的な人間の動きの特徴を抽出することができ、さらに判定精度を向上させることができる。