A.第1実施例:
A1.装置構成:
図1は、実施例のシステムを示す説明図である。システム1000は、対象の状態を推定するためのシステムである。対象は、機械(例えば、工作機械、ロボット、無人飛行機(ドローンとも呼ばれる))、生物(例えば、犬などの動物、人)など、状態に応じて動きが変化する任意の対象であってよく、予め決められている。本実施例では、対象は、工場で作業を行う作業者である。
システム1000は、データ処理装置200と、データ処理装置200に接続されたセンサ300と、を備えている。データ処理装置200は、例えば、パーソナルコンピュータである。データ処理装置200は、プロセッサ210と、記憶装置215と、画像を表示する表示部240と、ユーザによる操作を受け入れる操作部250と、通信インタフェース270と、を有している。これらの要素は、バスを介して互いに接続されている。記憶装置215は、揮発性記憶装置220と、不揮発性記憶装置230と、を含んでいる。
プロセッサ210は、データ処理を行う装置であり、例えば、CPUである。揮発性記憶装置220は、例えば、DRAMであり、不揮発性記憶装置230は、例えば、フラッシュメモリである。
不揮発性記憶装置230は、第1プログラム231、第2プログラム232と、学習済モデル234と、を格納している。学習済モデル234は、対象の例である作業者に取り付けられたセンサ300からの情報を用いて作業者の状態を推定するようにトレーニングされた予測モデルである(詳細は、後述)。本実施例では、学習済モデル234は、プログラムモジュールである。
プロセッサ210は、第1プログラム231及び第2プログラム232と学習済モデル234との実行に利用される種々の中間データを、記憶装置215(例えば、揮発性記憶装置220、不揮発性記憶装置230のいずれか)に、一時的に格納する。
表示部240は、液晶ディスプレイ、有機ELディスプレイなどの、画像を表示する装置である。操作部250は、表示部240上に重ねて配置されたタッチパネル、ボタン、レバーなどの、ユーザによる操作を受け取る装置である。ユーザは、操作部250を操作することによって、種々の指示をデータ処理装置200に入力可能である。通信インタフェース270は、他の装置と通信するためのインタフェースである(例えば、USBインタフェース、有線LANインタフェースなどの有線インタフェース、または、IEEE802.11やBluetooth(登録商標)などの無線インタフェース)。本実施例では、通信インタフェース270は、無線インタフェースである。データ処理装置200は、通信インタフェース270を介して、センサ300と通信可能である。
センサ300は、対象の動きに関連するパラメータを測定するセンサである。本実施例では、センサ300は、3軸の加速度センサと、3軸のジャイロセンサと、を備える動き検知センサである。センサ300は、互いに直交する3個の軸のそれぞれの方向の加速度と、互いに直交する3個の軸のそれぞれを中心とする角速度と、で構成される6個のパラメータを測定する。センサ300は、作業者の腕に取り付けられ、作業者の動きを検知する。センサ300は、予め決められた一定のデータレート(例えば、数ヘルツ)で、6個のパラメータの6個の測定値を示すデータを、出力する。以下、センサ300から出力されるデータを、センサデータとも呼ぶ。データ処理装置200は、センサ300からのセンサデータを記憶装置215に蓄積することによって、各測定値の時系列データを取得できる。
図2は、人工ニューラルネットワークNNの例の説明図である(以下、単に、ニューラルネットワークNNとも呼ぶ)。ニューラルネットワークNNは、学習済モデル234(図1)の生成に利用されるニューラルネットワークである。本実施例では、ニューラルネットワークNNは、いわゆる畳み込みニューラルネットワーク(Convolutional Neural Network)である。畳み込みニューラルネットワークは、畳込層を含む複数の層を有している。ニューラルネットワークNNの詳細のついては、後述する。
A2.ニューラルネットワークNNのトレーニング:
図3は、ニューラルネットワークNNのトレーニングの処理の例を示すフローチャートである。以下、データ処理装置200(図1)のプロセッサ210は、トレーニング実行者からの指示に応じて、図3の処理を開始することとする。プロセッサ210は、トレーニングのための第1プログラム231に従って、図3の処理を実行する。
S110では、プロセッサ210は、学習データを生成する。図4は、学習データの生成処理の例を示すフローチャートである。S210では、プロセッサ210は、センサ300からのセンサデータと、作業者の状態を示すデータと、を取得する。
図5(A)-図5(E)は、作業者の状態の例を示す説明図である。本実施例では、作業者900の状態は、第1状態SAから第5状態SEの5個の状態のいずれかに分類される。第1状態SA(図5(A))は、作業者900が、荷物を持たずに歩いている状態である。第2状態SB(図5(B))は、作業者900が、荷物920を台車910に積んでいる状態である。第3状態SC(図5(C))は、作業者900が、台車910を押しながら歩いている状態である。第3状態SCでは、台車910は、荷物920を載せていてもよく、荷物を載せていなくてもよい。第4状態SD(図5(D))は、作業者900が、台車910から荷物920を下ろしている状態である。第5状態SE(図5(E))は、作業者900が、荷物920を持って歩いている状態である。
図6は、センサデータを用いる処理の概要図である。図中の上部には、グラフGaが示されている。このグラフGaは、センサ300によって測定される3種類の加速度ACx、ACy、ACzと、3種類の角速度AVx、AVy、AVzと、の経時変化を示している。横軸は、時間Tを示し、縦軸は、パラメータACx、ACy、ACz、AVx、AVy、AVzの測定値を示している。グラフGaには、さらに、時間Tと作業者900の状態との対応関係も、示されている。図6の例では、作業者900の状態は、SA、SC、SB、SC、SD、SEの順に変化している。図5(A)-図5(E)で説明したように、複数の状態SA、SB、SC、SD、SEの間で、作業者900の動きは互いに異なっている。パラメータACx、ACy、ACz、AVx、AVy、AVzの経時変化のパターン(すなわち、グラフの形状)の全体を、状態SA、SB、SC、SD、SEの間で比較する場合、少なくとも一部が互いに異なり得る。
S210(図4)では、プロセッサ210は、センサ300からの6個のパラメータの6個の測定値と、作業者900の状態の分類と、の経時変化を示す時系列データセットを、取得する。このような時系列データセットは、種々の方法によって、取得可能である。本実施例では、以下の手順に従って、時系列データセットが取得される。作業者900(図5(A)-図5(E))は、センサ300を腕に取り付けた状態で、荷物920を運ぶ作業を行う。データ処理装置200は、センサ300からのセンサデータを取得する。データ処理装置200のプロセッサ210は、センサデータと、センサデータを取得した時点での時間と、の対応関係を示すデータを、記憶装置215(例えば、不揮発性記憶装置230)に格納する。センサ300は、一定のデータレートで、センサデータを送信する。従って、プロセッサ210は、そのデータレートで、センサデータと時間とを記憶装置215に記録する。また、トレーニング実行者は、作業者900を図示しないビデオカメラで撮影する。作業者900による作業の終了後、トレーニング実行者は、ビデオカメラで撮影された映像を観察することによって、時間と作業者900の状態との対応関係を特定する。そして、トレーニング実行者は、時間と状態との対応関係を、操作部250を操作することによって、データ処理装置200に入力する。例えば、トレーニング実行者は、作業の開始時間TS(図6)から作業の終了時間TEまでの時間範囲おいて、状態が変化した時間である変化時間を示すデータを、データ処理装置200に入力する。図6の例では、5個の変化時間T1-T5が、入力される。そして、トレーニング実行者は、変化時間で区切られた各期間の状態を示すデータを、データ処理装置200に入力する。図6の例では、6個の期間P1-P6のそれぞれの状態SA、SC、SB、SC、SD、SEを示すデータが、入力される。プロセッサ210は、入力されたデータを用いる事によって、6個のパラメータの6個の測定値と、作業者900の状態の分類と、の経時変化を示す時系列データセットを取得する。以下、1つの状態が継続する連続な期間P1-P6を、状態期間P1-P6とも呼ぶ。
S220(図4)では、プロセッサ210は、状態の分類毎に、時系列データセットを生成する。具体的には、プロセッサ210は、同じ状態が連続する1つの注目期間に含まれるパラメータACx、ACy、ACz、AVx、AVy、AVzのそれぞれのデータを、注目期間に対応する状態の時系列データセットとして取得する。図6の例では、プロセッサ210は、6個の状態期間P1-P6に対応する6個の時系列データセット811-816を取得する。なお、第2状態期間P2に対応する第2時系列データセット812と、第4状態期間P4に対応する第2時系列データセット814とは、同じ第3状態SCに対応している。ただし、第2状態期間P2と第4状態期間P4とは連続していないので、これらの時系列データセット812、814は、互いに異なる時系列データセットとして、生成される。
S230(図4)では、プロセッサ210は、各分類の各パラメータに対してフーリエ変換を行うことによって、各パラメータの周波数スペクトルを取得する。図6の下部には、時系列データセット811から得られる周波数スペクトルセット821の概要が示されている。本実施例では、プロセッサ210は、時系列データセット811に含まれる6個のパラメータACx、ACy、ACz、AVx、AVy、AVzのそれぞれの高速フーリエ変換を実行する。これにより、6個のパラメータACx、ACy、ACz、AVx、AVy、AVzの6個の周波数スペクトルFCx、FCy、FCz、FVx、FVy、FVzが、それぞれ算出される。図6の下部には、周波数スペクトルFCx、FCy、FCz、FVx、FVy、FVzのグラフの概要が示されている。横軸は、周波数Fを示し、縦軸は、強度Mを示している。
プロセッサ210は、S220で生成された各時系列データセットの各パラメータに対して、周波数スペクトルを算出する。図6の例では、6個の時系列データセット811-816に対応する6個の周波数スペクトルセット821-826が、算出される。
S240(図4)では、プロセッサ210は、各周波数スペクトルの最大ピークの周波数であるピーク周波数を特定する。ピーク周波数は、最大の強度を有するピークの周波数である。図6の周波数スペクトルセット821の周波数スペクトルFCx-FCz、FVx-FVzからは、ピーク周波数FP1-FP6が、それぞれ特定される。
S250(図4)では、プロセッサ210は、各分類の各パラメータのピーク周波数から、最も低いピーク周波数を特定する。最も低いピーク周波数は、S240で特定された複数のピーク周波数のうちの最低の周波数である。図6の例では、最も低いピーク周波数は、6個の周波数スペクトルセット821-826から特定される36個のピーク周波数のうちの最低のピーク周波数である。
S260(図4)では、プロセッサ210は、最も低いピーク周波数を用いて、時間幅を決定する。後述するように、学習データを生成するために、時系列データから、同じ時間幅の互いに異なる複数の期間のデータが、抽出される。S260では、この期間の時間幅が、決定される。以下、S260で決定される時間幅を、抽出時間幅と呼ぶ。
図7(A)は、最も低いピーク周波数と抽出時間幅との対応関係の例を示すグラフである。横軸は、最も低いピーク周波数Fmを示し、縦軸は、抽出時間幅Twを示している。図7(B)は、最大周期と抽出時間幅との対応関係の例を示すグラフである。横軸は、最大周期Tmを示し、縦軸は、抽出時間幅Twを示している。最大周期Tmは、最も低いピーク周波数Fmの1周期の時間である。図7(A)に示すように、本実施例では、プロセッサ210は、最も低いピーク周波数Fmが高いほど、抽出時間幅Twが狭くなるように、抽出時間幅Twを決定する。図7(B)に示すように、抽出時間幅Twは、最大周期Tmに比例する。抽出時間幅Twと最も低いピーク周波数Fmとの対応関係(すなわち、抽出時間幅Twと最大周期Tmとの対応関係)は、予め決められている。本実施例では、抽出時間幅Twは、最大周期Tmと同じである。
S270(図4)では、プロセッサ210は、状態の分類毎に、複数の期間のそれぞれのグラフの画像データを生成する。図8は、画像データの例を示す概略図である。図中の上部には、図6のグラフGaと同じグラフGaが示されている。グラフGaの下には、互いに異なる複数の期間700が示されている(以下、期間700を、抽出期間700とも呼ぶ)。複数の抽出期間700のそれぞれの時間幅は、S260(図4)で決定された抽出時間幅Twと同じである。本実施例では、プロセッサ210は、状態期間P1-P6のそれぞれにおいて、均等に、複数の抽出期間700を配置する。隣合う2個の抽出期間700の間の時間差は、予め決められた時間差Tdに、設定される。本実施例では、時間差Tdは、抽出時間幅Twよりも小さい(ただし、時間差Tdは、抽出時間幅Tw以上であってもよい)。複数の状態期間に重なる抽出期間700は、採用されない。この理由は、学習効果を高くするためである。例えば、第1状態期間P1と第2状態期間P2とに重なる抽出期間700は、採用されない。
プロセッサ210は、時系列データセットから、抽出期間700内のデータを抽出する。そして、プロセッサ210は、抽出されたデータによって示される6個のパラメータACx、ACy、ACz、AVx、AVy、AVzの経時変化を示すグラフの画像データであるグラフ画像データを生成する。以下、グラフ画像データによって表される画像を、グラフ画像とも呼ぶ。図8には、抽出期間700tに対応するグラフ画像830tが、示されている。グラフ画像データは、第1方向Dxと、第1方向Dxに垂直な第2方向Dyと、に沿ってマトリクス状に並ぶ複数の画素のそれぞれの色値を示している。プロセッサ210は、複数の抽出期間700のそれぞれについて、グラフ画像データを生成する。そして、プロセッサ210は、グラフ画像データと、状態を示す教師データと、を含む学習データを生成する。教師データは、グラフ画像データに対応する状態、すなわち、抽出期間700を含む状態期間に対応する状態を示すデータである。例えば、図8のグラフ画像830tの抽出期間700tは、第1状態期間P1に含まれており、第1状態期間P1の状態は第1状態SAである。従って、グラフ画像830tに対応する教師データは、第1状態SAを示している。
本実施例では、図8のグラフ画像830tに示すように、グラフ画像は、線グラフである。横軸は時間Tを示し、縦軸はパラメータACx、ACy、ACz、AVx、AVy、AVzを示している。目盛りは省略される。グラフの枠(縦軸と横軸を含む)は、省略されている。ただし、グラフ画像は、グラフの枠を含んでもよい。なお、グラフの構成は、複数のグラフ画像の間で共通である。例えば、横軸のスケールと、各パラメータACx、ACy、ACz、AVx、AVy、AVzの描画領域の位置と大きさと縦軸のスケールとは、複数のグラフ画像の間で共通であり、予め決められている。なお、グラフの種類は、経時変化を示す任意の種類であってよい。例えば、グラフは、いわゆる散布図であってよい。散布図の複数のデータ点は、時間と測定値との組み合わせを示している。また、グラフ画像データのデータ形式は、本実施例では、白黒の二値のビットマップデータである。なお、グラフ画像データのデータ形式は、他の任意のデータ形式であってよい(例えば、RGB等の1以上の色成分のビットマップ)。プロセッサ210は、生成した各抽出期間700の学習データを、記憶装置215(例えば、不揮発性記憶装置230)に、格納する。そして、図4の処理、ひいては、図3のS110の処理が、終了する。
S120(図3)では、プロセッサ210(図1)は、複数の学習データを用いて、ニューラルネットワークNN(図2)をトレーニングする。
ニューラルネットワークNNは、入力層505と、第1畳込層510と、第1プーリング層520と、第2畳込層530と、第2プーリング層540と、第1全結合層550と、第2全結合層560と、第3全結合層570と、を有している。これらの層505-570は、この順番に、接続されている。本実施例では、ニューラルネットワークNNは、プログラムモジュールであり、第1プログラム231(図1)に含まれている。プロセッサ210は、ニューラルネットワークNNであるプログラムモジュールに従って処理を進行することによって、各層505-570の機能を実現する。以下、これらの層505-570について、順に説明する。
入力層505は、ニューラルネットワークNNの外部からのデータを取得する層である。本実施例では、学習データに含まれるグラフ画像データ830が、入力層505に入力される。入力層505に入力された画像データは、第1畳込層510によって、入力情報として利用される。
第1畳込層510は、画像の畳み込みの処理を行う層である。畳み込みの処理は、入力された画像である入力画像とフィルタとの相関を示す値(特徴値とも呼ばれる)を、フィルタをスライドさせながら、算出する処理である。画像の畳み込みの処理で用いられるフィルタは、重みフィルタとも呼ばれる。1個の重みフィルタのサイズは、例えば、P×P画素である(Pは2以上の整数。例えば、P=5)。ストライド(すなわち、フィルタの1回の移動量)は、例えば、1である。本実施例では、フィルタは、入力画像の全ての画素位置において特徴値を算出するように、入力画像の全体に亘ってスライドされる。この場合、入力画像の周囲では、ゼロパディングによって、画素が補われる。これに代えて、フィルタは、入力画像の縁部分を除いた残りの画素位置において特徴値を算出するように、スライドされてよい。このように、フィルタは、入力画像と同じサイズの画像(または、入力画像よりも小さい画像)のビットマップデータを生成する(特徴マップとも呼ばれる)。具体的には、入力された画像データのうちフィルタの位置に対応する部分のP×P個の画素の色値のリストが取得される。取得されたリストと、フィルタのP×P個の重みのリストと、の内積が算出される。「内積+バイアス」が、活性化関数に入力される。そして、活性化関数の計算結果が、特徴マップの1つの要素の値として用いられる。本実施例では、活性化関数としては、いわゆるReLU(Rectified Linear Unit)が用いられる。また、本実施例では、Q個の重みフィルタが用いられる(Qは1以上の整数)。従って、第1畳込層510として機能するプロセッサ210は、Q枚の特徴マップを生成する。なお、バイアスは、フィルタ毎に準備される。そして、Q個のフィルタのそれぞれの要素とQ個のバイアスとは、トレーニングによって、更新される。
入力画像の各画素の色値は、一般的に、U個の色成分(Uは1以上の整数。例えば、RGBの3色成分)で表されてよい。この場合、1個のフィルタは、P×P×U個の重みを有している。そして、入力画像上のフィルタの位置に対応する部分のP画素×P画素×U色成分の色値のリストと、フィルタのP×P×U個の重みのリストと、の内積が算出される。
第1畳込層510からの特徴マップは、第1プーリング層520によって、入力情報として利用される。プーリングは、画像(ここでは、特徴マップ)を縮小する処理である。第1プーリング層520は、いわゆるマックスプーリング(MaxPooling)を行う。マックスプーリングは、いわゆるダウンサンプリングによって特徴マップを縮小する処理であり、ウィンドウをスライドさせつつ、ウィンドウ内の最大値を選択することによってマップを縮小する。本実施例では、第1プーリング層520におけるウィンドウのサイズは、T×T画素であり、ストライドは、Tである(Tは2以上の整数。例えば、T=2)。これにより、元のマップの1/Tの高さと1/Tの幅を有するマップが生成される。第1プーリング層520として機能するプロセッサ210は、Q枚の特徴マップから、Q枚の縮小された特徴マップを生成する。
第1プーリング層520からの特徴マップは、第2畳込層530によって、入力情報として利用される。第2畳込層530は、第1畳込層510による処理と同様の手順に従って、画像の畳み込みの処理を行う。例えば、1つのフィルタは、Q枚の特徴マップに対応するQ個のマトリクスを備えている。そして、1つのフィルタは、Q枚の特徴マップから、1枚の特徴マップを生成する。活性化関数としては、いわゆるReLUが用いられる。なお、1つのフィルタの1個のマトリクスのサイズ(すなわち、第1方向Dxの要素数と第2方向Dyの要素数)と、フィルタの総数とは、種々の値であってよい。また、特徴マップの周囲のゼロパディングは、行われてよく、これに代えて、省略されてよい。ストライドは、種々の値であってよい。各フィルタのそれぞれの要素と、各バイアスとは、トレーニングによって、更新される。
第2畳込層530からの特徴マップは、第2プーリング層540によって、入力情報として利用される。第2プーリング層540は、第1プーリング層520による処理と同様の手順に従って、マックスプーリングを行う。これにより、第2プーリング層540は、縮小された特徴マップを生成する。ウィンドウのサイズとストライドとは、種々の値であってよい。
第2プーリング層540からの特徴マップは、第1全結合層550によって、入力情報として利用される。第1全結合層550は、一般的なニューラルネットワークで用いられる全結合層と同様の層である。第1全結合層550では、入力された特徴マップを用いて、複数の要素で構成されるリスト(第1中間ベクトルとも呼ぶ)が、生成される。第1中間ベクトルの要素の数は、予め決められており、種々の値であってよい。第1全結合層550では、第1全結合層550に入力される特徴マップの全ての要素のリストと、特徴マップの要素数と同じ数の重みのリストと、の内積が算出される。「内積+バイアス」が、活性化関数に入力される。そして、活性化関数の計算結果が、第1中間ベクトルの1つの要素として用いられる。本実施例では、活性化関数としては、いわゆるReLUが用いられる。また、重みのリストとバイアスとは、第1中間ベクトルの複数の要素のそれぞれに対して、別個に準備される。第1全結合層550として機能するプロセッサ210は、上記の計算を実行することによって、第1中間ベクトルを生成する。なお、重みのリストとバイアスとは、トレーニングによって、更新される。
第1全結合層550からの第1中間ベクトルは、第2全結合層560によって、入力情報として利用される。第2全結合層560は、第1全結合層550による処理と同様の手順に従って、入力された第1中間ベクトルを用いて、複数の要素で構成される第2中間ベクトルを生成する。第2中間ベクトルの要素の数は、予め決められており、種々の値であってよい。第2全結合層560では、第1中間ベクトルと、第1中間ベクトルの要素数と同じ数の重みのリストと、の内積が算出される。「内積+バイアス」が、活性化関数に入力される。そして、活性化関数の計算結果が、第2中間ベクトルの1つの要素として用いられる。本実施例では、活性化関数としては、いわゆるReLUが用いられる。重みのリストとバイアスとは、第2中間ベクトルの複数の要素のそれぞれに対して、別個に準備される。第2全結合層560として機能するプロセッサ210は、上記の計算を実行することによって、第2中間ベクトルを生成する。なお、重みのリストとバイアスとは、トレーニングによって、更新される。
第2全結合層560からの第2中間ベクトルは、第3全結合層570によって、入力情報として利用される。第3全結合層570は、全結合層550、560による処理と同様の手順に従って、入力された第2中間ベクトルを用いて、複数の要素で構成される出力ベクトルを生成する。本実施例では、出力ベクトルの要素の数は、ニューラルネットワークNNによって分類されるクラスの総数と同じ「5」である。第3全結合層570では、第2中間ベクトルと、第2中間ベクトルの要素数と同じ数の重みのリストと、の内積が算出される。「内積+バイアス」が、活性化関数に入力される。そして、活性化関数の計算結果が、出力ベクトルの1つの要素として用いられる。本実施例では、活性化関数としては、いわゆるソフトマックス関数(SoftMax)が用いられる。公知の通り、ソフトマックス関数は、ゼロ以上1以下の確率を意味する値を算出する。出力ベクトルの5個の成分値PA、PB、PC、PD、PEは、作業者900の状態が状態SA、SB、SC、SD、SEである確率を、それぞれ示している。例えば、第1成分値PAは、状態が第1状態SAである確率を示している。このような確率を示す出力ベクトルは、確信度データとも呼ばれる。なお、重みのリストとバイアスとは、出力ベクトルの複数の要素のそれぞれに対して、別個に準備される。第3全結合層570として機能するプロセッサ210は、上記の計算を実行することによって、出力ベクトルを生成する。第3全結合層570は、出力ベクトルを、ニューラルネットワークNNの外部に出力する。このような第3全結合層570は、出力層の例である。入力層505と出力層(ここでは、第3全結合層570)との間の層510~560は、中間層とも呼ばれる。なお、重みのベクトルとバイアスとは、トレーニングによって、更新される。
図3のS120では、ニューラルネットワークNN(図2)が、上述した複数の学習データを用いて、トレーニングされる。図8の例では、5個の状態SA-SEのそれぞれの学習データを用いて、教師あり学習が、行われる。具体的には、プロセッサ210は、学習データのグラフ画像データ830を入力層505に入力する。プロセッサ210は、ニューラルネットワークNNの複数の層505~570の計算を実行し、第3全結合層570からの出力ベクトルを算出する。プロセッサ210は、この出力ベクトルと、学習データの教師データ840とを、比較することによって、評価値850を算出する。評価値850は、ニューラルネットワークNNによる状態の推定結果と教師データとの間の差違、すなわち、誤差を示している。評価値850は、例えば、損失関数を用いて算出される。損失関数は、学習データから得られる誤差(すなわち、グラフ画像データから得られる出力データと教師データとの間の誤差)を算出する関数である。評価値850は、例えば、複数個の学習データのそれぞれの誤差の合計である。プロセッサ210は、評価値850が小さくなるように、ニューラルネットワークNNの上述した種々のパラメータ(フィルタ、重みのベクトル等)を更新する。損失関数としては、種々の関数を採用可能である。例えば、2乗和誤差、交差エントロピー、contrastive損失関数などの公知の関数が用いられてよい。トレーニングの方法としては、種々の方法を採用可能である。例えば、勾配降下法と誤差逆伝播法とを用いる方法が採用されてよい。
このように、ニューラルネットワークNNは、状態を5個の状態SA-SEのいずれかに分類するように、トレーニングされる。
S130(図3)では、トレーニング済のニューラルネットワークNN(図2)が、学習済モデル234として、記憶装置に格納される。学習済モデル234は、上記のトレーニングによって決定されたパラメータを用いて処理を進行するように、構成されている。本実施例では、プロセッサ210は、学習済モデル234を、データ処理装置200の不揮発性記憶装置230に格納する。格納の完了によって、図3の処理が終了する。
A3.状態の推定:
図9は、状態を推定する処理の例を示すフローチャートである。以下、データ処理装置200(図1)のプロセッサ210は、ユーザからの指示に応じて、図9の処理を開始することとする。プロセッサ210は、状態の推定のための第2プログラム232に従って、図9の処理を実行する。
S310では、プロセッサ210(図1)は、センサ300からの6個のパラメータの6個の測定値の経時変化を示す時系列データセットを、取得する。このような時系列データセットは、図4のS210の方法と同様の方法で、取得される。ただし、図9のS310では、作業者900の状態は未知である。
S320では、プロセッサ210は、S310で取得された時系列データセットから抽出時間幅の期間内のデータを抽出する。抽出時間幅は、図4のS260で決定された抽出時間幅と同じである。そして、プロセッサ210は、抽出されたデータを用いて、グラフ画像データを生成する。グラフ画像データは、6個のパラメータACx、ACy、ACz、AVx、AVy、AVzの経時変化を示すグラフの画像データである。生成されるグラフ画像データは、図8のグラフ画像830tと同じ形式のグラフ画像を表している。グラフ画像データは、図4のS270の方法と同様の方法で、生成される。
S330では、プロセッサ210(図1)は、S320で生成されたグラフ画像データを、学習済モデル234(図2)に入力する。S340では、プロセッサ210は、学習済モデル234の複数の層505-570の計算を実行する。S350では、プロセッサ210は、第3全結合層570から、確信度データを取得する。上述したように、確信度データの5個の成分値PA-PEは、作業者900の状態が状態SA、SB、SC、SD、SEである確率を、それぞれ示している。確信度データは、状態の推定結果を示すデータの例である。
S360では、プロセッサ210は、判定部580(図2)としての処理を実行する。判定部580は、確信度データを用いて、作業者900の状態を分類する処理部である。例えば、判定部580として機能するプロセッサ210は、確信度データの5個の成分値PA-PEのうちの最も大きい成分値を特定する。そして、プロセッサ210は、状態は、最も大きい成分値に対応付けられた状態であると判定する。
S370(図9)では、プロセッサ210(図1)は、S360で特定された状態(すなわち、状態の推定結果)を示す推定データの出力処理を実行する。本実施例では、プロセッサ210は、データ処理装置200の表示部240に、推定された状態を示す画像を表示させる。ユーザは、表示された画像を参照することによって、作業者900の状態を特定できる。
以上により、図9の処理が終了する。なお、S310では、図6のグラフGaのように、長時間の時系列データが、取得されてよい。そして、S320-S370では、図8の複数の抽出期間700のように、複数の期間のそれぞれの状態が推定されてよい。ユーザは、このような推定結果を参照することによって、作業者900の状態の経時変化を特定できる。ユーザは、状態の経時変化を、種々の目的に利用できる。例えば、ユーザは、状態の経時変化に基づいて、作業者900が荷物を持たずに歩く第1状態SAが継続する時間を特定する。そして、ユーザは、この時間が短くなるように、工場での作業者900の作業手順を変更してよい。
以上のように、本実施例では、図4の手順に従って、学習データが生成される。具体的には、S210で、プロセッサ210は、作業者900に取り付けられたセンサ300によって測定された測定値であって作業者900の動きに関連するパラメータACx、ACy、ACz、AVx、AVy、AVzの測定値と、作業者900の状態の分類と、の経時変化を示す時系列データを取得する。S220、S230では、プロセッサ210は、各パラメータの測定値の経時変化の周波数スペクトルを、状態の分類毎に算出する。S240では、プロセッサ210は、状態の分類毎に最大のピークの周波数であるピーク周波数を特定する。S250では、プロセッサ210は、状態の全ての分類のピーク周波数のうち最も低いピーク周波数を特定する。S260では、プロセッサ210は、最も低いピーク周波数を用いることによって、最も低いピーク周波数が低いほど広い抽出時間幅Twを決定する。S270では、プロセッサ210は、抽出時間幅Twの抽出期間700内の測定値の経時変化を示すグラフの画像データであって状態の分類に対応付けられた画像データを含む学習データを生成する。パラメータの測定値の経時変化のパターンは、状態の分類に応じて、異なり得る。経時変化の周波数スペクトルのピーク周波数が低い場合には、ピーク周波数が高い場合と比べて、状態の特徴は、長い時間幅の経時変化によって、示される。本実施例では、上記のように、学習データのグラフの時間幅Twが、最も低いピーク周波数が低いほど広くなるように決定されるので、プロセッサ210は、測定値の経時変化と作業者900の状態の分類との対応関係を適切に示す学習データを生成できる。プロセッサ210は、このような学習データを用いることによって、ニューラルネットワークNNを適切にトレーニングできる。
また、S270(図4)、図8で説明したように、プロセッサ210は、抽出時間幅Twを有する複数の抽出期間700であって、互いに異なる複数の抽出期間700のそれぞれに対応する学習データを、生成する。ここで、同じ状態に対応する連続な状態期間(例えば、第1状態期間P1)に含まれる隣合う2つの抽出期間700の時間差Tdは、抽出時間幅Twよりも小さい。従って、時間差Tdが抽出時間幅Tw以上である場合と比べて、プロセッサ210は、同じ時系列データから、多数の学習データを取得できる。プロセッサ210は、多数の学習データを用いることによって、適切に、ニューラルネットワークNNをトレーニングできる。
また、図7(A)、図7(B)で説明したように、本実施例では、抽出時間幅Twは、最大周期Tmと同じである。従って、プロセッサ210は、測定値の経時変化と作業者900の状態の分類との対応関係を適切に示す学習データを生成できる。
また、本実施例では、図3の手順に従って、ニューラルネットワークNNがトレーニングされる。具体的には、S110では、プロセッサ210は、図4の手順に従って学習データを生成する。S120では、プロセッサ210は、学習データを用いてニューラルネットワークNNをトレーニングする。このように、ニューラルネットワークNNのトレーニングに、測定値の経時変化と状態の分類との対応関係を適切に示す学習データが用いられるので、適切なトレーニングが可能である。
また、図2に示すように、ニューラルネットワークNNは、畳込層510、530を含んでいる。畳込層は、画像データの処理に適している。ニューラルネットワークNNが画像データに適した1つ以上の畳込層を含むので、グラフ画像データを含む学習データによる適切なトレーニングが可能である。
また、図3で説明したように、学習済モデル234は、上記のトレーニング方法によってトレーニングされた学習済の予測モデルである。プロセッサ210は、このような学習済モデル234を用いることによって、対象(本実施例では、作業者900)の状態を適切に推定できる。
B.変形例:
(1)抽出時間幅Tw(図4:S260、図8)と最も低いピーク周波数Fmとの対応関係は、図7(A)、図7(B)で説明した対応関係に代えて、他の種々の対応関係であってよい。例えば、抽出時間幅Twは、最大周期Tmと異なっていてもよい。抽出時間幅Twは、最も低いピーク周波数Fmの変化に対して、階段状に変化してもよい。いずれの場合も、抽出時間幅Twは、最も低いピーク周波数Fmが低いほど広い値に決定されることが、好ましい。グラフ画像が対象の状態の特徴を表すためには、抽出時間幅Twが広いことが好ましい。例えば、抽出時間幅Twは、最大周期Tmの1/2以上であることが好ましく、最大周期Tmの2/3以上であることが更に好ましく、最大周期Tmの3/4以上であることが特に好ましく、最大周期Tm以上であることが最も好ましい。また、同じ時系列データから多くの学習データを取得するためには、抽出時間幅Twが狭いことが好ましい。例えば、抽出時間幅Twは、最大周期Tmの10倍以下であることが好ましく、最大周期Tmの8倍以下であることが更に好ましく、最大周期Tmの6倍以下であることが特に好ましく、最大周期Tmの4倍以下であることが最も好ましい。また、抽出時間幅Twが狭い場合には、抽出時間幅Twが広い場合と比べて、プロセッサ210は、同じ時系列データの早く小さい部分を用いて、学習データを生成できる。例えば、抽出時間幅Twが60分である場合、最初の学習データの生成には、時系列データの最初の60分のデータが必要である。抽出時間幅Twが1分である場合、最初の学習データの生成は、時系列データの最初の1分のデータで可能である。また、時系列データにおいて、同じ状態が継続する時間が短い場合がある。ここで、抽出時間幅Twが狭い場合には、抽出時間幅Twが広い場合と比べて、プロセッサ210は、多数の学習データを生成できる。また、隣合う2つの抽出期間700の時間差Tdは、抽出時間幅Tw以上であってもよい。
(2)対象の状態の推定に利用されるパラメータは、対象の動きに関連する任意のパラメータであってよい。すなわち、パラメータは、対象の動きによって変化する任意のパラメータであってよい。例えば、パラメータは、速度、角速度、角加速度、地磁気方向、気圧、温度を含む複数のパラメータから任意に選択された1以上のパラメータを含んでよい。地磁気方向と気圧と温度とは、対象の移動に応じて変化し得る。速度、角速度、角加速度との測定値は、いずれも、互いに異なるK個の軸(Kは1以上3以下)の成分を含んでよい。
(3)分類される状態は、図5(A)-図5(E)の5個の状態SA-SEに限らず、対象の動きが互いに異なる任意の複数の状態であってよい。例えば、「対象が走っている状態」、「対象が停止している状態」などの他の状態を含む複数の状態から、対象の状態が推定されてよい。いずれの場合も、対象の状態は、予め決められた複数の状態から推定されてよい。
(4)対象の状態の推定に利用される予測モデルは、図2のニューラルネットワークNNに代えて、他の種々の予測モデルであってよい。予測モデルは、1以上の畳込層を備えてよい。また、予測モデルは、畳込層と畳込層の後ろに接続されたプーリング層との1以上のセットを備えてよい。また、予測モデルは、畳込層を含まずに、複数の全結合層で構成されてもよい。予測モデルは、種々の人工ニューラルネットワークを含んでよい。また、予測モデルは、人工ニューラルネットワークに限らず、他の種々のモデルを含んでよい。予測モデルは、例えば、人工ニューラルネットワークと、隠れマルコフモデルと、推論エンジンと、のグループから任意に選択された1以上のモデルを含んでよい。一般的には、予測モデルは、グラフ画像データを用いて、対象の状態の推定結果を示すデータを出力する種々のモデルであってよい。
(5)S370(図9)の出力処理は、画像の出力(具体的には、表示)に代えて、状態の推定結果を示す情報を出力する任意の処理であってよい。例えば、プロセッサ210は、推定された状態を示す音(例えば、音声やチャイム)を、スピーカーから出力する処理を実行してよい。また、プロセッサ210は、推定結果を示すデータを、データ処理装置200に接続された外部記憶装置に出力(すなわち、格納)する処理を実行してよい。
いずれの場合も、状態の推定結果は、種々の処理で利用されてよく、例えば、対象の行動パターンの推定に利用されてよい。そして、対象の行動パターンの推定結果は、行動パターンの改善に利用されてよい。例えば、対象は、工場で作業を行うロボットであってよい。そして、ロボットの行動パターンの推定結果に基づいて、ロボットの作業の手順が改善されてよい。また、対象は、複合機を操作する作業者であってよい。そして、作業者の行動パターンの推定結果に基づいて、複合機の構成(例えば、用紙カセットの位置、操作パネルの位置など)が変更されてよい。
(6)図1、図3、図4の実施例では、同じデータ処理装置200が、学習データを生成する生成装置の例であり、また、予測モデルをトレーニングするトレーニング装置の例である。これに代えて、学習データの生成処理は、予測モデルをトレーニングする装置とは異なる装置によって、実行されてよい。また、図1、図3、図9の実施例では、同じデータ処理装置200が、予測モデルを用いて対象の状態を推定する推定装置の例である。なお、対象の状態を推定する処理は、学習データを生成する生成装置とは異なる装置によって、実行されてよい。また、対象の状態を推定する処理は、予測モデルをトレーニングする装置とは異なる装置によって、実行されてよい。
(7)学習データを生成する生成装置は、パーソナルコンピュータとは異なる種類の装置(例えば、複合機、プリンタ、スキャナ、デジタルカメラ、スマートフォン、ネットワークに接続されたサーバ装置)であってもよい。また、ネットワークを介して互いに通信可能な複数の装置(例えば、コンピュータ)が、学習データを生成する処理の機能を一部ずつ分担して、全体として、学習データを生成する機能を提供してもよい(これらの装置を備えるシステムが、学習データの生成装置に対応する)。学習データを用いて予測モデルをトレーニングするトレーニング装置と、学習済モデルにグラフ画像データを入力することによって対象の状態を推定する推定装置とについても、同様である。
上記各実施例において、ハードウェアによって実現されていた構成の一部をソフトウェアに置き換えるようにしてもよく、逆に、ソフトウェアによって実現されていた構成の一部あるいは全部をハードウェアに置き換えるようにしてもよい。例えば、図1の学習済モデル234は、プログラムモジュールに代えて、ASIC(Application Specific Integrated Circuit)等のハードウェア回路によって実現されてよい。
また、本発明の機能の一部または全部がコンピュータプログラムで実現される場合には、そのプログラムは、コンピュータ読み取り可能な記録媒体(例えば、一時的ではない記録媒体)に格納された形で提供することができる。プログラムは、提供時と同一または異なる記録媒体(コンピュータ読み取り可能な記録媒体)に格納された状態で、使用され得る。「コンピュータ読み取り可能な記録媒体」は、メモリーカードやCD-ROMのような携帯型の記録媒体に限らず、各種ROM等のコンピュータ内の内部記憶装置や、ハードディスクドライブ等のコンピュータに接続されている外部記憶装置も含み得る。
以上、実施例、変形例に基づき本発明について説明してきたが、上記した発明の実施の形態は、本発明の理解を容易にするためのものであり、本発明を限定するものではない。本発明は、その趣旨を逸脱することなく、変更、改良され得ると共に、本発明にはその等価物が含まれる。