計算機は、ユーザの顔を含む画像を取得し、顔画像を表情データとして生成し、表情データに表情の変化を計測するための特徴点を設定する。計算機は、一定の時間範囲に含まれる表情データの時系列データを処理することによって、特徴点間の時間変化に伴う関係性、すなわち、特徴点間の時間的関係性を表す時間的関係性指標を算出する。さらに、計算機は、時間的関係性指標の時系列データに基づいて、時間変化に伴う時間的関係性指標の変化量を算出する。計算機は、時間的関係性指標の変化量に基づいて、ユーザの感情を推定する。
なお、表情データは、ユーザの顔だけを含む画像データに限定されず、手及び上半身等の身体の一部が含まれる画像でもよいし、また、目及び口等の顔の一部のみが含まれる画像でもよい。
図1は、実施例1のシステムの構成例を示す図である。
システムは、計算機100、表情信号計測装置110、及び出力装置120から構成される。また、計算機100には、マウス、キーボード、及びタッチパネル等の入力装置130が接続される。
表情信号計測装置110は、ユーザから表情信号を取得する。表情信号は、ユーザから取得される信号であって、表情データを算出するために用いられる信号である。実施例1では、ユーザの顔の全体又は一部を含む画像信号が表情信号として取得される。
計算機100は、表情データを用いてユーザの感情を推定するための処理を実行する。また、計算機100は、出力装置120にユーザの感情の推定結果を含む情報を出力する。計算機100は、前述の処理を実現する構成として、表情データ処理モジュール101及び出力モジュール102を有し、また、情報群103を保持する。
表情データ処理モジュール101は、表情信号からユーザの顔周辺の領域の画像を切り出すことによって表情データを生成し、表情データに特徴点及び基準点を設定する。なお、画像から特定の領域の画像を切り出す方法は、画像の特徴量を用いた統計解析及び機械学習を利用する方法が考えられる。
基準点は、実施例1において特徴点間の時間的関係性を分析するために設定される。基準点は表情データに対応する画像上のいずれかの位置に設定する。例えば、画像の左上端に基準点を設定する。また、基準点は、特徴点と一致するように設定されてもよい。
実施例1では、表情データ処理モジュール101は、眼及び口に特徴点を設定し、鼻に基準点を設定する。
なお、特徴点及び基準点は、専門家が設定してもよいし、公知の特徴点及び基準点の設定方法又は設定ツールを用いて設定してもよい。
表情データ処理モジュール101は、特徴点及び基準点に基づいて表情特徴量を算出する。ここで、表情特徴量は、ユーザの表情の特徴を表す指標である。一つの表情データからは、少なくとも一つの表情特徴量が算出される。表情データ処理モジュール101は、表情データの時系列データに基づいて、特徴点間の時間的関係性を示す時間的関係性指標を算出する。
表情データ処理モジュール101は、時間的関係性指標の時系列データに基づいて、時間的関係性指標の変化量を算出し、当該変化量に基づいてユーザの感情を推定する。表情データ処理モジュール101は、ユーザの感情の推定結果に基づいて感情情報215(図2参照)を生成する。
出力モジュール102は、感情情報215を呈示するための出力情報を生成し、出力情報を出力装置120に出力する。
出力装置120は、計算機100が出力したデータに基づいて画面を表示する。入力装置130は、計算機100に情報(外部信号)を入力するための装置である。外部信号は、例えば、計算機100の動作を制御するための信号から、時間的関係性指標の算出及び感情情報の生成に必要な情報を含む信号を除いた信号である。
なお、計算機100が有する各モジュールは、二つ以上のモジュールを一つのモジュールにまとめてもよいし、一つのモジュールを機能毎に複数のモジュールに分けてもよい。
図2は、実施例1の計算機100の詳細な構成の一例を示す図である。
図2に示すように、計算機100は、演算装置201、記憶装置202、入力インタフェース203、及び出力インタフェース204を有する。
演算装置201は、CPU(Central Processing Unit)及びGPU(Graphics Processing Unit)等のハードウェアであり、記憶装置202に格納されるプログラムを実行する。演算装置201は、プログラムにしたがって動作することによって、所定のモジュールとして機能する。実施例1では、演算装置201は、表情データ処理モジュール101及び出力モジュール102として動作する。
記憶装置202は、メモリ等のハードウェアであり、演算装置201が実行するプログラム及び当該プログラムが使用する情報を格納する。また、記憶装置202は、プログラムが使用するワークエリアを含む。記憶装置202に格納されるプログラム及び情報については後述する。
入力インタフェース203は、表情信号及び外部信号等の入力を受け付けるハードウェアである。USB(Universal Serial Bus)規格の接続線で信号を入力する装置と接続される場合、USB端子が入力インタフェース203になり、ネットワークを介して信号を入力する装置と接続される場合、ネットワークインタフェースが入力インタフェース203となる。
出力インタフェース204は、出力情報等を出力するハードウェアである。情報を出力する装置がディスプレイの場合、VGA端子又はHDMI端子(HDMIは登録商標)等が出力インタフェース204となり、情報を出力する装置がスピーカの場合、USB端子が出力インタフェース204となる。
ここで、記憶装置202に格納されるプログラム及び情報について説明する。
記憶装置202は、表情データ処理モジュール101及び出力モジュール102を実現するためのプログラムを格納する。また、記憶装置202は、表情データ情報211、表情特徴量分析情報212、時間的関係性指標情報213、時間的関係性指標分析情報214、感情情報215、及び感情推定規則情報216を格納する。
表情データ情報211は、表情信号及び表情データを管理するための情報である。表情データ情報211のデータ構造の一例は図3A及び図3Bを用いて説明する。表情特徴量分析情報212は、表情特徴量の時間変化の分析結果を管理するための情報である。表情特徴量分析情報212のデータ構造の一例は図4を用いて説明する。時間的関係性指標情報213は、時間的関係性指標を管理するための情報である。時間的関係性指標情報213のデータ構造の一例は図5を用いて説明する。時間的関係性指標分析情報214は、時間的関係性指標の時間変化の分析結果を管理するための情報である。時間的関係性指標分析情報214のデータ構造の一例は図6を用いて説明する。感情情報215は、感情の推定結果を管理するための情報である。感情情報215のデータ構造の一例は図7を用いて説明する。感情推定規則情報216は、ユーザの感情を推定時に使用される規則を管理するための情報である。感情推定規則情報216のデータ構造の一例は図8を用いて説明する。
図3A及び図3Bは、実施例1の表情データ情報211のデータ構造の一例を示す図である。説明のため、表情データ情報211を二つの図に分けて説明する。
表情データ情報211は、ID301、取得時刻302、信号種別303、表情信号304、データ種別305、表情データ306、基準点名称307、基準点308、特徴点名称309、特徴点310、及び表情特徴量311から構成されるエントリを格納する。一つの表情データ(表情信号)に対して一つのエントリが存在する。
ID301は、表情信号を識別するための識別情報を格納するフィールドである。ID301には、例えば、識別番号が格納される。
取得時刻302は、表情信号が取得された時刻を格納するフィールドである。取得時刻302には、表情信号計測装置110が表情信号を取得した時刻及び計算機100が表情信号計測装置110から表情信号を取得した時刻のいずれかが格納される。なお、実施例1の時刻は、計測開始時刻からの経過時間を表すものとする。
信号種別303は、表情信号の名称等の表情信号の種別を格納するフィールドである。表情信号の種別は、表情信号計測装置110が取得する表情信号の種別に基づいて設定される。実施例1の表情信号計測装置110は画像信号を取得するため、信号種別303には「画像」が格納される。表情データ処理モジュール101は、表情信号から名称を取得してもよいし、また、前回登録されたエントリの信号種別303から名称を取得してもよい。
なお、表情信号を取得する表情信号計測装置110が複数存在する場合、どの表情信号計測装置110が取得した表情信号であるかを判別できる値を予め設定し、当該値を信号種別303に格納してもよい。
表情信号304は、表情信号を格納するフィールドである。表情信号304には、表情信号そのものが格納され、又は、ピクセルの座標及びRGB値の組がピクセルの数だけ格納される。実施例1では、ピクセルの座標及びRGB値の組が表情信号304に格納されるものとする。表情信号に対応する画像の大きさは、縦640ピクセル×横480ピクセルであるものとする。また、画像の左上端のピクセルの座標を(1,1)とし、画像の右下端のピクセルの座標を(640,480)とする。
データ種別305は、表情データの名称等の表情データの種別を格納するフィールドである。実施例1の表情データは顔画像であるため、データ種別305には「顔画像」が格納される。
表情データ306は、表情信号から生成された表情データを格納するフィールドである。表情データ306には、例えば、ピクセルの座標及びRGB値の組がピクセルの数だけ格納される。表情データに対応する画像の大きさは、縦200ピクセル×横200ピクセルであるものとする。
基準点名称307は、基準点の名称を格納するフィールドである。実施例1では、鼻尖に基準点が設定されるため、基準点名称307には「鼻尖」が格納される。
基準点308は、表情データに対応する画像における基準点の位置(座標)を格納するフィールドである。実施例1の基準点308には、鼻尖に対応するピクセルの座標が格納される。基準点は、表情データにおける顔の位置及び向きを補正するために使用される。したがって、表情の変化に伴う顔に対する位置の変化が小さい部位を基準点に選択することが望ましい。例えば、基準点は、特徴点と異なる位置に設定する。
なお、距離センサ及び角度センサ等を用いて、表情データにおける顔の位置及び向きを補正できる場合、一つの特徴点を基準点に設定してもよいし、また、表情データの任意の位置を基準点に設定してもよい。
特徴点名称309は、特徴点の名称を格納するフィールドである。特徴点名称309には、例えば、「左眼左上」等の顔の部位の名称が格納される。特徴点名称309に格納される番号は、特徴点の識別番号を表す。
特徴点310は、表情データに対応する画像における特徴点の位置(座標)を格納するフィールドである。特徴点は、一つの表情データに対して少なくとも二つ設定される。特徴点は、ユーザの表情変化の検知を目的として設定されるため、表情の変化に伴う顔に対する位置の変化が大きい部位を特徴点に選択することが望ましい。例えば、眉、眼、及び口等を特徴点として選択することが考えられる。
実施例1の計算機100は、表情データのユーザの顔に18点の特徴点を設定する。具体的には、左眼に4点、右目に4点、及び口に10点の特徴点が設定される。したがって、一つのエントリの特徴点310には18個の座標の組の行が含まれる。
表情特徴量311は、時間的関係性指標を算出するための表情特徴量を格納するフィールドである。ここで、実施例1の表情特徴量について説明する。実施例1では、表情データにおける基準点と特徴点との間の距離が表情特徴量として算出される。したがって、一つの特徴点に対して一つの表情特徴量が算出される。距離は、座標の差の二乗の総和の平方根として与えられる。
なお、前述した表情特徴量は一例であってこれに限定されない。例えば、二つの基準点を設定し、二つの基準点と特徴点とが成す角度を表情特徴量として算出してもよい。
なお、一つの表情データから表示特徴量を算出できる場合、ノイズの除去をするために、複数の表情データを用いて表情特徴量を算出してもよい。
図4は、実施例1の表情特徴量分析情報212のデータ構造の一例を示す図である。
表情特徴量分析情報212は、ID401、算出時刻402、特徴点名称403、及び第一変化量404から構成されるエントリを格納する。表情データの時系列データの分析結果に対して一つのエントリが存在する。
ID401は、表情特徴量分析情報212のエントリを識別するための識別情報を格納するフィールドである。なお、ID401は、ID301とは異なるフィールドである。
算出時刻402は、第一変化量の算出時に用いた表情データの時系列データを特定するための時刻を格納する。実施例1では、表情データの時系列データの取得時刻302の中で最新の時刻が算出時刻402に格納される。
特徴点名称403は、特徴点名称309と同一のフィールドである。
第一変化量404は、時間の経過に伴う表示特徴量の変化量を格納するフィールドである。例えば、一つの表情データの表情特徴量と当該表情データより時系列が一つ前の表情データの表情特徴量との差が第一変化量404に格納される。また、所定の時間範囲に含まれる表情データのペアの表情特徴量の差の平均値が第一変化量404に格納される。
図6は、実施例1の時間的関係性指標情報213のデータ構造の一例を示す図である。
時間的関係性指標情報213は、ID501、算出時刻502、時間的関係性指標ID503、及び時間的関係性指標504から構成されるエントリを格納する。第一変化量の時系列データの分析結果に対して一つのエントリが存在する。
ID501は、時間的関係性指標情報213のエントリを識別するための識別情報を格納するフィールドである。なお、ID501は、ID301及びID401とは異なるフィールドである。
算出時刻502は、時間的関係性指標の算出時に用いた第一変化量の時系列データを特定するための時刻を格納する。実施例1では、第一変化量の時系列データの算出時刻402の中で最新の時刻が算出時刻502に格納される。
時間的関係性指標ID503は、時間的関係性指標の識別情報を格納するフィールドである。時間的関係性指標ID503には、特徴点の識別番号の組が格納される。
時間的関係性指標504は、時間的関係性指標を格納するフィールドである。実施例1の時間的関係性指標は特徴点間の相関係数である。特徴点間の相関係数は、例えば、二つの表情データを用いて算出されるピアソンの積率相関係数である。
なお、時間的関係性指標を算出するためのアルゴリズムは、前述したものに限定されない。専門家が適宜アルゴリズムを設定する。
なお、時間的関係性指標は相関係数に限定されない。例えば、表情特徴量の変化量が閾値を超えた時刻における特徴点間の差、及び特徴点間の比等を、時間的関係性指標としてもよい。
図6は、実施例1の時間的関係性指標分析情報214のデータ構造の一例を示す図である。
時間的関係性指標分析情報214は、ID601、時間的関係性指標ID602、及び第二変化量603から構成されるエントリを格納する。時間的関係性指標の時系列データの分析結果に対して一つのエントリが存在する。
ID601は、時間的関係性指標分析情報214のエントリを識別するための識別情報を格納するフィールドである。なお、ID601は、ID301、ID401、及びID501とは異なるフィールドである。
時間的関係性指標ID602は、時間的関係性指標ID503と同一のフィールドである。
第二変化量603は、時間的関係性指標の時系列データから算出される、時間の経過に伴う時間的関係性指標の変化量、すなわち、特徴点間の時間的関係性の変化を示す値を格納するフィールドである。
時間的関係性指標の変化量は、例えば、算出時刻502が最新の時間的関係性指標と、算出時刻502が2番目に新しい時間的関係性指標との差として算出される。また、時間的関係性指標の変化量は、算出時刻502が最新の時間的関係性指標と、時系列データの中で最新の時刻から一定時間前の時間的関係性指標との差として算出される。
実施例1では、時間の経過に伴う相関係数の変化量が第二変化量603に格納される。相関係数の変化量は、例えば、相関係数の差(第一変化量404)又はフィッシャーのZ変換を相関係数に行った後の値の差として算出できる。
なお、第二変化量603には、相関係数の変化量として、数値の代わりに、正負を示す値を時間的関係性指標ID602してもよい。
図7は、実施例1の感情情報215のデータ構造の一例を示す図である。
感情情報215は、ID701、感情702、感情変化フラグ703、及び変化度704から構成されるエントリを格納する。
ID701は、ID601と同一のフィールドである。
感情702は、表情データの分析によって推定された感情を格納するフィールドである。感情702には、例えば、幸福感、悲しみ、怒り、恐れ、嫌悪、及び驚きのいずれかが格納される。なお、前述した以外の感情が設定されてよい。
感情変化フラグ703は、感情変化の有無を示す情報を格納するフィールドである。今回推定された感情が前回の推定された感情と異なる場合、感情変化フラグ703には「あり」が格納され、今回推定された感情が前回の推定された感情と同一である場合、感情変化フラグ703には「なし」が格納される。
変化度704は、感情変化の程度を表す変化度を格納するフィールドである。例えば、第二変化量603と後述する閾値804との差が変化度704に格納される。また、複数の第二変化量603と閾値804との差の絶対値の合計を変化度704に格納してもよい。なお、前述した差は、最小値が0、最大値が100となるようにスケール変換してもよい。
変化度は、感情が変化したと判定された時の第二変化量603及び閾値804を用いて算出してもよい。また、変化度は、一定時間範囲に含まれる時間的関係性指標の時系列データから算出された第二変化量603及び閾値804を用いて算出してもよい。
例えば、感情変化フラグ703に「あり」が格納された後に算出された第二変化量603及び閾値804の差、又は、感情変化フラグ703に「あり」が格納された時を始点とする時間範囲に算出された第二変化量603及び閾値804の差の絶対値の合計値を変化度として算出する。
図8は、実施例1の感情推定規則情報216のデータ構造の一例を示す図である。
感情推定規則情報216は、規則ID801、感情変化802、部位803、及び閾値804から構成されるエントリを含む。一つの推定規則に対して一つのエントリが存在する。一つの推定規則には、一つ以上の適合条件が含まれる。適合条件は、部位803及び閾値804によって指定される。実施例1では、一つの推定規則に三つの適合条件が含まれる。
規則ID801は、推定規則を識別するための識別情報を格納するフィールドである。
感情変化802は、変化前の感情及び変化後の感情の組を格納するフィールドである。
部位803は、比較する第二変化量603を指定するための特徴点の組の情報を格納するフィールドある。一つの推定規則に対して、複数の部位803を指定することができる。
「眼の特徴点」は、両眼に対応する特徴点間に関する第二変化量が対象となる。「口の特徴点」は、口に対応する特徴点間に関する第二変化量が対象となる。「眼と口の特徴点」は、眼及び口に対応する特徴点間の第二変化量が対象となる。
なお、部位803には、部位の名称以外に、部位の識別番号等の特徴点を特定するための値を格納してもよい。
閾値804は、部位803で指定された第二変化量と比較する閾値を格納するフィールドである。なお、全ての部位803に対して閾値を設定する必要はない。閾値が設定されていない部位803については、第二変化量603及び閾値804の比較は行われない。
図8の感情推定規則情報216には、無表情からの感情変化を特定するための規則が格納されているが、驚きからの感情変化を推定するための規則が設定されてもよい。
感情推定規則情報216に設定する推定規則は、専門家が設定してもよい。また、感情推定規則情報216に設定する推定規則は、時間的関係性指標の変化量(第二変化量603)及び感情変化から構成される学習データを格納するデータベースを用いたロジスティック回帰分析及びSupport Vector Machine等の機械学習に基づいて設定してもよい。この場合、学習機能を実現するモジュールを計算機100に追加し、又は、表情データ処理モジュール101等に学習機能を実装する。機械学習に基づいて設定された推定規則を利用することによって、時間的関係性指標の変化量から、感情を高い精度で推定できる。
なお、ユーザ又はユーザの属性ごとに異なる学習データを用いた機械学習を実行することによって、ユーザ又はユーザの属性ごとの規則を設定することができる。
なお、学習データは、感情変化の有無及び感情の種類と、時間的関係性指標の変化量とを、ユーザへのアンケート及び専門家から取得することによって生成できる。
なお、学習データが十分に蓄積されていない場合、学習データの生成指示を出力するようにしてもよい。例えば、ユーザに対して記憶を想起することによって特定の感情を呼び起こすように指示し、また、聴覚刺激及び嗅覚刺激を呈示して特定の感情を誘起することによって、時間的関係性指標の変化及び感情の変化の関係性を示すデータを取得する。
感情推定規則情報216には、例えば、口の特徴点間の相関が下がり、かつ、眼及び口の特徴点間の相関の絶対値が大きくなった場合に、無表情から幸福感に変化したと判定するための推定規則を設定できる。また、両眼の特徴点間の相関が下がった場合に、無表情から悲しみに変化したと判定するための推定規則を設定できる。
図9は、実施例1の計算機100が実行する感情推定処理を説明するフローチャートである。図10は、実施例1の基準点及び特徴点の設定例を示す図である。
表情信号計測装置110が取得した表情信号が計算機100に入力された場合、計算機100の表情データ処理モジュール101は、以下で説明する感情推定処理を開始する。なお、表情信号計測装置110が複数の表情信号を取得する場合、計算機100は、特定の表情信号が入力された後、又は、全ての表情信号が入力された後に感情推定処理を開始する。
表情データ処理モジュール101は、入力インタフェース203を介して表情信号を取得する(ステップS101)。このとき、表情データ処理モジュール101は、表情データ情報211を更新する。具体的には、以下のような処理が実行される。
表情データ処理モジュール101は、表情データ情報211にエントリを追加し、追加されたエントリのID301に識別情報を格納する。表情データ処理モジュール101は、追加されたエントリの取得時刻302に、表情信号が取得された時刻を格納する。表情データ処理モジュール101は、追加されたエントリの信号種別303に「画像」を格納し、また、表情信号304にピクセルの座標及びRGB値を格納する。
なお、複数の計測チャネル又は複数の表情信号計測装置110が存在する場合、表情データ処理モジュール101は、複数の計測チャネル又は複数の表情信号計測装置110が計測した値の平均値等を表情信号として取得してもよい。
次に、表情データ処理モジュール101は、表情信号から表情データを生成する(ステップS102)。このとき、表情データ処理モジュール101は、表情データ情報211を更新する。具体的には、以下のような処理が実行される。
表情データ処理モジュール101は、表情データ情報211に追加されたエントリのデータ種別305に「顔画像」を格納し、また、表情データ306に生成された表情データを格納する。
次に、表情データ処理モジュール101は、生成された表情データに特徴点を設定する(ステップS103)。具体的には、以下のような処理が実行される。
表情データ処理モジュール101は、表情データに対して画像解析を実行し、基準点及び特徴点を設定する顔の部位を特定する。基準点及び特徴点を設定する顔の部位は予め設定されているものとする。表情データ処理モジュール101は、特定された部位に基準点及び特徴点を設定する。
当該処理の結果の一例を図10に示す。表情データ1000に対してステップS103の処理を実行した結果、表情データ1000には基準点1001及び特徴点1002が設定される。
なお、表情データ処理モジュール101は、特徴点を設定する顔の部位を特定する前に、基準点に基づいて表情データを補正してもよい。なお、顔の部位を特定するための画像解析は公知の技術であるため詳細な説明は省略する。
表情データ処理モジュール101は、表情データ情報211に追加されたエントリの特徴点名称309、特徴点310、及び表情特徴量311に特徴点の数だけ行を生成する。表情データ処理モジュール101は、追加されたエントリの基準点名称307に「鼻尖」を設定し、また、基準点308に基準点を設定するピクセルの座標を格納する。また、表情データ処理モジュール101は、特徴点名称309に各行に部位の名称を格納し、特徴点310の各行に特徴点を設定するピクセルの座標を格納する。以上がステップS103の処理の説明である。
次に、表情データ処理モジュール101は、表情特徴量を算出する(ステップS104)。実施例1では、基準点及び特徴点の距離が表情特徴量として算出される。表情データ処理モジュール101は、表情特徴量311の各行に算出された表情特徴量を格納する。
次に、表情データ処理モジュール101は、表情データの時系列データを生成できるか否かを判定する(ステップS105)。
例えば、表情データ処理モジュール101は、所定の時間範囲に含まれる表情データを所定の数だけ取得できるか否かを判定する。また、表情データ処理モジュール101は、表情データ情報211に登録された表情データの数が閾値より大きいか否かを判定する。実施例1では、表情データ処理モジュール101は、時系列が連続する二つの表情データ(エントリ)が存在するか否かを判定する。
表情データの時系列データを生成できないと判定された場合、表情データ処理モジュール101は、感情推定処理を終了する。
表情データの時系列データを生成できると判定された場合、表情データ処理モジュール101は、表情データの時系列データを用いて表情特徴量の変化量を算出する(ステップS106)。具体的には、以下のような処理が実行される。
表情データ処理モジュール101は、表情データ情報211から所定の数のエントリを取得して、当該エントリから表情データの時系列データを生成する。例えば、表情データ処理モジュール101は、未処理のエントリの中から、取得時刻302が最新のエントリを基準に所定の時間範囲に含まれるエントリ群を取得することによって、表情データの時系列データを生成する。
表情データ処理モジュール101は、取得されたエントリ群の表情特徴量311に基づいて、表情特徴量の変化量を算出する。実施例1では、特徴点ごとに表情特徴量が算出されるため、表情特徴量の変化量も特徴点ごとに算出される。例えば、二つのエントリが取得された場合、表情データ処理モジュール101は、一つのエントリの表情特徴量311から他のエントリの表情特徴量311を減算することによって表情特徴量の変化量を算出する。
表情データ処理モジュール101は、表情特徴量分析情報212にエントリを追加し、追加されたエントリのID401に識別情報を格納する。表情データ処理モジュール101は、追加されたエントリの算出時刻402に、表情データの時系列データの中で取得時刻302が最も新しい時刻を格納する。また、表情データ処理モジュール101は、特徴点名称309に基づいて、追加されたエントリの特徴点名称403に値を格納する。さらに表情データ処理モジュール101は、追加されたエントリの第一変化量404に、算出された表情特徴量の変化量を格納する。
なお、表情データの時系列データを生成するために表情データ情報211からエントリを取得する場合、表情データ処理モジュール101は、前回処理したエントリと重複しないように所定の数のエントリを取得してもよいし、また、最新の時間を基準に所定の数のエントリを取得してもよい。以上がステップS106の処理の説明である。
次に、表情データ処理モジュール101は、表情特徴量の変化量の時系列データを生成できるか否かを判定する(ステップS107)。ステップS107の判定方法は、ステップS105と同様の方法を用いる。
表情特徴量の変化量の時系列データを生成できないと判定された場合、表情データ処理モジュール101は、感情推定処理を終了する。
表情特徴量の変化量の時系列データを生成できると判定された場合、表情データ処理モジュール101は、表示特徴量の変化量の時系列データを用いて時間的関係性指標を算出する(ステップS108)。具体的には、以下のような処理が実行される。
表情データ処理モジュール101は、表情特徴量分析情報212から所定の数のエントリを取得して、表情特徴量の変化量の時系列データに生成する。例えば、表情データ処理モジュール101は、未処理のエントリの中から、算出時刻402が最新のエントリを基準に所定の時間範囲に含まれるエントリ群を取得することによって、表情特徴量の変化量の時系列データを生成する。
表情データ処理モジュール101は、取得されたエントリ群の第一変化量404に基づいて、時間的関係性指標を算出する。実施例1では、特徴点の組合せごとに時間的関係性指標が算出される。
表情データ処理モジュール101は、時間的関係性指標情報213にエントリを追加し、追加されたエントリのID501に識別情報を格納する。表情データ処理モジュール101は、追加されたエントリの時間的関係性指標ID503及び時間的関係性指標504に、特徴点の組合せの数だけ行を生成する。
表情データ処理モジュール101は、追加されたエントリの時間的関係性指標ID503に特徴点の組合せを格納し、時間的関係性指標504に、特徴点の組合せに対応する時間的関係性指標を格納する。
なお、表情特徴量の変化量の時系列データを生成するために表情特徴量分析情報212からエントリを取得する場合、表情データ処理モジュール101は、前回処理したエントリと重複しないように所定の数のエントリを取得してもよいし、また、最新の時間を基準に所定の数のエントリを取得してもよい。以上がステップS108の処理の説明である。
次に、表情データ処理モジュール101は、時間的関係性指標の時系列データを生成できるか否かを判定する(ステップS109)。ステップS109の判定方法は、ステップS105と同様の方法を用いる。
時間的関係性指標の時系列データを生成できないと判定された場合、表情データ処理モジュール101は、感情推定処理を終了する。
時間的関係性指標の時系列データを生成できると判定された場合、表情データ処理モジュール101は、時間的関係性指標の時系列データを用いて時間的関係性指標の変化量を算出する(ステップS110)。具体的には、以下のような処理が実行される。
表情データ処理モジュール101は、時間的関係性指標情報213から所定の数のエントリを取得して、時間的関係性指標の時系列データを生成する。例えば、表情データ処理モジュール101は、未処理のエントリの中から、算出時刻502が最新のエントリを基準に所定の時間範囲に含まれるエントリ群を取得することによって、時間的関係性指標の時系列データを生成する。
表情データ処理モジュール101は、取得されたエントリ群の時間的関係性指標504に基づいて、時間的関係性指標の変化量を算出する。
表情データ処理モジュール101は、時間的関係性指標分析情報214にエントリを追加し、追加されたエントリのID601に識別情報を格納する。表情データ処理モジュール101は、時間的関係性指標ID503に基づいて、追加されたエントリの時間的関係性指標ID602に値を格納する。また、表情データ処理モジュール101は、追加されたエントリの第二変化量603に、特徴点の組合せに対応する時間的関係性指標の変化量を格納する。
なお、時間的関係指標の時系列データを生成するために時間的関係性指標情報213からエントリを取得する場合、表情データ処理モジュール101は、前回処理したエントリと重複しないように所定の数のエントリを取得してもよいし、また、最新の時間を基準に所定の数のエントリを取得してもよい。以上がステップS110の処理の説明である。
次に、表情データ処理モジュール101は、時間的関係性指標の変化量及び感情推定規則情報216に基づいて、ユーザの感情を推定する(ステップS111)。その後、表情データ処理モジュール101は感情推定処理を終了する。具体的には、以下のような処理が実行される。
(処理1)表情データ処理モジュール101は、感情情報215の感情702を参照して、現在のユーザの感情を特定する。表情データ処理モジュール101は、感情推定規則情報216の感情変化802を参照し、変化前の感情が現在のユーザの感情に一致するエントリを特定する。
(処理2)表情データ処理モジュール101は、特定されたエントリの行の中から一つのターゲット行(適合条件)を選択する。表情データ処理モジュール101は、時間的関係性指標分析情報214に新たに追加されたエントリの行の中から、時間的関係性指標ID602がターゲット行の部位803に一致する行を検索する。表情データ処理モジュール101は、ターゲット行の閾値804及び検索された行の第二変化量603を比較して、適合条件を満たすか否かを判定する。表情データ処理モジュール101は、特定されたエントリの全ての行について同様の処理を実行する。
例えば、表情データ処理モジュール101は、第二変化量603が閾値804より大きいか否かを判定する。第二変化量603が閾値804より大きい場合、表情データ処理モジュール101は、適合条件を満たすと判定する。閾値804に絶対値記号が含まれる場合、表情データ処理モジュール101は、第二変化量603の値の絶対値が閾値804より大きいか否かを判定する。閾値804に正負の記号が格納される場合、表情データ処理モジュール101は、第二変化量603が正であるか否かを判定する。
(処理3)表情データ処理モジュール101は、比較の結果に基づいて、変化度を算出し、また、ユーザの感情を推定する。
例えば、表情データ処理モジュール101は、推定規則に含まれる適合条件のうち、少なくとも一つの適合条件を満たす場合、推定規則に対応する感情変化が発生したと判定する。また、推定規則に含まれる全ての適合条件を満たす場合、推定規則に対応する感情変化が発生したと判定する。
なお、該当する推定規則が複数存在する場合、表情データ処理モジュール101は、満たされる適合条件の数が最も多い推定規則、又は閾値804及び第二変化量603の差が最も大きい推定規則を選択する。予め、適合条件に優先順位が設定されている場合、表情データ処理モジュール101は、優先順位の高い適合条件を満たす推定規則を選択する。
(処理4)該当する規則が存在しない場合、表情データ処理モジュール101は、感情情報215にエントリを追加し、追加されたエントリのID701に、ステップS110において追加されたエントリのID601の識別情報を格納する。表情データ処理モジュール101は、追加されたエントリの感情702に前回と同一の感情を格納し、感情変化フラグ703に「なし」を格納する。また、表情データ処理モジュール101は、追加されたエントリの変化度704に、算出された変化度を格納する。該当する規則が存在する場合、表情データ処理モジュール101は、感情情報215にエントリを追加し、追加されたエントリのID701に、ステップS110において追加されたエントリのID601の識別情報を格納する。表情データ処理モジュール101は、追加されたエントリの感情702に推定された感情を格納し、感情変化フラグ703に「あり」を格納する。また、表情データ処理モジュール101は、追加されたエントリの変化度704に、算出された変化度を格納する。以上がステップS111の処理の説明である。
なお、各情報には、ユーザ又はユーザの属性の識別情報を格納するフィールドを設けてもよい。この場合、表情データ処理モジュール101は、感情を推定するユーザ又はユーザの属性に関連する表情データ等を用いて感情推定処理を実行する。また、推定規則を設定する場合、ユーザ又はユーザの属性ごとに異なる学習データを格納するデータベースを用いた機械学習を行ってもよい。
なお、感情推定規則情報216に、複数の時間的関係性指標を組み合わせた適合条件を含む推定規則を設定することもできる。複数の時間的関係性指標を組み合わせた適合条件の閾値804に絶対値記号が含まれる場合、表情データ処理モジュール101は、各時間的関係性指標の変化の絶対値の平均値と、閾値804とを比較する。
なお、実施例1では、一種類の表情データから一種類の時間的関係性指標を算出しているがこれに限定されない。一種類の表情データから二種類の時間的関係性指標を算出してもよいし、二種類の表情データから一種類の時間的関係性指標を算出してもよい。なお、時間的間生成指標の算出方法は、同様の方法を用いることができる。二種類の時間的関係性指標を用いて感情を推定する場合には、各種類の時間的関係性指標の変化量の平均値と閾値804とを比較すればよい。
なお、実施例1では、ユーザを対象として処理を実行しているがこれに限定されない。計算機100は、CG及びロボットを対象としても同様の処理を実行できる。
ここで、感情推定処理の流れを説明する。図11は、実施例1の感情推定処理の流れを説明する図である。
表情データ処理モジュール101は、表情データ1000の時系列データ1100、1101から表情特徴量の時系列データ1110、1111を生成する。表情データ処理モジュール101は、表情特徴量の時系列データ1110、1111を用いて時間的関係性指標1120、1121を算出する。時間的関係性指標1120、1121は行及び列が特徴点に対応する相関行列を表し、セルの模様は相関係数の大きさを表す。
表情データ処理モジュール101は、時間的関係性指標1120、1121の時系列データを用いて時間的関係性指標の変化量を算出し、時間的関係性指標の変化量に基づいて感情を推定する。
時系列データ1100は、ユーザの表情が無表情から変化していない表情データ1000を含み、時系列データ1101は、ユーザの表情が無表情から喜びに変化した表情データ1000を含む。表情データ処理モジュール101は、時系列データ1100から算出された時間的関係性指標1120及び時系列データ1101から算出された時間的関係性指標1121を用いて、時間的関係性指標の変化量を算出する。表情データ処理モジュール101は、当該変化量及び感情推定規則情報216に基づいて、感情が無表情から喜びに変化したことを推定できる。
図12は、実施例1の計算機100が実行する出力処理を説明するフローチャートである。
出力モジュール102は、感情情報215を取得し(ステップS201)、感情情報215を用いて出力情報を生成する(ステップS202)。
出力モジュール102は、出力装置120に出力情報を出力する(ステップS203)。その後、出力モジュール102は出力処理を終了する。
実施例1の計算機100は、表情データに設定された特徴点間の時間的関係性の変化に基づいて、ユーザの表情変化の過程を評価する。これによって、顔の個人差の影響を受けることなく感情を推定することができる。また、実施例1の推定方法は、顔の個人差の影響が小さいため、推定対象のユーザから予めの参照用の表情データを取得する必要がない。
実施例2では、感情推定処理において、感情変化が発生する可能性を示す指標(発生度)を考慮する点が実施例1と異なる。以下、実施例1との差異を中心に実施例2について説明する。
図13は、実施例2のシステムの構成例を示す図である。
実施例2のシステムは様々な計測装置を備える。具体的には、実施例2のシステムは、感情信号計測装置1301、1302を備える。
感情信号計測装置1301、1302は、発生度を算出するために用いる感情信号を計測する。なお、感情信号及び表情信号の計測時刻は同期しているものとする。
感情信号は、例えば、生体信号が考えられる。生体信号は、脳波計及び近赤外分光装置等を用いて計測される脳波信号及び脳血流信号等の脳活動を評価するための信号、並びに、心電計及び発汗計を用いて計測される心拍数及び発汗量等の自律神経活動を評価するための信号である。
生体信号が感情信号である場合、感情信号計測装置1301は、例えば、脳波信号を計測する脳波計であり、感情信号計測装置1302は、例えば、心拍数を計測する心電計である。
実施例2の表情データ処理モジュール101は、感情信号を取得し、情報群103に格納する。
図14は、実施例2の計算機100の詳細な構成の一例を示す図である。
実施例2の計算機100のハードウェア構成及びモジュール構成は、実施例1の計算機100と同一である。実施例2の情報群103は、新たに、感情信号情報1401、発生度情報1402、及び感情変化推定規則情報1403を含む。
感情信号情報1401は、感情信号を管理するための情報である。感情信号情報1401のデータ構造の一例は図15を用いて説明する。発生度情報1402は、発生度を管理するための情報である。発生度情報1402のデータ構造の一例は図16を用いて説明する。感情変化推定規則情報1403は、感情変化が発生したか否かを判定するための規則を管理するための情報である。感情変化推定規則情報1403のデータ構造の一例は図17を用いて説明する。
図15は、実施例2の感情信号情報1401のデータ構造の一例を示す図である。
感情信号情報1401は、ID1501、取得時刻1502、信号種別1503、感情信号1504、及び感情変化指標1505から構成されるエントリを含む。同時刻に取得した感情信号のグループに対して一つのエントリが存在する。
ID1501は、感情信号情報1401のエントリを識別するための識別情報を格納するフィールドである。
取得時刻1502は、感情信号が取得された時刻を格納するフィールドである。取得時刻1502には、感情信号計測装置1301、1302が表情信号を取得した時刻及び計算機100が感情信号計測装置1301、1302から表情信号を取得した時刻のいずれかが格納される。
信号種別1503は、感情信号名称等の感情信号の種別を格納するフィールドである。信号種別1503には、例えば、感情信号計測装置1301、1302の名称等が格納される。表情データ処理モジュール101は、感情信号から名称を取得してもよいし、また、前回登録されたエントリの信号種別1503から名称を取得してもよい。
感情信号1504は、感情信号を格納するフィールドである。
感情変化指標1505は、ヒトの感情の変化を評価する指標である。信号種別ごとに感情変化指標の算出方法が設定される。
信号種別が心電図である場合、心拍数の変化量に基づいて感情変化指標が算出される。信号種別が脳波である場合、P300の振幅等の事象関連電位の変化量に基づいて感情変化指標が算出される。
例えば、心拍数の変化が検知された場合、表情データ処理モジュール101は、自律神経活動の変化があったと判定し、現在の感情変化指標を更新する。
(更新方法1)感情変化指標の最大値を100、最小値を-100とした場合、感情変化指標の更新方法としては以下のような方法が考えられる。表情データ処理モジュール101は、現在より時系列が一つ前に計測された心拍数を基準とし、現在の心拍数が前回の心拍数より増加している場合には現在の感情変化指標に正の値を加算し、現在の心拍数が基準の心拍数より減少している場合には現在の感情変化指標に負の値を加算する。心拍数の変化量と感情変化指標の変化量の関係は、専門家が決定してもよいし、機械学習によって決定してもよい。例えば、一分あたりの心拍数が50以上増加した場合、現在の感情変化指標に100を加算し、一分あたりの心拍数が50以上減少した場合、現在の感情変化指標に-100を加算する。
(更新方法2)感情変化指標の最大値を100、最小値を0とした場合、感情変化指標の更新方法としては以下のような方法が考えられる。表情データ処理モジュール101は、現在より時系列が一つ前に計測された心拍数又は無表情時の心拍数を基準とし、心拍数の変化量の絶対値に基づいて感情変化指標を算出する。
図16は、実施例2の発生度情報1402のデータ構造の一例を示す図である。
発生度情報1402は、ID1601、算出時刻1602、及び発生度1603から構成されるエントリを格納する。発生度の算出結果に対して一つのエントリが存在する。
ID1601は、発生度情報1402のエントリを識別するための識別情報を格納するフィールドである。なお、ID1601は、ID1501とは異なるフィールドである。
算出時刻1602は、発生度が算出された時刻を格納するフィールドである。実施例1では、取得時刻1502が最新の感情信号に基づいて発生度が算出されるため、算出時刻1602には、取得時刻1502に格納される時刻が算出時刻1602に格納される。
発生度1603は、発生度を格納するフィールドである。
表情データ処理モジュール101は、一種類の感情変化指標に基づいて発生度を算出してもよいし、複数種類の感情変化指標に基づいて発生度を算出してもよい。複数種類の感情変化指標に基づいて発生度を算出する場合、感情変化指標及び発生度の関係性を示した情報を予め設定する。
例えば、表情データ処理モジュール101は、一種類の感情変化指標をそのまま発生度として算出する。また、表情データ処理モジュール101は、複数種類の感情変化指標の平均値を発生度として算出し、又は、複数種類の感情変化指標を変数とする計算式を用いて発生度を算出する。計算式は、例えば、重み係数を含む。
なお、表情データ処理モジュール101は、発生度の算出時に、無表情時の感情変化指標を用いて感情変化指標を規格化してもよい。例えば、表情データ処理モジュール101は、無表情時に算出された感情変化指標を用いて、一定の時間範囲ごとに感情変化指標の変化率を算出し、変化率の平均値を発生度として算出する。
図17は、実施例2の感情変化推定規則情報1403のデータ構造の一例を示す図である。
感情変化推定規則情報1403は、閾値1701から構成される。閾値1701は、発生度と比較するための閾値を格納するフィールドである。
感情変化推定規則情報1403に格納する閾値は、専門家が設定してもよいし、機械学習に基づいて設定してもよい。
図18A及び図18Bは、実施例2の計算機100が実行する感情推定処理を説明するフローチャートである。
表情データ処理モジュール101は、入力インタフェース203を介して表情信号及び感情信号を取得する(ステップS301)。このとき、表情データ処理モジュール101は、表情データ情報211及び感情信号情報1401を更新する。表情データ情報211の更新処理は実施例1と同一である。感情信号情報1401の更新処理は以下のような処理となる。
表情データ処理モジュール101は、感情信号情報1401にエントリを追加し、追加されたエントリのID1501に識別番号を格納する。表情データ処理モジュール101は、追加されたエントリの取得時刻1502に、感情信号が取得された時刻を格納する。表情データ処理モジュール101は、追加されたエントリの信号種別1503、感情信号1504、及び感情変化指標1505に、感情信号の種類の数だけ行を生成する。表情データ処理モジュール101は、信号種別1503の各行に感情信号の種別を表す値を格納し、また、感情信号1504に各種類の感情信号を格納する。
なお、複数の計測チャネル又は複数の感情信号計測装置が複数存在する場合、表情データ処理モジュール101は、複数の計測チャネル又は複数の感情信号計測装置が計測した値の平均値等を感情信号として取得してもよい。
ステップS302からステップS310の処理は、ステップS102からステップS110の処理と同一である。
表情データ処理モジュール101は、ステップS310の処理が実行された後、変数iに1を設定する(ステップS311)。ここで、変数iは感情信号情報1401の一つのエントリに含まれる行を表し、また、感情信号の種別を表す値である。
次に、表情データ処理モジュール101は、感情信号情報1401に追加されたエントリを参照し、当該エントリのi行目に感情信号が存在するか否かを判定する(ステップS312)。
追加されたエントリのi行目に感情信号が存在すると判定された場合、表情データ処理モジュール101は、当該感情信号の感情変化指標を算出する(ステップS313)。このとき、表情データ処理モジュール101は、追加されたエントリの感情変化指標1505のi行目に、算出された感情変化指標を格納する。
次に、表情データ処理モジュール101は、変数iに1を加算し(ステップS314)、ステップS312に戻る。
ステップS312において、追加されたエントリのi行目に感情信号が存在しないと判定された場合、表情データ処理モジュール101は、感情変化指標に基づいて発生度を算出する(ステップS315)。このとき、表情データ処理モジュール101は、発生度情報1402にエントリを追加し、追加されたエントリのID1601に識別情報を格納する。また、表情データ処理モジュール101は、追加されたエントリの算出時刻1602及び発生度1603に、算出時刻及び発生度を格納する。
次に、表情データ処理モジュール101は、発生度及び感情変化推定規則情報1403に基づいて、感情変化の有無を推定する(ステップS316)。具体的には、以下のような処理が実行される。
表情データ処理モジュール101は、閾値1701及び発生度を比較する。表情データ処理モジュール101は、発生度が閾値1701より大きい場合、感情変化があると判定し、発生度が閾値1701以下である場合、感情変化がないと判定する。
表情データ処理モジュール101は、感情情報215にエントリを追加し、追加されたエントリのID701に識別情報を格納する。表情データ処理モジュール101は、感情変化フラグ703に、感情変化の有無の推定結果を格納する。以上がステップS316の処理の説明である。
次に、表情データ処理モジュール101は、時間的関係性指標の変化量及びステップS316の処理結果に基づいて、ユーザの感情を推定する(ステップS317)。その後、表情データ処理モジュール101は感情推定処理を終了する。具体的には、以下のような処理が実行される。
表情データ処理モジュール101は、(処理1)から(処理4)を実行する。ただし、(処理3)では、時間的関係性指標の変化量及び感情推定規則情報216の比較結果だけではなく、発生度及びステップS316の処理結果の少なくともいずれかを用いてユーザの感情が推定される。
例えば、感情変化フラグ703が「あり」、かつ、適合条件を満たす規則が存在する場合、表情データ処理モジュール101は、適合条件を満たす規則に基づいて感情を推定する。感情変化フラグ703が「あり」、かつ、適合条件を満たす規則が存在しない場合、表情データ処理モジュール101は、時間的関係性指標の変化量と閾値804との差が最も小さい規則に基づいて感情を推定する。感情変化フラグ703が「なし」の場合、表情データ処理モジュール101は、適合条件を満たす規則の有無にかかわらず、感情を「無表情」と推定する。
例えば、表情データ処理モジュール101は、発生度を用いて時間的関係性指標の変化量を補正し、補正後の時間的関係性指標の変化量及び感情推定規則情報216の比較結果に基づいて感情を推定する。
実施例2の(処理4)では、感情変化フラグ703以外のフィールドの更新方法は実施例1と同一である。以上が、ステップS317の処理の説明である。
なお、表情データ処理モジュール101は、感情を推定するために感情信号を用いてもよい。例えば、感情推定規則情報216に感情変化指標の閾値を設定し、時間的関係性指標の変化量及び感情変化指標と、それぞれの閾値との比較結果に基づいて感情を推定する。以上がステップS317の処理の説明である。
なお、感情信号及び表情信号は同じ信号でもよい。例えば、表情データ処理モジュール101は、ユーザの頭部の動き及び向き等に関連する表情特徴量を用いて感情変化指標を算出する。
実施例2によれば、最適な閾値804が変動する場合でも、ユーザの感情信号から算出された発生度を用いることによって、ユーザの感情の推定精度を向上させることができる。