(57)【特許請求の範囲】
【請求項１】
ドライバに関する複数の特徴量を検出する検出手段と、
前記ドライバに関する特徴量に基づいて、前記ドライバを予め定められた複数のグループのうちの１つに分類する分類手段と、
前記検出手段によって検出された特徴量の中から、前記分類手段によって前記ドライバが分類されたグループに対応する特徴量を選択する選択手段と、
前記選択手段によって選択された特徴量を入力値とし、前記分類手段によって前記ドライバが分類されたグループに対応する推定式を用いて、前記ドライバの状態を推定する状態推定手段と、
を有する状態推定装置。
【請求項２】
前記分類手段は、
複数の特徴量の中から抽出された特徴量と、各グループに対応するクラスタ重心とのユークリッド距離をそれぞれ算出し、
前記ドライバを、特徴量とのユークリッド距離が最も小さくなる前記クラスタ重心に対応するグループに分類する請求項１に記載の状態推定装置。
【請求項３】
前記クラスタ重心は、予め検出された特徴量から、ｋ−ｍｅａｎｓ法を用いて決定される請求項２に記載の状態推定装置。
【請求項４】
前記状態推定手段は、前記選択手段によって選択された特徴量と、過去に推定した前記ドライバの状態を示す特徴量とを入力値とする請求項１乃至３のいずれか一項に記載の状態推定装置。
【請求項５】
前記選択手段は、過去に推定されたドライバの状態と、前記検出手段によって検出された特徴量との関係に基づいて、前記検出手段によって検出された特徴量の中から、相関の高い特徴量を選択する請求項１乃至４のいずれか一項に記載の状態推定装置。
【請求項６】
特徴量を入力値とし、前記ドライバの眠気度を指標として定められた複数のクラスが分類される第１グループと第２グループのうちから、前記ドライバの状態が属する前記グループを識別する識別手段を有し、
前記状態推定手段は、前記識別手段の識別結果に基づいて前記ドライバの状態を推定する請求項１乃至５のいずれか一項に記載の状態推定装置。
【請求項７】
前記ドライバに関する特徴量は、前記ドライバの生体情報と、前記ドライバが運転する車両に関する情報である請求項１乃至６のいずれか一項に記載の状態推定装置。
【請求項８】
ドライバに関する複数の特徴量を検出する工程と、
前記ドライバに関する特徴量に基づいて、前記ドライバを予め定められた複数のグループのうちの１つに分類する工程と、
検出された特徴量の中から、前記ドライバが分類されたグループに対応する特徴量を選択する工程と、
選択された特徴量を入力値とし、前記ドライバが分類されたグループに対応する推定式を用いて、前記ドライバの状態を推定する工程と、
を含む状態推定方法。
【請求項９】
コンピュータに、
ドライバに関する複数の特徴量を検出する手順と、
前記ドライバに関する特徴量に基づいて、前記ドライバを予め定められた複数のグループのうちの１つに分類する手順と、
検出された特徴量の中から、前記ドライバが分類されたグループに対応する特徴量を選択する手順と、
選択された特徴量を入力値とし、前記ドライバが分類されたグループに対応する推定式を用いて、前記ドライバの状態を推定する手順と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、状態推定装置、状態推定方法及びプログラムに関し、更に詳しくは、車両を運転するドライバの状態を推定する状態推定装置、車両を運転するドライバの状態を推定するための状態推定方法及びプログラムに関する。
【背景技術】
【０００２】
近年、交通事故の死者数は減少傾向にあるものの、事故の発生件数自体は依然として高い水準で推移している。事故の原因は様々であるが、ドライバが漫然な状態（漫然状態）で車両の運転を行うことも、事故を誘発する原因の１つである。漫然状態は、運転中の会話や、携帯電話の使用など、ドライバが運転以外の行動を行うことによって、運転に対する注意力が散漫になる状態と、疲労や眠気などによって、ドライバの注意力が低下する状態とに概ね二分することができる。
【０００３】
後者に関しては、ドライバの意識向上のみでは改善が困難であることから、ドライバの眠気や、注意力の低下などの事象を検出し、ドライバの活性度を評価しようとする技術が種々提案されている（例えば、特許文献１及び２参照）。
【０００４】
特許文献１に記載された装置は、ドライバが覚醒状態にあるときの特徴量を、基準値として予め取得する。そして、ドライバから順次取得した特徴量と基準値との差に基づいて、ドライバの状態を推定する。
【０００５】
例えば上瞼と下瞼との瞼間距離は、ドライバごとに大きく異なる場合があるが、ドライバの状態に依存して変化する瞼間距離の変化量は、ドライバ同士で大きく異なるものではない。このため、特徴量と基準値との差に基づいて、ドライバの状態を推定する上記装置は、正確にドライバの状態を特定することができる。
【０００６】
また、特許文献２に記載された装置は、ドライバの眼の画像から抽出した特徴量からドライバの状態を推定する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−８９２７２号公報
【特許文献２】特開２００９−９００２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載された装置は、特徴量の変化量に基づいてドライバの状態を推定する。このため、特徴量を変数とする推定式として、ドライバ間で共通な式を用いることができる。しかしながら、瞼間距離などの変化についても、ドライバ相互間で大きく異なる場合がある。このような場合に、ドライバ間で共通な推定式を用いて各ドライバの状態を推定すると、推定精度が低下してしまうことがある。
【０００９】
また、特許文献２に記載された装置は、状態の推移を考慮することなく、周期的にサンプリングした特徴量に基づいて、ドライバの状態の推定を行う。しかしながら、ドライバの状態は、概ね連続的に推移する。したがって、状態の連続性を考慮することで、精度よくドライバの状態を推定することができる。
【００１０】
本発明は、上述の事情の下になされたもので、ドライバの状態を精度よく推定することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明の第１の観点に係る状態推定装置は、
ドライバに関する複数の特徴量を検出する検出手段と、
前記ドライバに関する特徴量に基づいて、前記ドライバを予め定められた複数のグループのうちの１つに分類する分類手段と、
前記検出手段によって検出された特徴量の中から、前記分類手段によって前記ドライバが分類されたグループに対応する特徴量を選択する選択手段と、
前記選択手段によって選択された特徴量を入力値とし、前記分類手段によって前記ドライバが分類されたグループに対応する推定式を用いて、前記ドライバの状態を推定する状態推定手段と、
を有する。
【００１２】
上記目的を達成するため、本発明の第２の観点に係る状態推定方法は、
ドライバに関する複数の特徴量を検出する工程と、
前記ドライバに関する特徴量に基づいて、前記ドライバを予め定められた複数のグループのうちの１つに分類する工程と、
検出された特徴量の中から、前記ドライバが分類されたグループに対応する特徴量を選択する工程と、
選択された特徴量を入力値とし、前記ドライバが分類されたグループに対応する推定式を用いて、前記ドライバの状態を推定する工程と、
を含む。
【００１３】
上記目的を達成するため、本発明の第３の観点に係るプログラムは、
コンピュータに、
ドライバに関する複数の特徴量を検出する手順と、
前記ドライバに関する特徴量に基づいて、前記ドライバを予め定められた複数のグループのうちの１つに分類する手順と、
検出された特徴量の中から、前記ドライバが分類されたグループに対応する特徴量を選択する手順と、
選択された特徴量を入力値とし、前記ドライバが分類されたグループに対応する推定式を用いて、前記ドライバの状態を推定する手順と、
を実行させる。
【発明の効果】
【００１４】
本発明によれば、特徴量に基づいて、ドライバが複数のグループのうちのいずれかのグループに分類されることによって、当該ドライバに最適な推定式を用いて、ドライバの状態を推定することができる。これにより、ドライバの状態を正確に推定することが可能となる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施形態に係る状態推定装置のブロック図である。
【図２】学習処理を説明するためのフローチャートである。
【図３】推定処理を説明するためのフローチャートである。
【図４】分類処理を説明するためのフローチャートである。
【図５】推定処理を説明するためのフローチャートである。
【図６】第２の実施形態に係る状態推定装置のブロック図である。
【図７】識別ユニットのブロック図である。
【図８】識別器の動作を説明するための図である。
【図９】損失値の算出方法を説明するための図である。
【図１０】生体情報を示す図である。
【発明を実施するための形態】
【００１６】
《第１の実施形態》
以下、本発明の第１の実施形態を、図面を参照しつつ説明する。図１は本実施形態に係る状態推定装置１０の概略的な構成を示すブロック図である。状態推定装置１０は、ドライバの状態を推定する装置である。
【００１７】
図１に示されるように、状態推定装置１０は、ドライバの生体情報及び車両情報を検出する情報検出装置２０、検出された生体情報に基づいてドライバの状態を推定する処理装置３０を備えている。
【００１８】
情報検出装置２０は、ドライバの生体情報として、例えば眼球運動、視線、瞼の開度、心拍、体動に関する情報を検出する。また、情報検出装置２０は、車両情報として、操舵角、車速などに関する情報を検出する。情報検出装置２０は、上記生体情報及び車両情報を検出し、処理装置３０へ出力する。
【００１９】
処理装置３０は、ドライバの眠気度が４以上であるか、３であるか、又は２以下であるかを推定する。なお、眠気度は、例えば、新エネルギー・産業技術総合開発機構（ＮＥＤＯ）の定義にしたがって、１）全く眠くなさそうな状態、２）やや眠そうな状態、３）眠そうな状態、４）かなり眠そうな状態、５）非常に眠そうな状態に対応する。ここでは、眠気度１の状態が、全く眠くなさそうな状態であり、眠気度２の状態が、やや眠そうな状態であり、眠気度３の状態が、眠そうな状態であり、眠気度４の状態が、かなり眠そうな状態であり、眠気度５の状態が、非常に眠そうな状態であるものとする。
【００２０】
図１に示されるように、処理装置３０は、ＣＰＵ（Central Processing Unit）３０ａ、主記憶部３０ｂ、補助記憶部３０ｃ、表示部３０ｄ、入力部３０ｅ、インタフェース部３０ｆ、及び上記各部を接続するシステムバス３０ｇを有している。
【００２１】
ＣＰＵ３０ａは、補助記憶部３０ｃに記憶されたプログラムを読み出して実行する。ＣＰＵ３０ａの具体的な動作については後述する。
【００２２】
主記憶部３０ｂは、ＲＡＭ（Random Access Memory）などの揮発性メモリを有している。主記憶部３０ｂは、ＣＰＵ３０ａの作業領域として用いられる。
【００２３】
補助記憶部３０ｃは、ＲＯＭ（Read Only Memory）、磁気ディスク、半導体メモリなどの不揮発性メモリを有している。補助記憶部３０ｃは、ＣＰＵ３０ａが実行するプログラム、及び各種パラメータなどを記憶している。また、ＣＰＵ３０ａによる処理結果などを順次記憶する。
【００２４】
表示部３０ｄは、ＬＣＤ（Liquid Crystal Display）などの表示ユニットを有している。この表示部３０ｄには、例えばＣＰＵ３０ａによる処理結果などが表示される。
【００２５】
入力部３０ｅは、タッチパネルや、入力キーを有している。ドライバからの指示は、入力部３０ｅを介して入力され、システムバス３０ｇを経由してＣＰＵ３０ａに通知される。
【００２６】
インタフェース部３０ｆは、シリアルインタフェース、ＬＡＮ（Local Area Network）インタフェースを有している。情報検出装置２０は、インタフェース部３０ｆを介して、システムバス３０ｇに接続される。
【００２７】
図２のフローチャートは、ＣＰＵ３０ａによって実行されるプログラムの一連の処理アルゴリズムに対応している。以下、図２を参照しつつ、処理装置３０が実行する学習処理について説明する。この学習処理は、予め複数の被験者としてのドライバについて検出された生体情報及び車両情報と、眠気度を用いて行われる。ここでは、説明の便宜上、１０人のドライバから所定の期間内に検出された生体情報などを用いる場合について説明する。
【００２８】
最初のステップＳ１０１では、ＣＰＵ３０ａは、予め検出された生体情報及び車両情報を特徴量に変換する。具体的には、生体情報及び車両情報についての平均値や、標準偏差等を特徴量として算出する。これにより、ドライバ１〜１０ごとに、複数種類（例えばｊ種類）の特徴量ａｉ（ｔ）［＝ａ１（ｔ），ａ２（ｔ），…，ａｊ（ｔ）］が算出される。なお、ｉは１からｊまでの整数であり、例えばａｉ（ｔ）は、時刻ｔに検出された特徴量を示す。
【００２９】
次のステップＳ１０２では、ＣＰＵ３０ａは、各ドライバ１〜１０が運転を開始してから一定時間の間に検出された特徴量を抽出する。そして、ドライバ毎に、抽出した特徴量それぞれの平均値を特徴量ｘｉとして算出する。以下、説明の便宜上、ドライバ１〜１０の特徴量（平均値）をそれぞれｘ１ｉ〜ｘ１０ｉと表示する。
【００３０】
次のステップＳ１０３では、ＣＰＵ３０ａは、特徴量ｘ１ｉ〜ｘ１０ｉを分類するとともに重心を算出する。この分類には、ｋ−ｍｅａｎｓ法を用いる。これにより、特徴量ｘ１ｉ〜ｘ１０ｉがそれぞれ、ドライバ単位で分類されるとともに、分類の基準となるクラスタ重心ｃがグループ毎に求められる。
【００３１】
例えば、特徴量ｘ１ｉ〜ｘ１０ｉをグループ１とグループ２に分類する場合を考える。この場合は、ユークリッド空間において特徴量ｘ１ｉ〜ｘ１０ｉに対応するベクトルＸｓ１〜Ｘｓ１０をそれぞれ規定する。そして、まずＸｓ１とＸｓ１０に注目し、Ｘｓ１とＸｓ２〜Ｘｓ９とのユークリッド距離Ｌ１２〜Ｌ１９をそれぞれ求めるとともに、Ｘｓ１０とＸｓ２〜Ｘｓ９とのユークリッド距離Ｌ１０２〜Ｌ１０９をそれぞれ求める。次に、ユークリッド距離を特徴量毎に比較し（例えばＬ１２とＬ１０２）、ユークリッド距離が小さい方の特徴量からなるグループを規定する。この処理によりできたグループ内で重心（クラスタ重心）ｃ１とｃ２を求める。次に、クラスタ重心ｃ１に対応するベクトルＣ１とＸｓ１〜Ｘｓ１０とのユークリッド距離ＬＣ１１〜ＬＣ１１０とをそれぞれ求めるとともに、クラスタ重心ｃ２に対応するベクトルＣ２とＸｓ１〜Ｘｓ１０とのユークリッド距離ＬＣ２１〜ＬＣ２１０をそれぞれ求める。次に、ユークリッド距離を特徴量毎に比較し（例えばＬＣ１１とＬＣ２１）、ユークリッド距離が小さい方の特徴量からなるグループを、そのクラスタ重心が属するグループとして規定する。この処理により規定されたグループ内で重心（クラスタ重心）ｃ１とｃ２を再度求める。以上の処理を、グループの分類結果が変わらなくなるまで繰り返す。そして、分類結果が変わらなくなったときのクラスタ重心を分類の基準となるクラスタ重心ｃ１およびｃ２とする。
【００３２】
次のステップＳ１０４では、ＣＰＵ３０ａは、カウンタ値ｍの値を零に初期化する。このカウンタ値ｍは、グループの番号を示す。
【００３３】
次のステップＳ１０５では、ＣＰＵ３０ａは、カウンタ値ｍをインクリメントする。
【００３４】
次のステップＳ１０６では、ＣＰＵ３０ａは、グループｍについての特徴量を選択する。この特徴量の選択は、特徴量と、当該特徴量が検出されたときの眠気度との単相間係数が閾値以上の特徴量を選択することにより行う。これにより、特徴量ａｉ（ｔ）の中からいくつかの特徴量が選択される。例えば、グループ１については、特徴量ａ１（ｔ），ａ２（ｔ），ａ３（ｔ），ａ４（ｔ），ａ５（ｔ）などが選択される。
【００３５】
次のステップＳ１０７では、ＣＰＵ３０ａは、予め取得した特徴量ａｉ（ｔ）［＝ａ１（ｔ），ａ２（ｔ），…，ａｊ（ｔ）］それぞれと、この特徴量が検出される直前の眠気度ｄを正規化する。具体的には、−１〜１の範囲に線形で変換するための式（傾き、定数）を取得する。
【００３６】
次のステップＳ１０８では、ＣＰＵ３０ａは、ステップＳ１０７で正規化することにより得られた特徴量Ａｉと、眠気度Ｄとを用いて、識別器Ｈ及び識別器Ｌの学習を行う。なお、識別器Ｈ，Ｌは、ＣＰＵ３０ａが補助記憶部３０ｃに記憶されたプログラムを実行することにより、主記憶部３０ｂに規定される便宜的な回路である。
【００３７】
次のステップＳ１０９では、ＣＰＵ３０ａは、カウンタ値ｍがグループの数を表すｎ以上であるか否かを判断する。ステップＳ１０９での判断が否定された場合は（ステップＳ１０９：Ｎｏ）、ＣＰＵ３０ａは、ステップＳ１０５へ戻り、以降ステップＳ１０５〜Ｓ１０９までの処理を繰り返し実行する。これにより、グループ１〜グループｍについて特徴量が選択され（ステップＳ１０６）、識別器Ｈ，Ｌの学習が行われる。一方、ステップＳ１０９での判断が肯定された場合は（ステップＳ１０９：Ｙｅｓ）、ＣＰＵ３０ａは、学習処理を終了する。なお、学習アルゴリズムとしては、アダブースト、サポートベクターマシン等が例示される。
【００３８】
次に処理装置３０が実行する推定処理について説明する。なお、この処理は、ＣＰＵ３０ａが、情報検出装置２０に生体情報及び車両情報の取得を指示し、情報検出装置２０から生体情報及び車両情報が出力された後に実行される。
【００３９】
図３のフローチャートは、ＣＰＵ３０ａによって実行されるプログラムの一連の処理アルゴリズムに対応している。以下、図３を参照しつつ、処理装置３０が実行する推定処理について説明する。
【００４０】
最初のステップＳ２０１では、ＣＰＵ３０ａは、ドライバに対する分類処理を実行する。この分類処理では、図４に示されるサブルーチン３００が実行される。
【００４１】
サブルーチン３００の最初のステップＳ３０１では、ＣＰＵ３０ａは、情報検出装置２０から、生体情報及び車両情報を取得する。
【００４２】
次のステップＳ３０２では、ＣＰＵ３０ａは、ステップＳ３０１で取得した生体情報及び車両情報を特徴量に変換する。具体的には、生体情報及び車両情報についての平均値や、標準偏差等を特徴量として算出する。これにより、ドライバの特徴量ａｉ（ｔ）［＝ａ１（ｔ），ａ２（ｔ），…，ａｊ（ｔ）］が算出される。
【００４３】
次のステップＳ３０３では、ＣＰＵ３０ａは、ステップＳ３０２で算出した特徴量ａｉ（ｔ）を、補助記憶部３０ｃへ記憶させる。これにより、特徴量ａｉ（ｔ）が時系列的に蓄積される。
【００４４】
次のステップＳ３０４では、ＣＰＵ３０ａは、サブルーチン３００が開始されてから所定時間経過したか否かを判断する。ステップＳ３０４での判断が否定された場合には（ステップＳ３０４：Ｎｏ）、ＣＰＵ３０ａは、ステップＳ３０１へ戻り、以降ステップＳ３０４での判断が肯定されるまで、ステップＳ３０１〜Ｓ３０４までの処理を繰り返し実行する。
【００４５】
次のステップＳ３０５では、ＣＰＵ３０ａは、特徴量ａｉ（ｔ）それぞれについての平均値を特徴量ｘｉとして算出する。
【００４６】
次のステップＳ３０６では、ＣＰＵ３０ａは、特徴量ｘｉに基づいて、ドライバを、複数のグループのうちのいずれかのグループへ分類する。この分類は、ユークリッド空間において、グループそれぞれに対応するクラスタ重心を示すベクトルと、特徴量ｘｉを要素とするベクトルからユークリッド距離を求め、このユークリッド距離が最も小さくなるときのクラスタ重心に対応するグループを特定することにより行う。
【００４７】
例えば、ドライバを、グループ１及びグループ２のうちのどちらかに分類する場合には、ＣＰＵ３０ａは、グループ１に対応するクラスタ重心ｃ１を示すベクトルＣ１と、各特徴量ｘｉを要素とするベクトルＸｓとを用いてユークリッド距離ｌ１を算出する。同様に、グループ２に対応するクラスタ重心ｃ２を示すベクトルＣ２と、ベクトルＸｓとを用いてユークリッド距離ｌ２を算出する。
【００４８】
ＣＰＵ３０ａは、ユークリッド距離ｌ１，ｌ２をそれぞれ算出すると、ユークリッド距離ｌ１とユークリッド距離ｌ２とを比較する。そして、ユークリッド距離が短い方のクラスタ重心に対応するグループにドライバを分類する。例えば、ユークリッド距離ｌ１の方が、ユークリッド距離ｌ２よりも短い場合には、ＣＰＵ３０ａは、クラスタ重心ｃ１に対応するグループ１にドライバを分類する。一方、ユークリッド距離ｌ２の方が、ユークリッド距離ｌ１よりも短い場合には、ＣＰＵ３０ａは、クラスタ重心ｃ２に対応するグループ２にドライバを分類する。
【００４９】
ＣＰＵ３０ａは、ステップＳ３０６の処理を行うと、サブルーチン３００を終了し、次のステップＳ２０２へ移行する。
【００５０】
ステップＳ２０２では、ＣＰＵ３０ａは、推定処理を実行する。この推定処理では、図５に示されるサブルーチン４００が実行される。
【００５１】
サブルーチン４００の最初のステップＳ４０１では、ＣＰＵ３０ａは、情報検出装置２０から、生体情報及び車両情報を取得する。
【００５２】
次のステップＳ４０２では、ＣＰＵ３０ａは、ステップＳ４０１で取得した生体情報及び車両情報を特徴量に変換する。具体的には、生体情報及び車両情報についての平均値や、標準偏差等を特徴量として算出する。これにより、特徴量ａｉ（ｔ）［＝ａ１（ｔ），ａ２（ｔ），…，ａｊ（ｔ）］が算出される。
【００５３】
次のステップＳ４０３では、ＣＰＵ３０ａは、ドライバが分類されたグループに応じて、特徴量ａｉ（ｔ）の中から、推定に用いる特徴量を選択する。本実施形態では、ステップＳ１０６で、グループ毎に選択された特徴量ａｉ（ｔ）を選択する。例えば、ステップＳ３０６において、ドライバがグループ１に分類され、当該グループ１について、ステップＳ１０６で特徴量ａ１（ｔ），ａ２（ｔ），ａ３（ｔ），ａ４（ｔ），ａ５（ｔ）が選択されている場合には、ＣＰＵ３０ａは、ａ１（ｔ），ａ２（ｔ），ａ３（ｔ），ａ４（ｔ），ａ５（ｔ）を選択する。
【００５４】
次のステップＳ４０４では、特徴量毎に求めた正規化の変換式により、選択された特徴量と、直前に推定された眠気度Ｄ（ｔ−１）を正規化する。これにより、ステップＳ４０３で選択された特徴量ａｉ（ｔ）は、−１から１までの値に正規化される。
【００５５】
また、眠気度については、眠気度が４以上であるか否かを識別する識別器Ｈと、眠気度が３以上であるか否かを識別する識別器Ｌに対して正規化される。具体的には、眠気度が４以上である場合には、当該眠気度は、識別器Ｈ，Ｌに対して１に正規化される。また、眠気度が３である場合には、当該眠気度は、識別器Ｈに対して−１に正規化され、識別器Ｌに対して１に正規化される。また、眠気度が２以下である場合には、当該眠気度は、識別器Ｈ，Ｌに対して−１に正規化される。
【００５６】
図５のフローチャートに示される推定処理が開始された直後は、ステップＳ４０６以降の処理が実行されていない。この場合、ドライバの眠気度の推定が未だ行われていない状態である。推定処理が開始された直後は、ドライバによる車両の運転が開始された直後であるため、ドライバの眠気度は比較的低いと考えられる。そのため、ドライバの眠気度が推定されていないときは、ドライバの眠気度が２以下であるものとする。
【００５７】
次のステップＳ４０５では、ＣＰＵ３０ａは、識別器Ｈによる識別を行う。識別器Ｈは、眠気度が４以上であるか否かを識別する識別器であり、眠気度が４以上であると識別した場合に１を出力し、眠気度が４未満であると識別した場合に−１を出力する。ＣＰＵ３０ａは、識別器に入力情報Ｘ（ａｉ（ｔ），Ｄ（ｔ−１））を入力する。
【００５８】
次のステップＳ４０６では、ＣＰＵ３０ａは、識別器Ｈの出力が１であるか否かを判断する。ステップＳ４０６での判断が肯定された場合には（ステップＳ４０６：Ｙｅｓ）、次のステップＳ４０７で、ドライバの眠気度が４以上であると推定し推定結果を外部へ出力する。そして、ステップＳ４０８で、例えば外部に警報を発令する。
【００５９】
一方、ステップＳ４０６での判断が否定された場合には（ステップＳ４０６：Ｎｏ）、次のステップＳ４０９へ移行する。
【００６０】
ステップＳ４０９では、ＣＰＵ３０ａは、識別器Ｌによる識別を行う。識別器Ｌは、眠気度が３以上であるか否かを識別する識別器であり、眠気度が３以上であると識別した場合に１を出力し、眠気度が３未満であると識別した場合に−１を出力する。ＣＰＵ３０ａは、識別器に入力情報Ｘ（ａｉ（ｔ），Ｄ（ｔ−１））を入力する。
【００６１】
次のステップＳ４１０では、ＣＰＵ３０ａは、識別器Ｌの出力が１であるか否かを判断する。ステップＳ４１０での判断が肯定された場合には（ステップＳ４１０：Ｙｅｓ）、次のステップＳ４１１で、ドライバの眠気度が３であると推定し推定結果を外部へ出力する。
【００６２】
一方、ステップＳ４１０での判断が否定された場合には（ステップＳ４１０：Ｎｏ）、次のステップＳ４１２で、ドライバの眠気度が２以下であると推定し推定結果を外部へ出力する。
【００６３】
ステップＳ４１２では、ＣＰＵ３０ａは、ドライバによる運転が継続されているか否かを判断する。ドライバの運転が継続されている場合には（ステップＳ４１３：Ｙｅｓ）、ステップＳ４０１へ戻り、以降ステップＳ４０１〜Ｓ４１３までの処理を繰り返し実行する。
【００６４】
一方、ドライバによる運転が中断された場合には（ステップＳ４１３：Ｎｏ）、サブルーチン４００を終了する。これによりステップＳ２０２の処理が完了する。以上によより、推定処理が終了する。
【００６５】
以上説明したように、本実施形態では、リアルタイムに検出される生体情報・車両情報から求められる特徴量に基づいて、ドライバが、複数のグループのうちのいずれかのグループへ分類される。ドライバの分類は、ｋ−ｍｅａｎｓ法などを用いた学習によって決定されるルールにしたがって行われる。例えば、学習処理によって、女性のドライバと男性のドライバそれぞれとから特徴量を取得し、グループを２つ設定する場合には、グループ１に属する条件が「女性ドライバであること」となり、グループ２に属する条件が「男性であること」になることがある。この場合には、状態を推定する対象が女性である場合には、ステップＳ２０７で、ドライバがグループ１に分類され、ステップＳ２０８で、グループ１に属するドライバの状態の推定に最も適した特徴量が選択される。
【００６６】
したがって、ドライバの状態を精度よく推定することが可能となる。また、グループの特性に応じた特徴量の選定と、グループに応じた特徴量の正規化と、グループの特性に応じた推定式とを用いて推定を行うことで、精度よくドライバの状態を推定することができる。
【００６７】
本実施形態では、グループ毎に識別器 Ｈ，Ｌの学習が行われるため、識別器ごとに入力情報Ｘ（ａｉ（ｔ），Ｄ（ｔ−１））に対する関数ｆ（Ｘ）が規定される。したがって、ドライバの状態を精度よく推定することが可能となる。
【００６８】
本実施形態では、ドライバの状態の推定に、前回の推定結果を用いる。具体的には、過去のドライバの眠気度Ｄ（ｔ−１）を用いて、現在のドライバの眠気度Ｄ（ｔ）の推定を行う。これにより、ドライバの状態の連続性を考慮して、現在のドライバの状態を推定することができる。その結果、正確な推定結果を得ることができる。
【００６９】
《第２の実施形態》
次に、本発明の第２の実施形態を、図面を参照しつつ説明する。なお、第１の実施形態と同一又は同等の構成については、同等の符号を用いるとともに、その説明を省略又は簡略する。
【００７０】
本実施形態に係る状態推定装置１０は、処理装置３０がハードウエアで構成されている点で、第１の実施形態に係る状態推定装置１０と異なっている。図６は、本実施形態に係る状態推定装置１０のブロック図である。図６に示されるように、状態推定装置１０を構成する処理装置３０は、ドライバ分類ユニット３１、特徴量選択ユニット３２、識別ユニット４０、及びクラス推定ユニット５０を有している。
【００７１】
ドライバ分類ユニット３１は、情報検出装置２０から、所定の期間に生体情報及び車両情報を取得し、取得した情報を特徴量ａｉ（ｔ）に変換する。そして、特徴量ａｉ（ｔ）の平均値を特徴量ｘｉとして算出する。次に、ドライバ分類ユニット３１は、特徴量ｘｉに基づいて、ドライバを、複数のグループのうちのいずれかのグループへ分類する。この分類は、ユークリッド空間において、グループそれぞれに対応するクラスタ重心を示すベクトルと、特徴量ｘｉを要素とするベクトルからユークリッド距離を求め、このユークリッド距離が最も小さくなるときのクラスタ重心に対応するグループを特定することにより行う。
【００７２】
特徴量選択ユニット３２は、ドライバが分類されたグループに応じて、特徴量ａｉ（ｔ）の中から、推定に用いる特徴量を選択する。
【００７３】
図７は識別ユニット４０のブロック図である。図７に示されるように、識別ユニット４０は、符号器４１と、６個の識別器４２１〜４２６と、復号器４３とを含んで構成されている。
【００７４】
符号器４１は、次式（１）で示される符号表Ｗを用いて符号化処理を行う。なお、ｐは識別器の個数であり、Ｇはドライバの眠気度を示すクラスの数である。ここでは、クラス１が眠気度が２以下の状態を示し、クラス２が眠気度が３の状態を示し、クラス３が眠気度が４以上の状態を示す。
【００７５】
また、符号表Ｗの各行には、１と−１の双方が含まれる。本実施形態では、上述したようにドライバの状態が属するクラスの数は３であり、識別器の数が６である。このため、次式（１）の一般式で示される符号表Ｗは、次式（２）に示されるように、６行３列のマトリクス状に配置された１８の要素から構成される。
【００７６】
【数１】
0005917932.tif 000002
…（１）
【００７７】
【数２】
0005917932.tif 000003
…（２）
【００７８】
図８を参照するとわかるように、符号表Ｗの各行の３つの要素は、左から右に向かって順に、それぞれクラス１、クラス２、クラス３に対応している。そして、３つのクラスは、値が１の要素に対応するクラスからなる第１グループと、値が−１の要素に対応するクラスからなる第２グループに分類される。なお、各グループのクラスの数は１つであっても複数（２つ）であってもよい。また、値が０の要素に対応するクラスは、分類から除外される。例えば、符号表Ｗの１行目の３つの要素は、クラス１が第１グループに分類され、クラス２及びクラス３が第２グループに分類されることを意味する。
【００７９】
同様に、符号表Ｗの２行目の３つの要素は、クラス２が第１グループに分類され、クラス１及びクラス３が第２グループに分類されることを意味する。また、符号表Ｗの３行目の３つの要素は、クラス３が第１グループに分類され、クラス１及びクラス２が第２グループに分類されることを意味する。また、符号表Ｗの４行目の３つの要素は、クラス１が第１グループに分類され、クラス２が第２グループに分類されることを意味する。また、符号表Ｗの５行目の３つの要素は、クラス１が第１グループに分類され、クラス３が第２グループに分類されることを意味する。また、符号表Ｗの６行目の３つの要素は、クラス２が第１グループに分類され、クラス３が第２グループに分類されることを意味する。
【００８０】
符号器４１は、特徴量選択ユニット３２によって選択された特徴量ａｉ（ｔ）と、ドライバの眠気度を示す値Ｄ（ｔ−１）とを要素とする入力情報Ｘ（ａｉ（ｔ），Ｄ（ｔ−１））を規定する。
【００８１】
符号器４１は、入力情報Ｘを規定すると、符号表Ｗの１行目の３つの要素からなるコード１［１、−１、−１］と入力情報Ｘとの関連づけを行う。そして、コード１が関連づけられた入力情報Ｘを識別器４２１へ出力する。
【００８２】
同様に、符号器４１は、符号表Ｗの２行目〜６行目それぞれの３つの要素からなるコード２［−１、１、−１］、コード３［−１、−１、１］、コード４［１、−１、０］、コード５［１、０、−１］、コード６［０、１、−１］それぞれと入力情報Ｘとの関連付けを行う。そして、コード１〜コード６がそれぞれ関連づけられた入力情報Ｘを、それぞれ識別器４２２〜４２６へ出力する。
【００８３】
識別器４２１〜４２６は、例えばＡｄａＢｏｏｓｔによる学習済みの二値判別器である。これらの識別器４２１〜４２６は、コード１〜６がそれぞれ関連づけられた入力情報Ｘが入力されると、コード１〜６に基づいて、クラス１〜３を２つのグループに分類する。そして、入力情報Ｘに基づいて、ドライバの状態が、２つのグループのうちのいずれに属するかを識別し、識別した結果と、信頼度を出力する。
【００８４】
例えば、識別器４２１は、コード１［１、−１、−１］に基づいて、クラス１を第１グループに分類し、クラス２及びクラス３を第２グループに分類する。そして、識別器４２１は、入力情報Ｘに基づいて、ドライバの状態が、第１グループに属するか、第２グループに属するかを識別し、識別結果に応じた出力値ｈ１（ｘ）を出力する。
【００８５】
この出力値ｈ１（ｘ）の符号は、コード１の要素の符号と対応している。そして、出力値ｈ１（ｘ）の符号が＋（＞０）である場合には、ドライバの状態は、コード１の、値が１である要素に対応するクラス１から構成される第１グループに属していると考えることができる。一方、出力値ｈ１（ｘ）の符号が−（＜０）である場合には、ドライバの状態は、コード１の、値が−１である要素に対応するクラス２及びクラス３から構成される第２グループに属していると考えることができる。また、出力値ｈ１（ｘ）の絶対値は、識別結果としての信頼度を示す。
【００８６】
同様に、識別器４２２〜４２６それぞれは、コード２〜６に基づいて、クラス１〜３を第１グループに属するクラスと、第２グループに属するクラスに分類する。そして、識別器４２２〜４２６それぞれは、入力情報Ｘに基づいて、ドライバの状態が、第１グループに属するか、第２グループに属するかを識別し、識別結果に応じた出力値ｈ２（ｘ）〜ｈ６（ｘ）を出力する。
【００８７】
復号器４３は、上記式（２）で示される符号表Ｗを用いて複合化処理を行う。符号表Ｗの１列目にある６つの要素それぞれは、クラス１が、第１グループ及び第２グループのうちのいずれのグループに分類されたかを表している。また、符号表Ｗの２列目にある６つの要素それぞれは、クラス２が、第１グループ及び第２グループのうちのいずれのグループに分類されたかを表している。また、符号表Ｗの３列目にある６つの要素それぞれは、クラス３が、第１グループ及び第２グループのうちのいずれのグループに分類されたかを表している。
【００８８】
一般に識別器４２１〜４２６からの出力値は、識別平面からのユークリッド距離を表し、この値は識別結果の信頼度を表す。したがって、上述のようにグループ１が、値が１である要素によって規定され、グループ２が、値が−１である要素によって規定されている場合には、識別器４２１〜４２６からの出力値ｈｎ（ｘ）は、その符号が正でその値が大きいほど、ドライバの状態が第１グループに属する傾向が強いことを意味する。また、識別器４２１〜４２６からの出力値ｈｎ（ｘ）は、その符号が負でその値が小さいほど、ドライバの状態が第２グループに属する傾向が強いことを意味する。
【００８９】
そこで、復号器４３は、各識別器からの出力値と、符号表Ｗの列方向に配列された要素を用いて、クラス１〜３それぞれに対応する損失値Ｌ１〜Ｌ３を算出する。この損失値Ｌ１〜Ｌ３の算出は、次式（３）で示される関数が用いられる。
【００９０】
【数３】
0005917932.tif 000004
…（３）
【００９１】
図９を参照するとわかるように、例えば、出力値ｈ１（ｘ）〜ｈ６（ｘ）それぞれが、−２、−７、０．５、−１、−９、１２である場合には、クラス１に対応した損失値Ｌ１は、次式（４）のように計算される。
【００９２】
【数４】
0005917932.tif 000005
…（４）
【００９３】
復号器４３は、同様の要領で、クラス２、クラス３にそれぞれ対応する損失値Ｌ２、損失値Ｌ３をそれぞれ算出すると、算出した損失値Ｌ１〜Ｌ３をクラス推定ユニット５０へ出力する。
【００９４】
図６に戻り、処理装置３０のクラス推定ユニット５０は、識別ユニット４０の復号器４３から出力された損失値Ｌ１〜Ｌ３のうちから、最も値が小さい損失値に対応したクラスを、ドライバの状態が属するクラスとして検出し出力する。例えば、クラス１に対応する損失値Ｌ１が７０１８、クラス２に対応する損失値Ｌ２が−１６１６６７、クラス３に対応する損失値Ｌ３が１５３５４６である場合には、クラス推定ユニット５０は、損失が最小となった損失値Ｌ２に対応するクラス２を、ドライバの状態が属するクラスとして検出し外部へ出力する。
【００９５】
以上説明したように、本実施形態では、ドライバからリアルタイムに検出される生体情報に基づいて、ドライバが、ドライバ分類ユニット３１によって、複数のグループのうちのいずれかのグループへ分類される。その結果、ドライバに最適な特徴量を用いてドライバの状態が推定される。したがって、ドライバの状態を精度よく推定することが可能となる。また、グループの特性に応じた推定式を用いることで、更に精度よくドライバの状態を推定することができる。
【００９６】
本実施形態では、ドライバの状態の推定に、前回の推定結果を用いる。具体的には、過去のドライバの状態が属するクラスを示す値Ｄを用いて、現在のドライバの状態の推定を行う。これにより、ドライバの状態の連続性を考慮して、現在のドライバの状態を推定することができる。その結果、正確な推定結果を得ることができる。
【００９７】
以上、本発明の実施形態について説明したが、本発明は上記実施形態によって限定されるものではない。例えば、生体情報としては、上述したものに限らず、一例として、図１０の表に示される生体情報を用いることができる。
【００９８】
上記実施形態では、識別器４２１〜４２６は、Ａｄａｂｏｏｓｔによる学習済みの二値判別器であるものとして説明した。しかしながら、本発明はこれに限定されるものではなく、識別器４２１〜４２６は、例えばＳＶＭ（Support Vector Machine）などの二値判別器であってもよい。
【００９９】
上記各実施形態に係る処理装置３０の機能は、専用のハードウエアによっても、また、通常のコンピュータシステムによっても実現することができる。そして、第１の実施形態において処理装置３０の補助記憶部３０ｃに記憶されているプログラムは、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto-Optical disk）などのコンピュータで読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータにインストールすることにより、上述の処理を実行する装置を構成することとしてもよい。
【０１００】
また、プログラムをインターネット上の所定のサーバ装置が有するディスク装置などに格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロードするようにしてもよい。
【０１０１】
また、プログラムは、全部又は一部をサーバ装置上で実行させ、その処理に関する情報を通信ネットワークを介して送受信しながら、上述の画像処理を実行することとしてもよい。
【０１０２】
なお、上述の機能を、ＯＳ（Operating System）が分担して実現する場合又はＯＳとアプリケーションとの協働により実現する場合などには、ＯＳ以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロードしてもよい。
【０１０３】
なお、本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。
【産業上の利用可能性】
【０１０４】
本発明の状態推定装置、状態検出方法及びプログラムは、被監視者の状態を検出するのに適している。
【符号の説明】
【０１０５】
１０  状態推定装置
２０  情報検出装置
３０  処理装置
３０ａ  ＣＰＵ
３０ｂ  主記憶部
３０ｃ  補助記憶部
３０ｄ  表示部
３０ｅ  入力部
３０ｆ  インタフェース部
３０ｇ  システムバス
３１  ドライバ分類ユニット
３２  特徴量選択ユニット
４０  識別ユニット
４１  符号器
４２  識別器
４３  復号器
５０  クラス推定ユニット
【図１】
0005917932.tif 000006
【図２】
0005917932.tif 000007
【図３】
0005917932.tif 000008
【図４】
0005917932.tif 000009
【図５】
0005917932.tif 000010
【図６】
0005917932.tif 000011
【図７】
0005917932.tif 000012
【図８】
0005917932.tif 000013
【図９】
0005917932.tif 000014
【図１０】
0005917932.tif 000015