【実施例1】
【0011】
図1は、本発明の人物認証装置を含む人物認証システムの全体の構成例を示す図である。人物認証システム1は、人物7を含む映像を取得する監視カメラなどの映像入力装置2と、LAN(Local Area Network)、WAN(Wide Area Network)、VPN(Virtual Private Network)等を含むネットワーク6と、人物を認証する人物認証装置5と、映像を格納する映像録画装置3と、人物認証装置5を管理する人物認証管理装置4と、を備えて構成される。人物認証装置5は、ネットワーク6を介して映像入力装置2から映像を受信し、写っている人物7の顔画像を登録済み人物の顔画像と比較し、人物7を特定する。受信した映像は映像録画装置3に格納する。人物認証管理装置4は、人物認証装置5の設定や人物認証装置5の認証結果の表示を行う。次に、人物認証装置5の内部構成を説明する。
【0012】
図2は、人物認証装置5のハードウェア構成を示す図である。人物認証装置5は、メモリ10、外部記憶装置11、CPU(Central Processing Unit)18、出力装置19、通信装置20と、これらをつなぐバス17を含んで構成される。
【0013】
外部記憶装置11は、デジタル情報を記憶可能ないわゆるハードディスク(Hard Disk Drive)やSSD(Solid State Drive)、あるいはフラッシュメモリなどの不揮発性記憶装置である。外部記憶装置11には、顔認証プログラム12、顔認証モデルDB(データベース)13、初期学習用顔DB14、追加学習用顔DB15、追加学習設定DB16などのデータを格納する。
【0014】
顔認証プログラム12は、以下に述べる顔認証処理を実行するためのプログラムである。顔認証モデルDB13は、各人物を他の人物と識別するためのパラメータで構成される。例えば、SVM(Support Vector Machine)識別器を用いて顔認証を実施する場合、本人と他人を区別するサポートベクター(Support Vector)を格納している。初期学習用顔DB14は、顔認証モデルDB13を構築する時に利用する顔画像を格納する。追加学習用顔DB15は、顔認証モデルの追加学習のために運用中に蓄積した顔画像を格納する。追加学習設定DB16は、運用時に、追加学習用顔DB15に蓄積すべき顔画像の選定条件を定めた設定パラメータを格納している。
【0015】
CPU18は、各種演算を実行するユニットであり、外部記憶装置11からメモリ10にロードした所定のプログラムを実行することにより、各種処理を実行する。すなわち、外部記憶装置11内の顔認証プログラム12、顔認証モデルDB13、初期学習用顔DB14、追加学習用顔DB15、追加学習設定DB16は、CPU18によりメモリ10に展開される。メモリ10は、CPU18により実行されるプログラムや、プログラムの実行に必要なデータを格納する。
【0016】
出力装置19は、グラフィックボード・ビデオカードなどの画面生成装置であり、映像入力装置2からの映像や人物認証装置5の認証結果を表示可能な画面に変換する。通信装置20は、ネットワーク6を介して映像入力装置2からの映像を受信し、人物認証管理装置4との間で認証結果、追加学習結果や制御指令を送受信する。
【0017】
図3は、人物認証装置5の機能システム構成を示す図である。人物認証装置5は、映像入力部21、人追跡部22、顔抽出部23、顔特徴量算出部24、顔認証部25、追加学習顔保存部26、追加学習実施部27、外部連携部28、入力受付部29、出力部30、および外部記憶装置11からロードしたデータ保存する一時データ保存部31とデータ保存部32からなる。各部の機能を説明する。
【0018】
映像入力部21は、ネットワーク6を介して受信した符号化された映像データの復号化を行い、フレーム単位の画像に変換する。
人追跡部22は、映像入力部21に入力した映像に対して、ブロックマッチング法や勾配法などによりオプティカルフロー(物体の動きベクトル)を計算し、映像の中に人物領域を算出し、人物ごとに、最新の存在場所を算出しながら追跡を行う。
【0019】
顔抽出部23は、人追跡部22が追跡中の人物の領域に対して、例えば、顔のパーツの相対位置や大きさ、目や鼻の形を特徴として、顔の領域を抽出する。
顔特徴量算出部24は、本人の顔を他人の顔と区別するための属性、例えば、目、鼻、口などの各パーツのサイズや相対位置などのように、人物ごとに異なる属性を顔特徴量として算出する。
【0020】
顔認証部25は、当該顔の顔特徴量を対象に、顔認証モデルDB13を用いて登録済み人物の顔特徴量との類似度を確率値として算出し、当該顔が属する人物を特定する。
【0021】
追加学習顔保存部26は、人物認証装置5の動作中に、認証済みの人物に対してその一部の顔画像を追加学習用画像として選定し、追加学習用顔DB15に保存する。
追加学習実施部27は、初期学習用顔DB14と追加学習用顔DB15に蓄積された顔データを用いて、顔認証モデルの追加学習を実施する。顔認証モデルの追加学習の結果は顔認証モデルDB13に格納される。
【0022】
外部連携部28は、顔認証部25の認証結果を外部システム、例えば入退管理システムに送信する。また、外部システムからのトリガーにより顔認証処理を実施する。
入力受付部29は、キーボードやマウスなどのデバイスであり、ユーザの操作を認識して操作命令に変換する。
出力部30は、顔認証部25の認証結果や追加学習実施部27の学習結果などを、運用者が確認可能な形式に変換して、出力装置19にて表示する。
【0023】
一時データ保存部31は、追跡結果保存部33、顔画像保存部34、認証結果保存部35からなる。追跡結果保存部33は、追跡対象ごとに人の場所、画面上の領域などの情報を格納する。顔画像保存部34は、追跡対象のフレームごとの顔画像を格納する。認証結果保存部35は、追跡対象のフレームごとの認証結果を格納する。
【0024】
データ保存部32は、顔認証モデル36、初期学習用顔画像37、追加学習用顔画像38、追加学習設定情報39からなる。顔認証モデル36は、顔認証モデルDB13をメモリ上に展開したものである。初期学習用顔画像37は、初期学習用顔DB14をメモリ上に展開したものである。追加学習用顔画像38は、追加学習用顔DB15をメモリ上に展開したものである。追加学習設定情報39は、追加学習設定DB16をメモリ上に展開したものである。
【0025】
図4は、初期学習用顔画像37のデータ構造を示す図である。また
図5は、追加学習用顔画像38のデータ構造を示す図である。いずれも、各人物を識別する人物IDに対応してその顔画像データが格納されている。初期学習用顔画像37と追加学習用顔画像38の画像データを用いて、人物IDごとの顔認証モデル36が構築される。
【0026】
以下、人物認証装置5における人物認証処理の動作を、顔認証処理、追加学習画像蓄積処理、追加学習処理に分けて説明する。
【0027】
図6は、顔認証及び追加学習画像蓄積のシーケンスを示す図である。
映像入力装置2から映像が入力すると、映像入力部21は映像の復号化と前処理を行う(ステップS1)。前処理の内容は、例えば、ホワイトバランス調整や明るさ調整などである。フレームごとの画像は人追跡部22に送られる。人追跡部22は、画像中の人物(追跡対象)の追跡を行い、追跡結果を追跡結果保存部33に格納する(ステップS2)。ステップS2の詳細は
図8〜10にて後述する。
【0028】
人物の追跡結果は顔抽出部23に送られ、認証処理が未実施の人物(追跡対象)が存在する場合、以下を行う。顔抽出部23は、追跡中の人物ごとに顔領域の抽出を行い、顔画像を顔画像保存部34に格納する(ステップS3)。顔領域抽出方法には、Haar特徴量に基づくカスケード識別器を用いた顔検出方法などがある。ステップS3の詳細は
図11にて後述する。
【0029】
抽出した顔画像は顔特徴量算出部24に送られる。顔特徴量算出部24は、顔画像から顔特徴量を算出する(ステップS4)。顔認証部25は、算出された顔特徴量から顔認証処理を行う。すなわち、顔認証モデル36を用いて顔特徴量が属する登録済み人物のIDを識別し、認証結果を認証結果保存部35に格納する(ステップS5)。ステップS5の詳細は
図12にて後述する。
【0030】
顔認証処理(ステップS5)が成功した場合、識別した人物IDは外部連携部28を介し外部システムへ通知される(ステップS6)。これにより、例えば入退管理システムにおいて自動的にドアを開放する動作が行われる。
【0031】
当該フレームの顔認証処理を完了後、追加学習顔保存部26は、追加学習のために追加学習用顔画像の選定処理を行う(ステップS7)。ステップS7の詳細は
図13〜15にて後述する。追加学習用顔画像が存在する場合、追加すべき顔画像38を追加学習用顔DB15に格納する(ステップS8)。
【0032】
図7は、追加学習実施のシーケンスを示す図である。
入力受付部29は運用者から再学習指示を受けると、追加学習実施部27に追加学習要求を送る。追加学習実施部27は、初期学習用顔DB14と追加学習用顔DB15から顔画像を読み出す(ステップS9)。顔特徴量算出部24は、読み出された顔画像に対して顔特徴量の算出を行い(ステップS10)、追加学習実施部27へ返す。追加学習実施部27は、SVM識別器を学習することで複数の個体を識別可能とする顔認証モデル36を追加学習する(ステップS11)。
【0033】
追加学習結果は出力部30に送られ、学習結果の画面を生成して、運用者に提示する(ステップS12)。運用者は追加学習結果を受入れる場合、追加学習を反映するボタンを押すことで顔認証モデル36を更新する(ステップS13)。ステップS12、S13の詳細は
図16にて後述する。
【0034】
以下、
図6と
図7における主要なステップについて詳細に説明する。
図8は、人追跡部22による人追跡の処理フロー(ステップS2)を示す図である。
入力画像に対して、画像の中にエッジ部などの追跡しやすい特徴点を抽出する(ステップS101)。抽出した特徴点を用いて、前のフレームの特徴点とのマッチングをとることで各特徴点の動きの軌道を算出する(ステップS102)。追跡中の人物の情報を用いて、特徴点の軌道情報を更新する(ステップS103)。なお、初期状態では追跡中の人物は存在しないため、このステップS103では何も行わない。全ての特徴点の情報及び追跡中の人物の情報を用いて、人領域を更新する(ステップS104)。人領域の情報を用いて、追跡中の人物の追跡結果を更新する(ステップS105)。
【0035】
現在、未追跡の人領域があるか否かを判定する(ステップS106)。未追跡の人領域が存在する場合、追跡対象を追跡結果に追加する(ステップS107)。ステップS107が完了後、または未追跡の人領域が存在しない場合、人領域以外の特徴点を削除する(ステップS108)。追跡結果を顔抽出部23に出力するとともに、追跡結果保存部33に保存する(ステップS109)。
【0036】
図9は、追跡結果保存部33のデータ構造を示す図である。追跡結果保存部33は、フレームID、追跡対象ID、および追跡対象領域からなる。フレームIDは、画像のフレーム番号である。追跡対象IDは、各フレームIDの画像に存在する追跡対象の識別番号である。追跡対象が複数のフレーム画像に渡って存在する場合、1つの追跡対象IDが複数のフレームIDに含まれることになる。追跡対象領域は、当該追跡対象が当該フレーム内で存在する領域(位置座標)を示す。
【0037】
図10は、
図9に示した追跡結果をマップ上に表した図である。マップ40は映像入力装置2の撮像範囲に対応する。マップ40内には追跡対象は2つあり、それぞれの追跡対象IDは「1」と「2」である。追跡対象ID=「1」はフレーム間で移動しており、41aは追跡対象の軌跡、41bは追跡対象の現在位置を示す。
【0038】
図11は、顔抽出部23による顔領域抽出処理(ステップS3)の結果、顔画像保存部34に保存される顔画像のデータ構造を示す図である。顔画像保存部34は、フレームID、追跡対象ID、および顔画像データからなる。フレームIDと追跡対象IDは、顔画像が抽出される人物の追跡結果保存部33のデータに対応している。また、顔画像データは顔画像のバイナリデータとして保存される。
【0039】
図12は、顔認証部25による顔認証処理(ステップS5)の結果、認証結果保存部35に保存される認証結果のデータ構造を示す図である。認証結果保存部35は、フレームID、追跡対象ID、認証結果詳細、および人物IDからなる。フレームIDと追跡対象IDは、顔画像保存部34のデータと関連付ける。認証結果詳細は、当該顔が属する個体(人物ID)及びその確率(類似度または信頼度とも呼ぶ)を示す。認証結果詳細の中に、ある個体に属する確率が所定の値(認証成功閾値)を超える場合、認証成功とみなし、その個体の人物IDに更新する。認証が失敗した場合は、人物IDを「−1」で表す。
【0040】
追跡中の人物は異なるフレームに渡って同一の追跡対象IDで管理されているので、あるフレームで認証が成功すれば他のフレームで認証が失敗したとしても、追跡対象IDが一致するすべてのフレームにおける追跡対象の人物IDを特定することができる。例えば、追跡対象ID=「2」についてはフレームID=12の段階では認証が失敗しているが、フレームID=15で認証が成功(人物ID=001)しているので、フレームID=12に遡って追跡対象ID=「2」の人物IDを特定することができる。
【0041】
次に、追加学習顔保存部26による追加学習顔画像選定処理(ステップS7)について詳細に説明する。
図13は、追加学習顔画像選定処理にて用いる追加学習設定情報39のデータ構造を示す図である。追加学習設定情報39は、顔画像選定の条件であるパラメータ名とパラメータ値からなる。パラメータとしては、本人信頼度上限T
11、本人信頼度下限T
12、顔完全度下限T
2、追加済本人顔差異度下限T
3、実施待ちフレーム数Fなどを含んでいる。
【0042】
本人信頼度上限T
11は、追加学習の顔データとして選定するための登録済み人物に属する信頼度(=類似度)の上限値である。ここに信頼度とは、顔認証処理の結果得られる登録済み人物に属する確率値で表す。信頼度の上限値は、1未満の値(例えば0.96)とすることで、追加する画像が登録済みの画像に偏ることを防止する効果がある。
本人信頼度下限T
12は、追加学習の顔データとして選定するための登録済み人物に属する信頼度の下限値である。
【0043】
顔完全度下限T
2は、追加学習の顔データとして選定するための顔画像完全度の下限値である。顔画像完全度とは、顔画像内に本来あるべき口、目、鼻などのパーツがどれだけ含まれているかを示す割合である。この値が高いほど、顔画像として有効である。この値が低い場合、一部の顔が隠れているか、もしくは、そもそも顔画像ではない可能性がある。下限値を設けることで、追加学習に伴う認証精度の低下を防止する効果がある。
【0044】
追加済本人顔差異度下限T
3は、追加する予定の顔画像が、追加済(登録済)の本人顔画像とどれだけ異なるか、差異度の下限値を示す。この下限値は0より大きい値(例えば0.05)とすることで、既に追加学習済みの画像と類似している顔画像の再追加を避けることができ、その結果、学習の偏りを防ぐ効果がある。
【0045】
実施待ちフレーム数Fは、追跡対象が視野から消えた後、追加学習用顔画像の選定を実施するまでの待ちフレーム数である。
【0046】
図14は、追加学習顔画像選定処理(ステップS7)のフローを示す図である。
追加学習顔保存部26は、顔認証結果保存部35と顔画像保存部34から、一件の認証結果と関連する顔画像データを読み込む(ステップS201)。すなわち、顔認証結果保存部35に保存される追跡対象ID、認証結果詳細、人物IDと、これに関連する顔画像保存部34の顔画像データを準備する。
【0047】
当該追跡対象IDの「消えるフレーム数」が、追加学習設定情報39の実施待ちフレーム数Fと一致するか否かを判定する(ステップS202)。ここに「消えるフレーム数」とは、当該追跡対象IDがフレーム画像から消えて再度出現するまでのフレーム数のことである。消えるフレーム数が実施待ちフレーム数Fと一致する場合、選定処理を継続する。一致しない場合、この認証結果の処理を中断し、ステップS201に戻り、次の認証結果について処理する。
【0048】
当該追跡対象IDに対する認証結果をチェックし、当該追跡対象IDに対し認証成功したフレームが存在するか否か、すなわち、顔認証結果保存部35の人物IDが「−1」以外のフレームが存在するか否かを判定する(ステップS203)。認証成功したフレームが存在する場合、選定処理を継続する。認証成功したフレームが存在しない場合、この認証結果の処理を中断し、ステップS201に戻り次の認証結果について処理する。
【0049】
次に、当該顔画像について、顔画像完全度の算出(ステップS204)と、本人顔差異度の算出(ステップS205)を行う。顔画像完全度とは、顔画像内に本来備えるべき口、目、鼻などの顔のパーツをどれだけ含んでいるかを示す値である。本人顔差異度とは、当該顔画像が、追加済の本人顔画像とどれだけ異なるかを示す値である。なお、追加済の本人顔画像として利用するデータは、初期学習用顔画像37と追加学習用顔画像38の両方、もしくはその一方でもよい。算出した顔画像完全度と本人顔差異度を用いて、当該顔画像が追加学習用画像として有効であるか否かの判定処理を行う(ステップS206)。ステップS206の詳細は
図15を用いて説明する。
【0050】
ステップS206の有効性の判定結果に応じて処理を分岐する(ステップS207)。有効と判定した場合は、当該顔画像を追加学習の対象として選定する(ステップS208)。有効でないと判定した場合は、この認証結果の処理を中断し、ステップS201に戻り次の認証結果について処理する。全ての認証結果の処理を完了したか否かを判定し(ステップS209)、完了していれば終了する。完了していなければ、ステップS201に戻り次の認証結果について処理する。
【0051】
図15は、
図14における追加学習顔画像有効性判定フロー(ステップS206)の詳細を示す図である。ここの判定では、
図13の追加学習設定情報39に設定されている本人信頼度上限T
11、本人信頼度下限T
12、顔完全度下限T
2、追加済本人顔差異度下限T
3を使用する。
【0052】
まず、当該顔画像の本人信頼度(認証時の確率)を判定する(ステップ211)。本人信頼度が本人信頼度下限T
12よりも大きく、かつ本人信頼度上限T
11よりも小さい場合、選定処理を継続する。そうでない場合、無効とする(ステップS215)。次に、顔画像完全度を判定する(ステップS212)。顔画像完全度が顔完全度下限T
2より大きい場合、選定処理を継続する。そうでない場合、無効とする(ステップS215)。さらに、本人顔差異度の判定を行う(ステップS213)。本人顔差異度が追加済本人顔差異度下限T
3より大きい場合、当該顔画像の追加学習顔画像としての判定結果を有効とする(ステップS214)。そうでない場合、無効とする(ステップS215)。
【0053】
以上の処理で、顔認証結果を用いて、追加学習の対象になる顔画像を適切に選定することが可能になる。その際の選定条件は、
(1)本人信頼度の閾値として下限T
12だけでなく上限T
11を設ける、
(2)顔画像完全度の閾値として下限T
2を設ける、
(3)本人顔差異度の閾値として下限T
3を設ける、
ようにしたので、追加学習時の偏りを防ぐとともに認証判定時の誤検知を防止する効果がある。
【0054】
なお、上記の選定条件(1)〜(3)は全て満足する必要はなく、(1)または(3)のいずれかを満足すれば追加学習時の偏りを防ぐことができる。よって、
図15の有効性判定フローは、使用環境に応じて適宜選定条件を組み直して運用すればよい。
【0055】
図16は、
図7の追加学習における学習結果の確認画面(ステップS12,S13)を示す図である。確認画面50では、追加学習結果51として、初期学習用顔DB及び追加学習顔DBのテストデータを対象に認証テストを行い、追加学習前と追加学習後の認証失敗(本人拒否率と他人受入率)の確率を掲示する。本人拒否率とは、本人の顔画像を本人であると認証できなかった確率で、他人受入率とは、他人の顔画像を本人と誤って認証した確率である。追加学習により本人拒否率は低減している。なお、学習により他人受入率は増加しているが、元々0%に近い値なので問題になることはない。運用者は追加学習結果51を確認し、追加学習を反映するボタン52を押すことで追加学習を受け入れることができる。また、取り消しボタン53を押すことで、追加学習を止めることができる。
【0056】
上記の説明では、運用者の指示により追加学習を実施するものとしたが、定期的にもしくは顔認証のたびに追加学習を実施することでもよい。
【0057】
実施例1によれば、人物認証システムが運用時、顔認証の信頼度が低い顔画像を追加学習の対象に加えることで、顔の経年変化や照明の変化に対する耐性を向上することができる。また、信頼度が十分に高い顔画像や既に大量に学習した顔画像を追加学習の対象外にすることで、学習の偏りを防ぐ効果がある。また、顔完全性のチェックにより、顔画像完全度が低い顔画像を追加学習の対象外にすることで、認証精度の悪化を防ぐ効果がある。