以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
以下、認証システムについて説明する。認証システムは、学習データを用いてニューラルネットワークのパラメータを学習する。認証システムは、生体情報をニューラルネットワークへ入力して得られるバイナリベクトル、を登録する。また、認証システムは、1:N認証時に、生体情報をニューラルネットワークへ入力して得られるバイナリベクトルと、登録されたバイナリベクトルと、の照合により照合対象を絞り込むことで高速な1:N認証を行う。
本実施例の認証システムは、Deep Learningと呼ばれる機械学習を生体認証のバイナリベクトル化に活用して、高速かつ高精度な1:N認証が実現することができる。なお、本実施形態において、生体情報として指紋、虹彩、静脈、又は顔等の画像の情報(例えば画像特徴量)が用いられる例を説明するが、例えば、声のような他の生体情報が用いられてもよい。
図1は、認証システムの構成例を示すブロック図である。認証システムは、例えば、学習機1000、認証クライアント1100、及び認証サーバ1200を含む。学習機1000は、例えば、パラメータ初期化部1010、学習データ取得部1020、ニューラルネット算出部1030、ベクトル間距離算出部1040、ロス算出部1050、パラメータ更新部1060、学習データ格納部1090、及びパラメータ格納部1091、を含む。
パラメータ初期化部1010は、ニューラルネットワークのパラメータを初期化する。学習データ取得部1020は、学習データ格納部1090から学習データを取得する。ニューラルネット算出部1030は、生体情報をニューラルネットワークへ入力してベクトルを算出する。ベクトル間距離算出部1040は、2つのベクトル間の距離を算出する。
ロス算出部1050は、ベクトル間の距離に基づきロス関数の出力を算出する。パラメータ更新部1060は、ロス算出部1050が算出したロス関数の出力に基づき、ニューラルネットワークのパラメータを更新する。学習データ格納部1090は、学習データを格納する。パラメータ格納部1091は、パラメータ更新部1060にて学習したパラメータを格納する。
認証クライアント1100は、例えば、生体情報取得部1110、ニューラルネット算出部1120、ベクトル二値化部1130、登録ベクトル融合部1140、マスクベクトル生成部1150、テンプレート変換部1160、サンプル変換部1161、テンプレート照合部1170、通信部1180、及びパラメータ格納部1190、を含む。
生体情報取得部1110は、登録時または認証時にユーザから入力された生体情報を取得する。ニューラルネット算出部1120は、生体情報取得部1110が取得した生体情報をニューラルネットワークへ入力して出力ベクトルを算出する。
ベクトル二値化部1130は、ニューラルネット算出部1120が算出した出力ベクトルを二値化してバイナリベクトルを生成する。登録ベクトル融合部1140は、ベクトル二値化部1130が生成した複数のバイナリベクトルを融合し、単一の登録ベクトルを生成する。
マスクベクトル生成部1150は、ベクトル二値化部1130が生成したバイナリベクトルに対するマスクベクトルを生成する。テンプレート変換部1160は、生体情報取得部1110が取得した生体情報を登録テンプレートに変換する。サンプル変換部1161は、生体情報取得部1110が取得した生体情報を認証サンプルに変換する。
テンプレート照合部1170は、テンプレート変換部1160が生成した登録テンプレートと、サンプル変換部1161が生成した認証サンプルと、を照合して本人判定を行う。通信部1180は、ネットワーク1300を介して、認証サーバ1200と通信を行う。パラメータ格納部1190は、学習機1000のパラメータ格納部1091に格納された学習済みパラメータと同じパラメータを格納する。
認証サーバ1200は、例えば、ベクトル間距離算出部1210、通信部1220、及び登録テンプレート格納部1290を含む。ベクトル間距離算出部1210は、ニューラルネット算出部1120とベクトル二値化部1130が算出したバイナリベクトル間のハミング距離を算出する。通信部1220は、ネットワーク1300を介して、認証クライアント1100と通信する。登録テンプレート格納部1290は、テンプレート変換部1160が生成した登録テンプレートを格納する。
なお、図1の例では、学習機1000は、認証クライアント1100及び認証サーバ1200に接続されていないが、認証クライアント1100及び認証サーバ1200の少なくとも一方と、ネットワーク1300を介して接続されていてもよい。
図10は、学習機1000、認証クライアント1100、及び認証サーバ1200のハードウェア構成例を示すブロック図である。学習機1000、認証クライアント1100、及び認証サーバ1200は、例えば、図10に示す計算機によって構成される。計算機は、CPU(Central Processing Unit)1001、主記憶装置1002、補助記憶装置1003、入力装置1004、出力装置1005、及び通信装置1006を含む。
CPU1001は、プロセッサを含み、主記憶装置1002に格納されたプログラムを実行する。主記憶装置(メモリ)1002は、不揮発性の記憶素子であるROM及び揮発性の記憶素子であるRAMを含む。ROMは、不変のプログラム(例えば、BIOS)などを格納する。RAMは、DRAM(Dynamic Random Access Memory)のような高速かつ揮発性の記憶素子であり、CPU1001が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
補助記憶装置1003は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)等の大容量かつ不揮発性の記憶装置であり、プロセッサが実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置1003から読み出されて、主記憶装置1002にロードされて、プロセッサによって実行される。
計算機は、入力インターフェース及び出力インターフェースを有する。入力インターフェースは、キーボード、マウス、カメラ、及びスキャナなどの入力装置1004が接続され、オペレータからの入力を受け付けるインターフェースである。出力インターフェースは、ディスプレイ装置やプリンタなどの出力装置1005が接続され、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースである。
通信装置1006は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置であり、通信部による通信に用いられる。また、通信装置1006は、例えば、USB等のシリアルインターフェースを含む。
CPU1001が実行するプログラムは、リムーバブルメディア(CD−ROM、フラッシュメモリなど)又はネットワークを介して計算機に提供され、非一時的記憶媒体である不揮発性の補助記憶装置1003に格納される。このため、計算機は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
学習機1000、認証クライアント1100、及び認証サーバ1200は、それぞれ、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
学習機1000のCPU1001は、パラメータ初期化部1010、ニューラルネット算出部1030、ベクトル間距離算出部1040、ロス算出部1050、パラメータ更新部1060を含む。認証クライアント1100のCPU1001は、ニューラルネット算出部1120、ベクトル二値化部1130、登録ベクトル融合部1140、マスクベクトル生成部1150、テンプレート変換部1160、サンプル変換部1161、テンプレート照合部1170、及び通信部1180を含む。認証サーバ1200のCPU1001は、ベクトル間距離算出部1210及び通信部1220を含む。
例えば、学習機1000のCPU1001は、学習機1000の主記憶装置1002にロードされたパラメータ初期化部プログラムに従って動作することで、パラメータ初期化部1010として機能し、学習機1000の主記憶装置1002にロードされたニューラルネット算出プログラムに従って動作することで、ニューラルネット算出部1030として機能する。学習機1000のCPU1001に含まれる他の部、認証クライアント1100のCPU1001に含まれる各部、及び認証サーバ1200のCPU1001に含まれる各部についても同様である。
学習機1000の補助記憶装置1003は、学習データ格納部1090及びパラメータ格納部1091を含む。認証クライアント1100の補助記憶装置1003は、パラメータ格納部1190を含む。認証サーバ1200の補助記憶装置1003は、登録テンプレート格納部1290を含む。
以下、認証システムが実行する処理手順の一例を、説明する。図2は、パラメータ学習処理、生体情報登録処理、及び1:N認証処理の一例を示すフローチャートである。
まず、学習機1000は、パラメータの学習処理を行う(S2010)。この処理では、学習機1000は、学習データ格納部1090に予め格納された学習データに基づきニューラルネットワークのパラメータを学習し、学習したパラメータをパラメータ格納部1091に格納する。ステップS2010におけるパラメータ学習の詳細は、図3を参照して後述する。
ステップS2010で取得されたパラメータは、パラメータ格納部1091に格納され、学習処理の終了後に認証クライアント1100のパラメータ格納部1190へコピーされる。学習機1000と認証クライアント1100とがネットワーク1300を介して接続されていない場合には、例えば、リムーバブルメディアを介して、当該パラメータが認証クライアント1100に提供される。
次に、認証クライアント1100と認証サーバ1200とが、生体情報の登録処理を行う。まず認証クライアント1100の生体情報取得部1110は、例えば、入力装置1004から、又はネットワーク1300を介して他の装置から、ユーザの生体情報(例えば、指紋、顔、虹彩、静脈など)を取得する(S2110)。
認証クライアント1100は、取得した生体情報から、登録データを生成し(S2120)、認証サーバ1200へ送信する(S2130)。ステップS2120の登録データ生成処理により、登録ベクトル、マスクベクトル、及び登録テンプレートの3つが得られる。ステップS2120における登録データ生成処理の詳細は、図6を参照して後述する。
次に認証サーバ1200は、登録データを受信し(S2210)、受信した登録データを登録テンプレート格納部1290へ格納する(S2220)。登録データは、後述する登録テンプレート、バイナリベクトル、及びマスクベクトルを含む。以上の処理を各ユーザに対して実行することで各ユーザの生体情報登録が完了し、1:N認証が利用可能になる。
次に、認証クライアント1100と認証サーバ1200が、1:N認証処理を行う。認証クライアント1100の生体情報取得部1110はユーザから生体情報を取得する(S2140)。認証クライアント1100は、得られた生体情報から認証データを生成して(S2150)、認証サーバ1200へ送信する(S2160)。なお、ステップS2150の認証データ生成により、バイナリベクトルと認証サンプルが得られる。認証データは、バイナリベクトルを含む。なお、ステップS2150の詳細については、図7を参照して後述する。
認証サーバ1200は、認証データを受信し(S2230)、認証データに含まれるバイナリベクトルを使った絞り込み照合を行う(S2240)。ステップS2240の詳細については、図8を参照して後述する。ステップS2240において、候補テンプレートIDが得られる。認証サーバ1200は、当該候補テンプレートIDに基づき登録テンプレート格納部1290から候補テンプレートを取得し(S2250)、認証クライアント1100へ送信する(S2260)。
なお、ステップS2250において候補テンプレートが取得されなかった場合は、この時点で認証失敗となり、ステップS2260以降の処理は行われない。この場合、例えば、認証サーバ1200は、認証クライアント1100に認証が失敗したことを通知し、認証クライアント1100は、認証が失敗したことを示す認証結果を、例えば、出力装置1005等に出力する。
ステップS2250において候補テンプレートが1つ以上取得された場合は、ステップS2260以降の処理が実行される。このとき、候補テンプレート数は登録テンプレート格納部1290に格納されている登録テンプレートの数よりも少なくなるため、テンプレート照合の回数を削減することができる。これにより、本実施例の認証システムにおいては、単純に全件の登録テンプレートと認証サンプルの照合を行う場合と比較して高速な処理を実現することができる。
認証クライアント1100は、ステップS2260で送信された候補テンプレートを受信する(S2170)。テンプレート照合部1170は、候補テンプレートと、認証データ生成処理において生成された認証サンプルと、の照合を、例えば、既存の照合方法を用いて行う(S2180)。
ステップS2180におけるテンプレート照合の結果、認証サンプルと同一の生体情報を有する登録テンプレートが存在するか否かが決定する。テンプレート照合部1170は、認証サンプルと同一の生体情報を有する登録テンプレートが存在すると判定した場合、ステップS2190において、認証が成功したことを示す認証結果を、例えば、出力装置1005等に出力する。
一方、認証サンプルと同一の生体情報を有する登録テンプレートが存在しないと判定した場合は、ステップS2190において、認証が失敗したことを示す認証結果を、例えば、出力装置1005等に出力する。以上により、バイナリベクトルによるテンプレートの絞り込みを導入した1:N認証が完了する。
図3は、ステップS2010におけるパラメータ学習処理の一例を示すフローチャートである。本実施例では、Siamese Networkを用いたパラメータ学習が実行される。Siamese Networkは、2つの同一のネットワーク(本実施例ではいずれもニューラルネットワークとする)を含む。
Siamese networkにおける学習データは、それぞれ、当該2つのネットワークそれぞれに入力される入力情報(例えば、画像情報)と、当該2つの入力情報が同じクラスであるか異なるクラスであるかを示すフラグ(同一性情報)と、を含む。なお、当該同一のネットワークそれぞれは、多層(例えば3層以上)のネットワークである。
なお、入力情報が同じ人物の同じ生体情報である場合にのみ、クラスが同じであるものとする。具体的には、例えば、2つの入力情報がいずれもユーザAの右手の人差し指の静脈の画像情報(画像自体は異なってもよい)である場合は、これらの入力情報におけるクラスは等しい。例えば、ユーザAの右手の人差し指の静脈の画像情報と、ユーザBの右手の人差し指の静脈の画像情報と、のクラスは異なる。また、例えば、ユーザAの右手の人差し指の静脈の画像情報と、ユーザAの左手の人差し指の静脈の画像情報と、のクラスは異なる。つまり、入力情報が画像情報である場合には、同一の対象(被写体)から得られた画像情報においてのみ、クラスが等しい。
Siamese Networkにおける学習では、入力情報のクラスが同じであれば出力ベクトル間の距離が小さくなるように、入力情報のクラスが異なれば出力ベクトル間の距離が大きくなるように、ニューラルネットワークのパラメータを更新する。
まず、学習機1000のパラメータ初期化部1010は、パラメータ格納部1091に格納されているパラメータを初期化する(S3010)。パラメータ初期化部1010は、例えば、0を代入する、正規分布などの確率分布に従う乱数を代入するなどの方法によって、パラメータを初期化する。なお、パラメータの初期化方法として、ニューラルネットワークの学習で一般的に行われる他の方法が用いられてもよい。
学習データ取得部1020は、学習データ格納部1090から、学習に用いるデータを取得する(S3020)。具体的には、例えば、学習データ取得部1020は、学習データ(つまり、2つの生体情報のペアとフラグとを含むデータ)をM個選択する。なお、M個の学習データが一度に選択されてパラメータ更新が実行される方式は、Mini Batchと呼ばれる。なお、パラメータ更新のための学習データの選択方法として、ニューラルネットワークの学習で一般的に行われる他の方法が用いられてもよい。
ニューラルネット算出部1030は、学習データ中の生体情報をニューラルネットワークへ入力して出力層から出力される出力ベクトルを取得する(S3030)。なお、本実施例において、画像認識の分野でよく使われる畳み込みニューラルネットワークを用いることができる。
また、ニューラルネットワークの出力ベクトルの各要素の値を所定範囲に含まれる値に変換する関数が、ニューラルネットワークの最終層の関数として用いられる。当該所定範囲は、例えば、バイナリベクトルの各要素がとり得る2値を、それぞれ最大値及び最小値とする範囲である。本実施例では、バイナリベクトルの各要素は0又は1であるものとするため、当該所定範囲は0以上1以下である。
従って、本実施例において、各要素の値を0以上1以下に変換するSigmoid関数は、当該関数の一例である。以下、Sigmoid関数が用いられているものとする。このような関数が最終層の関数として、用いられることにより、出力ベクトルの各要素は、0以上1以下の値となり、確率値とみなすことができる。
ベクトル間距離算出部1040は、ステップS3020で取得した学習データに含まれる入力情報のペアそれぞれについて、ステップS3030で取得した出力ベクトル間の距離を算出する(S3040)。なお、ベクトル間距離としては、ベクトルの各要素の差分の二乗の総和(ユークリッド距離)、ベクトルの各要素の差分の絶対値の総和(マンハッタン距離)の他、下記の式1が示すベクトル間距離関数を適用することができる。
上記式1のベクトル間距離関数における、x、x’は距離を算出する対象のベクトルを表す。また、xiは出力ベクトルxのi番目の要素、x’iは出力ベクトルx’のi番目の要素であり、nは出力ベクトルx及び出力ベクトルx’の次数である。ニューラルネットワークの最終層がSigmoid関数であるため、出力ベクトルの各要素の値は0から1の値に正規化されている。従って、出力ベクトルの各要素は、当該出力ベクトルから得られるバイナリベクトル(出力ベクトルから得られるバイナリベクトルの詳細については後述する)において、当該出力ベクトルの各要素に対応する要素の値が1となる確率と解釈することもできる。このように解釈した場合、式1に示すベクトル間距離関数によって得られる距離は、2つのバイナリベクトルのハミング距離の期待値を表す。
続いて、ロス算出部1050は、ステップS3040で得られたベクトル間距離に基づいてロスを算出する(S3050)。ロスは、ベクトル間距離がどの程度理想的な値になっているかを示す値であり、0に近づくほど最適化が進んでいることを示す。下記の式2に示すContrastive Loss、及び下記の式3に示すロス関数は、いずれも、ロスの計算に用いられる数式の一例である。
ただし、式2及び式3におけるyは出力ベクトルのペアについてクラスが同じであるか異なるかを示すフラグであり、2つの出力ベクトルが同じクラスであるときに1、異なるクラスであるときに0である。また、Marginは、予め定められた値であり、例えば、1である。
式2及び式3を含むロス関数は、2つの出力ベクトルに対応する生体情報が同じクラスであり、かつ当該出力ベクトル間の距離が小さい場合、及び2つの出力ベクトルに対応する生体情報が異なるクラスであり、かつ当該出力ベクトル間の距離が大きい場合に、小さい値をとる。また、当該ロス関数は、2つの出力ベクトルに対応する生体情報が同じクラスであり、かつ当該出力ベクトル間の距離が大きい場合、及び2つの出力ベクトルに対応する生体情報が異なるクラスであり、かつ当該出力ベクトル間の距離が小さい場合に、大きい値をとる。
続いて、パラメータ更新部1060は、ステップS3050で算出したロスが小さくなるようにニューラルネットワークの各パラメータを更新する(S3060)。これにより、同じクラスのベクトル間の距離が小さくなり、異なるクラスのベクトル間の距離が大きくなるようにパラメータの学習が進む。また、出力ベクトルの各要素の値が0又は1に近づくようにパラメータの学習が進む。
続いて、パラメータ更新部1060は、学習が終了したか否かを判定する(S3070)。具体的には、例えば、パラメータ更新部1060は、Mini Batchの実行回数が所定数に到達することを示す第1の条件が満たされた場合に、学習が終了したと判定し、第1の条件が満たされていない場合に、学習が終了していないと判定する。また、例えば、パラメータ更新部1060は、ロスの値が所定値を下回ることを示す第2の条件が満たされた場合に、学習が終了したと判定し、第2の条件が満たされない場合に、学習が終了していないと判定する。また、パラメータ更新部1060は、例えば、第1の条件又は第2の条件の少なくとも一方が満たされた場合に、学習が終了したと判定し、双方とも満たされていない場合に、学習が終了していないと判定してもよい。
パラメータ更新部1060が、学習が終了していないと判定した場合(S3070:No)、ステップS3020に戻り再度学習を実行する。パラメータ更新部1060は、学習が終了したと判定した場合(S3070:Yes)、得られたパラメータをパラメータ格納部1091に格納する(S3080)。
なお、本実施例では、2つのニューラルネットワークを含むSiamse Netoworkによるパラメータ学習が行われたが、3つ以上のニューラルネットワーク(例えば、Triplet Network)を含むネットワークによってパラメータ学習が行われてもよい。以上により、パラメータの学習が完了する。
図4は、学習データ格納部1090に格納された学習データのデータ構造の一例を示す説明図である。学習データは、学習生体情報410とクラス名420とを含む。学習生体情報410は、学習用に収集した1:N認証に用いる生体情報と同じモダリティの生体情報であり、例えば、指紋、顔、虹彩、静脈などの画像を含む。
クラス名420は、学習生体情報410のクラスの名称であり、例えば英数字で構成される文字列である。このクラスは、生体情報が帰属する人物や身体の部位を示す。クラス名が同一の生体情報は、同じ生体から取得された同じ種類の生体情報である。クラス名が異なる生体情報は、異なる生体から取得された生体情報である。
図5は、パラメータ格納部1091に格納されるパラメータのデータ構造の一例を示す説明図である。図5に示すパラメータはニューラルネットワークの計算過程を一意に決定するために必要となるパラメータである。例えば、当該ニューラルネットワークが畳み込みニューラルネットワークである場合、パラメータは、畳み込みカーネルの各輝度値、バイアスの値、及び全結合層の重みの値、などを含む。
これらのパラメータが決まれば、入力する生体情報に対して、出力ベクトルの値を一意に算出することができる。なお、本実施例では、画像情報が生体情報として用いられるため、パラメータが輝度値を含んでいるが、例えば声の情報が生体情報として用いられる場合には、輝度値の代わりに例えば、声を示す信号から得られる所定の特徴量がパラメータに含まれる。
図6は、認証クライアント1100による登録データ生成処理(S2120)の詳細の一例を示すフローチャートである。ステップS2010の終了後かつステップS2120の開始前に、パラメータ格納部1091に格納されたパラメータが、パラメータ格納部1190にコピーされて格納される。
まず、ニューラルネット算出部1120は、パラメータ格納部1190に格納されたパラメータで定義されるニューラルネットワークにステップS2110で取得した生体情報を入力し、出力ベクトルを生成する(S6010)。
ベクトル二値化部1130は、ステップS6010で得られた出力ベクトルに対して二値化処理を行って、全ての要素が0又は1であるバイナリベクトルを生成する(S6020)。ベクトル二値化部1130は、ステップS6020において、例えば、出力ベクトルの各要素の値域が0から1である場合、所定の閾値(例えば0.5)未満の要素を0、当該所定の閾値以上の要素を1に変換することで二値化処理を実施する。ただし、この二値化処理はこのような単純な閾値処理に限られない。
例えば、ベクトル二値化部1130は、出力ベクトルの各要素の値について、当該値が他の出力ベクトルの当該要素における値の所定の閾値以下の割合(例えば下位50%)に含まれれば0、当該所定の閾値以上の割合(例えば上位50%)に含まれれば1に変換する等の、一般的な二値化方式が適用してもよい。なお、他の出力ベクトルとは、認証クライアント1100による過去の認証処理によって得られた出力ベクトルを含んでもよいし、学習データ格納部1090に格納された学習データによって得られた出力ベクトルを含んでもよい。
なお、同じ人の同じ種類の複数の生体情報から登録情報が生成されてもよい。つまり、ステップS2110が複数回実行されて、同じ人の同じ種類の複数の生体情報が生成され、当該複数の生体情報それぞれについて、ステップS6010及びステップS6020が実行されることにより、複数のバイナリベクトルが生成される。
なお、1つの生体情報から複数のバイナリベクトルが生成されてもよい。具体的には、例えば、生体情報が画像である場合、1つの画像に対して、機械的に位置ずれさせたり、傾けさせたり、歪ませたり、ノイズを加えたり、等して、複数の画像を生成してもよい。
登録ベクトル融合部1140は、複数のバイナリベクトルを融合して、登録ベクトルを生成する(S6030)。登録ベクトル融合部1140は、例えば、複数のバイナリベクトルの各要素の中央値を算出し、各要素の中央値を要素の値とするバイナリベクトルを登録ベクトルに決定する。なお、当該複数のバイナリベクトルの個数が偶数個である場合には、例えば、中央の2つの値の一方(例えば大きい方)の値を、中央値とする。なお、中央値以外の統計量(例えば、平均又は最頻値等)が用いられてもよい。
なお、登録ベクトル融合部1140は、複数のバイナリベクトルを、そのまま登録ベクトルに決定してもよいし、1つのバイナリベクトルのみが生成された場合には、当該バイナリベクトルを登録ベクトルに決定してもよい。
続いて、マスクベクトル生成部1150は、登録ベクトルに対応するマスクベクトルを生成する(S6040)。バイナリベクトルの照合の際に、マスクベクトルを作用させることで照合の精度が向上する。生体情報は、特徴空間上で一様に分布しておらず、個人ごとに特定の偏りがある。このため、バイナリベクトルの各要素に含まれる誤差には個体差が発生する。
マスクベクトル生成部1150は、例えば、登録時に取得した複数のバイナリベクトルや、生体情報に恣意的に摂動やノイズを加えたものから生成した複数のバイナリベクトルを分析し、ベクトルの各要素の値のぶれ易さ(即ち信頼度の低さ)を算出する。
マスクベクトル生成部1150は、例えば、生成した登録ベクトルの各要素の値が、どの程度の確率で反転するかを集計することにより、このぶれ易さを算出する。具体的には、マスクベクトル生成部1150は、例えば、分析対象の複数のバイナリベクトルの各要素について、当該要素が0であるバイナリベクトルの数と当該要素が1であるバイナリベクトルの数との差が大きいほど、当該要素におけるぶれ易さを低い値に設定し、当該差が小さいほど当該要素におけるぶれ易さを高い値に設定する。
また、マスクベクトル生成部1150は、1つの生体情報から得られた出力ベクトルから、ぶれ易さを算出してもよい。具体的には、例えば、出力ベクトルの各要素が所定の閾値未満の場合に0、所定の閾値以上の場合に1となるバイナリベクトルが生成される場合には、マスクベクトル生成部1150は、当該要素の値が当該所定の閾値に近いほど、ぶれ易さを高い値に設定し、当該要素の値が当該所定の閾値に遠いほど、ぶれ易さを低い値に設定する。
ぶれ易さが所定値以上の要素については、誤差が含まれやすいため、当該要素を除外したベクトルを用いてデータの照合を実行した方が、精度が高まる可能性がある。この誤差が含まれやすい要素の除外を実現するのがマスクベクトルである。
マスクベクトル生成部1150は、具体的には、誤差が含まれやすい(例えば、ぶれ易さが所定値以上の)要素の値を0、誤差が含まれにくい(例えば、ぶれ易さが所定値未満の)要素の値を1とするマスクベクトルを生成し、バイナリベクトルと共に登録しておく。
続いて、テンプレート変換部1160は、ステップS2110で取得された生体情報に対してテンプレート変換を施し、登録テンプレートを生成する(S6050)。テンプレート変換部1160は、生体情報に対して特徴抽出処理を行うことで、生体情報を特徴点やパターン画像へ変換したデータを、登録テンプレートとして生成してもよい。
また、テンプレート変換部1160は、変換後のデータに対してテンプレート保護技術を適用して、不可逆な変換を行い、元の生体情報やその特徴を秘匿したデータを登録テンプレートとして生成してもよい。以上により、認証クライアント1100による、ステップS2120の登録データ生成処理が完了する。
図7は、認証クライアント1100によるステップS2150の認証データ生成処理の詳細の一例を示すフローチャートである。まず、ニューラルネット算出部1120は、パラメータ格納部1190に格納されたパラメータで定義されるニューラルネットワークにステップS2140で取得した生体情報を入力し、出力ベクトルを生成する(S7010)。
ベクトル二値化部1130は、ステップS7010で得られた出力ベクトルに対して二値化処理を行って、バイナリベクトルを生成する(S7020)。ステップS7010及びステップS7020の処理は、それぞれステップS6010及びステップS6020の処理と同様であるため、詳細な説明を省略する。
サンプル変換部1161は、ステップS2140で取得された生体情報に対して、登録テンプレート生成処理における変換と同様の、サンプル変換を施すことにより、認証サンプルを生成する(S7030)。サンプル変換部1161は、登録テンプレートと同様に、生体情報から特徴抽出処理を行うことで、生体情報を特徴点やパターン画像へ変換したデータを、認証サンプルとして生成してもよい。
また、テンプレート保護技術を適用して登録テンプレートが生成された場合、サンプル変換部1161は、変換後のデータに対して当該テンプレート保護技術を適用して、認証サンプルを生成する。以上により、認証クライアント1100によるステップS2150の認証データ生成処理(S2150)が完了する。
図8は、認証サーバ1200によるステップS2240の絞り込み照合処理の詳細の一例を示すフローチャートである。まず、ベクトル間距離算出部1210は、変数iに1を代入する(S8010)。
ベクトル間距離算出部1210は、登録テンプレート格納部1290に格納された、i番目の登録データに含まれるバイナリベクトルである登録ベクトルを参照し、ステップS7020で生成されたバイナリベクトルとの距離を算出する(S8020)。ベクトル間距離算出部1210は、これらのベクトル間の距離として、例えば、ハミング距離を算出する。
さらに、ステップS6040でマスクベクトルが生成された場合には、ベクトル間距離算出部1210は、マスクベクトルの値が1である要素のみからハミング距離を算出することができる。具体的には、例えば、ベクトル間距離算出部1210は、距離算出対象のバイナリベクトルそれぞれについてマスクベクトルとの論理積を算出し、当該論理積間の排他的論理和を算出し、得られたベクトルの要素のうち値が1である要素の数をカウントすることで、マスク対象の要素が除外されたハミング距離を算出することができる。
なお、マスク対象の要素数(即ち、マスクベクトルにおいて値が1である要素の数)が多いほど、バイナリベクトル間の距離が小さくなりやすいため、ベクトル間距離算出部1210は、例えば、算出した距離をマスク非対象の要素数で割ることによって正規化した距離を、算出しておくことが望ましい。
続いて、ベクトル間距離算出部1210は、ステップS8020で算出した距離が所定の閾値Tより小さいか否かを判定する(S8030)。ベクトル間距離算出部1210は、当該距離が当該閾値Tより小さいと判定した場合(S8030:Yes)、i番目の登録テンプレートのIDを候補テンプレートIDとして追加する(S8040)。
距離が閾値Tより小さいということは、一定以上の確率でi番目の登録データが認証対象者のものであることを示すため、当該登録データの登録テンプレート自体が照合対象となる。また、ベクトル間距離算出部1210は、当該距離が当該閾値T以上と判定した場合(S8030:No)、ステップS8050に遷移する。
続いて、ベクトル間距離算出部1210は、iを1増加させて(S8050)、登録データの総数Nと比較する(S8060)。ベクトル間距離算出部1210は、増加後のiが総数N未満であると判定した場合(S8060:No)、ステップS8020に戻り、iが総数N以上であると判定した場合(S8060:Yes)、絞り込み照合処理を完了する。以上により、ステップS2240の絞り込み照合処理が完了する。
図9は、登録テンプレート格納部1290に格納された登録データのデータ構造の一例を示す説明図である。登録データは、例えば、ユーザID欄910、登録ベクトル欄920、マスクベクトル欄930、及び登録テンプレートらn940を含んで構成される。ユーザID欄910は、各ユーザに対して一意に識別する情報であるユーザIDを格納する。ユーザIDは、例えば、英数字で構成される。ユーザIDは、登録データ生成処理(S2120)において認証クライアント1100によって生成されてもよいし、登録データ格納処理(S2220)において認証サーバ1200によって生成されてもよい。
登録ベクトル欄920は、ステップS6030で生成された登録ベクトルを格納する。マスクベクトル欄930は、ステップS6040で生成されたマスクベクトルを格納する。登録テンプレート欄940は、ステップS6050で生成された登録テンプレートを格納する。
以上、本実施例の認証システムは、複数の同一のニューラルネットワークを用いて、同一の人の同種の生体情報から得られた出力ベクトルの距離が近くなるように、かつ異なる人又は異なる生体情報から得られた出力ベクトルの距離が遠くなるように、当該ニューラルネットワークのパラメータを学習する。また、認証システムは、当該パラメータが適用されたニューラルネットワークによって、登録対象の生体情報からバイナリベクトルを生成し、登録する。
また、認証システムは、認証対象の生体情報を取得し、当該パラメータが適用されたニューラルネットワークによって当該生体情報からバイナリベクトルを生成し、生成したバイナリベクトルと、登録されたバイナリベクトルと、を比較して、認証対象の生体情報と、同一の対象の生体情報の候補を絞る。つまり、本実施例の認証システムは、登録テンプレートを直接比較する対象を絞ることにより、認証を高速化することができる。さらに、本実施例の認証システムは、複数の同一のニューラルネットワークを用いた学習により、認証精度の低下を抑制することができる。
なお、本実施例の生体認証システムは、生体情報に限らず、入力画像と同一の登録画像を検索する画像検索システムに適用することができる。この場合、認証クライアント1100は検索クライアントとして、認証サーバ1200は検索サーバとして機能する。つまり、画像検索システムは、検索クライアントに入力された入力画像から生成されたバイナリベクトルと、登録されたバイナリベクトルと、を比較して、入力画像と同一の登録画像の候補(類似画像)を絞ることができる。
本実施例の認証システムは、1つの登録データについて、実施例1で説明したバイナリベクトルに加えて、これより次数の低いバイナリベクトルを生成する。また、本実施例の認証システムは、絞り込み照合処理において、認証対象の生体情報について、当該次数の低いバイナリベクトルを生成して、登録された次数の低いバイナリベクトルとの照合を行い、一次絞り込み処理を実施する。
さらに、認証システムは、絞り込み照合処理において、認証対象の生体情報と、一次絞り込み処理によって絞り込まれた登録データと、の間で次数の高いバイナリベクトル(実施例1においても生成されていたバイナリベクトル)を比較する二次絞込みをして、候補テンプレートを取得する。つまり、本実施例の認証システムは、次数の低いバイナリベクトルを用いた一次絞り込みを実行して、予め二次絞込みの対象を絞り込むことで、さらに高速な1:N認証を実現する。以下、実施例1との相違点を説明する。
図12は、ステップS2010におけるパラメータ学習処理の一例を示すフローチャートである。図3との相違点を説明する。パラメータ更新部1060が、学習が終了したと判定した場合(S3070:Yes)、ニューラルネット算出部1120は、前述のSiamese Networkに含まれる同一のニューラルネットワーク(以下、第一ニューラルネットワークとも呼ぶ)それぞれに同一の出力層を追加されたネットワーク(以下第二ニューラルネットワークとも呼ぶ)からなる、新たなSiamese Networkを参照する(S12000)。つまり、第一ニューラルネットワークがN層からなるとすると、第二ニューラルネットワークはN+1層からなり、第二ニューラルネットワークの第1層、・・・、第N層は、それぞれ、第一ニューラルネットワークの第1層、・・・、第N層と一致する。
以下、学習機1000は、第二ニューラルネットワークにおいて、第一ニューラルネットワークと共通するパラメータを、ステップS3070において学習が終了したと判定した時点の値に固定した状態で、第二ニューラルネットワークの出力層に関するパラメータ(つまり第一ニューラルネットワークと非共通のパラメータ)を学習する。
まず、学習機1000のパラメータ初期化部1010は、第二ニューラルネットワークの出力層に関するパラメータを初期化する(S12010)。パラメータ初期化の方法は、ステップS3010と同様である。学習データ取得部1020は、学習データ格納部1090から、学習に用いるデータを取得する(S12020)。学習データの取得方法は、ステップS3020と同様である。
ニューラルネット算出部1030は、学習データ中の生体情報を第二ニューラルネットワークへ入力して出力層から出力される出力ベクトルを取得する(S12030)。また、第二ニューラルネットワークの出力の各要素の値を0以上1以下の値に正規化する関数(例えば、Sigmoid関数)が、第二ニューラルネットワークの出力層の関数として用いられることが望ましい。
ベクトル間距離算出部1040は、ステップS12020で取得した学習データに含まれる入力情報のペアそれぞれについて、ステップS12030で取得した出力ベクトル間の距離を算出する(S12040)。ベクトル間距離の算出方法は、ステップS3040と同様である。
続いて、ロス算出部1050は、ステップS12040で得られたベクトル間距離に基づいてロスを算出する(S12050)。ロスの算出方法は、ステップS3050と同様である。続いて、パラメータ更新部1060は、ステップS12050で算出したロスが小さくなるようにニューラルネットワークの各パラメータを更新する(S12060)。
続いて、パラメータ更新部1060は、学習が終了したか否かを判定する(S3070)。学習終了判定の方法は、ステップS3070と同様である。パラメータ更新部1060が、学習が終了していないと判定した場合(S12070:No)、ステップS12020に戻り再度学習を実行する。パラメータ更新部1060は、学習が終了したと判定した場合(S12070:Yes)、ステップS3080に遷移する。
以下、図6について実施例1との相違点を説明する。ステップS6010において、ニューラルネット算出部1120は、第一ニューラルネットワークにステップS2110で取得した生体情報を入力して第一出力ベクトルを生成し、第二ニューラルネットワークにステップS2110で取得した生体情報を入力して第二出力ベクトルを生成する。
ステップS6020において、ベクトル二値化部1130は、第一出力ベクトルに対して二値化処理を行って第一バイナリベクトルを生成し、第二出力ベクトルに対して二値化処理を行って第二バイナリベクトルを生成する。
ステップS6030において、登録ベクトル融合部1140は、複数の第一バイナリベクトルを融合して、第一登録ベクトルを生成し、複数の第二バイナリベクトルを融合して、第二登録ベクトルを生成する。ステップS6040において、マスクベクトル生成部1150は、第一登録ベクトルに対応する第一マスクベクトルと、第二登録ベクトルに対応する第二マスクベクトルと、を生成する。
以下、図7について実施例1との相違点を説明する。ステップS7010において、ニューラルネット算出部1120は、第一ニューラルネットワークにステップS2110で取得した生体情報を入力して第一出力ベクトルを生成し、第二ニューラルネットワークにステップS2140で取得した生体情報を入力して第二出力ベクトルを生成する。
ステップS7020において、ベクトル二値化部1130は、第一出力ベクトルに対して二値化処理を行って第一バイナリベクトルを生成し、第二出力ベクトルに対して二値化処理を行って第二バイナリベクトルを生成する。
図13は、認証サーバ1200によるステップS2240の絞り込み照合処理の詳細の一例を示すフローチャートである。図8との相違点を説明する。ステップS8010に続いて、ベクトル間距離算出部1210は、登録テンプレート格納部1290に格納された、i番目の登録データに含まれる第二登録ベクトルを参照し、ステップS7020で生成された第二バイナリベクトルとの距離を算出する(S13010)。ベクトル間の距離の算出方法は、ステップS8020と同様である。
続いて、ベクトル間距離算出部1210は、ステップ13010で算出した距離が所定の閾値T2より小さいか否かを判定する(S13020)。ベクトル間距離算出部1210は、当該距離が当該閾値T2以上と判定した場合(S13020:No)、ステップS8050に遷移する。
ベクトル間距離算出部1210は、当該距離が当該閾値T2より小さいと判定した場合(S13020:Yes)、登録テンプレート格納部1290に格納された、i番目の登録データに含まれる第一登録ベクトルを参照し、ステップS7020で生成された第一バイナリベクトルとの距離を算出する(S13030)。
続いて、ベクトル間距離算出部1210は、ステップ13030で算出した距離が、所定の閾値T1より小さいか否かを判定する(S13040)。ベクトル間距離算出部1210は、当該距離が当該閾値T1以上と判定した場合(S13040:No)、ステップS8050に遷移する。ベクトル間距離算出部1210は、当該距離が当該閾値T1より小さいと判定した場合(S13040:Yes)、ステップS8040に遷移してi番目の登録テンプレートのIDを候補テンプレートIDとして追加する。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。