(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
図1に人行動推定システム1の処理フローを示す。人行動推定システム1は一般的なPC(Personal Computer)などのローカル環境で実現しても、クラウドのようなネットワーク経由で実現しても、どちらでもよい。
【0010】
図8に人行動推定システム1を実現するハードウェア構成例を示す。計算機800は、プロセッサ801、主記憶802、補助記憶803、入出力インタフェース804、表示インタフェース805、ネットワークインタフェース806を含み、これらはバス807により結合されている。入出力インタフェース804は、キーボードやマウス等の入力装置809と接続されてユーザインタフェースを提供する。表示インタフェース805は、ディスプレイ808に接続される。ネットワークインタフェース806は計算機800と外部ネットワーク(図示せず)とを接続するためのインタフェースである。
【0011】
補助記憶803は通常、HDDやフラッシュメモリなどの不揮発性メモリで構成され、計算機800が実行するプログラムやプログラムが処理対象とするデータ等を記憶する。主記憶802はRAMで構成され、プロセッサ801の命令により、プログラムやプログラムの実行に必要なデータ等を一時的に記憶する。プロセッサ801は、補助記憶803から主記憶802にロードしたプログラムを実行する。
【0012】
人行動推定システム1の処理ブロックのそれぞれはプログラムとして補助記憶803に格納されており、補助記憶803から主記憶802にロードされ、プロセッサ801により実行される。また、
図1に特定のデータの格納するデータベースについても、それぞれ補助記憶803に記憶され、あるいは補助記憶803から主記憶802に呼び出されて処理がなされる。以下では、一応用例として、製造ラインの作業員が正しく部品の取り付けや加工を行っているかを監視する監視システムに人行動推定システム1を適用した場合を例にとって説明する。
【0013】
カメラ装置200は行動推定対象の人(この例では製造ラインの作業者)を撮影する。映像取得部10はカメラ装置200で撮影された映像(動画像)を取得し、映像情報蓄積部11に格納する。システムではあらかじめ判別したい人の行動を人行動定義12として定義しておく。例えば、
図3のテーブル400では、「人」「領域」「動作」の3カテゴリについて、人の行動を定義する例を示している。
【0014】
「人」カテゴリは、行動推定対象の人が誰かを定義する。この例では「人A」、「人B」が定義されている。「領域」カテゴリは、行動推定対象の人が撮影された映像のどの領域において行動(作業)しているかを定義する。これは、製造ラインの作業員がどの作業をどこで行うか、およそ定まっているため、行動推定対象の人がどこで行動しているかは行動推定に重要な情報であるためである。このため、
図2のようにカメラ装置200によって撮影される映像空間を区分し(この例では3×3の9領域に区分している)、行動推定対象の人が映っている位置を定義する。なお、単純化のためカメラ装置200を固定として、映像空間により領域を区分する例で本実施例は説明するが、カメラ装置200がステレオカメラであれば、3次元空間で定義してもよい。さらに、現実空間の領域を区分し、公知の映像処理技術により、映像から行動推定対象の人がどの現実空間の領域にいるか解析してもよい。「動作」カテゴリは、行動推定対象の人が何の行動(作業)をしているかを定義する。この例では「ねじをしめる」、「穴をあける」、「ねじをゆるめる」といった作業が定義されている。この定義はカメラ装置200で撮影された映像(動画像)から判別したい内容にしたがって定めればよい。「動作」カテゴリは作業マニュアル等により作業者が製造ラインにおいて実行する作業であって監視システムにおいて判別したい作業を洗い出して定めることができる。なお、これらの全てのカテゴリについて定義することを要求するものではなく、行動推定対象の人が誰であるか特定不要であれば、「人」カテゴリを定義する必要はない。あるいは、例えば、作業者の服装や装備のように、必要に応じて別の定義カテゴリを設けてもよい。
【0015】
一方、行動推定対象とする人が用いる工具であるドライバ101a、錐101bには、振動センサや加速度センサなどのセンサ103a,bが取り付けられている。センサの種類は特に限定されず、工具ごとに異なっていても、また複数のセンサが設けられていても構わない。工具データ取得部20は、工具101が使用される位置を示す位置情報及び、工具101に取り付けられたセンサ103からのセンサデータやセンサデータを加工した情報もしくは、工具の出力情報を取得し、工具データ蓄積部21へ格納する。例えば、ドライバ101aに加速度センサ103aが取り付けられている場合、ねじをしめる動作時に取得した加速度データや加工した軌跡データを蓄積する。また、工具101が使用される位置情報については工具から取得しても、映像取得部10で取得された映像から検出するようにしてもよい。システムではあらかじめ判別したい人の行動に伴う工具動作を工具動作定義22として定義しておく。例えば、
図4のテーブル500では、「工具」「領域」「動作」の3カテゴリについて、人の行動を定義する例を示している。
【0016】
「工具」カテゴリは、行動推定対象の人が使用する工具を定義する。この例では「ドライバ」、「錐」が定義されている。「領域」カテゴリは、工具が用いられている領域を定義する。これは、製造ラインの作業員がどの作業をどこで行うか、およそ定まっているため、工具が用いられる場所もそれに伴って限定されることによる。領域は人行動定義と同様に定めることができ、人行動定義と同じ領域定義をしてもよいし、異なる領域定義をしてもよい。
図4の例では同じ領域定義をしている。「動作」カテゴリは、工具で行われる動作を定義する。この例ではドライバであれば「ねじをしめる」、「ねじをゆるめる」、錐であれば「穴をあける」といった動作が定義されている。
【0017】
人行動学習部13では、まずカメラ装置200から取得し、映像情報蓄積部11に蓄積された映像を人行動定義12に基づき定義する。これが学習データとなる。
図3に示すテーブル400は学習データの例であり、例えば、レコード401は映像「a.mpeg」は「人A」が領域「X1Y1及びX1Y2」において「ねじをしめる」動作をおこなっている映像であると定義するものである。学習データ400により人の行動を判別するモデルをつくる。例えば、ディープラーニング等の機械学習を用いて、カメラ装置200から取得した映像から人の行動を判別するモデルを作成する。人行動学習結果であるモデルは、人行動学習結果蓄積部14に保存される。
【0018】
工具動作学習部23では、まず工具101に取り付けられたセンサ103から取得し、工具データ蓄積部21に蓄積された工具データを工具動作定義22に基づき定義する。これが学習データとなる。
図4に示すテーブル500は学習データの例であり、例えば、レコード501は、工具データ「a.csv」は「ドライバ」が領域「X1Y3」において「ねじをしめる」動作をおこなっている工具データであると定義するものである。なお、工具に取り付けられたセンサが加速度センサであれば、工具データ「a.csv」とは、検出した加速度の時系列データやそれを加工した特徴量データ(テキストデータファイル)である。学習データ500により工具動作を判別するモデルをつくる。例えば、ディープラーニング等の機械学習を用いて、工具に取り付けられたセンサ103から取得した工具データから工具動作を判別するモデルを作成する。工具動作学習結果であるモデルは、工具動作学習結果蓄積部24に保存される。
【0019】
人行動判別部15は、人行動学習結果蓄積部14に保存されたモデルを映像取得部10からの映像に適用して、人の行動を推定して人の行動候補を出力する。ここでは複数の行動候補を出力することを許容する。同様に、工具動作判別部25は、工具動作学習結果蓄積部24に保存されたモデルを工具データ取得部20からの工具データに適用して、工具動作を推定して工具の動作候補を出力する。ここでは複数の動作候補を出力することを許容する。
【0020】
図5に総合人行動判別部2のフローチャートを示す。まず、工具動作判別部25の結果の有無を判定する(S51)。工具動作判別部25からの工具動作候補がない場合は人行動判別部15の人の行動候補を結果として出力する。工具動作判別部25の工具動作候補がある場合、人行動判別部15の人の行動候補と工具動作判別部25の工具動作候補を比較して一致判定する(S52)。人行動判別部15からの人の行動候補と工具動作判別部25からの工具動作候補とが一致する場合は、一致したものを人の行動判別結果として出力する。不一致の場合、人の行動候補と工具の動作候補から人の行動を推定して、推定結果を出力する(S53)。
【0021】
総合人行動判別部2は、映像のみからでは行動推定対象の人の行動を判定することが困難であることが多いことから、工具からの動作情報により判定精度を高めるものである。例えば、
図6Aは、「人A」が、「ドライバ101a」で領域「X1Y1, X1Y2」において「ねじをしめる」状況を映した映像の一シーンである。同様に、
図6Bは、「人A」が、「錐101b」で領域「X2Y1, X2Y2」において「穴をあける」状況を映した映像の一シーンである。また同様に、
図6Cは、「人B」が、「ドライバ101a」で領域「X2Y1, X2Y2」において「ねじをゆるめる」状況を映した映像の一シーンである。これらは、人が目視で行動を判定する場合でも、類似の映像であるため判定が難しいものである。まして、画像処理による行動判定では、これらの類似行動を正確に判別することは難しく、さらに、重要な行動判定のもととなる工具は人の影に隠れてしまい、映像から常時確認することが難しい。
【0022】
例えば、人Aが監視領域全体のおよそ左下半分の領域においてドライバによりねじをしめる作業を行っているとし、本実施例では、まず、その状況に対する映像を映像取得部10が、その状況に対する工具データを工具データ取得部20が取得し、それぞれ人行動判別部15及び工具動作判別部25がそれぞれ学習結果蓄積部のモデルを用いて判別する。ここで、人行動定義は
図3に、工具動作定義は
図4のようであったとする。
【0023】
このとき、人行動判別部15は、「人A」が領域「X1Y1, X1Y2」において「ねじをしめる」という人行動候補401と、「人A」が領域「X2Y1, X2Y2」において「ねじをしめる」という人行動候補402と、「人B」が領域「X2Y1, X2Y2」において「穴をあける」という人行動候補403と、「人A」が領域「X2Y1, X2Y2」において「ねじをゆるめる」という人行動候補405とを人行動候補として出力する可能性がある。
【0024】
なお、人は動きながら行動したり、あるいは作業位置が人行動定義における監視領域の区分を跨っていたりする場合には、一連の作業であったとしても人行動判別部15は複数の人行動候補を出力する可能性がある。例えば、上述の例であれば人行動候補401と人行動候補402の双方を出力する。このような場合には、連続動作である場合には、いずれか一方(例えば、候補を推定したときの領域)を出力するようにしてもかまわない。
【0025】
一方、工具動作判別部25は、「ドライバ」が領域「X2Y1」において「ねじをしめる」という動作候補502と、「ドライバ」が領域「X2Y2」において「ねじをしめる」という動作候補503とを出力する可能性がある。なお、工具の位置情報にずれが生じたりや工具の位置が工具動作定義における監視領域の区分を跨っていたりする場合には、一連の作業であったとしても工具動作判別部25は複数の工具動作候補を出力する可能性がある。このような場合には、人行動候補と同様に、連続動作である場合には、いずれか一方(例えば、候補を推定したときの領域)を出力するようにしてもかまわない。
【0026】
総合人行動判別部2では、まず、人行動判別部15で出力した人行動候補と工具動作判別部25の出力した工具動作候補とを照合し、矛盾するものを除く。例えば、「穴をあける」人行動候補403、「ねじをゆるめる」人行動候補405は出力された工具動作候補から排除される。さらに、
図7のように、人行動判別部15が推定した人行動候補と、工具動作判別部25が推定した工具動作候補とのマッピングを行い、その重なりに基づき人行動推定候補として出力する。この場合、「人A」が領域「X2Y1, X2Y2」において、「ドライバ101a」で「ねじをしめる」を人行動推定候補とする。なお、総合人行動判別部2においても、
図7のようなマッピング状況をディープラーニングなどの機械学習により分類問題として学習し、人行動推定するようにしてもよい。
【0027】
また、本実施例では工具の使用領域を定義しているため、例えば、工具動作定義が
図4のようであれば、錐101bは領域「X2Y2」、「X3Y1」での使用のみが定義されているため、工具動作判別部25または総合人行動判別部2により、領域「X2Y2」、「X3Y1」以外での使用状況が取得できれば警告を発することが可能となり、工具の誤使用や誤作業防止を図ることも可能である。具体的には、工具動作判別部25は、該当する道具動作定義がないと判別する場合、あるいは総合人行動判別部2が該当する人行動定義がないと推定する場合に警告を発する。
【0028】
以上、本発明を製造ラインにおける監視システムに適用した場合を例に説明したが、記載の実施例に限定されるものではなく、様々な変形例が含まれる。例えば、工具は行動推定対象の人が使用する一般的な道具やものに拡張可能である。上述の実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。