以下、この発明による個人識別装置の実施形態を、顔画像を、個人を識別するための識別要素として個人識別する装置の場合を例に、図を参照しながら説明する。
[第1の実施形態]
図1は、この実施形態の顔画像による個人識別装置の構成例を示すブロック図である。この図1の例は、例えばパーソナルコンピュータに、顔画像による個人識別装置を構成した場合の例であり、ブロックで示したものの一部は、ソフトウエア構成とすることもできるものである。
図1に示すように、この実施形態の顔画像による個人識別装置は、CPU(Central Processing Unit)1に対してシステムバス2を介して、プログラム等が記憶されているROM(Read Only Memory)3と、ワークエリア用のRAM(Random Access Memory)4と、操作部インターフェース5と、ディスプレイインターフェース76と、画像データ入力インターフェース7とが接続されている。
操作部インターフェース5には、キーボードやマウスなどの操作入力部8が接続されている。また、ディスプレイインターフェース6には、例えばLCD(Liquid Crystal Display;液晶ディスプレイ)などからなるディスプレイ9が接続されている。
画像データ入力インターフェース7は、例えば、USB(Universal Serial Bus)インターフェースを備える撮像カメラ(デジタルカメラ)等の画像出力装置からの画像データを受け取る場合には、USB端子およびUSBインターフェースからなる。
また、画像データ入力インターフェース7は、画像データが格納されたカード型メモリからの画像データを受け取る場合には、当該カード型メモリが装填されるメモリリーダで構成される。
また、画像データ入力インターフェース7は、画像データが格納された光ディスクからの画像データを受け取る場合には、当該光ディスクからの画像データの読み出しが可能な光ディスクドライブで構成される。
なお、画像データ入力インターフェース7は、画像データのみでなく、画像データに付随する、例えば撮像時刻の情報、撮像条件などからなる情報(例えば、Exif(Exchange image file format)形式の情報など)も取り込むものである。
この場合に、画像データ入力インターフェース7を通じて取り込まれる画像データに、もしも、撮像時刻の情報が含まれていない場合には、図示は省略するが、CPU1は、ユーザに対し、撮影時刻の情報が存在しないので撮影時刻の入力をするように促すメッセージを、ディスプレイ9に表示し、このメッセージに対応してユーザが入力する撮像時刻の情報を取り込まれた画像データに対応させて取得するようにする。
また、画像データ入力インターフェース7は、印画紙にプリントされた写真をスキャンして取り込むスキャナであっても良い。その場合には、撮影時刻の情報は、ユーザが入力するようにする。
また、この実施形態においては、システムバス2には、顔識別用辞書データベース10と、顔識別用画像処理部11と、顔識別処理部12と、表示情報生成部13と、辞書データ更新処理部14とが接続されている。
顔識別用辞書データベース10は、例えばハードディスク装置などの記憶装置の全部あるいは一部の記憶エリアが用いられて構成されている。この実施形態では、この顔識別用辞書データベース10には、顔画像による個人識別すべく登録された複数の個人Pi(i=1,2,・・・以下同じ。iは個人番号に対応する。例えばi=1は「Aさん」、i=2は「Bさん」の如くである)のそれぞれについての個人辞書データDiが、それぞれの個人を特定するための個人特定情報(個人識別データ)と対応付けられて記憶保持されている。なお、以下の説明において、「顔識別」は、「顔画像による個人識別」と同義である。
顔識別用画像処理部11は、図2に示すように、画像データ入力インターフェース7を通じて取り込んだ原画の画像データから、顔検出および目検出を行い、検出した両目の位置が水平になるように、目の位置に合わせて顔画像の回転をする。目の位置に合わせて顔画像を回転するのは、後述のように、顔識別においては、正面を向いた顔画像であって、両目が水平になっている顔画像を基準にしているからである。
そして、さらに、顔識別用画像処理部11では、顔画像を識別するための特徴部位(例えば眉、目、鼻、口など)の特徴データを抽出するための特徴点プロット(特徴点サンプリング)を行い、当該取り込まれた顔画像Finについての特徴データとしての特徴ベクトルVinを取得する。ここで、特徴ベクトルVinは、複数種の特徴量を変数とする関数からなるものである。
なお、顔識別用画像処理部11における顔検出、目検出、特徴ベクトルVinの算出などの処理に関しては、特許文献2(特開2006−72770号公報)、特許文献3(特開2005−44330号公報)、非特許文献(佐部浩太郎、日台健一、“ピクセル差分特徴を用いた実時間任意姿勢顔検出器の学習”、第10回画像センシングシンポジウム講演論文集、pp.547-552,2004年6月)などに詳しく記載されているので、ここでは省略することとする。
顔識別用画像処理部11は、取り込まれた顔画像Finについて取得した特徴データとしての特徴ベクトルVinを、顔識別処理部12に供給する。
また、顔識別用画像処理部11において、顔検出や目検出ができなかった場合、または、顔検出や目検出ができても、特徴ベクトルの算出ができなかった場合には、その旨を顔識別処理部12や表示情報生成部13に送るようにする。
顔識別処理部12は、顔識別用画像処理部11からの取り込まれた画像から取得された顔画像Finの特徴データとしての特徴ベクトルVinを受けて、この特徴ベクトルVinと、顔識別用辞書データベース10に格納されている複数の個人の個人辞書データDiとを比較して照合し、一致していると判定することができる個人辞書データDiを検出するようにする。
そして、顔識別処理部12は、一致していると判定することができる個人辞書データDiが検出できたときには、その旨と、検出できた個人辞書データDiに対応する個人特定情報(個人識別データ)、この例では、個人の氏名とを、表示情報生成部13に送る。
また、顔識別処理部12は、一致していると判定することができる個人辞書データDiが検出できなかったときには、その旨を、表示情報生成部13に送る。
なお、顔識別処理部12は、顔識別用画像処理部11から、顔検出や目検出ができなかった旨、または、顔検出や目検出ができても、特徴ベクトルの算出ができなかった旨の通知を受けたときには、上述した顔識別処理は実行しない。
表示情報生成部13は、顔識別処理部12から、顔識別ができた旨および顔識別結果として個人特定情報としての個人の氏名を受け取ったときには、図3に示すような、顔識別結果をユーザに確認させるための顔識別結果確認画面の表示情報を生成し、ディスプレイインターフェース6を通じてディスプレイ9の画面に表示させるようにする。
図3に示すように、この顔識別結果確認画面には、取り込んだ顔画像Finの表示画像21が表示されると共に、顔識別結果が正しいかどうかをユーザに問い合わせるメッセージ「この人は、「○○○○」さんですか?」の表示22と、当該問い合わせメッセージ22に対する回答のボタンアイコン23,24とが表示される。問い合わせメッセージ22のうちの、「○○○○」の部分には、顔識別結果の氏名が表示される。
図3の例では、顔識別処理部12では、取り込まれた顔画像の特徴データは、「田中太郎」さんの個人辞書データDiの顔画像の特徴データと一致したと判定したので、問い合わせメッセージ22の「○○○○」の部分には、「田中太郎」が表示されている。
回答のボタンアイコン23は、肯定の回答用であり、また、回答のボタンアイコン24は、否定の回答用である。
図3の画面において、ユーザが、操作入力部8を用いて肯定の回答用のボタンアイコン23をクリックしたときには、表示情報生成部13は、CPU1の制御に従って、顔識別結果の氏名の情報を辞書データ更新処理部14に供給する。辞書データ更新処理部14は、後述するように、受け取った氏名で特定される個人特定情報に対応して顔識別用辞書データベース10に記憶されている個人辞書データDiの新規生成(新規登録)または更新処理を行なう。
また、図3の画面において、ユーザが、操作入力部8を用いて否定の回答用のボタンアイコン24をクリックしたときには、表示情報生成部13は、図4に示すような、顔識別結果が不正解であることをユーザに報知する顔識別結果不正解画面の表示情報を生成し、ディスプレイインターフェース6を通じてディスプレイ9の画面に表示させるようにする。
この顔識別結果不正解画面には、図4に示すように、取り込んだ顔画像Finの表示画像21と、当該取り込んだ顔画像Finが誰の顔画像であるか、氏名を入力するように促すメッセージ25を表示する。ユーザは、このメッセージ25中の氏名入力欄26に、表示画像21として表示されている個人の氏名を入力するようにする。
このユーザによる氏名の入力を受け付けると、表示情報生成部13は、CPU1の制御に従って、その入力された氏名の情報を、辞書データ更新処理部14に供給する。辞書データ更新処理部14は、後述するように、受け取った氏名からなる個人特定情報に対応して顔識別用辞書データベース10に記憶されている個人辞書データDiの新規生成または更新処理を行なう。
なお、氏名入力欄26に氏名の入力がなされずに、ユーザから顔識別の処理の終了が指示されたときには、表示情報生成部13からは、氏名の情報が伝達されず、CPU1の制御に従って辞書更新をしない旨の通知が辞書データ更新処理部14に通知される。したがって、辞書データ更新処理部14は、個人辞書データの生成または更新処理は行なわない。
また、表示情報生成部13は、顔識別処理部12から、顔識別結果として顔識別用辞書データベース10中に、取り込まれた顔画像と一致する個人辞書データDiがない旨の通知を受け取ったときには、図5に示すような、顔識別結果として「一致無し」をユーザに報知させるための顔識別結果一致無し画面の表示情報を生成し、ディスプレイインターフェース6を通じてディスプレイ9の画面に表示させるようにする。
この顔識別結果一致無し画面には、図5に示すように、取り込んだ顔画像Finの表示画像21と、当該取り込んだ顔画像Finが誰の顔画像であるか、氏名を入力するように促すメッセージ27を表示する。ユーザは、このメッセージ27中の氏名入力欄28に、表示画像21として表示されている個人の氏名を入力するようにする。
このユーザによる氏名の入力を受け付けると、表示情報生成部13は、その入力された氏名の情報を、辞書データ更新処理部14に供給する。辞書データ更新処理部14は、後述するように、受け取った氏名を個人特定情報とする個人辞書データDiの新規生成または更新処理を行なう。
なお、氏名入力欄28に氏名の入力がなされずに、ユーザから顔識別の処理の終了が指示されたときには、表示情報生成部13からは、氏名の情報が伝達されず、辞書更新をしない旨の通知が辞書データ更新処理部14に通知される。したがって、辞書データ更新処理部14は、辞書データの生成または更新は行なわない。
また、表示情報生成部13は、顔識別用画像処理部11から、顔検出や目検出、最終的には、特徴ベクトルの算出ができなかった旨の通知を受けたときには、図6に示すような、照合不能通知画面の表示情報を生成し、ディスプレイインターフェース6を通じてディスプレイ9の画面に表示させるようにする。
この照合不能通知画面には、図6に示すように、取り込まれた顔画像は、辞書データの更新には用いられない旨のメッセージ29が表示される。そして、CPU1の制御に従って、表示情報生成部13は、辞書データの更新をしない旨の通知を辞書データ更新処理部14に通知する。
辞書データ更新処理部14は、この実施形態では、顔識別処理部13での識別結果に基づいて個人特定情報が特定されたとき、当該個人特定情報に対応する個人辞書データDiの更新処理を実行する。
この場合、上述の説明から分かるように、「顔識別処理部13での識別結果に基づいて個人特定情報が特定されたとき」には、顔識別結果が正解であって個人特定情報が個人識別装置において特定される場合と、顔識別結果が不正解であって、ユーザにより入力された個人の氏名により個人特定情報が特定される場合と、顔識別の結果、一致するものがなくて新規の顔画像の取り込みの場合であってユーザにより入力された個人の氏名により個人特定情報が特定される場合と、を含むものである。
顔識別用画像処理部11で、顔検出や目検出、最終的には、特徴ベクトルの算出ができなかった旨の通知を受けたときには、辞書データ更新処理部14は、前記個人辞書データDiの更新処理は行なわない。また、取り込まれた顔画像についての個人特定情報の特定が最終的にできなかったときにも、辞書データ更新処理部14は、前記個人辞書データDiの更新処理は行なわない。
顔識別用辞書データベース10の個人辞書データDiとしては、従来は、各個人に対して、1個の顔識別用の辞書データが登録されていて、当該各個人に対する1個の顔識別用辞書データのそれぞれと、取り込まれた個人の識別要素から抽出された特徴データとを照合することで、取り込まれた識別要素を備える個人を識別するようにする。
これに対して、この実施形態の顔識別用辞書データベース10においては、「Aさん」、「Bさん」、「Cさん」・・・の各個人辞書データDiとしては、異なる複数個の期間についての複数個の期間辞書データが設けられる。
すなわち、この実施形態では、顔識別用辞書データベース10には、図8に示すように、一人当たりの個人辞書データDiとして、互いに異なる複数個の期間、例えば、期間1、期間2、・・・、期間N、についての複数個の期間辞書データTDi,1、TDi,2、・・・、TDi,Nが設けられ、これら複数個の期間辞書データが、各個人の個人特定情報である個人識別データIDiに対応付けられて格納されている。
ここで、個人特定情報(個人識別データIDi)としては、この実施形態では、個人名(氏名)が登録される。個人特定情報としては、個人名(氏名)に限らず、個人識別番号や記号、その他、個人情報を用いるようにしても良いし、それらの個人を特定するための情報の組み合わせを用いるようにしても良い。
また、この実施形態では、図8に示すように、個人辞書データDiの一部として、複数個の期間辞書データTDi,j(j=1,2,・・・,N)のそれぞれの期間を定める基準となる基準時刻データRtが格納される。この実施形態では、この基準時刻データとしては、対応する個人Piについて最初に取り込んだ顔画像の撮影時刻のデータが用いられる。なお、この場合、撮影時刻は、撮影がなされた年、月、日、時、分、秒からなるが、この実施形態で期間を定める場合には、日を最小単位とするので、期間を定めるための基準時刻としては年月日のみを用いるものとしている。
各個人の複数個の期間辞書データTDi,jのそれぞれは、それぞれの期間辞書データTDi,jが対応する期間内で撮影された当該対応する個人の顔画像の取り込みがあったときに、当該取り込まれた顔画像から抽出された特徴データが用いられて、新規に生成される。
そして、期間辞書データTDi,jが生成された後に、対応する期間内で撮影された当該対応する個人の顔画像の更なる取り込みがあったときには、当該更なる取り込みがなされた顔画像から抽出された特徴データが用いられて、当該期間辞書データTDi,jが更新される。
したがって、この例の場合、各個人の個人辞書データDiを構成する複数個の期間辞書データTDi,1、TDi,2、・・・、TDi,Nの数Nは、通常、各個人Pi毎に異なるものとなる。
そして、この実施形態の個人識別装置では、期間辞書データTDi,jが対応する期間の長さを、ユーザが設定可能な固定長とする場合(固定長モード)と、識別対象の個人の年齢に応じて可変長とする場合(可変長モード)の2つの期間モードのいずれかを、ユーザが選択設定可能とされている。
期間辞書データTDi,jが対応する期間の長さを一定にする固定長モードは、顔の変化具合が一定であることを前提とする場合、例えば、壮年期などのみを個人の識別対象期間とする場合などに有効である。
一方、個人の識別対象期間を長く考えた場合には、年齢によって期間を変化させる、という方法が有効であると考えられる。成長が早い幼いころの期間辞書データが対応する期間は短くし、成長とともに、期間辞書データが対応する期間を徐徐に長くする、という方法である。
また、この実施形態では、2個の期間辞書データの期間が隣接する場合においては、重複期間を設けるようにしている。このように重複期間を設けるのは、一人の個人についての複数個の期間辞書データにおいて、隣接する期間において急激な変化が生じないようにするためである。
例えば、ある期間辞書データTDaが2004年に、また、期間辞書データTDbが2005年に、それぞれ撮影されたある個人Pxの顔画像の特徴データを基に作成されたものとした場合に、2004年12月31日に撮影された顔画像の特徴データは、重複期間がなければ期間辞書データTDaのみを更新するためにのみ用いられる。しかし、2004年12月31日は、期間的には、2005年に近いために、期間辞書データTDbをも更新するために用いられるべきである。そこで、この実施形態では、例えば2004年12月の1ヶ月を、期間辞書データTDaの対応期間と、期間辞書データTDbの対応期間における重複期間とするようにする。
すると、2004年12月の1ヶ月分に撮影された顔画像の特徴データは、期間辞書データTDaと、期間辞書データTDbとの両方についての更新対象データとなり、辞書データの特徴データの急激な変化を回避することができる。
この第1の実施形態では、顔識別用辞書データベース10全体として、期間モードとして、固定長モードまたは可変長モードのいずれかが予め設定されるものである。この期間モードは、期間辞書データを新規に作成(新規登録)する場合に用いられる。
すなわち、個人の識別要素としての顔画像を新たに取り込んで、個人識別したときに、当該顔画像の時点(例えば当該顔画像の撮影時点)を含む期間の期間辞書データが見つからなかったときには、顔識別用辞書データベースに対して期間辞書データを新規に作成して登録(新規登録)するが、その際に、この期間モードを参照して、新規に作成する期間辞書データが対応する期間および重複期間を設定するようにする。
この実施形態では、ユーザは、固定長モードを選択するときには、固定の期間長を、選択設定することができるように構成されている。すなわち、この実施形態では、例えば図9(A)に示すような、固定辞書期間テーブルTBLxが用意されており、当該固定辞書期間テーブルTBLxから、ユーザが固定の期間長を選択設定することができるように構成されている。
この図9(A)の例の固定辞書期間テーブルTBLxにおいては、テーブル番号に対して、辞書期間の期間長(以下、辞書期間幅という)WDと、当該辞書期間幅WDに対応する重複期間の期間長(以下、重複期間幅という)Wovとが、1対1に対応して設定されている。この場合、辞書期間幅WDが長くなるにつれて、重複期間幅Wovも徐徐に長くなるように選定されている。
後述するように、この実施形態では、ユーザが固定長モードを選択したときには、この固定辞書期間テーブルTBLxがユーザに呈示され、ユーザが、当該テーブルTBLxのテーブル番号を選択指定するにより、対応する辞書時間幅WDおよび重複期間幅Wovが選択設定されることになる。
そして、基準時刻データRtと、新たに取り込まれた顔画像の撮影時刻とから、選択設定された辞書時間幅WDおよび重複期間幅Wovを考慮して、新たに生成しようとする期間辞書データについての期間の始点STと終点EDとが計算されて、期間が特定され、その特定された期間についての期間辞書データTDi,jが生成されて、顔識別用辞書データベース10に新規登録される。この新規登録の際に、後述するように、辞書時間幅WDおよび重複期間幅Wov、期間の始点STと終点EDなどが、期間辞書データTDi,jに対応して付随情報として記憶される。
また、この実施形態では、ユーザが、可変長モードを選択したときには、期間辞書データの新規登録の際に、新たに取り込まれた顔画像を有していたときの個人の年齢の入力が、ユーザに対して促され、例えば図9(B)に示すような可変辞書期間テーブルTBLvが用いられて、入力された年齢に応じた辞書期間幅WDおよび重複期間幅Wovが設定される。
そして、固定長モードの場合と同様にして、基準時刻データRtと、新たに取り込まれた顔画像の撮影時刻とから、選択設定された辞書時間幅WDおよび重複期間幅Wovを考慮して、新たに生成しようとする期間辞書データについての期間の始点STと終点EDとが計算されて、期間が特定され、その特定された期間についての期間辞書データTDi,jが生成されて、顔識別用辞書データベース10に新規登録される。そして、固定長モードの場合と同様にして、この新規登録の際に、後述するように、辞書時間幅WDおよび重複期間幅Wov、期間の始点STと終点EDなどが、期間辞書データTDi,jに対応して付随情報として記憶される。
図9(A)の固定辞書期間テーブルTBLxおよび図9(B)の可変辞書期間テーブルTBLvは、図8に示すように、辞書期間テーブルデータTBLとして、顔識別用辞書データベース10に格納されている。
図10は、この第1の実施形態における顔識別用辞書データベース10の格納データのフォーマットを説明するための図である。
この第1の実施形態では、図10に示すように、顔識別用辞書データベース10全体について、前述した辞書期間テーブルデータTBLと、期間モードの選択指定データおよび選択された期間モードが固定長モードのときにはテーブル番号を含み、また、可変長モードのときには、可変辞書期間テーブルへの参照ポインタを含むユーザ期間設定情報ファイルUSとが格納される。
そして、前述したように、各個人Piについての個人辞書データDiは、各期間1、期間2、・・・に対応する複数個の期間辞書データTDi,1,TDi,2,・・・からなる。そして、各期間辞書データTDi,1,TDi,2,・・・のそれぞれは、この実施形態では、それぞれ対応する期間で取り込まれた顔画像の特徴データの平均値からなる顔識別用辞書データFRDi,1、FRDi,2・・・のそれぞれと、付随情報ATRi,1、ATRi,2・・・のそれぞれとからなる。
付随情報ATRi,1、ATRi,2、・・・、ATRi,n、・・・のそれぞれは、図11に示すように、当該期間辞書データTDi,nが対応する期間よりも前の期間であって、重複期間を共有する期間辞書データを指し示す前辞書ポインタと、当該期間辞書データTDi,nが対応する期間よりも後の期間であって、重複期間を共有する期間辞書データを指し示す後辞書ポインタと、辞書期間パラメータと、期間内全画像数と、期間情報とを備える。
前辞書ポインタおよび後辞書ポインタは、対応する重複期間を共有する他の期間辞書データが存在するときには、当該前の期間辞書データや後の期間辞書データを指し示す識別データあるいはその記憶アドレス位置の情報とされ、また、対応する重複期間を共有する他の期間辞書データが存在していないときには、それを意味する「NULL」データとされる。
辞書期間パラメータは、当該期間辞書データTDi,nに対応する辞書期間幅へのポインタと、重複期間幅へのポインタとからなる。辞書期間幅へのポインタおよび重複期間幅へのポインタは、固定長モードの場合には、固定辞書期間テーブルTBLxからユーザが選択指定した辞書期間幅および重複期間幅のメモリアドレス(顔識別用辞書データベース上でのアドレス)であり、可変長モードの場合には、当該期間辞書データの期間が対応する年齢に応じて可変辞書期間テーブルTBLvから選択された辞書期間幅および重複期間幅のメモリアドレス(顔識別用辞書データベース上でのアドレス)である。
期間内全画像数は、当該期間辞書データTDi,nが対応する期間内において、過去に取り込まれた顔画像数であり、この実施形態では、当該期間の前半の顔画像数と、当該期間の後半の顔画像数とが別々に記憶されている。
期間情報は、当該期間辞書データTDi,nが対応する期間の先頭の時刻を示す始点データSTと、最後の時刻を示す終点データEDとからなる。なお、基準時刻についての説明と同様に、この実施形態では、期間は、最小単位を日に定めているので、始点データSTおよび終点データEDは、それぞれ年月日を表すデータとされている。
この図11の付随情報は、主として、個人識別のために新たに個人の顔画像が取り込まれたときの辞書検索の際に利用される。
以上のようにして期間辞書データTDi,nが生成される結果、固定長モードにおいては、図12(A)に示すようにして、また、可変長モードにおいては、図12(B)に示すようにして、時間の流れに従って、複数個の期間辞書データTDi,nが、一人の個人に対して生成されることになる。
固定長モードの場合を示す図12(A)は、「Aさん」についての複数個の期間辞書データをDA1,DA2,DA3,・・・として示したもので、固定長モードであるので、期間辞書データDA1,DA2,DA3,・・・のそれぞれの辞書期間の幅は、すべて、ユーザにより固定辞書期間テーブルTBLxから選択された所定の辞書期間WDxとされる。そして、期間辞書データDA1,DA2,DA3,・・・の間での重複期間の幅は、すべて、辞書期間WDxに対応して選定される重複期間幅Wovxとされる。
また、可変長モードの場合を示す図12(B)においては、「Aさん」についての、年齢に応じた期間1における複数個の期間辞書データをDA11,DA12,DA13,・・・として示し、年齢に応じた期間2における複数個の期間辞書データをDA21,DA22,DA23,・・・として示し、年齢に応じた期間3における複数個の期間辞書データをDA31,DA32,DA33,・・・として示したものである。例えば可変辞書期間テーブルTBLvにおいて、期間1は年齢0〜1歳の期間、期間2は1〜3歳の期間、期間3は20〜24歳の期間とされる。
したがって、各期間辞書データの辞書期間幅および重複期間幅は、期間1では、当該期間1の年齢に応じた辞書期間幅WD1、重複期間幅Wov1とされ、期間2では、当該期間2の年齢に応じた辞書期間幅WD2、重複期間幅Wov2とされ、期間3では、当該期間3の年齢に応じた辞書期間幅WD3、重複期間幅Wov3とされている。この例の場合、図9の可変辞書期間テーブルTBLvから明らかなように、WD1<WD2<WD3であり、また、Wov1<Wov2<Wov3となっている。
なお、図12では、時間の流れに従って複数個の期間辞書データが、期間の隙間なく生成されているが、実際には、個人の顔画像が識別のために取り込まれた期間に対応する期間辞書データが生成され、個人について、すべての期間辞書データが生成されるわけではない。
したがって、ある時点では、他の期間辞書データと重複期間を有することなく単独で存在している期間辞書データもあるし、ある年齢に対しては一つの期間辞書データしか存在しない状態もある。個人の顔画像が識別のために、異なる期間のものが多数取り込まれることにより、期間辞書データが増加してゆく。そして、他の期間辞書データと重複期間を共有する期間辞書データも増加してゆく。
この実施形態の個人識別処理においては、画像データ入力インターフェース7を通じて個人の顔画像データが識別のために取り込まれたときには、顔識別処理部12は、当該取り込まれた顔画像の撮影時刻を含む期間に対応する期間辞書データを、顔識別用辞書データベース10に蓄積されている複数個の個人辞書データから検索する。
そして、顔識別処理部12は、その検索の結果、取り込まれた顔画像の撮影時刻を含む期間に対応する期間辞書データが1個以上、検出できたか否か判別し、その判別結果を出力すると共に、1個以上検出したら、その対応する期間辞書データと、取り込まれた顔画像から抽出された特徴データとを比較参照し、取り込まれた顔画像の特徴データと一致していると判定することができる期間辞書データを探す。
表示情報生成部13は、顔識別処理部12からの出力から、取り込まれた顔画像の撮影時刻を含む期間に対応する期間辞書データが1個も検出できなかった旨の通知を受け取ったときには、図7に示すような、対応する期間辞書データが存在していないことをユーザに報知させるための期間辞書無し画面を表示させるようにする。
この期間辞書無し画面には、図7に示すように、取り込んだ顔画像Finの表示画像21と、当該取り込んだ顔画像Finが誰の顔画像であるか、氏名を入力するように促すメッセージ30を表示する。ユーザは、このメッセージ30中の氏名入力欄31に、表示画像21として表示されている個人の氏名を入力するようにする。
このユーザによる氏名の入力を受け付けると、表示情報生成部13は、その入力された氏名の情報を、辞書データ更新処理部14に供給する。辞書データ更新処理部14は、後述するように、受け取った氏名を個人特定情報とする個人辞書データDiの期間辞書データの新規生成処理を行なう。
なお、顔識別処理部12において、検索の結果、取り込まれた顔画像の撮影時刻を重複期間に含む2個の期間辞書データが見つかったときには、両方の期間辞書データを特徴データとの照合に用いても良いが、この実施形態では、照合時間の短縮のため、顔識別処理部12は、次のようにして、一方の期間辞書データのみを選択して照合に用いるようにする。
今、例えば、取り込まれた顔画像の撮影時刻を重複期間に含む2個の期間辞書データとして、図13に示すような2個の期間辞書データDnおよびDn+1とが検出されたとする。この図13の下方において、時間軸バー上に○印で示すものは、過去の顔画像の撮影時刻を示し、また、☆印で示すものは、今回、取り込まれた顔画像の撮影時刻である。この図13の例においては、辞書期間幅はWDであり、また、重複期間幅はWovである。
そして、この実施形態では、2個の期間辞書データDnおよびDn+1の辞書期間幅の前半における顔画像の画像数をそれぞれDn_a、Dn+1_a、また、後半における顔画像の画像数をそれぞれDn_b、Dn+1_bとしたとき、顔識別処理部12は、重複期間を共有する期間辞書データDnの辞書期間幅の後半における顔画像の画像数Dn_bと、期間辞書データDn+1の辞書期間幅の前半における顔画像の画像数Dn+1_aとを比較し、画像数が多い方の期間辞書データを、取り込まれた顔画像の特徴データとの照合に用いるようにする。
図13の例であれば、Dn_b=5であり、また、Dn+1_a=3であるので、顔識別処理部12は、期間辞書データDnを取り込まれた顔画像の特徴データとの照合に用いるように決定する。
そして、期間辞書データと取り込まれた顔画像の特徴データとの照合の結果、取り込まれた顔画像の特徴データと一致していると判定することができる期間辞書データが見つからなかったときには、CPU1は、顔識別処理部12からのその旨の通知に従って、表示情報生成部13を通じてディスプレイ9に、ユーザに、取り込まれた顔画像の個人の個人名などの個人特定情報の入力を行なわせるためのメッセージを表示する。CPU1は、そのメッセージに応じて入力される個人特定情報に対応して、当該顔画像の撮影時刻を含む期間の期間辞書データを新規に作成するように辞書データ更新処理部14に指示する。
この場合に、ユーザにより入力された個人特定情報が、顔識別用辞書データベース10には未だ存在していない新規の個人Piの個人特定情報であるときには、まず、辞書データ更新処理部14は、顔識別用辞書データベース10に、当該新規の個人Piについての個人辞書データDiのエリアを確保し、前記個人特定情報を個人識別データIDiとして格納すると共に、取り込まれた顔画像の撮影時刻を、期間辞書データの期間を定める基準時点とするため、基準時刻データRtとして格納するようにする。
次に、辞書データ更新処理部14は、顔識別用辞書データベース10に辞書期間テーブルデータTBLと共に記憶されている、ユーザにより予め設定されたユーザ期間設定情報ファイルUSの期間モードを参照し、辞書期間幅を定める。このとき、期間モードが可変長モードである場合には、辞書データ更新処理部14は、取り込まれた顔画像の撮影時刻の時点における個人Piの年齢の入力をユーザに促すメッセージを生成してディスプレイ9に表示させるように表示情報生成部13に指示を出す。そして、そのメッセージに応じた年齢の入力を受けて、辞書データ更新処理部14は、可変辞書期間テーブルTBLvから、辞書期間幅を定める。
辞書期間幅が定まったら、辞書データ更新処理部14は、基準時刻データRtとして記憶した基準時点を始点とする期間を定めて、取り込まれた顔画像の特徴データを用いて、期間辞書データを作成して、顔識別用辞書データベース10に新規登録する。
また、ユーザにより入力された個人特定情報が、顔識別用辞書データベース10に既に存在している個人Piの個人特定情報であるときには、顔識別用辞書データベース10には、既に、前記個人Piの個人辞書データDiは存在し、基準時刻データRtが記憶されている。したがって、この場合には、辞書データ更新処理部14は、前述と同様にして、ユーザにより予め設定されたユーザ期間設定情報ファイルUSの期間モードなどの設定情報を参照し、必要な年齢情報の入力を受けて辞書期間幅および重複期間幅を定め、前記基準時刻データRtを基にして、新たに作成する期間辞書データについての期間の始点および終点を決定し、取り込まれた顔画像の特徴データを用いて、期間辞書データを作成して、顔識別用辞書データベース10に新規登録する。
このとき、取り込まれた顔画像の撮影時刻が、求められた辞書期間における重複期間内であったときには、辞書データ更新処理部14は、期間辞書データとしては、当該重複期間を共有する2個の期間辞書データを生成して、当該2個の期間辞書データを新規登録するようにする。
次に、取り込まれた顔画像の特徴データと一致していると判定することができる期間辞書データが見つかったときには、顔識別処理部12は、表示情報生成部13に指示して、その期間辞書データが属する個人辞書データの個人特定情報、つまりこの例では個人名を、照合結果として表示出力させて、前述したようにユーザに確認させるようにする。その確認結果として、照合結果が正しいと判定されたときには、顔識別処理部12は、取り込まれた顔画像の特徴データと一致していると判定された期間辞書データを、新たに取り込んだ顔画像の特徴データを用いて更新するように、辞書データ更新処理部14に指示するようにする。
辞書データ更新処理部14は、この指示を受けて、取り込まれた顔画像の特徴データと一致していると判定された期間辞書データの更新処理を実行する。
そして、辞書データ更新処理部14は、さらに、取り込まれた顔画像の撮影時刻が更新された期間辞書データの重複期間内であって、しかも、当該重複期間を共有する他の期間辞書データが存在する場合、つまり、図13を用いて説明したような方法で、一方の期間辞書データが、取り込まれた顔画像の特徴データとの照合用として選定されたものである場合には、残りの他方の期間辞書データも、撮影時刻がその重複期間内である取り込まれた顔画像の特徴データを用いて更新するようにする。
この第1の実施形態では、顔識別用辞書データFRDi,jの更新は、当該期間辞書データTDi,jが対応する期間について取り込まれた顔画像の特徴データの単純平均とされている。
[第1の実施形態の個人識別装置における処理動作]
次に、第1の実施形態の個人識別装置における処理動作を更に説明する。
[辞書期間パラメータの設定]
上述したように、この実施形態の個人識別装置においては、事前に、ユーザによる期間モードなどの辞書期間パラメータの設定を受けるようにする。図14は、この辞書期間パラメータ設定処理の際の動作を説明するためのフローチャートである。この図14のフローチャートの各ステップの処理は、CPU1が、ROM3のプログラムにしたがって、RAM4をワークエリアとして用いて実行するものである。
CPU1は、ユーザの辞書期間パラメータの設定スタート指示を受けて、図14のフローチャートを開始し、まず、表示情報生成部13、ディスプレイインターフェース6を制御して、辞書期間を固定長の固定長モードとするか、あるいは可変長の可変長モードとするかの期間モードの選択設定を促すメッセージを含む期間モード選択画面を、ディスプレイ9に表示させるようにする(ステップS101)。
そして、CPU1は、操作入力部8からの、ディスプレイ9の表示画面に表示された期間モード選択画面を通じたユーザの期間モード選択入力を受け付け(ステップS102)、期間モードとして固定長モードと可変長モードとのいずれが選択されたか判別する(ステップS103)。
このステップS103で、固定長モードが選択されたと判別したときには、CPU1は、顔識別用辞書データベース10の辞書期間テーブルデータTBLから固定辞書期間テーブルTBLxを読み出し、表示情報生成部13およびディスプレイインターフェース6を制御して、固定長の辞書期間はWDと、重複期間幅Wovとを、固定辞書期間テーブルのテーブル番号により選択するようにすることを促すメッセージを含む期間設定画面を、ディスプレイ9に表示させるようにする(ステップS104)。
そして、CPU1は、操作入力部8からの、ディスプレイ9の表示画面に表示された期間設定画面を通じたテーブル番号の選択入力を受け付け(ステップS105)、期間モードが固定長モードであることと、選択されたテーブル番号とを、ユーザ期間設定情報ファイルUSに保存する(ステップS106)。そして、この辞書期間パラメータ設定の処理ルーチンを終了する。
また、ステップS103で、可変長モードが選択されたと判別したときには、CPU1は、期間モードが可変長モードであることを、ユーザ期間設定情報ファイルUSに保存する(ステップS107)。そして、この辞書期間パラメータ設定の処理ルーチンを終了する。
なお、この実施形態では、固定長モードにおける辞書期間幅と重複期間幅とは、テーブル番号により対として設定するようにしたが、固定長モードにおいて、辞書期間幅と、重複期間幅とを、それぞれ別々に設定することができるようにしても良い。
また、この実施形態では、可変長モードにおいては、可変辞書期間テーブルTBLvは一つしたので、テーブル選択は不要としたが、各年齢における辞書期間幅および重複期間幅が異なる複数個の可変辞書期間テーブルを辞書期間テーブルデータTBLに用意しておき、その複数個の可変辞書期間テーブルの中から、ユーザが選択設定することができるように構成することもできる。
また、この実施形態では、期間モードは、顔識別用辞書データベース10の全体について設定するようにしたが、各個人Piの個人辞書データDiの最初の作成時に、上述の図14のフローチャートに示したユーザ設定をさせるように構成して、各個人Pi毎に期間モードを設定することができるようにしても良い。
その場合における顔識別用辞書データベース10の格納データのフォーマットは、図10に代わって、図15に示すようなものとなり、ユーザ期間設定情報ファイルUSが、個人識別データIDに対応して、個人辞書データDi毎に設けられるものとなる。
[顔識別処理および辞書データ生成更新処理]
次に、上述の構成の個人識別装置における顔識別処理動作および辞書データ生成更新処理動作について説明する。図16〜図22は、顔識別処理動作およびこれに関連する期間辞書データの検索処理動作、期間辞書データの新規登録並びに更新処理動作を説明するためのフローチャートである。この図16〜図22を用いて説明する処理動作は、CPU1の制御の下に、画像データ入力インターフェース部7、顔識別用画像処理部11、顔識別処理部12、表示情報生成部13、辞書データ更新処理部14の各部が実行するものである。
なお、CPU1が、ROM3に格納されたソフトウエアプログラムに基づいてRAM4をワークエリアとして用いて、上記各部の処理をソフトウエア処理として実行するように構成して上記各部を省略しても良いことは、前述した通りである。
まず、CPU1は、画像データ入力インターフェース7を通じて、顔画像を含む画像データおよびそれに付随するExif(Exchange image file format)情報を含む情報を取り込み、顔識別用画像処理部11に転送する(ステップS111)。なお、顔画像の画像データに付随するExif情報が存在しない場合には、ユーザに撮影時刻の入力を促して、撮影時刻を入力させることで、撮影時刻の情報を取得するようにするのは、前述した通りである。
顔識別用画像処理部11は、CPU1からの制御開始指示に基づき、受け取った画像データから、前述したように、顔画像、目検出、検出した目の位置に基づく顔回転処理を行ない、特徴点プロットしたデータから特徴ベクトルを生成するようにする(ステップS112)。このとき、画像データに付随するExif情報から撮影時刻の情報を抽出して保持したり、ユーザにより入力された撮影時刻を保持したりするようにする。
そして、顔識別用画像処理部11は、特徴ベクトルの生成に成功したときには、その旨の情報と生成した特徴ベクトルを出力し、顔画像の画像データサイズが小さすぎたりして特徴ベクトルの生成に失敗したときには、特徴ベクトルの生成を失敗した旨の情報を出力する。
CPU1は、顔識別用画像処理部11からの情報により、取り込まれた顔画像の特徴ベクトルの生成に成功したか否かを判別する(ステップS113)。そして、顔識別用画像処理部11から顔画像の特徴ベクトルの生成に失敗した旨の情報が出力されていて、特徴ベクトルの生成に失敗したと判別したときには、その情報を表示情報生成部13に転送する。
表示情報生成部13は、この顔画像の特徴ベクトルの生成に失敗した旨の情報を受け取ると、図6に示した照合不能通知画面の表示情報を生成し、出力する。CPU1は、この照合不能通知画面の表示情報をディスプレイインターフェース6を通じてディスプレイ9に送って、図6に示したように、取り込まれた顔画像を用いては照合が不能であり、かつ、辞書に利用しない旨のメッセージ29を表示する(ステップS114)。
また、CPU1は、ステップS113で、顔識別用画像処理部11から顔画像の特徴ベクトルの生成に成功した旨の情報と、生成された特徴ベクトルとが出力されていると判別したときには、当該成功した旨の情報と、生成された特徴ベクトルと、撮影時刻の情報とを、顔識別処理部12に転送させるようにする。
顔識別処理部12では、まず、受け取った撮影時刻を含む期間に対応する期間辞書データを、顔識別用辞書データベース10から検索し、検索の結果、1以上の期間辞書データが得られたかどうか判断し、その判断結果を出力すると共に、1以上の期間辞書データが得られたときには、その期間辞書データを照合用期間辞書データとして照合用メモリにロードしてセットするようにする(図17のステップS121)。
CPU1は、顔識別処理部12からの出力を受けて、顔識別処理部12での検索の結果、照合用の期間辞書データが1個以上見つかったか否か判別し(ステップS122)、照合用の期間辞書データが1個も見つからなかったと判別したときには、その旨の通知を表示情報生成部13に送る。表示情報生成部13は、この通知を受けて、図7に示したような、期間辞書無し画面の表示情報を生成し、出力する。CPU1は、その表示情報をディスプレイインターフェース6を通じてディスプレイ9に送り、取り込んだ顔画像が誰の顔画像であるか、氏名を入力するようにユーザに促すメッセージ30を表示する(ステップS123)。
そして、CPU1は、このメッセージ30中の氏名入力欄31へのユーザによる氏名の入力を待ち(図18のステップS135)、氏名の入力を受け付けたと判別したときには、顔識別用辞書データベース10に、当該入力された氏名の個人辞書データDiがあるか否か判別する(ステップS136)。そして、入力された氏名の個人辞書データDiがあると判別したときには、図17のステップS128に飛んで、顔識別用辞書データベース10の更新ルーチンを実行するようにする。
また、ステップS136で、入力された氏名の個人辞書データDiが、顔識別用辞書データベース10に存在しないと判別したときには、CPU1は、入力された氏名を個人特定情報として、これに対応させた個人辞書データDiを、顔識別用辞書データベース10に保存して新規登録する(図18のステップS133)。そして、この処理ルーチンを終了する。
この顔識別用辞書データベース10への個人辞書データDiの新規登録については後で詳述する。なお、この顔識別用辞書データベース10への個人辞書データDiの新規登録は、後述する顔識別用辞書データベース10の更新処理の一部の処理として実行するようにすることもできる。
また、ステップS122で、顔識別処理部12からの出力に基づき、照合用の期間辞書データが1個以上見つかったと判別したときには、CPU1は、顔識別処理部12に照合開始指示を送る。これを受けた顔識別処理部12では、顔識別用画像処理部11から受け取った取り込まれた顔画像の特徴ベクトルと、顔識別用辞書データベース10から検索して照合用メモリにロードした期間辞書データTDi,nとを照合し、一致していると判断できる期間辞書データTDi,nを探す。そして、顔識別処理部12は、一致していると判断できる期間辞書データTDi,nを検出できたときには、その旨の情報と、当該一致したと判断した期間辞書データTDi,nに対応する個人特定情報、この例では、個人の氏名の情報を出力し、一致していると判断できる期間辞書データTDi,nを検出できなかったときには、その旨の情報を出力する(ステップS124)。
CPU1は、顔識別処理部12からの出力を受けて、一致していると判断できる顔識別用辞書データFRDiが検出されたか否か判別し(ステップS125)、一致していると判断できる期間辞書データTDi,nが検出されたと判別したときには、顔識別処理部12から受けた、一致しているとされた期間辞書データTDi,nに対応する個人特定情報としての個人の氏名の情報を、顔識別ができた旨の情報と共に、表示情報生成部13に転送する。
表示情報生成部13は、顔識別ができた旨の情報と、個人の氏名の情報を受け取ると、図3に示したような、顔識別結果をユーザに確認させるための顔識別結果確認画面の表示情報を生成し、出力する。CPU1は、この顔識別結果確画面の表示情報を、ディスプレイインターフェース6を通じてディスプレイ9に送って、図3に示したような、顔識別結果が正しいかどうかをユーザに問い合わせるメッセージ22を表示する(ステップS126)。
そして、CPU1は、ユーザによる図3の画面を通じての確認操作入力を待ち、当該確認操作入力が顔識別の照合結果が正解であるか否か判別する(ステップS127)。そして、CPU1は、ユーザによる確認操作入力が、照合結果は「正解」であることを示すものであると判別したときには、顔識別用辞書データベース10の更新ルーチンを実行するようにする(ステップS128)。そして、この処理ルーチンを終了する。ステップS128における顔識別用辞書データベース10の更新ルーチンの詳細については、後述する。
また、ステップS127で、ユーザによる確認操作入力が、照合結果は「不正解」であることを示すものであると判別したときには、そのことを示す情報を表示情報生成部13に送る。すると、表示情報生成部13は、図4に示したような顔識別結果不正解画面の表示情報を生成し、出力するので、CPU1は、その表示情報をディスプレイインターフェース6を通じてディスプレイ9に送り、図4に示した、取り込んだ顔画像が誰の顔画像であるか、氏名を入力するようにユーザに促すメッセージ25を表示する(図18のステップS134)。
そして、CPU1は、このメッセージ25中の氏名入力欄26へのユーザによる氏名の入力を待ち(ステップS135)、氏名の入力を受け付けたと判別したときには、顔識別用辞書データベース10に、当該入力された氏名の個人辞書データDiがあるか否か判別する(ステップS136)。そして、入力された氏名の個人辞書データDiがあると判別したときには、図17のステップS128に飛んで、顔識別用辞書データベース10の更新ルーチンを実行するようにする。
また、ステップS136で、入力された氏名の個人辞書データDiが、顔識別用辞書データベース10に存在しないと判別したときには、CPU1は、入力された氏名を個人特定情報として、これに対応させた個人辞書データDiを、顔識別用辞書データベース10に保存して新規登録する(ステップS133)。そして、この処理ルーチンを終了する。
次に、図17のステップS125で、取り込んだ顔画像の特徴ベクトルと一致していると判断できる期間辞書データTDi,nが検出されなかったと判別したときには、CPU1は、その旨の情報を表示情報生成部13に送る。表示情報生成部13は、一致していると判断できる期間辞書データTDi,nが検出されなかった旨の情報を受け取ると、図5に示したような、顔識別結果として「一致無し」をユーザに報知させるための顔識別結果一致無し画面の表示情報を生成し、出力する。CPU1は、その表示情報を、ディスプレイインターフェース6を通じてディスプレイ9に送り、図6に示した、取り込んだ顔画像が誰の顔画像であるか、氏名を入力するようにユーザに促すメッセージ27を表示する(図18のステップS131)。
そして、CPU1は、このメッセージ27中の氏名入力欄28へのユーザによる氏名の入力を待ち(ステップS132)、氏名の入力を受け付けたと判別したときには、入力された氏名を個人特定情報として、これに対応させた個人辞書データDiを、顔識別用辞書データベース10に保存して新規登録する(ステップS133)。そして、この処理ルーチンを終了する。
[期間辞書データの検索処理]
図17におけるステップS121での、顔識別処理部12で実行される期間辞書データの検索処理ルーチンの一例のフローチャートを、図19に示す。
顔識別処理部12は、まず、顔識別用辞書データベース10から、最初の個人辞書データDiの最初の期間辞書データを指定して取り出す(ステップS141)。次に、顔識別処理部12は、顔識別用辞書データベース10からすべての期間辞書データを取り出したか否か判別し(ステップS142)、すべてを取り出したので今回取り出すべき期間辞書データはないと判別したときには、この処理ルーチンを終了する。
ステップS142で、未だ、顔識別用辞書データベース10からすべての期間辞書データは取り出してはおらず、期間辞書データを顔識別用辞書データベース10から取り出したと判別したときには、取り出した期間辞書データが対応する期間を、対応する付随情報から検出して、当該検出した期間と、個人識別を行なうべく今回取り込んだ顔画像の撮影時刻との対応を調べる(ステップS143)。
そして、顔識別処理部12は、取り込んだ顔画像の撮影時刻が、期間辞書データが対応する期間内の時刻か否かを判別する(ステップS144)。このステップS144で、取り込んだ顔画像の撮影時刻が、期間辞書データが対応する期間内ではないと判別したときには、顔識別処理部12は、顔識別用辞書データベース10の、参照が終了していない次の期間辞書データを指定し(ステップS148)、ステップS142に戻り、このステップS142以降の処理を繰り返す。
また、ステップS144で、取り込んだ顔画像の撮影時刻が、期間辞書データが対応する期間内であると判別したときには、顔識別処理部12は、取り込んだ顔画像の撮影時刻は、期間辞書データが対応する期間の重複期間内であるか否か判別する(ステップS145)。
ステップS145で、撮影時刻が重複期間内ではないと判別したときには、顔識別処理部12は、当該期間辞書データを照合用としてセットし(ステップS146)、照合用メモリに格納する(ステップS147)。そして、顔識別処理部12は、顔識別用辞書データベース10の、参照が終了していない次の期間辞書データを指定し(ステップS148)、その後、ステップS142に戻り、このステップS142以降の処理を繰り返す。
また、ステップS145で、撮影時刻が重複期間内であると判別したときには、顔識別処理部12は、重複期間を共有する期間辞書データが既に作成されて存在しているか否か判別し(図20のステップS151)、未だ作成されていないと判別したときには、当該期間辞書データを照合用としてセットし(ステップS146)、照合用メモリに格納する(ステップS147)。そして、顔識別処理部12は、顔識別用辞書データベース10の、参照が終了していない次の期間辞書データを指定し(ステップS148)、その後、ステップS142に戻り、このステップS142以降の処理を繰り返す。
また、ステップS151で、重複期間を共有する期間辞書データが既に作成されて存在していると判別したときには、顔識別処理部12は、図13を用いて説明したように、2個の期間辞書データDnとDn+1とで、その重複期間を挟む、それぞれの1/2辞書期間幅の期間での画像数Dn_bと、画像数Dn+1_aとを比較する(ステップS152)。
顔識別処理部12は、ステップS152での比較の結果、Dn_b>Dn+1_aであると判別したときには、期間辞書データDnを照合用にセットし(ステップS154)、Dn_b≦Dn+1_aであると判別したときには、期間辞書データDn+1を照合用にセットする(ステップS155)。そして、ステップS154およびステップS155の後は、顔識別処理部12は、照合用にセットした期間辞書データのみではなく、重複する2個の期間辞書データを照合用メモリに格納しておく(ステップS156)。これは、後で、期間辞書データを更新する際には、照合用にセットした期間辞書データのみではなく、重複する2個の期間辞書データを更新する必要があるためである。
[新規登録]
図18のステップS133で、辞書データ更新処理部14により実行される新規登録の処理ルーチンの一例のフローチャートを図21に示す。
辞書データ更新処理部14は、まず、ユーザにより入力された個人特定情報が、顔識別用辞書データベース10には未だ存在していない新規の個人Piの個人特定情報であるか否か判別し(ステップS161)、新規の個人Piの個人特定情報であると判別したときには、顔識別用辞書データベース10に、当該新規の個人Piについての個人辞書データDiのエリアを確保し(ステップS162)、前記個人特定情報を個人識別データIDiとして格納すると共に、取り込まれた顔画像の撮影時刻を、期間辞書データの期間を定める基準時点とするため、基準時刻データRtとして格納するようにする(ステップS163)。
次に、辞書データ更新処理部14は、ユーザ期間設定情報ファイルUSを読み込み(ステップS164)、期間モードは固定長モードか、可変長モードかを判別する(ステップS165)。
そして、ステップS165で期間モードは固定長モードであると判別したときには、辞書データ更新処理部14は、テーブル番号を参照して辞書期間幅および重複期間幅を決定し、これら辞書期間幅および重複期間幅と基準時刻データRtとを用いて、新規に作成する期間辞書データTDi,1の辞書期間を設定する(ステップS166)。
続いて、辞書データ更新処理部14は、取り込んだ顔画像から抽出した特徴データを用いて期間辞書データTDi,1を作成し、個人辞書データDiの顔識別用辞書データFRDi,1として格納する。そして、その付随情報ATRi,1をも作成し、格納する(ステップS167)。そして、この処理ルーチンを終了する。
また、ステップS165で、期間モードは可変長モードであると判別したときには、辞書データ更新処理部14は、表示情報生成部13に、取り込まれた顔画像の撮影時刻の時点における個人Piの年齢の入力をユーザに促すメッセージを生成してディスプレイ9に表示させるように制御する(ステップS168)。
そして、そのメッセージに応じた年齢の入力を受けて(ステップS169)、辞書データ更新処理部14は、可変辞書期間テーブルTBLvから、辞書期間幅および重複期間幅を定める。そして、基準時刻Rtと、定めた辞書期間幅および重複期間幅とを用いて、新規に作成する期間辞書データTDi,1の辞書期間を設定する(ステップS170)。
続いて、辞書データ更新処理部14は、取り込んだ顔画像から抽出した特徴データを用いて期間辞書データTDi,1を作成し、個人辞書データDiの顔識別用辞書データFRDi,1として格納する。そして、その付随情報ATRi,1をも作成し、格納する(ステップS167)。そして、この処理ルーチンを終了する。
[更新登録]
図17のステップS128で、辞書データ更新処理部14により実行される新規登録の処理ルーチンの一例のフローチャートを図22に示す。
辞書データ更新処理部14は、まず、更新すべき期間辞書データTDi,nの付随情報の期間情報および辞書期間パラメータを参照して、当該更新すべき期間辞書データTDi,nの辞書期間および重複期間を検知する(ステップS181)。
次に、辞書データ更新処理部14は、取り込まれた顔画像の撮影時刻は、検知された重複期間内であるか否か判別し(ステップS182)、取り込まれた顔画像の撮影時刻は、重複期間内ではないと判別したときには、更新対象の一つの既存の期間辞書データを更新する。すなわち、取り込まれた顔画像の特徴データを、その前までの辞書データに加えて平均することで、辞書データの更新を行なう(ステップS183)。そして、この処理ルーチンを終了する。
また、ステップS182で、取り込まれた顔画像の撮影時刻は、検知された重複期間内であると判別したときには、辞書データ更新処理部14は、重複期間を共有する2個の期間辞書データは既に存在しているか否か判別する(ステップS184)。この判別は、前述したように、この実施形態では、照合用メモリには、重複期間を共有する既存の期間辞書データが記憶されているので、照合用メモリを参照して、そのような重複期間を共有する期間辞書データが存在しているかどうかを探索することでできる。
ステップS184で、重複期間を共有する期間辞書データは、未だ存在していないと判別したときには、辞書データ更新処理部14は、重複期間を共有する既存の期間辞書データは前述のようにして更新処理すると共に、重複期間を共有する他の期間辞書データを、前述の新規登録と同様にして、新規に作成して新規登録する(ステップS185)。そして、この処理ルーチンを終了する。
また、ステップS184で、重複期間を共有する2個の期間辞書データは既に存在していると判別したときには、辞書データ更新処理部14は、重複期間を共有する既存の2個の期間辞書データを前述のようにして更新処理する(ステップS186)。そして、この処理ルーチンを終了する。
[変形例]
上述の実施形態の説明では、期間モードは、ユーザが設定するように説明したが、個人識別装置を工場出荷する前に、メーカ側で設定しておくようにしてもよい。
また、期間辞書データが対応する辞書期間を定める基準は、上述の説明では、各個人Piについて、最初に取り込んだ顔画像の撮影時刻としたが、これに限られるものではない。例えば、各個人Piについての誕生日を入力してもらい、当該誕生日を基準に、辞書期間を求めるようにしても良い。また、特定の年月日を基準時として、ユーザに入力してもらうようにしても良い。
なお、以上説明した第1の実施形態は、この発明を顔識別処理装置に適用した場合であるが、顔識別に限らず、識別要素として声を用いる場合にも適用することができることは言うまでもない。
[第2の実施形態]
上述の第1の実施形態では、期間辞書データは、対応する期間で撮影された顔画像データから抽出された特徴データを単純平均したものとした。しかし、各期間辞書データが対応する期間内においても、個人の顔や声は、識別要素時間の経過により変化するものであるので、その時間の経過による個人の識別要素の変化を考慮して辞書データを更新することにより、より個人識別性能を向上させることができると考えられる。
この第2の実施形態では、このような観点から、顔画像から抽出した特徴データに、撮影時刻に応じて重み付けし、その重み付けした特徴データを期間辞書データの更新するようにする。
図23は、この第2の実施形態の顔画像による個人識別装置の構成例を示すブロック図である。この図23で、図1に示した第1の実施形態の個人識別装置の構成例のブロック図と同一部分は、同一番号を付して、その詳細な説明は省略する。この第2の実施形態においても、各ブロックで示したものの一部は、ソフトウエア構成とすることもできるものである。
この第2の実施形態では、辞書データ更新処理部14は、重み係数算出部15と、辞書データ生成・更新部16とを備えている。その他は、ハードウエア構成としては、第1の実施形態と同様に構成される。
この第2の実施形態では、顔識別用辞書データベース10のデータフォーマットは、図24に示すように構成される。すなわち、各期間辞書データDi,nとしては、顔識別用辞書データFRDi,nと、付随情報ATRi,nとに加えて、この第2の実施形態では、辞書データ生成用情報配列ARi,nを備えるようにされる。
辞書データ生成用情報配列ARi,nは、図25に示すように、1個以上のk個(k=1,2,・・・,K)の辞書データ生成用情報DPIi,n,kからなる。
辞書データ生成用情報DPIi,n,kは、顔識別対象である一人の個人Piの期間辞書データTDi,nが対応する期間において、異なる時点で取り込まれたk個(k=1〜K、最大K個)の顔画像についての情報からなるもので、この実施形態では、図25に示すように、時刻の情報Ti,n,kと、取り込まれた顔画像の特徴データVi,n,kと、取り込まれた顔画像の特徴データVi,n,kを用いて顔識別用辞書データを更新するために用いる、特徴データVi,n,kについての重み係数Wi,n,kとが、この辞書データ生成用情報DPIi,n,kに含まれる。重み係数Wi,n,kについては、後で詳述する。
この第2の実施形態では、一つの期間辞書データTDin当たりとして、最大K個、例えば40個の辞書データ生成用情報が、蓄積可能とされている。これは、辞書データベース10として使用する記憶容量を考慮したものである。そして、この実施形態では、辞書データ生成用情報DPIi,n,kとして蓄積されるデータは、常に最新のN個のデータを残すようにして、蓄積する辞書データ生成用情報DPIi,n,kを更新するようにする。
この第2の実施形態では、各期間辞書データTDi,nの顔識別用辞書データFRDi,nは、後述するように、当該期間辞書データTDi,nに対応付けられて顔識別用辞書データベース10に格納されている辞書データ生成用情報DPIi,n,kのそれぞれの特徴データ(特徴ベクトル)を、その特徴データについての重み係数によりそれぞれ重み付けし、その重み付けしたものを用いて、後述のようにして生成する。
また、この第2の実施形態では、後述するように、重み係数Wi,n,kの算出方法(設定方法)として、複数通りの算出方法が用意されており、ユーザが当該用意されている複数の重み係数Wi,n,kの算出方法の中の一つを選択することができるようにされている。そして、その選択された重み係数の算出方法を特定するための情報として、図24に示すように、重み係数パラメータ設定情報STが、顔識別用辞書データベース10に記憶されている。
なお、重み係数の算出方法は、識別する個人の個人辞書データDi毎に選択設定するようにしても良いが、この実施形態では、顔識別用辞書データベース10全体として、一つの重み係数算出方法を選択設定するようにしている。
辞書データ更新処理部14は、顔識別辞書データベース10において、特定された個人特定情報に対応する個人辞書データDiの期間辞書データTDi,nの更新の実行に際しては、この実施形態では、まず、前記期間辞書データTDi,nに含まれる辞書データ生成用情報DPIi,n,kの数を参照し、その数が最大値であるK個よりも少ないときには、新たに取得した顔画像の特徴ベクトルVinと、その撮像時刻情報とを、最新の辞書データ生成用情報として、期間辞書データTDi,nに追加記憶する。
また、辞書データ更新処理部14は、顔識別辞書データベース10において、更新対象の個人特定情報に対応する期間辞書データTDi,nに含まれる辞書データ生成用情報DPIi,n,kの数が、最大であるK個であるときには、そのときに辞書データ生成用情報DPIi,n,k中で最古である辞書データ生成用情報DPIi,1を廃棄し、かつ、各辞書データ生成用情報DPIi,n,kのそれぞれの時間順位を順次下げて、
DPIi,n,k→DPIi,n,k−1
とする。
そして、新たに取り込んだ顔画像の特徴ベクトルVinと、撮像時刻の情報とを、最新の辞書データ生成用情報DPIi,n,Kの情報として記憶して、期間辞書データTDi,nを更新する。この時点では、重み係数は算出されていないので、記憶されていた重み係数は、元のままである。
重み係数は、上述のように更新された期間辞書データTDi,nに含まれる撮像時刻の情報が用いられて、少なくとも最新の辞書データ生成用情報DPIi,n,Kについては算出されて記憶される。その他の元々期間辞書データTDi,nとして記憶されていた辞書データ生成用情報についての重み係数は、後述するように、選択される重み係数算出方法に応じて更新される場合と、更新されずにそのまま用いられる場合とがある。
辞書データ更新処理部14は、重み係数算出部15に、重み係数パラメータ設定情報STを渡して、後述するように、重み係数算出部15で実行する重み係数算出の方法を指示すると共に、重み係数算出部15に、最新の辞書データ生成用情報DPIi,n,Kの撮像時刻情報Ti,n,Kおよび必要な過去の辞書データ生成用情報DPIi,n,Kを渡して、重み係数の算出を指示する。
重み係数算出部15は、この第2の実施形態では、顔識別処理部13での識別結果に基づいて個人特定情報が特定されたとき、当該個人特定情報に対応する期間辞書データTDi,nの顔識別用辞書データFRDi,nを更新する際に使用する、特徴ベクトルについての重み係数を、最新の撮像時刻情報および過去の撮像時刻情報を用いて算出する。
前述したように、この第2の実施形態の個人識別装置は、この重み係数の算出方法(設定方法)として複数通り、この例では、4通りの算出方法を用意しており、ユーザの選択により、当該4通りの重み係数算出方法のどの方法を用いるかが選択設定され、その選択設定情報が顔識別用辞書データベース10に格納される。
この実施形態においては、ユーザが操作入力部8を通じて、例えば設定メニューから、「重み係数の設定方法の選択」を指示すると、図26に示すような「重み係数の設定方法選択画面」がディスプレイ9に表示される。
図26に示すように、この実施形態では、重み係数算出方法(設定方法)としては、
(1)撮像順に線形的に重み係数を設定、
(2)撮像順に非線形的に重み係数を設定、
(3)撮像間隔に応じて重み係数を設定(区間)、
(4)撮像間隔に応じて重み係数を設定(前画像との時間差)、
の4通りが、選択設定できる重み係数算出方法候補の一覧として表示される。各算出方法の詳細については後述する。
そして、図26に示すように、この例では、各重み係数算出方法候補の先頭には、ユーザが選択設定するためのチェックマーク記入欄30が設けられている。ユーザは、この図26の一覧表示画面において、自分が希望する重み係数算出方法候補の先頭に設けられるチェック欄32を、マウスなどのポインティングデバイスでクリックすることで、当該重み係数算出方法候補を使用する重み係数算出方法として、選択設定することができる。図26の例では、「(1)撮像順に線形的に重み係数を設定」が選択されている状態を示している。
なお、この場合に、重み係数算出部15は、選択される重み係数の算出方法によっては、新たに取り込んだ顔画像の特徴ベクトルについての重み係数のみを算出する場合と、新たに取り込んだ顔画像の特徴ベクトルについての重み係数のみならず、個人特定情報に対応して記憶されている過去に取り込んだ顔画像の特徴ベクトルについての重み係数をも再計算する場合とがある。
次に、この実施形態で用いる4種の重み係数算出方法のそれぞれについて、さらに説明する。
[第1の例;撮像順に線形的に重み係数を設定(線形算出方法)]
図27は、撮像順に線形的に重み係数を算出(設定)する方法を説明するための図である。この重み係数算出方法を、以下、線形算出方法と称することとする。
この線形算出方法が採用される場合には、新たに取り込まれた顔画像による識別に基づいて特定された個人特定情報に対応して記憶されている個人辞書データDiの特徴データについての重み係数は、最新の辞書データ生成用情報DPIi,n,New(N個の辞書データ生成用情報が記憶されているときには、DPIi,n,New=DPIi,n,K)の重み係数Wi,Newのみではなく、過去に取り込まれて保存されている辞書データ生成用情報DPIi,n,k(k=1,2,・・・)の重み係数Wi,n,kのすべてが、再計算されて更新される。
このため、この線形算出方法が採用される場合には、辞書データ更新処理部14は、更新されたすべての辞書データ生成用情報の撮像時刻の情報を、重み係数算出部15に渡す。
そして、この線形算出方法においては、重み係数算出部15においては、この実施形態では、まず、更新された期間辞書データTDi,nのうちの最古の辞書データ生成用情報の撮像時刻Ti,n,1を基準にするために、更新された期間辞書データTDi,nのそれぞれの辞書データ生成用情報の撮像時刻Ti,n,k(k=1,2,・・・,New)と、最古の撮像時刻Ti,n,1との時間差ΔTi(1_k)を算出する。
そして、重み係数算出部15は、重み係数Wi,n,kを、図10に示すように、算出された時間差ΔTi(1_n)が大きいほど、線形的に大きくなるように、次の(式1)により算出する。
すなわち、重み係数算出部15は、
Wi,n,k=p×ΔTi(1_k)+q ・・・(式1)
により、各特徴ベクトルVi,n,kについての重み係数Wi,n,kを算出する。
なお、図27において、時間差ΔT(1_1)=0であり、このときの重み係数Wi,n,1は、予め定められた重み係数の最小値qになる。また、予め定められた重み係数の最大値をrとしたとき、最新の撮像時刻についての時間差ΔTi(1_New)のときの重み係数Wi,n,Newは、Wi,n,New=rとされる。
また、図27の一次関数の直線の傾きpは、
p=(r−q)/(ΔTi(1_New)−ΔTi(1_1))
となり、更新された複数個の辞書データ生成用情報DPIi,n,kのうちの、最新の撮像時刻と最古の撮像時刻との差(Ti,n,New−Ti,n,1)に応じたものとなり、一定ではなく、新たなデータが取り込まれる毎に変わるものとなる。
ここで、顔識別用辞書データベース10において、個人特定情報に対応して記憶される各期間辞書データTDi,nについてのK個の辞書データ生成用情報DPIi,n,1〜DPIi,n,Kが記憶されている場合には、時間差ΔTi(1_New)は、
時間差ΔTi(1_New)=ΔTi(1_K)=Ti,n,K−Ti,n,1
である。しかし、顔識別用辞書データベース10には、新たに追加したとしても、個人特定情報に対応した辞書データ生成用情報が、K個未満しか記憶されていないときには、当該K個未満の辞書データ生成用情報の最新のものの撮像時刻が最新の撮像時刻となり、その撮像時刻と最古の撮像時刻Ti,n,1との時間差が、最新の撮像時刻についての時間差ΔTi(1_New)となる。
なお、上述の説明では、更新された期間辞書データTDi,nのうちの最古の辞書データ生成用情報の撮像時刻Ti,n,1を基準に、各辞書データ生成用情報の撮像時刻Ti,n,kとの時間差ΔT(1_k)を算出し、その時間差ΔT(1_k)が大きいほど、重み係数Wi,n,kが線形的に大きくなるように設定したが、時間差を取る基準は、最新の撮像時刻Ti,n,Newとするようにしてもよい。
その場合には、時間差ΔT(New_New)(=0)のときに重み係数Wi,n,Newが最大値rとなり、時間差ΔT(New_k)が大きくなるほど線形的に小さくなり、最古の撮像時刻Ti,n,1との時間差ΔT(New_1)のときに、その重み係数Wi,n,1が最小値qとなる。
[第2の例;撮像順に非線形的に重み係数を設定(非線形算出方法)]
図28は、撮像順に非線形的に重み係数を算出(設定)する方法を説明するための図である。この重み係数算出方法を、以下、非線形算出方法と称することとする。
この非線形算出方法が採用される場合にも、新たに取り込まれた顔画像による識別に基づいて特定された個人特定情報に対応して記憶されている期間辞書データTDi,nの特徴データについての重み係数は、最新の辞書データ生成用情報DPIi,n,New(K個の辞書データ生成用情報が記憶されているときには、DPIi,n,New=DPIi,n,K)の重み係数Wi,n,Newのみではなく、過去に取り込まれて保存されている辞書データ生成用情報DPIi,n,k(k=1,2,・・・)の重み係数Wi,n,kのすべてが、再計算されて更新される。
このため、この非線形算出方法が採用される場合にも、辞書データ更新処理部14は、更新されたすべての辞書データ生成用情報の撮像時刻の情報を、重み係数算出部15に渡す。
この非線形算出方法においても、重み係数算出部15においては、この実施形態では、まず、更新された期間辞書データTDi,nのうちの最古の辞書データ生成用情報の撮像時刻Ti,n,1を基準にするために、更新された期間辞書データTDi,nのそれぞれの辞書データ生成用情報の撮像時刻Ti,n,k(k=1,2,・・・,New)と、最古の撮像時刻Ti,n,1との時間差ΔTi(1_n)を算出する。
そして、重み係数算出部15は、重み係数Wi,n,kを、図28に示すように、算出された時間差ΔTi(1_k)が大きいほど、非線形的に大きくなるように、次の(式2)により算出する。
すなわち、
時間差ΔTi(1_k)<ΔTθのとき、
Wi,n,k=f(ΔTi(1_k))+q
時間差ΔTi(1_k)≧ΔTθのとき、
Wi,n,k=r
・・・(式2)
により、各特徴ベクトルVi,n,kについての重み係数Wi,n,kを算出する。
(式2)におけるf(ΔTi(1_k))は、時間差ΔTi(1_k)を変数とする非線形関数であり、種々様々の非線形変化パターンの曲線関数を用いることができる。図28の例では、過去の顔画像の特徴ベクトルの重み係数を小さくして、顔識別用辞書データに対するその影響を抑え、最近の顔画像の特徴ベクトルほど重み係数を大きくして、顔識別用辞書データに対するその影響を強くするようにしてする曲線関数を用いている。
そして、図28および(式2)から分かるように、この実施形態の非線形算出方法においては、最新の撮像時刻Ti,n,Newに対応する時間差ΔT(i_New)から所定の閾値時間差ΔTθ分だけ小さい時間差区間PTを優先区間として、この優先区間PT内に含まれる時間差ΔT(1_k)に対する重み係数Wi,n,kは最大値rに設定する。つまり、最近の顔画像の特徴ベクトルは最大重み係数として、顔識別辞書データに対する影響をより強くするようにする。
そして、この実施形態では、閾値時間差ΔTθは、ユーザが調整設定することが可能とされている。すなわち、この実施形態では、図26に示した重み係数設定方法の選択設定画面において、2番目の「撮像順に非線形的に設定」がユーザにより選択されている場合において、個人特定情報が特定されて、対応する期間辞書データTDi,nの更新を行なうとCPU1が決定したとき、当該CPU1の制御にしたがって表示情報生成部13は、図12に示す「優先区間PT調整」の画面を生成してディスプレイ9に表示する。
この「優先区間PT調整」の画面には、図29に示すように、更新対象となっている期間辞書データTDi,nとして記憶されている更新後の辞書データ生成用情報DPIi,n,kのそれぞれに含まれる撮像時刻の配列を、撮像時刻配列欄33に表示すると共に、その撮像時刻配列に対応して調整することが可能なように、優先区間PT調整欄34が設けられている。
撮像時刻配列欄33は、横方向を時間方向としており、それぞれ撮像時刻を縦線33aで示している。また、優先区間PT調整欄34は、前述した最古撮像時刻Ti,n,1との時間差ΔT(1_k)を、撮像時刻配列欄33に対応して横方向を時間差方向として横バー表示したものである。そして、優先区間PT調整欄34においては、ユーザは、調整点マーク35の位置を、横方向(時間差方向)に移動させることにより、優先区間PT、したがって、閾値時間差ΔTθを設定することができるようにされている。
なお、優先区間PTはゼロとして、設けなくても勿論良い。
なお、この非線形算出方法においても、上述した線形算出方法と同様に、更新された期間辞書データTDi,nのうちの最古の辞書データ生成用情報の撮像時刻Ti,n,1を基準にする代わりに、最新の撮像時刻Ti,n,Newを基準として時間差を算出するようにしてもよい。
その場合には、重み係数の設定特性曲線は、最新の時間差と最古の時間差との中心の時間差の位置を対称軸線位置として、図28に示した特性曲線を、最新の時間差と最古の時間差との位置が反転するように、線対称に反転したものと等しいものとなる。
また、上述の説明では、優先区間PTの設定は、個人特定情報が特定されて重み係数の算出がなされる前に行なうようにしたが、図26に示した重み係数設定方法の選択設定画面において、2番目の「撮像順に非線形的に設定」がユーザにより選択されたときに、当該優先区間PTの大きさをユーザが設定するようにすることができるようにしてもよい。その場合には、ユーザは、重み係数を更新するたびに、優先区間PTの再設定をする必要はない。
なお、上述した第1の例の線形算出方法においても、時間差ΔT(1_k)が、所定の大きさの時間差ΔTθ以上となったときに、対応する重み係数Wi,n,kの値を最大値であるrとする優先区間PTを設けるようにしてもよい。
[第3の例;撮像間隔に応じて重み係数を設定(区間)]
通常、撮像間隔が近い(撮像時刻が近い)場合には、それらの撮像時刻で取り込まれた個人の顔の変化はあまりなく、それらの特徴ベクトルはほぼ変化がないと考えられる。一方、撮像間隔が離れている場合には、個人の顔が変化している可能性があり、それらの特徴ベクトルの変化があると考えられる。
この第3の例においては、このことにかんがみ、撮像間隔を元に重み係数を設定するもので、撮像間隔が短い場合には、1つの顔画像による顔識別用辞書データへの影響を低くするため重み係数は小さい値に設定し、撮像間隔が長い場合には、1つの顔画像による顔識別用辞書データへの影響を高くするために重み係数は大きい値に設定する。
撮像間隔が短いか長いかを判定する方法としては、種々考えられるが、この第3の例の場合の重み係数算出方法においては、最古および最新の撮像時刻を含む期間を複数の区間に分割し、各分割区間における顔画像データの取り込み回数(撮像時刻の取り込み回数)を算出し、取り込み回数が少なければ撮像間隔が長いと判定し、取り込み間隔が多ければ撮像間隔が短いと判定し、その判定結果に応じて、各分割区間に含まれる撮像時刻に対応する重み係数を設定する。
この第3の例が採用される場合にも、新たに取り込まれた顔画像による識別に基づいて特定された個人特定情報に対応して記憶されている期間辞書データTDi,nの特徴データについての重み係数は、最新の辞書データ生成用情報DPIi,n,New(K個の辞書データ生成用情報が記憶されているときには、DPIi,n,New=DPIi,n,K)の重み係数Wi,n,Newのみではなく、過去に取り込まれて保存されている辞書データ生成用情報DPIi,n,k(k=1,2,・・・)の重み係数Wi,n,kのすべてが、再計算されて更新される。
したがって、この第3の算出方法が採用される場合にも、辞書データ更新処理部14は、更新されたすべての辞書データ生成用情報の撮像時刻の情報を、重み係数算出部15に渡す。重み係数算出部15は、それらの撮像時刻の情報を用いて、それぞれ対応する重み係数を算出するようにする。
図30は、この第3の例の場合の重み係数算出方法を説明するための図である。図30(A)は、横方向に時間を取ったときの撮像時刻の分布を示す図で、丸印のそれぞれが撮像時刻を示している。また、図30(B)は、分割区間毎の重み係数の例を示している。
すなわち、この第3の例においては、更新後の辞書データ生成用情報の最古の撮像時刻Ti,n,1を基準として、予め定められた所定時間長t毎に、分割区間を設定する。図30(B)に示し例では、4つの分割区間DV1,DV2,DV3,DV4が設定される。
次に、各分割区間DV1,DV2,DV3,DV4に含まれる撮像時刻の数を計数する。そして、その計数結果の値が小さいほど大きい重み係数となるように、各分割区間DV1,DV2,DV3,DV4についての重み係数を決定する。
この場合に、各分割区間DV1,DV2,DV3,DV4に含まれる撮像時刻の数に対応する重み係数の決定に当たっては、撮像時刻の数に線形的に重み係数を割り当てる方法、撮像時刻の数に非線形に重み係数を割り当てる方法など、種々の方法を用いることができる。
そして、各辞書データ生成用情報DPIi,n,kの撮像時刻Ti,n,kが、いずれの分割区間に含まれるかを判定し、その判定結果の分割区間に設定されている重み係数を、当該撮像時刻Ti,n,kに対応する重み係数Wi,n,kとして算出する。
なお、予め定められた所定時間長tは、固定的に定めても良いが、前述した優先区間PTの調整設定と同様にして、ユーザが調整設定することができるようにしてもよい。
また、上述の例のように、最古の撮像時刻を基準にして、一定の区間長毎に分割区間を区切るのではなく、最古の撮像時刻から最新の撮像時刻までの時間区間を、所定数に分割するようにして分割区間を設定するようにしても良い。そのように分割区間を設定する場合に、最古の撮像時刻よりもマージン時間だけ前の時刻から、最新の撮像時刻よりもマージン時間だけ後の時刻までの区間を、所定数に分割するようにしてもよい。
[第4の例;撮像間隔に応じて重み係数を設定(前画像との時間差)]
この第4の例の重み係数算出方法は、前述の第3の例と同様に撮像間隔に応じて重み係数を算出する方法であって、撮像間隔が短いか長いかを判定する方法として、最新の撮像時刻Ti,n,Newとその一つ前の撮像時刻との時間差を用いるものである。
すなわち、この第4の例の重み係数算出方法が採用されている場合においては、新たに取り込まれた顔画像による識別に基づいて特定された個人特定情報に対応して記憶されている期間辞書データTDi,nが、上述したように更新されたら、辞書データ更新処理部14は、新たに取り込まれた顔画像についての最新の撮像時刻と、その一つ前の撮像時刻とを重み係数算出部15に渡す。
重み係数算出部15は、受け取った2つの撮像時刻の情報から、最新の撮像時刻Ti,n,Newと、その一つ前の撮像時刻との時間差ΔT((New−1)_New)を算出する。そして、算出した時間差ΔT((New−1)_New)に対応する重み係数Wi,n,Newを算出する。
この第4の例の重み係数算出方法の場合には、最新の撮像時刻Ti,n,Newに対応する重み係数Wi,n,Newのみを算出すればよく、その他の過去の撮像時刻に対応する重み係数は、辞書データ生成用情報として記憶されている重み係数をそのまま用いることができ、それらの更新をする必要はない。
この第4の例において、算出した時間差ΔT((New−1)_New)に対応する重み係数Wi,n,Newの算出方法としては、線形的に求める方法、非線形的に求める方法のいずれも用いることができる。
図31に、この第4の例において、算出した時間差ΔT((New−1)_New)に対応する重み係数Wi,n,Newの算出方法としては、線形的に求める方法を採用した場合の例を示す。
すなわち、この図31に示す例においては、重み係数算出部15は、
時間差ΔT((New−1)_New)<MAX_INTのときには、
Wi,n,k=p×ΔTi(1_k)+q
時間差ΔT((New−1)_New)≧MAX_INTのときには、
Wi,n,k=r
・・・(式3)
により、新たに取り込んだ顔画像の特徴ベクトルについての重み係数Wi,n,New(期間辞書データTDi,nとして、K個以上の辞書データ生成用情報が格納されている場合には、Wi,n,New=Wi,n,K)を算出する。
ここで、閾値MAX_INTは、前に取り込んだ顔画像と新たに取り込んだ顔画像との間に変化があると考えられるような、比較的長い時間間隔に相当するものであり、この閾値MAX_INTよりも、算出した時間差ΔT((New−1)_New)が大きければ、その重み係数を最大にして、顔識別用辞書データに強い影響を与えるようにするものである。この例では閾値MAX_INTは、例えば24時間とする。
[顔識別用辞書データFRDi,nの更新]
以上のようにして、重み係数算出部15において、更新された辞書データ生成用情報DPIi,n,kについての重み係数Wi,n,kの更新が終了すると、辞書データ更新処理部14は、その算出した重み係数Wi,n,kを、顔識別用辞書データベース10の個人特定情報に対応する期間辞書データTDi,nの各辞書データ生成用情報DPIi,n,kの更新された重み係数Wi,n,kとして保存すると共に、辞書データ生成・更新部16に渡し、顔識別用辞書データFRDi,nの生成または更新を実行させるようにする。
辞書データ生成・更新部16は、特定された個人特定情報に対応する期間辞書データTDi,nの顔識別用辞書データFRDi,nの更新を、図32の(式4)に示す算出式により実行する。すなわち、辞書データ生成・更新部16は、最大K個の辞書データ生成用情報DPIi,1〜DPIi,Kのそれぞれに含まれる特徴ベクトルVi,n,kと、対応する重み係数Wi,n,kとを掛け算した結果の総和を、K個の重み係数Wi,n,kの総和で除算したものとして、更新した顔識別用辞書データFRDi,nを得るようにする。
この顔識別用辞書データFRDi,n(特徴ベクトルに対応)は、従来は、図32の(式5)に示すように、N個の辞書データ生成用情報DPIi,n,1〜DPIi,n,Kに含まれる特徴ベクトルの総和を、個数Kで除算した単純平均により求めていたものに比べて、N個の辞書データ生成用情報DPIi,n,1〜DPIi,n,Nの重み係数Wi,n,kを用いた値となり、顔識別用辞書データFRDi,nの精度が向上する。
そして、この実施形態においては、有限個であるK個の辞書データ生成用情報DPIi,n,1〜DPIi,n,Kとして、常に、最新のものが顔識別用辞書データベース10に残るようにしているので、顔識別用辞書データFRDi,nは、より高精度のものに更新されることとなる。
なお、顔識別用辞書データベース10に、期間辞書データTDi,nとして辞書データ生成用情報DPIi,n,kが、K個以下しか存在しないときには、辞書データ更新処理部14は、新たに取り込んだ顔画像についての特徴ベクトル、取得時刻情報、重み係数Wnewを、最新の辞書データ生成用情報DPIi,n,kとして顔識別用辞書データベース10に追加格納して更新し、顔識別用辞書データFRDi,nの生成または更新処理を実行する。
その場合における顔識別用辞書データFRDi,nの生成の際には、辞書データ生成・更新部16は、前記(式4)におけるKの代わりに、顔識別用辞書データベース10に当該期間辞書データTDi,nとして格納されている辞書データ生成用情報DPIi,n,kの個数を用いて、顔識別用辞書データFRDi,nの生成または更新処理を実行する。
そして、顔識別用辞書データベース10に、期間辞書データTDi,nとして辞書データ生成用情報DPIi,n,kが、K個格納されたときから、辞書データ更新処理部14は、上述したように、最古の辞書データ生成用情報を廃棄すると共に、新たに取り込んだ顔画像の特徴データ、撮像時刻情報、重み係数の情報からなるデータを、最新の辞書データ生成用情報として記憶するようにすることで、期間辞書データTDi,nを構成する辞書データ生成用情報DPIi,n,kを更新し、当該更新された辞書データ生成用情報DPIi,n,kのそれぞれの重み係数Wi,n,kを用いた顔識別用辞書データFRDi,nの更新をするようにする。
なお、以上説明した図23のブロック構成において、顔識別用画像処理部11、顔識別処理部12、表示情報生成部13、重み係数算出部15および辞書データ生成・更新部16を含む辞書データ更新処理部14の各部は、ハードウエアの構成としてもよいし、CPU1が、ROM3に格納されたソフトウエアプログラムに基づいて、RAM4をワークエリアとして用いてソフトウエア処理を実行するソフトウエア機能部として構成しても良い。
また、上述の構成では、辞書データ生成用情報DPIi,n,kとしては、特徴ベクトルと、時刻情報と、総合スコアと、重み係数を少なくとも含むものとしたが、重み係数は、保存せずに、顔識別用辞書データFRDi,nの更新時に、取り込んだ最新の撮像時刻と、保存した過去の撮像時刻から算出するようにしてもよい。ただし、第4の例の重み係数算出方法を採用する場合には、過去に算出された重み係数は更新されないので、重み係数をも保存しておいた方がよい。
また、特徴ベクトルの代わりに、取り込んだ顔画像の情報を保存しておき、その保存した顔画像の情報から特徴ベクトルを抽出し直すようにしてもよい。その場合に、辞書データ生成用情報DPIi,n,kには、少なくとも顔画像の情報と、撮像時刻の情報とを含むようにすれば良い。
[第2の実施形態の個人識別装置における処理動作]
次に、上述の構成の第2の実施形態の個人識別装置における顔識別用辞書データベースの更新処理動作および重み係数算出動作について説明する。
[顔識別用辞書データベースの更新処理]
図33は、この第2の実施形態における顔識別用辞書データベース10の個人辞書データDi中の期間辞書データTDi,nの更新処理の一例のフローチャートである。この図33の各処理ステップは、この実施形態では、重み係数算出部15と、辞書データ生成・更新部16とを備える辞書データ更新処理部14が、CPU1の制御にしたがって実行するものである。なお、CPU1が、ROM3に格納されたソフトウエアプログラムに基づいてRAM4をワークエリアとして用いて、上記各部の処理をソフトウエア処理として実行するように構成して、上記各部を省略しても良いことは、前述した通りである。
なお、以下の説明は、簡単のため、期間辞書データTDi,nの辞書データ生成用情報DPIi,n,kは、K個が格納された後における処理とした場合である。
まず、辞書データ更新処理部14は、特定された個人特定情報に対応する期間辞書データTDi,nの辞書データ生成用情報DPIi,n,kのすべてを読み出し、その最古の撮像時刻の情報DPIi,n,1を廃棄して、辞書データ生成用情報DPIi,n,kの配列を、一つずつ撮像時刻が古い方に順次ずらす。そして、新規に取り込んだ特徴ベクトル、撮像時刻の情報を、最新の情報DPIi,n,Kとして、顔識別用辞書データベース10に再格納する(ステップS201)。
次に、辞書データ更新処理部14は、顔識別用辞書データベース10の重み係数パラメータ設定情報STを読み出して、それを重み係数算出部15に渡し、いずれの重み係数算出方法が採用されているかを重み係数算出部15に知らせる(ステップS202)。
この重み係数パラメータ設定情報STを受けた重み係数算出部15は、まず、ユーザに選択された重み係数算出方法が、前述した第4の例である「撮像間隔に応じて重み係数設定(前画像との時間差)」であるか否か判別する(ステップS203)。
このステップS203で、ユーザにより選択された重み係数算出方法が、前述の第4の例ではないと判別したときには、重み係数算出部15は、更新された期間辞書データTDi,nの辞書データ生成用情報DPIi,n,kのすべての撮像時刻情報Ti,n,k(k=1〜K)を取得して、すべての重み係数Wi,n,k(k=1〜K)を再計算して更新する(ステップS204)。
そして、このステップS204の次においては、辞書データ生成・更新部16が、ステップS204で生成された重み係数Wi,n,k(k=1〜K)を取得し、当該取得した重み係数Wi,n,k(k=1〜K)により、対応する特徴ベクトルVi,n,kのそれぞれを重み付けし、そして、前述した図32の(式4)を用いて、顔識別用辞書データFRDi,nを生成または更新し、当該生成または更新した顔識別用辞書データFRDi,nを、顔識別用辞書データベース10に、前記個人特定情報に対応した顔識別用辞書データFRDi,nとして書き戻すようにする(ステップS206)。
また、ステップS203で、ユーザにより選択された重み係数算出方法が、前述の第4の例であると判別したときには、重み係数算出部15は、更新された個人辞書データDiの辞書データ生成用情報DPIi,n,kのうちの、最新の撮像時刻情報Ti,n,Kと、その一つ前の撮像時刻情報Ti,n,(K―1)とを取得して、最新の特徴ベクトルVi,n,Kについての重み係数Wi,n,Kを算出する(ステップS205)。
このステップS205の次においては、辞書データ生成・更新部16が、ステップS204で生成された重み係数Wi,n,Kを取得すると共に、過去のすべての辞書データ生成用情報の重み係数Wi,n,k(k=1〜(K―1))を取得して、それらを用いて対応する特徴ベクトルVi,n,kのそれぞれを重み付けし、そして、前述した図32の(式4)を用いて、顔識別用辞書データFRDi,nを生成または更新し、当該生成または更新した顔識別用辞書データFRDi,nを、顔識別用辞書データベース10に、前記個人特定情報に対応した顔識別用辞書データFRDi,nとして書き戻すようにする(ステップS206)。
なお、期間辞書データTDi,nの新規登録の際には、重み係数を算出し、それを、辞書データ生成用情報DPIi,n,kの一部として記憶する点が異なるのみで、第1の実施形態の場合と同様であるので、その詳細な説明は省略する。
[重み係数の再計算]
次に、図33のステップS204およびステップS205として示した重み係数の算出処理について、図34およびその続きである図35を参照して説明する。なお、図33では、すべての特徴ベクトルについての重み係数を再計算するか、新規の撮像時刻に取り込んだ特徴ベクトルについてのみについての重み係数を算出するかという観点から、処理手順を記述したが、図34および図35では、重み係数パラメータ設定情報STが何であるかを、順次に判定して処理を実行するようにした場合としての例を示すものである。
なお、以下の説明は、簡単のため、期間辞書データTDi,nの辞書データ生成用情報DPIi,n,kは、K個が格納された後における処理とした場合である。
すなわち、図34に示すように、重み係数算出部15は、まず、ユーザにより選択された重み係数算出方法が、撮像順にしたがって重み係数を算出する方法であるか否かを判別する(ステップS301)。
ステップS301で、撮像順にしたがって重み係数を算出する方法であると判別したときには、重み係数算出部15は、更新された期間辞書データTDi,nの辞書データ生成用情報DPIi,n,kのすべての撮像時刻情報Ti,n,k(k=1〜K)を取得して、最古の撮像時刻Ti,n,1と、それぞれの撮像時刻Ti,n,k(k=1〜K)との時間差ΔTi(1_k)(k=1〜K)を算出する(ステップS302)。
そして、重み係数算出部15は、撮像順の重み係数設定方法は、線形的に設定する方法であるか否か判別し(ステップS303)、線形的に設定する方法であると判別したときには、線形算出方法として前述したように、前記(式1)により、各特徴ベクトルVi,n,kについての重み係数Wi,n,kを算出し、算出した重み係数Wi,n,kを辞書データ生成・更新部16に渡すようにする(ステップS304)。そして、この処理ルーチンを終了する。
また、ステップS303で、撮像順の重み係数設定方法は、非線形的に設定する方法であると判別したときには、重み係数算出部15は、非線形算出方法として前述したように、前記(式2)により、各特徴ベクトルVi,n,kについての重み係数Wi,n,kを算出し、算出した重み係数Wi,n,kを辞書データ生成・更新部16に渡すようにする(ステップS305)。そして、この処理ルーチンを終了する。
また、ステップS301で、ユーザにより選択された重み係数算出方法が、撮像順にしたがって重み係数を算出する方法ではないと判別したときには、重み係数算出部15は、ユーザにより選択された重み係数算出方法は、前述した第4の例の撮像間隔に応じて設定(前画像との差)であるか否か判別する(図35のステップS311)。
ステップS311で、ユーザにより選択された重み係数算出方法は、前述した第4の例の撮像間隔に応じて設定(前画像との差)ではなく、前述した第3の例の撮像間隔に応じて設定(区間)であると判別したときには、重み係数算出部15は、前述の図30を用いて説明したように、複数個の分割区間を設定し、当該設定した分割区間毎に、当該分割区間に含まれる撮像時刻の数kを計算する(ステップS312)。
次に、重み係数算出部15は、算出した撮像時刻の数に応じて、各分割区間についての重み係数を設定する(ステップS313)。次に、重み係数算出部15は、撮像時刻Ti,n,kのそれぞれが、どの分割区間に属するかを判定し、その判定結果により、撮像時刻Ti,n,kのそれぞれに対応する重み係数Wi,n,kを算出する(ステップS314)。そして、この処理ルーチンを終了する。
算出された重み係数Wi,n,kのそれぞれは、辞書データ生成・更新部16に渡されると共に、辞書データ生成用情報DPIi,n,kのそれぞれの情報として記憶される。
また、ステップS311で、ユーザにより選択された重み係数算出方法は、前述した第4の例の撮像間隔に応じて設定(前画像との差)であると判別したときには、重み係数算出部15は、新たに取り込んだ顔画像の撮像時刻Ti,n,Kと、それより一つ前の撮像時刻Ti,n,(K−1)との時間差ΔTi(K−1_K)を算出する(ステップS315)。
そして、重み係数算出部15は、新たな撮像時刻Ti,n,Kで取り込んだ顔画像の特徴ベクトルについての重み係数Wi,n,Kを、前述した(式3)の算出式にしたがって算出する(ステップS316)。以上で、この処理ルーチンを終了する。
算出された重み係数Wi,n,Kは、辞書データ生成・更新部16に渡されると共に、辞書データ生成用情報DPIi,n,Kの情報として記憶される。
なお、以上の説明では、個人識別を行なった後には、当該個人識別に続いて、取り込んだ新たな顔画像を用いた顔識別用辞書データの更新を行なうようにしたが、新たに取り込んだ顔画像のデータあるいは特徴ベクトルと、時刻情報と、重み係数とを一時記憶しておき、個人識別時点の後の適当な時点において、顔識別用辞書データの更新を行うようにしても良い。
[第2の実施形態の効果]
以上説明したように、上述の実施形態においては、期間辞書データTDi,nの顔識別用辞書データFRDi,nの更新演算に際し、最大K個の辞書データ生成用情報DPIi,n,kのそれぞれの特徴ベクトルの単純平均を取るのではなく、それぞれの特徴ベクトルに、撮像時刻に基づいて算出した直近のものほど高くなる重み係数を乗算したものの総和を、重み係数の総和で除算するようにしたので、それぞれの特徴ベクトルは、その撮像時刻に応じて顔識別用辞書データFRDi,nの生成に寄与するようになるので、さらに高精度の辞書データを得ることができる。
[第2の実施形態の変形例]
以上の第2の実施形態の説明は、この発明を顔識別処理装置に適用した場合であるが、この発明の適用範囲は、このような顔画像を用いた個人識別装置の場合に限らないことは言うまでもない。
例えば、個人識別処理の場合において、人の声などの、時間の経過につれて変化をする識別要素として個人を識別する場合においても、それぞれそれらの識別要素を取り込んだ取り込み時刻に基づいて重み係数を算出して、個人識別用の辞書データを更新する場合にも適用することができる。
[第3の実施形態]
この第3の実施形態の場合も、期間辞書データは、対応する期間で撮影された顔画像データから抽出された特徴データを単純平均したものとするのではなく、より個人識別性能を向上させることができるようにする。
顔画像の識別においては、顔画像の大きさが例えば縦×横=64×64画素以上の大きさであること、顔画像は正面を向いていること、両目が水平に並んでいること、などの識別すべき画像としての基準条件を満足していることが必要である。
しかしながら、実際には、取り込んだ顔画像が、上記の基準条件をすべて満足している状態となっているわけではない。
顔画像の識別処理に当たっては、前記基準条件を満足していないときには、当該基準条件をできるだけ満足するように、画像データ補間処理や画像回転処理などの画像補正処理を取り込んだ顔画像の画像データに対して施すことにより、顔識別処理を可能にしている。
そして、従来は、取り込んだ顔画像について個人識別することができた場合には、その顔画像の特徴データを、有効な特徴データとしてすべて等しい重みを持つものとして、辞書データの生成および更新している。すなわち、従来は、上述のように基準条件を満足していない顔画像の特徴データと、基準条件を満足する顔画像の特徴データとを、同じ重みのデータとして取り扱って、辞書データの生成および更新している。
このように、取り込んだ顔画像が識別できた場合に、その特徴データを、すべて同じ重みで使用して、各個人用の顔画像の辞書データの作成および更新を行った場合には、作成または更新した辞書データの正確性が損なわれてしまうおそれがある。
上述のようなことは、顔画像の辞書データの生成や更新に限らず、取り込む画像について予め定められている基準条件が存在しているにもかかわらず、取り込んだ画像について同じ重みを持って処理を行なうすべての場合に存在する。
以上のことは、取り込む個人の識別要素としての情報が、顔画像だけではなく、声紋などの識別要素である場合における音声情報についても同様のことが言える。
この第3の実施形態では、上述の点にかんがみ、取り込む情報について予め定められている基準条件を参照した処理を行なうことにより、顔画像などの識別要素を用いて個人識別を行なう場合に使用する辞書データとして、より正確な辞書データの作成および/または更新を可能にするようにする。
図36は、この第3の実施形態の顔画像による個人識別装置の構成例を示すブロック図である。この図36で、図1に示した第1の実施形態の個人識別装置の構成例のブロック図と同一部分は、同一番号を付して、その詳細な説明は省略する。この第3の実施形態においても、各ブロックで示したものの一部は、ソフトウエア構成とすることもできるものである。
この第3の実施形態では、顔識別を行なう上での信頼度(信頼性)の度合いの情報であるスコアを算出するスコア算出部17がシステムバスに対して接続されて設けられ、顔識別用画像処理部11からの情報が、このスコア算出部17に供給される。ハードウエア的には、その他の構成は、図1に示した第1の実施形態と同様である。
そして、この第3の実施形態においても、上述した第2の実施形態と同様に、顔識別用辞書データベース10の個人辞書データDiの期間辞書データTDi,nのそれぞれは、辞書データ生成用情報配列ARi,nを備える。
そして、辞書データ生成用情報配列ARi,nを構成する、最大K個の辞書データ生成用情報DPIi,n,kのそれぞれは、この第3の実施形態においては、図37に示すように、時刻の情報Ti,n,kと、取り込まれた顔画像の特徴データVi,n,kと、取り込まれた顔画像の特徴データVi,n,kを用いて顔識別用辞書データを更新するために用いる、特徴データVi,n,kについての重み係数Wi,n,kと、総合スコアSOi,n,kと、を含む。
第2の実施形態では、重み係数Wi,n,kは、取り込まれた顔画像の撮影時刻に基づいて計算されたが、この第3の実施形態では、後述するように、総合スコアSOi,n,kに基づいて計算される。
この第3の実施形態では、総合スコアSOi,n,kを算出する点と、重み係数Wi,n,kが総合スコアSOi,n,kに基づいて計算される点の他は、前述した第2の実施形態と同様の構成および処理動作を行なう。
この第3の実施形態でも、期間辞書データTDi,nのそれぞれに対しては、最大K個、例えば40個の辞書データ生成用情報DPIi,n,kが、蓄積可能とされている。これは、辞書データベースとして使用する記憶容量を考慮したものである。そして、この第3の実施形態では、期間辞書データTDi,nとして蓄積されるデータは、後述する総合スコアを参照して、総合スコアの高いもののみを残す(すなわち、格納する)ようにして、蓄積する期間辞書データTDi,nは更新するようにする。
また、この第3の実施形態においては、期間辞書データTDi,nについては、新たな顔画像の取り込みを行なったときに、必ず、新規作成あるいは更新処理をするのではなく、当該期間辞書データTDi,nの新規作成あるいは更新をする方が良いかどうかを、総合スコアに基づいて判断し、その判断の結果、新規作成あるいは更新をした方が良いと判別したときに、実際に当該期間辞書データTDi,nの新規作成あるいは更新処理を実行するようにする。
そして、この第3の実施形態においては、顔識別用画像処理部11は、顔検出結果の顔画像データ、目検出結果のデータなどをスコア算出部15に供給する。この例においては、顔識別用画像処理部11からスコア算出部15に供給される顔検出結果の顔画像データには、検出できた顔画像の画像データサイズが付加される。ここで、顔画像の画像データサイズは、顔検出結果の顔画像の縦方向のピクセル数(画素数)と、顔画像の横方向のピクセル数(画素数)とからなる。
スコア算出部17は、この例では、顔識別用画像処理部11からの顔検出結果のデータおよび目検出結果のデータを受け取って、画像データ入力インターフェース7を通じて取り込まれた画像から抽出された顔画像について、顔識別を行なう上での信頼度(信頼性)の度合いの情報であるスコアの算出を行なう。顔識別用画像処理部11から、顔検出や目検出、最終的には、特徴ベクトルの算出ができなかった旨の通知を受けたときには、スコア算出部17は、取り込まれた顔画像についてのスコアの算出処理は行なわない。
この実施形態では、スコア算出部17は、取り込まれた顔画像についての、顔識別を行なう上での信頼度の度合いの情報であるスコアは、顔識別用の顔画像の基準条件からのずれを検出することに基づいて算出する。
ここで、顔識別用の顔画像の基準条件は、この例では、
(A)顔画像のデータは、少なくとも横方向および縦方向に所定画素数を含むこと。この実施形態では、例えば、横×縦=64画素×64画素以上のデータサイズの顔画像データであること
(B)顔が正面に正対していること(正面を向いていること)
(C)両目が水平に一直線上に並んでいること
をあげることができる。
以上の基準条件に基づき、この実施形態では、取り込んだ顔画像の特徴データについて、4個のスコアSa,Sb,Sc,Sdを算出するようにする。そして、この実施形態では、これら算出した4個のスコアSa,Sb,Sc,Sdから、取り込んだ顔画像の特徴データについて総合スコアSOを算出するようにする。なお、スコアSa,Sb,Sc,Sdのそれぞれの値は、「0」〜「1」で表され、スコアの値が「0」のときには信頼性がないことを意味し、スコアの値が「1」に近づくにつれ、より信頼性が高くなり、スコアの値が「1」のときには信頼性が十分に高いことを意味している。
[スコアSa;顔画像のデータサイズ]
4個のスコアのうちのスコアSaは、取り込まれた画像から検出された顔画像のデータサイズに関するものである。
顔識別用の顔画像の基準条件(A)から、顔識別に必要な顔画像の最小データサイズを、MIN_SIZEとし、顔識別処理が十二分に実施可能な顔画像のデータサイズMAX_SIZEとしたとき、この実施形態では、このスコアSaは、取り込んだ顔画像のデータサイズXaに対して、図38に示すような関係の値として算出される。
すなわち、
Xa<MIN_SIZEのときには、Sa=0である。
MIN_SIZE≦Xa≦MAX_SIZEのときには、Sa=k・Xa+q(q<0)である。ただし、kは、k>0である比例定数である。
MAX_SIZE<Xaのときには、Sa=1である。
ここで、この実施形態では、MIN_SIZEは、例えば、横×縦=64画素×64画素のデータサイズに等しく選定されている。また、MAX_SIZEは、64画素×64画素のデータサイズよりは大きく、かつ、顔画像の識別が十二分に行なえるデータサイズである。
ここで、取り込まれた顔画像のデータサイズとは、画像データ入力インターフェース7を通じて取り込まれた元画像から検出された顔画像のデータサイズであって、顔識別用画像処理部11でデータ補間処理などを施した後の顔画像のデータサイズではない。
顔識別用画像処理部11では、顔識別処理用の顔画像データとしては、前述した最小のデータサイズ、この例では、横×縦=64画素×64画素以上のデータサイズが必要であるので、検出された顔画像のデータサイズがこれよりも小さい場合には、データ補間処理を行って、最小のデータサイズ以上の顔画像のデータサイズとして、特徴ベクトルの検出を試みるようにしている。また、前述した両目の水平方向の位置を補正するために、検出した顔画像を回転するようにするが、その際にも、画素データの補間処理を伴う場合がある。このような補間処理をした顔画像であっても、特徴ベクトルを抽出することができれば、顔識別が可能となる場合があるのである。
上述したスコアSaは、以上のような顔識別用画像処理部11での画素補間処理を行なう前の顔画像のデータサイズについての信頼度の度合いの情報である。
この実施形態では、顔画像のデータサイズXaがMIN_SIZEよりも小さい場合には、顔識別用の特徴ベクトルの信頼度は殆どないと判断し、Sa=0とする。また、顔画像のデータサイズXaがMAX_SIZEよりも大きい場合には、顔識別用の特徴ベクトルの信頼度は非常に高いと判断し、Sa=1とする。また、顔画像のデータサイズXaが、MIN_SIZEよりも大きく、MAX_SIZEよりも小さい場合には、顔識別用の特徴ベクトルの信頼度はデータサイズXaの大きさに応じた(比例する)ものと判断し、スコアSaは、データサイズXaに比例した値とするものである。
なお、図38の例では、顔画像のデータサイズXaが、MIN_SIZEよりも大きく、MAX_SIZEよりも小さい場合には、顔識別用の特徴ベクトルの信頼度としてのスコアSaは、データサイズXaの大きさにリニア(線形)に比例するものとしたが、データサイズXaの大きさに対して、ノンリニア(非線形)に変化、例えばXaの2乗に応じた値とするものとしても、もちろんよい。
[スコアSb;顔画像の正面正対状態からのずれ(顔の向き)の閾値]
前述したように、顔識別用の顔画像は、正面に正対している状態が基準である。そして、一般的には、所定の許容範囲を超えて、顔画像の向きが正面正対状態からずれている場合には、当該顔画像についての特徴ベクトルの算出は不可能とされている。そこで、この実施形態では、この顔画像の正面正対状態からのずれに基づいて、スコアSbを算出する。
ここで、このスコアSbは、顔画像についての特徴ベクトルの算出が可能か否かに基づく信頼度の度合いを表すものである。
顔の向き(角度)について想定される変化の方向は、図39に示すように、顔の正面方向から背面方向に貫くように想定された回転軸41を中心した回転方向であるロール(roll)方向と、このロール方向についての回転軸41に対して、水平方向に直交する回転軸42を中心とした回転方向であるピッチ(pitch)方向と、ロール方向についての回転軸41に対して、垂直方向に直交する回転軸43を中心とした回転方向であるヨー(yaw)方向との3方向である。
上記3方向のうち、ロール方向に関しては、顔識別用画像処理部11において、両目の位置を水平方向に揃えるように画像を回転して補正して、顔識別処理をするので、この実施形態では、このスコアSbの算出については考慮しない。
この実施形態では、ピッチ方向と、ヨー方向との2方向についてのみを考慮して、スコアSbを算出する。この実施形態では、ピッチ方向とヨー方向のいずれかについて、顔画像についての特徴ベクトルの算出ができない程度に、顔画像の向きが正面生態状態からずれているときには、スコアSb=0とする。また、ピッチ方向とヨー方向の両方について、顔画像の向きの正面生態状態からのずれ量が、顔画像についての特徴ベクトルの算出ができる範囲内の場合には、スコアSb=1とする。
この実施形態では、ピッチ方向の正面正対状態からの顔画像の向きのずれの角度を、Apitchとし、ヨー方向の正面正対状態からの顔画像の向きのずれの角度を、Ayawとしたとき、顔画像についての特徴ベクトルの算出ができる範囲内は、例えば、
−15度≦Apitch≦+15度
−15度≦Ayaw≦+15度
とされている。
そこで、この実施形態では、
−15度≦Apitch≦+15度、かつ、−15度≦Ayaw≦+15度
を満足するときには、スコアSb=1とする。上記角度条件を満足しないときには、スコアSb=0とする。
[スコアSc;ロール方向のずれ量]
スコアScは、スコアSbでは考慮しなかったロール方向のずれ量に応じた顔識別上の顔画像の信頼度の度合いである。したがって、スコア算出部14には、ロール方向の回転補正がなされる前の、検出された顔画像が供給される。
この実施形態では、ロール方向のずれ量は、図40に示すように、回転補正する前の顔画像において、パーツ検出処理により検出された左右両目の間の垂直方向の距離(両目が水平方向に一直線上に並んでいる状態からのずれであって、左目の垂直方向の位置と、右目の垂直方向の位置との距離)Xcとして算出する。
すなわち、検出された両目が、図40(A)に示すように、水平方向に一直線に並んでいる場合には、両目の間の垂直方向の距離Xcは、Xc=0である。そして、図40(B),(C)に示すように、検出された顔画像がロール方向に回転していた場合、その回転量の大きさが大きいほど、検出された両目の間の垂直方向の距離Xcは、大きくなる。
スコアScは、両目が水平方向に一直線に並んでいるとき、すなわち、両目の間の垂直方向の距離Xc=0の場合に、一番大きく、Sc=1とする。そして、両目の間の垂直方向の距離Xcが大きくなればなるほど、スコアScの値は小さくなって、0に近くなる。この実施形態では、このスコアScは、図41に示すように、両目の間の垂直方向の距離Xcを変数としたガウス分布関数に従った値をとるように構成されている。
図42に、スコアScの算出式を(式6)として示す。この図42に示す(式6)において、bは、両目の間の垂直方向の距離XcがXc=0のときにSc=1となる値、δは標準偏差、μは平均値、であり、これらの値は、実際の多数個の顔画像サンプルを用いて、統計解析で求められるものである。
[スコアSd;許容範囲内におけるヨー方向のずれ量]
前述したスコアSbの算出においては、顔画像の正面正対状態からのヨー方向のずれ量が許容範囲内であれば、ピッチ方向のずれ量も許容範囲内であるという条件の下、スコアSb=1として、信頼度の度合いは同じとした。
このスコアSdは、顔画像の正面正対状態からのヨー方向のずれ量が許容範囲内であっても、より詳細に、取り込んだ顔画像の顔識別上での信頼度の度合いを表す値である。
この実施形態では、顔画像の正面正対状態からのヨー方向のずれ量は、図43に示すように、顔画像の中心線51(目、鼻、口などを無視して顔画像の輪郭50のみについて考えた場合に、前述したヨー方向の回転軸43(図39参照)に平行な線であって、少なくとも目の位置における、顔画像の輪郭50の水平方向の中央位置を通る線)と、検出された両目の間隔の中点位置52との距離Xdとして算出する。
なお、両目の間隔の中点位置52は、ロール方向の回転補正がなされた顔画像であっても、また、回転補正がなされる前の顔画像であっても、同じ位置になる。この実施形態では、スコア算出部17では、ロール方向の回転補正がなされる前の顔画像から、距離Xdが求められる。
図43(A)に示すように、検出された両目の間隔の中点位置52が、顔画像の中心線51上にあれば、Xd=0であって、顔画像は正面正対状態であると考えられるので、より精度の良い特徴ベクトルが抽出することができると考えられ、スコアSdは、Sd=1とする。
そして、図43(B),(C)に示すように、検出された両目の間隔の中点位置52と、顔画像の中心線51との距離Xdが大きくなるにつれて、スコアSdの値は、小さくなって0に近づく。この実施形態では、このスコアSdは、図44に示すように、検出された両目の間隔の中点位置52と、顔画像の中心線51との距離Xdを変数としたガウス分布関数に従った値をとるように構成されている。
図45に、スコアSdの算出式を(式7)として示す。この図45に示す(式7)において、cは、検出された両目の間隔の中点位置52と顔画像の中心線51との距離Xd=0のときにSd=1となる値、δは標準偏差、μは平均値、であり、これらの値は、実際の多数個の顔画像サンプルを用いて、統計解析で求められるものである。
[総合スコア]
この第3の実施形態では、以上説明した4個のスコアSa,Sb,Sc,Sdから、スコア算出部17は、以下に示す(式8)を用いて総合スコアSOを算出する。ここで、スコア算出部17で算出するのは、新たに取り込んだ顔画像のデータについての総合スコアであるので、当該スコア算出部17で算出された総合スコアは、SOnewと記述することとする。
SOnew=Sa×Sb×Sc×Sd ・・・(式8)。
なお、(式8)は、総合スコアSOnewの算出方法の一例であり、その他種々の算出方法を用いることができる。例えば、
SOnew=Sa+Sb+Sc+Sd ・・・(式9)
として総合スコアSOnewを求めても良い。
また、4個のスコアSa,Sb,Sc,Sdのそれぞれについて、重み係数ka,kb,kc,kdを定め、
SOnew=ka・Sa×kb・Sb×kc・Sc×kd・Sd ・・・(式10)
として総合スコアSOnewを求めても良いし、また、
SOnew=ka・Sa+kb・Sb+kc・Sc+kd・Sd ・・・(式11)
として総合スコアSOnewを求めても良い。
[顔画像の特徴ベクトルの重み係数W]
総合スコアSOを、そのまま、期間辞書データTDi,nの顔画像識別用辞書データFRDi,nの更新に用いても良いが、この実施形態では、総合スコアSOから、顔画像の特徴ベクトルについての重み係数Wを求め、この重み係数Wを用いた顔画像識別用辞書データFRDi,nの更新処理を行なう。
そこで、この実施形態では、スコア算出部17は、総合スコアSOnewから、新たに取り込んだ顔画像の特徴ベクトルについての重み係数Wnewを算出する。
この実施形態では、重み係数Wnewは、総合スコアSOnewに線形に比例するものとして生成するようにする。すなわち、比例定数をCsとしたとき、
Wnew=Cs・SOnew ・・・(式12)
として、重み係数Wnewを算出する。Cs=1のときには、重み係数Wnewとして、総合スコアSOnewをそのまま用いるものとなる。
なお、重み係数Wnewの算出方法は、上記(式12)による方法に限られるものではなく、重み係数Wnewは、総合スコアSOnewの値に非線形に対応する、例えば
Wnew=Cs・(SOnew)2 ・・・(式13)
として、重み係数Wnewを算出するようにしてもよい。
また、総合スコアSOnewが、予め設定した第1の閾値以下のときには、重み係数Wnew=0とすると共に、総合スコアSOnewが、前記第1の閾値より大きいときには、上記(式12)や(式13)により算出するようにしても良い。
さらに、総合スコアSOnewが、予め設定した第1の閾値以下のときには、重み係数Wnew=0とすると共に、予め設定した第2の閾値(第2の閾値は第1の閾値よりも大きい)よりも大きいときには、Wnew=1とし、そして、総合スコアSOnewが、第1の閾値よりも大きく、第2の閾値よりも小さい範囲においては、上記(式12)や(式13)により算出するようにしても良い。
以上のようにして、スコア算出部17は、取り込んだ顔画像毎に総合スコアSOnewを算出し、その総合スコアSOnewに基づいて重み係数Wnewを算出する。そして、算出した総合スコアSOnewおよび重み係数Wnewを、辞書データ更新処理部14に渡すようにする。
[顔識別用辞書データFRDiの更新]
辞書データ更新処理部14は、この第3の実施形態では、顔識別処理部13での識別結果に基づいて個人特定情報が特定されたとき、当該個人特定情報に対応する個人辞書データDiの期間辞書データTDi,nの辞書データ生成用情報DPIi,n,kを更新し、その更新した辞書データ生成用情報DPIi,n,kを用いて、当該個人特定情報に対応する期間辞書データTDi,nの顔識別用辞書データFRDi,nを更新する。
すなわち、顔識別用辞書データベース10に、新たに取り込んだ顔画像を持つ個人Piの個人辞書データDiとして既に蓄えられている期間辞書データTDi,nの辞書データ生成用情報DPIi,n,kの総合スコアSOi,n,kのそれぞれと、新たに取り込んだ顔画像についての総合スコアSOnewとを比較して、顔識別用辞書データベース10中に格納されている辞書データ生成用情報DPIi,n,kの総合スコアSOi,n,kの中に、新たに取り込んだ顔画像についての総合スコアSOnewよりも小さいものがあるかどうか、つまり、新たに取り込んだ顔画像についての総合スコアSOnewが、顔識別用辞書データベース10中に格納されている辞書データ生成用情報DPIi,n,kの総合スコアSOi,n,kのいずれかよりも大きいかどうかを判別する。
そして、辞書データ更新処理部14は、新たに取り込んだ顔画像についての総合スコアSOnewが、顔識別用辞書データベース10中に格納されている辞書データ生成用情報DPIi,n,kの総合スコアSOi,n,kのいずれかよりも大きいと判別したときには、当該期間辞書データTDi,nの顔識別用辞書データFRDi,nの更新を行なうようにする。
この顔識別用辞書データFRDi,nの更新時には、辞書データ更新処理部14は、顔識別用辞書データベース10中の当該期間辞書データTDi,nに格納されている辞書データ生成用情報DPIi,n,kのうちの一番総合スコアSOi,n,kが小さいデータを削除する。そして、辞書データ更新処理部14は、新たに取り込んだ顔画像についての特徴ベクトルおよび時刻データ、重み係数Wnew、総合スコアSOnewなどを、削除した辞書データ生成用情報DPIi,n,kの代わりのデータとして、顔識別用辞書データベース10に取り込む。
そして、顔識別用辞書データFRDi,nの更新を、第2の実施形態の説明でも用いた図32の(式4)に示す算出式により実行する。すなわち、辞書データ更新処理部14は、K個の辞書データ生成用情報DPIi,n,1〜DPIi,n,Kのそれぞれに含まれる特徴ベクトルVi,n,kと、対応する重み係数Wi,n,kとを掛け算した結果の総和を、N個の重み係数の総和で除算したものとして、更新した顔識別用辞書データFRDi,nを得るようにする。
前述もしたように、この顔識別用辞書データFRDi,n(特徴ベクトルに対応)は、従来は、図32の(式5)に示すように、K個の辞書データ生成用情報DPIi,n,1〜DPIi,n,Kに含まれる特徴ベクトルの総和を、個数Kで除算した単純平均により求めていたものに比べて、K個の辞書データ生成用情報DPIi,n,1〜DPIi,n,Kの総合スコアに応じた重み係数を用いた値となり、顔識別用辞書データFRDi,nの精度が向上する。
そして、K個の辞書データ生成用情報DPIi,n,1〜DPIi,n,Kとしては、常に、総合スコアが高いものが顔識別用辞書データベース10に残るようにしているので、顔識別用辞書データFRDi,nは、より高精度のものに更新されることとなる。
新たに取り込んだ顔画像についての総合スコアSOnewが、顔識別用辞書データベース10中に格納されている辞書データ生成用情報DPIi,n,kのいずれよりも小さいと判別したときには、個人辞書データDiの顔識別用辞書データFRDi,nの更新は行なわない。新たに取り込んだ顔画像についての特徴ベクトルの総合スコアSOnewを用いた更新を行なうと、顔識別用辞書データFRDiの精度が悪くなってしまうからである。
なお、顔識別用辞書データベース10において、期間辞書データTDi,nに辞書データ生成用情報DPIi,n,kが、最大数であるK個以下しか存在しないときには、辞書データ更新処理部14は、新たに取り込んだ顔画像のデータについての総合スコアSOnewと、顔識別用辞書データベース10に格納されている辞書データ生成用情報DPIi,n,kとの比較は行なわずに、新たに取り込んだ顔画像についての特徴ベクトル、取得時刻情報、算出された総合スコアSOnew、重み係数Wnewなどを、最新の辞書データ生成用情報DPIi,n,kとして顔識別用辞書データベース10に格納し、顔識別用辞書データFRDi,nの生成・更新処理を実行する。その場合における顔識別用辞書データFRDi,nの生成の際には、辞書データ更新処理部14は、前記(式4)におけるKの代わりに、顔識別用辞書データベース10に、当該期間辞書データTDi,nの一部として格納されている辞書データ生成用情報DPIi,n,kの個数を用いて、顔識別用辞書データFRDi,nの生成・更新処理を実行する。
そして、顔識別用辞書データベース10に、期間辞書データTDi,nの一部として辞書データ生成用情報DPIi,n,kが、最大数K個格納されたときから、辞書データ更新処理部14は、上述した、新たに取り込んだ顔画像についての総合スコアSOnewと、格納されている辞書データ生成用情報DPIi,n,kのそれぞれの総合スコアSOi,n,kとの比較を行なって、総合スコアのより高いものを用いた顔識別用辞書データFRDi,nの更新をするようにする。
なお、以上説明した図1のブロック構成において、顔識別用画像処理部11、顔識別処理部12、表示情報生成部13、辞書データ更新処理部14、スコア算出部17の各部は、ハードウエアの構成としてもよいし、CPU1が、ROM3に格納されたソフトウエアプログラムに基づいて、RAM4をワークエリアとして用いてソフトウエア処理を実行するソフトウエア機能部として構成しても良い。
また、上述の構成では、辞書データ生成用情報DPIi,n,kとしては、特徴ベクトルと、時刻情報と、総合スコアと、重み係数を少なくとも含むものとしたが、重み係数は、保存せずに、後で、保存した総合スコアから算出するようにしてもよい。
また、特徴ベクトルの代わりに、取り込んだ顔画像の情報を保存しておき、その保存した顔画像の情報から特徴ベクトルを抽出し直すようにしてもよい。総合スコアと、重み係数も、保存した顔画像の情報から算出しなおすようにしても良い。その場合には、辞書データ生成用情報DPIi,n,kには、少なくとも顔画像の情報を含むようにすれば良い。
[第3の実施形態の個人識別装置における処理動作]
次に、上述の構成の第3の実施形態の個人識別装置における取り込んだ顔画像の特徴データについてのスコア算出動作および顔識別用辞書データの更新処理動作について説明する。
[顔識別用辞書データベースの更新処理]
この第3の実施形態における顔識別用辞書データベース10の期間辞書データの更新処理を説明する。図46は、この顔識別用辞書データベース10の期間辞書データTDi,nの顔識別用辞書データFRDi,nの更新処理の一例のフローチャートである。この図46の各処理ステップは、この実施形態では、スコア算出部17と、辞書データ更新処理部14とが、CPU1の制御にしたがって実行するものである。なお、CPU1が、ROM3に格納されたソフトウエアプログラムに基づいてRAM4をワークエリアとして用いて、上記各部の処理をソフトウエア処理として実行するように構成して、上記各部を省略しても良いことは、前述した通りである。
まず、CPU1は、スコア算出部17に総合スコアSOnewの算出開始指示を出す。これを受けたスコア算出部17は、前述したようにして、総合スコアSOnewおよび重み係数Wnewを算出し、その算出結果を出力する(ステップS401)。この総合スコアSOnewおよび重み係数Wnewの算出処理の詳細な流れについては、後で詳述する。CPU1は、この総合スコアSOnewおよび重み係数Wnewを、辞書データ更新処理部14に転送する。
なお、この実施形態のように、スコア算出部17をハードウエアとして独立して持つ場合には、顔識別用画像処理部11で、特徴ベクトルの生成が成功したときには、検出した顔画像データと、目検出出力などを、スコア算出部17で受け取り、その時点から総合スコアSOnewおよび重み係数Wnewの算出処理を、顔識別処理と平行して行なっておくようにしてもよい。その場合には、顔識別用辞書データベース10の更新タイミングでは、スコア算出部17で、既に総合スコアSOnewおよび重み係数Wnewが算出済みであって、それらがワークエリアRAM4に保存されているので、ステップS401では、CPU1は、ワークエリアRAM4に保存されているそれら総合スコアSOnewおよび重み係数Wnewを読み出して、辞書データ更新処理部14に転送するようにする。
辞書データ更新処理部14は、ステップS401で算出された(得られた)取り込んだ顔画像の特徴ベクトルについての総合スコアSOnewの値が、SOnew=0であるか否か判別し(ステップS402)、SOnew=0であれば、その旨をCPU1に知らせる。CPU1は、この通知を受けて、取り込んだ顔画像の特徴ベクトルは辞書データの更新には使用できない信頼性の無い特徴ベクトルであると判断して、そのままこの処理ルーチンを終了する。
また、ステップS402で、SOnew=0ではないと判別したときには、辞書データ更新処理部14は、照合結果として正解とされた照合対象者、あるいは、図4または図5などの画面においてユーザにより氏名が入力された照合対象者の辞書データ生成用情報DPIi,n,kとしては、蓄積可能個数として最大であるK個が、既に蓄積済みであるか否か判別する(ステップS403)。
K個の辞書データ生成用情報DPIi,n,kが蓄積済みではないと判別したときには、辞書データ更新処理部14は、取り込んだ顔画像についての特徴ベクトル、時刻情報、総合スコアSOnew、重み係数Wnewなどを、照合対象者(照合結果として正解とされた照合対象者と、ユーザにより氏名が入力された照合対象者の両方を含む。以下同じ)の新たな辞書データ生成用情報DPIi,n,kとして、顔識別用辞書データベース10に追加する(ステップS404)。
そして、辞書データ更新処理部14は、当該照合対象者の顔識別用辞書データFRDi,nを、前述した(式4)により生成して、更新する(ステップS408)。なお、このときには、辞書データ生成用情報DPIi,n,kはK個以下であるので、(式4)においては、Kの代わりに、辞書データ生成用情報DPIi,n,kとして保存されている数が用いられて、演算が行なわれることになる。
そして、ステップS203で、最大数であるK個の辞書データ生成用情報DPIi,n,kが蓄積済みであると判別したときには、辞書データ更新処理部14は、照合対象者のK個の辞書データ生成用情報DPIi,n,kの総合スコアSOi,n,kを順次に読み出して、新たに取り込んだ顔画像について算出した総合スコアSOnewと比較する(ステップS405)。
そして、辞書データ更新処理部14は、N個の辞書データ生成用情報DPIi,n,kのそれぞれの総合スコアSOi,n,kのうちに、取り込んだ顔画像についての総合スコアSOnewよりも小さい値のものがあるか否か判別し(ステップS406)、なければ、辞書データの更新の必要はないとして、このままこの処理ルーチンを終了する。
また、ステップS406で、K個の辞書データ生成用情報DPIi,n,kのそれぞれの総合スコアSOi,n,kの中に、取り込んだ顔画像についての総合スコアSOnewよりも小さい値のものがあると判別したときには、辞書データ更新処理部14は、K個の辞書データ生成用情報DPIi,n,kの中で、総合スコアSOi,n,kが最小であるものを検出し、その検出した総合スコアSOi,n,kが最小である辞書データ生成用情報DPIi,n,kの蓄積内容と、総合スコアSOnewである顔画像についての特徴ベクトル、時刻情報、総合スコア、重み係数などからなる辞書データ生成用情報と同一内容とを入れ替える(ステップS407)。
そして、ステップS407での入れ替えにより、K個の辞書データ生成用情報DPIi,n,kの内容が変わったことから、それらのK個の辞書データ生成用情報DPIi,n,kの重み係数と、特徴ベクトルとを用いて、前述した(式4)に基づく演算を行なって、当該照合対象者についての顔識別用辞書データFRDi,nの更新処理を実行する(ステップS408)。
以上で、この辞書データベースの更新処理ルーチンを終了する。
なお、期間辞書データTDi,nの新規登録の際には、総合スコアを算出すると共に、重み係数を算出し、それらを、辞書データ生成用情報DPIi,n,kの一部として記憶する点が異なるのみで、第1の実施形態の場合と同様であるので、その詳細な説明は省略する。
[スコア算出処理]
次に、スコア算出部17における総合スコアおよび重み係数の算出処理について説明する。図47およびその続きである図48は、スコア算出部17における総合スコアおよび重み係数の算出処理の流れの一例を示すフローチャートである。
すなわち、スコア算出部17は、顔識別用画像処理部11から受け取った顔検出データサイズXaを検出し(ステップS501)、検出した顔画像のデータサイズXaが、予め設定されている顔画像の最小データサイズMIN_SIZEより小さいか否か判別する(ステップS502)。
そして、スコア算出部17は、顔画像のデータサイズXaが最小データサイズMIN_SIZEよりも小さいと判別したときには、顔画像のデータサイズXaに基づくスコアSa値を、図38に示したように、Sa=0とする(ステップS503)。
また、顔画像のデータサイズXaが最小データサイズMIN_SIZEよりも小さくはないと判別したときには、スコア算出部17は、顔画像のデータサイズXaが、予め定めた十二分な顔画像のデータサイズMAX_SIZEよりも大きいか否か判別する(ステップS504)。
また、スコア算出部17は、ステップS504で、顔画像のデータサイズXaが、予め定めた十二分なデータサイズMAX_SIZEよりも大きいと判別したときには、スコアSaの値を、図38に示したように、Sa=1とする(ステップS505)。
そして、ステップS504で、顔画像のデータサイズXaが、予め定めた十二分なデータサイズMAX_SIZEよりも小さいと判別したときには、スコア算出部17は、スコアSaは、図38に示したように、検出された顔画像のデータサイズXaに応じた値とする(ステップS506)。
次に、スコア算出部17は、取り込んだ顔画像の顔の向き(顔の角度)を検出する(ステップS507)。そして、スコア算出部17は、ヨー方向の正面正対状態からの顔画像の向きのずれの角度Ayawおよびピッチ方向の正面正対状態からの顔画像の向きのずれの角度Apitchを検出し(ステップS507)、それらの角度AyawおよびApitchが、共に前述した許容範囲内であるか、つまり、
−15度≦Ayaw≦+15度
かつ
−15度≦Apitch≦+15度
であるか否か判別する(ステップS508)。
そして、スコア算出部17は、ステップS508で、角度Ayawおよび角度Apitchの両方が、前記許容範囲になっていると判別したときには、顔の角度が許容範囲にあるかどうかについてのスコアSbの値を、Sb=1とする(ステップS509)。
また、スコア算出部17は、ステップS508で、角度Ayawおよび角度Apitchの両方あるいは一方が、前記許容範囲になっていないと判別したときには、前記スコアSbの値を、Sb=0とする(ステップS510)。
そして、ステップS509またはステップS510の次には、図48のステップS511に進み、スコア算出部17は、図40を用いて説明したように、パーツ検出処理により検出された左右両目の水平からずれ、つまり、前述した左右両目の間の垂直方向の距離Xcを検出する。
そして、スコア算出部17は、検出した距離Xcが、Xc=0であって、両目が水平に並んでいるか否か判別し(ステップS512)、水平に並んでいると判別したときには、スコアScの値を、Sc=1とする(ステップS513)。また、ステップS512で、水平に並んでいないと判別したときには、スコア算出部17は、前述したガウス分布関数にしたがったスコアScの算出式である(式6)(図42参照)に基づいて、スコアScの値を算出する(ステップS514)。
そして、ステップS513またはステップS514の次には、ステップS515に進み、スコア算出部17は、図43を用いて説明したように、顔画像の中心線51と、両目の間隔の中点位置52との距離Xdを検出する(ステップS515)。
そして、スコア算出部17は、検出した距離Xdが、Xd=0であって、顔画像が正面正対状態であるか否か判別し(ステップS516)、顔画像が正面正対状態であると判別したときには、スコアSdの値を、Sd=1とする(ステップS517)。また、ステップS516で、顔画像が正面正対状態ではないと判別したときには、スコア算出部14は、前述したガウス分布関数にしたがったスコアSdの算出式である(式7)(図45参照)に基づいて、スコアSdの値を算出する(ステップS518)。
そして、ステップS513またはステップS514の次には、ステップS515に進み、スコア算出部17は、前述したようにして、算出したスコアSa,Sb,Sc,Sdを用いて、総合スコアSOnewを算出すると共に、算出した総合スコアSOnewから、重み係数Wnewを算出する(ステップS519)。以上で、スコア算出部17でのスコア算出処理を終了する。
なお、以上の説明では、個人識別を行なった後には、当該個人識別に続いて、取り込んだ新たな顔画像を用いた顔識別用辞書データの更新を行なうようにしたが、新たに取り込んだ顔画像のデータあるいは特徴ベクトルと、時刻情報と、総合スコアと、重み係数とを一時記憶しておき、個人識別時点の後の時点において、顔識別用辞書データの更新を行うようにしても良い。
また、総合スコアと、重み係数とは、一時記憶部や個人辞書データ記憶部に、両方とも記憶するのではなく、どちらか一方を記憶するようにしても良い。重み係数を記憶するようにする場合には、辞書データを更新するか否かの判定も、総合スコアではなく、重み係数を用いるようにしても良い。
[第3の実施形態の効果]
以上説明したように、上述の実施形態においては、各個人Piの期間辞書データTDi,n中の、最大K個の辞書データ生成用情報DPIi,n,kのそれぞれには、顔画像の特徴ベクトルについての信頼度を表す総合スコアSOi,n,kを記憶するようにしているので、新たに取り込んだ顔画像の特徴ベクトルについての信頼度を表す総合スコアSOnewと、記憶しているN個の顔画像の特徴ベクトルの総合スコアSOi,n,k(k=1〜K)とを比較することで、新たに取り込んだ顔画像の特徴ベクトルが、顔識別用辞書データを更新するために有効であるかどうかを判定することができる。
そして、比較の結果、新たに取り込んだ顔画像の特徴ベクトルについての総合スコアSOnewが、個人Piの期間辞書データTDi,n中のK個の辞書データ生成用情報DPIi,n,kのいずれかよりも大きいときには、最も、総合スコアSOi,n,kの低いものを削除して、その代わりに新たな顔画像の特徴ベクトルなど、辞書データ生成用情報と同じ内容のデータを保存することにより、常に、総合スコアの値が高く、信頼性の高いデータのみを、各個人Piの期間辞書データTDi,nのK個の辞書データ生成用情報として保存しておくことができる。
そして、その信頼性の高いK個の辞書データ生成用情報DPIi,n,kのみを用いて顔識別用辞書データFRDi,nを更新するようにすることにより、顔識別用辞書データFRDi,nも、常に精度の高い辞書データとすることができる。
さらに、上述の実施形態では、顔識別用辞書データFRDi,nの更新演算においては、k個の辞書データ生成用情報DPIi,n,kのそれぞれの特徴ベクトルの単純平均を取るのではなく、それぞれの特徴ベクトルに、対応する総合スコアに基づく重み係数を乗算したものの総和を、重み係数の総和で除算するようにしたので、それぞれの特徴ベクトルは、その信頼度に応じて顔識別用辞書データFRDi,nの生成に寄与するようになるので、さらに高精度の辞書データを得ることができる。
[第3の実施形態の変形例]
以上説明した第3の実施形態は、この発明を顔識別処理装置に適用した場合であるが、顔識別に限らないことは言うまでもない。
例えば、個人識別処理の場合において、人の声などを識別要素として個人を識別する場合においても、それぞれそれらの識別要素を取り込むときの1または複数の基準条件からのずれに基づいて、1または複数個のスコアを算出する。そして、算出したスコアが複数個、あるときには、その複数個のスコアを用いて総合スコアを算出する。
そして、上述の実施形態と同様に、スコアまたは総合スコアに基づいて、辞書データ生成用情報として保存する複数個のデータを選択したり、識別用辞書データの更新をしたりするようにすることができる。
また、パーソナルコンピュータに複数枚の写真画像を取り込んで、アルバムなどとして保存する場合において、例えば、取り込んだ写真画像をメモリに記憶する際、取り込む画像について、例えば、人の顔が映っている画像である、高周波数成分が多い(輪郭がはっきりしている)画像である、などの基準条件を定め、その基準条件からのずれからスコアまたは総合スコアを算出し、そのスコアまたは総合スコアを、写真画像に対応させて記憶するようにする場合にも適用できる。
このようにすれば、スコアまたは総合スコアの高いもの順に、写真画像を並べるなど、基準条件に近い画像を優先して表示するようにすることができる。
10…顔識別用辞書データベース、11…顔識別用画像処理部、12…顔識別処理部、14…辞書データ更新処理部、15…重み係数算出部、16…辞書データ生成・更新部、17…スコア算出部