(57)【要約】【課題】画像検索を高速かつ高精度に行う。【解決手段】学習システムは、画像ペアの画像情報と、該画像ペアが同一の対象の画像であるか否かを示すフラグと、画像情報が入力され各要素の値が所定範囲に含まれる出力ベクトルを出力する第１ニューラルネットワークと、を保持し、第１ニューラルネットワークに該画像ペアの各画像の画像情報を入力して、各画像について第１出力ベクトルを出力し、第１出力ベクトル間の距離の期待値を算出し、該フラグを参照して、該画像ペアが同一の対象の画像である場合に算出した期待値が小さく、該画像ペアが異なる対象の画像である場合に算出した期待値が大きくなるよう、第１ニューラルネットワークのパラメータを更新する。【選択図】図１
2019101927.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークのパラメータを学習する学習システムであって、
プロセッサとメモリとを含み、
前記メモリは、
画像ペアの画像情報と、
前記画像ペアが同一の対象の画像であるか否かを示すフラグと、
画像情報が入力され、各要素の値が所定範囲に含まれる出力ベクトルを出力する第１ニューラルネットワーク、を示すネットワーク情報と、を保持し、
前記プロセッサは、
前記第１ニューラルネットワークに前記画像ペアの各画像の画像情報を入力して、各画像について第１出力ベクトルを出力し、
前記第１出力ベクトル間の距離の期待値を算出し、
前記フラグを参照して、前記画像ペアが同一の対象の画像である場合に前記算出した期待値が小さく、前記画像ペアが異なる対象の画像である場合に前記算出した期待値が大きくなるよう、前記第１ニューラルネットワークのパラメータを更新する、学習システム。
【請求項２】
請求項１に記載の学習システムであって、
前記所定範囲は０以上１以下であり、
前記プロセッサは、前記第１出力ベクトル間の距離の期待値として、下記の式１を用いて、前記第１出力ベクトル間のハミング距離の期待値を算出し、
【数１】
2019101927.tif 000006
上記式１において、ｘは前記画像ペアの一方の画像に対応する第１出力ベクトルであり、ｘ’は前記画像ペアの他方の画像に対応する第１出力ベクトルであり、ｎは第１出力ベクトルの次数であり、ｘｉはｘのｉ番目の要素であり、ｘ’ｉはｘ’のｉ番目の要素である、学習システム。
【請求項３】
請求項２に記載の学習システムであって、
前記画像ペアが同一の対象の画像である場合における前記フラグの値は１であり、
前記画像ペアが異なる対象の画像である場合における前記フラグの値は０であり、
前記プロセッサは、下記の式２を用いて、前記第１ニューラルネットワークのロスを算出し、
【数２】
2019101927.tif 000007
上記式２において、ｙは前記フラグであり、Ｍａｒｇｉｎは定数であり、
前記プロセッサは、前記算出したロスが小さくなるよう、前記第１ニューラルネットワークのパラメータを更新する、学習システム。
【請求項４】
請求項２に記載の学習システムであって、
前記画像ペアが同一の対象の画像である場合における前記フラグの値は１であり、
前記画像ペアが異なる対象の画像である場合における前記フラグの値は０であり、
前記プロセッサは、下記の式３を用いて、前記第１ニューラルネットワークのロスを算出し、
【数３】
2019101927.tif 000008
上記式３において、ｙは前記フラグであり、Ｍａｒｇｉｎは定数であり、
前記プロセッサは、前記算出したロスが小さくなるよう、前記第１ニューラルネットワークのパラメータを更新する、学習システム。
【請求項５】
請求項１に記載の学習システムであって、
前記第１ニューラルネットワークの出力層にＳｉｇｍｏｉｄ関数が用いられる、学習システム。
【請求項６】
請求項１に記載の学習システムであって、
前記ネットワーク情報は、各要素の値が所定範囲に含まれる出力ベクトルを出力し、前記第１ニューラルネットワークに出力層が追加された第２ニューラルネットワークを示し、
前記第２ニューラルネットワークの出力ベクトルである第２出力ベクトルの次数は、前記第１出力ベクトルの次数より低く、
前記プロセッサは、
前記第２ニューラルネットワークにおいて、前記第１ニューラルネットワークと共通するパラメータを、前記第１ニューラルネットワークの更新後のパラメータに固定し、
前記第２ニューラルネットワークに前記画像ペアの各画像の画像情報を入力して、各画像について第２出力ベクトルを出力し、
前記画像ペアの各画像の第２出力ベクトル間の距離の期待値を算出し、
前記フラグを参照して、前記画像ペアが同一の対象の画像である場合に前記算出した期待値が小さく、前記画像ペアが異なる対象の画像である場合に前記算出した期待値が大きくなるよう、前記第２ニューラルネットワークの出力層に関するパラメータを更新する、学習システム。
【請求項７】
学習システムと検索クライアントと検索サーバとを含む画像検索システムであって、
前記学習システムは、
画像ペアの画像情報と、
前記画像ペアが同一の対象の画像であるか否かを示すフラグと、
画像情報が入力され、各要素の値が所定範囲に含まれる出力ベクトルを出力する第１ニューラルネットワーク、を示す第１ネットワーク情報と、を保持し、
前記第１ニューラルネットワークに前記画像ペアの各画像の画像情報を入力して、各画像について第１出力ベクトルを出力し、
前記第１出力ベクトル間の距離の期待値を算出し、
前記フラグを参照して、前記画像ペアが同一の対象の画像である場合に前記算出した期待値が小さく、前記画像ペアが異なる対象の画像である場合に前記算出した期待値が大きくなるよう、前記第１ニューラルネットワークのパラメータを更新し、
前記検索クライアントは、
更新後のパラメータを有する前記第１ニューラルネットワークの情報を示す第２ネットワーク情報を保持し、
前記第２ネットワーク情報が示す前記第１ニューラルネットワークに入力画像の画像情報を入力して、前記入力画像の第１出力ベクトルを出力し、
閾値処理を行って、前記入力画像の第１出力ベクトルを第１バイナリベクトルに変換して、前記検索サーバに送信し、
前記第１バイナリベクトルの各要素は、前記所定範囲の最大値又は最小値であり、
前記検索サーバは、
複数の登録画像それぞれに対応する第１バイナリベクトルを保持し、
前記入力画像の第１バイナリベクトルと、前記複数の登録画像の第１バイナリベクトルと、を比較して、前記複数の登録画像から、前記入力画像と同一の対象の画像の第１候補を決定する、画像検索システム。
【請求項８】
請求項７に記載の画像検索システムであって、
前記所定範囲は０以上１以下であり、
前記学習システムは、前記第１出力ベクトル間の距離の期待値として、下記の式４を用いて、前記第１出力ベクトル間のハミング距離の期待値を算出し、
【数４】
2019101927.tif 000009
上記式４において、ｘは前記画像ペアの一方の画像に対応する第１出力ベクトルであり、ｘ’は前記画像ペアの他方の画像に対応する第１出力ベクトルであり、ｎは第１出力ベクトルの次数であり、ｘｉはｘのｉ番目の要素であり、ｘ’ｉはｘ’のｉ番目の要素である、画像検索システム。
【請求項９】
請求項８に記載の画像検索システムであって、
前記画像ペアが同一の対象の画像である場合における前記フラグの値は１であり、
前記画像ペアが異なる対象の画像である場合における前記フラグの値は０であり、
前記学習システムは、下記の式５を用いて、前記第１ニューラルネットワークのロスを算出し、
【数５】
2019101927.tif 000010
上記式５において、ｙは前記フラグであり、Ｍａｒｇｉｎは定数であり、
前記学習システムは、前記算出したロスが小さくなるよう、前記第１ニューラルネットワークのパラメータを更新する、画像検索システム。
【請求項１０】
請求項８に記載の画像検索システムであって、
前記画像ペアが同一の対象の画像である場合における前記フラグの値は１であり、
前記画像ペアが異なる対象の画像である場合における前記フラグの値は０であり、
前記学習システムは、下記の式６を用いて、前記第１ニューラルネットワークのロスを算出し、
【数６】
2019101927.tif 000011
上記式６において、ｙは前記フラグであり、Ｍａｒｇｉｎは定数であり、
前記学習システムは、前記算出したロスが小さくなるよう、前記第１ニューラルネットワークのパラメータを更新する、画像検索システム。
【請求項１１】
請求項７に記載の画像検索システムであって、
前記第１ニューラルネットワークの出力層にＳｉｇｍｏｉｄ関数が用いられる、画像検索システム。
【請求項１２】
請求項７に記載の画像検索システムであって、
前記第１ネットワーク情報は、各要素の値が所定範囲に含まれる出力ベクトルを出力し、前記第１ニューラルネットワークに出力層が追加された第２ニューラルネットワーク、を示し、
前記第２ニューラルネットワークの出力ベクトルである第２出力ベクトルの次数は、前記第１出力ベクトルの次数より低く、
前記学習システムは、
前記第２ニューラルネットワークにおいて、前記第１ニューラルネットワークと共通するパラメータを、前記第１ニューラルネットワークの更新後のパラメータに固定し、
前記第２ニューラルネットワークに前記画像ペアの各画像の画像情報を入力して、各画像について第２出力ベクトルを出力し、
前記画像ペアの各画像の第２出力ベクトル間の距離の期待値を算出し、
前記フラグを参照して、前記画像ペアが同一の対象の画像である場合に前記算出した期待値が小さく、前記画像ペアが異なる対象の画像である場合に前記算出した期待値が大きくなるよう、前記第２ニューラルネットワークの出力層に関するパラメータを更新し、
前記第２ネットワーク情報は、更新後のパラメータを有する前記第２ニューラルネットワークの情報を示し、
前記検索クライアントは、
前記第２ネットワーク情報が示す前記第２ニューラルネットワークに前記入力画像の画像情報を入力して、前記入力画像の第２出力ベクトルを出力し、
閾値処理を行って、前記入力画像の第２出力ベクトルを第２バイナリベクトルに変換して、前記検索サーバに送信し、
前記第２バイナリベクトルの各要素は、前記所定範囲の最大値又は最小値であり、
前記検索サーバは、
前記複数の登録画像それぞれに対応する第２バイナリベクトルを保持し、
前記入力画像の第２バイナリベクトルと、前記複数の登録画像の第２バイナリベクトルと、を比較して、前記複数の登録画像から、前記入力画像と同一の対象の画像の第２候補を決定し、
前記入力画像の第１バイナリベクトルと、前記第２候補に含まれる登録画像の第１バイナリベクトルと、を比較して、前記第２候補に含まれる登録画像から、前記第１候補を決定する、画像検索システム。
【請求項１３】
請求項７に記載の画像検索システムであって、
前記複数の登録画像それぞれに対応する第１バイナリベクトルは、
前記第２ネットワーク情報が示す前記第１ニューラルネットワークと、当該第１バイナリベクトルに対応する登録画像と同一の対象の複数の画像と、から得られた第１出力ベクトル、に対して前記閾値処理が行われて得られたバイナリベクトル、が所定の統計処理によって融合されたバイナリベクトルである、画像検索システム。
【請求項１４】
請求項７に記載の画像検索システムであって、
前記検索サーバは、
前記複数の登録画像それぞれに対応するマスクベクトルを保持し、
前記マスクベクトルの各要素は、
前記第２ネットワーク情報が示す前記第１ニューラルネットワークと、当該マスクベクトルに対応する登録画像と同一の対象の複数の画像と、から得られた第１バイナリベクトルの当該要素の値が、同一の値をとる信頼度を示し、
前記検索サーバは、
前記複数の登録画像それぞれについてマスクベクトルを参照して前記信頼度が高い要素をマスク対象の要素として特定し、
前記入力画像の第１バイナリベクトルの前記マスク対象でない要素と、当該登録画像の第１バイナリベクトルの前記マスク対象でない要素と、を比較して、前記第１候補に含める登録画像を決定する、画像検索システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習システム及び画像検索システムに関する。
【背景技術】
【０００２】
指紋、顔、及び静脈などの生体情報を活用して個人を認証する生体認証技術が近年普及している。生体認証において、個人の生体情報が予め登録され、認証時に入力された生体情報と登録した生体情報とが照合されることで個人が特定される。この生体認証には、ユーザのＩＤを入力して登録生体情報を特定した上で照合を行う１：１認証と、ユーザのＩＤを入力せずに全ての登録生体情報と照合を行う１：Ｎ認証と、がある。１：Ｎ認証において、ユーザはＩＤを入力する必要がないため、ユーザはＩＤを記憶したりＩＤを入力したりする手間がなく、利便性が高い。
【０００３】
一方、１：Ｎ認証では、認証対象の生体情報と、全ての登録生体情報と、の間で照合が行われるため、１：１認証と比較して照合に時間がかかる。例えば、１００万件の登録生体情報がある場合に単純に全件と照合を行うと、１：１認証の１００万倍の照合時間がかかる。
【０００４】
このような大規模な１：Ｎ認証を高速に行うための技術として、特開２０１３−２０６１８７号公報（特許文献１）がある。この、公報には、「情報検索装置１は、ハミング距離を用いた検索処理の対象となるデータの特徴量ベクトルを、バイナリ記号とのハミング距離を０とするワイルドカード記号と前記バイナリ記号とを含む記号列に変換する。そして、情報検索装置１は、クエリデータをバイナリ化し、バイナリ化したクエリデータとのハミング距離が所定の値以下となる記号列を検索することで、クエリデータの近傍データを検索する。」と記載されている（要約参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−２０６１８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載の技術は、単純な射影によるバイナリベクトル化を１：Ｎ認証に適用している。当該方法によれば、認証速度が向上しても、認証の精度が低下するおそれがある。本発明の一態様は、例えば、１：Ｎ認証における生体情報の照合のような、画像検索を高速かつ高精度に行うことを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明の一態様は以下の構成を採用する。ニューラルネットワークのパラメータを学習する学習システムは、プロセッサとメモリとを含み、前記メモリは、画像ペアの画像情報と、前記画像ペアが同一の対象の画像であるか否かを示すフラグと、画像情報が入力され、各要素の値が所定範囲に含まれる出力ベクトルを出力する第１ニューラルネットワーク、を示すネットワーク情報と、を保持し、前記プロセッサは、前記第１ニューラルネットワークに前記画像ペアの各画像の画像情報を入力して、各画像について第１出力ベクトルを出力し、前記第１出力ベクトル間の距離の期待値を算出し、前記フラグを参照して、前記画像ペアが同一の対象の画像である場合に前記算出した期待値が小さく、前記画像ペアが異なる対象の画像である場合に前記算出した期待値が大きくなるよう、前記第１ニューラルネットワークのパラメータを更新する、学習システム。
【発明の効果】
【０００８】
本発明の一態様によれば、画像検索を高速かつ高精度に行うことができる。上記した以外の課題、構成、及び効果は以下の実施形態によって明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】実施例１における認証システムの構成例を示すブロック図である。
【図２】実施例１におけるパラメータ学習処理、生体情報登録処理、及び１：Ｎ認証処理の一例を示すフローチャートである。
【図３】実施例１におけるパラメータ学習処理の一例を示すフローチャートである。
【図４】実施例１における学習データのデータ構造の一例を示す説明図である。
【図５】実施例１におけるパラメータのデータ構造の一例を示す説明図である。
【図６】実施例１における登録データ生成処理の詳細の一例を示すフローチャートである。
【図７】実施例１における認証データ生成処理の詳細の一例を示すフローチャートである。
【図８】実施例１における絞り込み照合処理の詳細の一例を示すフローチャートである。
【図９】実施例１における登録データのデータ構造の一例を示す説明図である。
【図１０】実施例１における学習機、認証クライアント、及び認証サーバのハードウェア構成例を示すブロック図である。
【図１１】実施例２におけるパラメータ学習処理、生体情報登録処理、及び１：Ｎ認証処理の一例を示すフローチャートである。
【図１２】実施例３におけるパラメータ学習処理の一例を示すフローチャートである。
【図１３】実施例３における絞り込み照合処理の詳細の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。各図において共通の構成については同一の参照符号が付されている。
【実施例１】
【００１１】
以下、認証システムについて説明する。認証システムは、学習データを用いてニューラルネットワークのパラメータを学習する。認証システムは、生体情報をニューラルネットワークへ入力して得られるバイナリベクトル、を登録する。また、認証システムは、１：Ｎ認証時に、生体情報をニューラルネットワークへ入力して得られるバイナリベクトルと、登録されたバイナリベクトルと、の照合により照合対象を絞り込むことで高速な１：Ｎ認証を行う。
【００１２】
本実施例の認証システムは、Ｄｅｅｐ  Ｌｅａｒｎｉｎｇと呼ばれる機械学習を生体認証のバイナリベクトル化に活用して、高速かつ高精度な１：Ｎ認証が実現することができる。なお、本実施形態において、生体情報として指紋、虹彩、静脈、又は顔等の画像の情報（例えば画像特徴量）が用いられる例を説明するが、例えば、声のような他の生体情報が用いられてもよい。
【００１３】
図１は、認証システムの構成例を示すブロック図である。認証システムは、例えば、学習機１０００、認証クライアント１１００、及び認証サーバ１２００を含む。学習機１０００は、例えば、パラメータ初期化部１０１０、学習データ取得部１０２０、ニューラルネット算出部１０３０、ベクトル間距離算出部１０４０、ロス算出部１０５０、パラメータ更新部１０６０、学習データ格納部１０９０、及びパラメータ格納部１０９１、を含む。
【００１４】
パラメータ初期化部１０１０は、ニューラルネットワークのパラメータを初期化する。学習データ取得部１０２０は、学習データ格納部１０９０から学習データを取得する。ニューラルネット算出部１０３０は、生体情報をニューラルネットワークへ入力してベクトルを算出する。ベクトル間距離算出部１０４０は、２つのベクトル間の距離を算出する。
【００１５】
ロス算出部１０５０は、ベクトル間の距離に基づきロス関数の出力を算出する。パラメータ更新部１０６０は、ロス算出部１０５０が算出したロス関数の出力に基づき、ニューラルネットワークのパラメータを更新する。学習データ格納部１０９０は、学習データを格納する。パラメータ格納部１０９１は、パラメータ更新部１０６０にて学習したパラメータを格納する。
【００１６】
認証クライアント１１００は、例えば、生体情報取得部１１１０、ニューラルネット算出部１１２０、ベクトル二値化部１１３０、登録ベクトル融合部１１４０、マスクベクトル生成部１１５０、テンプレート変換部１１６０、サンプル変換部１１６１、テンプレート照合部１１７０、通信部１１８０、及びパラメータ格納部１１９０、を含む。
【００１７】
生体情報取得部１１１０は、登録時または認証時にユーザから入力された生体情報を取得する。ニューラルネット算出部１１２０は、生体情報取得部１１１０が取得した生体情報をニューラルネットワークへ入力して出力ベクトルを算出する。
【００１８】
ベクトル二値化部１１３０は、ニューラルネット算出部１１２０が算出した出力ベクトルを二値化してバイナリベクトルを生成する。登録ベクトル融合部１１４０は、ベクトル二値化部１１３０が生成した複数のバイナリベクトルを融合し、単一の登録ベクトルを生成する。
【００１９】
マスクベクトル生成部１１５０は、ベクトル二値化部１１３０が生成したバイナリベクトルに対するマスクベクトルを生成する。テンプレート変換部１１６０は、生体情報取得部１１１０が取得した生体情報を登録テンプレートに変換する。サンプル変換部１１６１は、生体情報取得部１１１０が取得した生体情報を認証サンプルに変換する。
【００２０】
テンプレート照合部１１７０は、テンプレート変換部１１６０が生成した登録テンプレートと、サンプル変換部１１６１が生成した認証サンプルと、を照合して本人判定を行う。通信部１１８０は、ネットワーク１３００を介して、認証サーバ１２００と通信を行う。パラメータ格納部１１９０は、学習機１０００のパラメータ格納部１０９１に格納された学習済みパラメータと同じパラメータを格納する。
【００２１】
認証サーバ１２００は、例えば、ベクトル間距離算出部１２１０、通信部１２２０、及び登録テンプレート格納部１２９０を含む。ベクトル間距離算出部１２１０は、ニューラルネット算出部１１２０とベクトル二値化部１１３０が算出したバイナリベクトル間のハミング距離を算出する。通信部１２２０は、ネットワーク１３００を介して、認証クライアント１１００と通信する。登録テンプレート格納部１２９０は、テンプレート変換部１１６０が生成した登録テンプレートを格納する。
【００２２】
なお、図１の例では、学習機１０００は、認証クライアント１１００及び認証サーバ１２００に接続されていないが、認証クライアント１１００及び認証サーバ１２００の少なくとも一方と、ネットワーク１３００を介して接続されていてもよい。
【００２３】
図１０は、学習機１０００、認証クライアント１１００、及び認証サーバ１２００のハードウェア構成例を示すブロック図である。学習機１０００、認証クライアント１１００、及び認証サーバ１２００は、例えば、図１０に示す計算機によって構成される。計算機は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１、主記憶装置１００２、補助記憶装置１００３、入力装置１００４、出力装置１００５、及び通信装置１００６を含む。
【００２４】
ＣＰＵ１００１は、プロセッサを含み、主記憶装置１００２に格納されたプログラムを実行する。主記憶装置（メモリ）１００２は、不揮発性の記憶素子であるＲＯＭ及び揮発性の記憶素子であるＲＡＭを含む。ＲＯＭは、不変のプログラム（例えば、ＢＩＯＳ）などを格納する。ＲＡＭは、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のような高速かつ揮発性の記憶素子であり、ＣＰＵ１００１が実行するプログラム及びプログラムの実行時に使用されるデータを一時的に格納する。
【００２５】
補助記憶装置１００３は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の大容量かつ不揮発性の記憶装置であり、プロセッサが実行するプログラム及びプログラムの実行時に使用されるデータを格納する。すなわち、プログラムは、補助記憶装置１００３から読み出されて、主記憶装置１００２にロードされて、プロセッサによって実行される。
【００２６】
計算機は、入力インターフェース及び出力インターフェースを有する。入力インターフェースは、キーボード、マウス、カメラ、及びスキャナなどの入力装置１００４が接続され、オペレータからの入力を受け付けるインターフェースである。出力インターフェースは、ディスプレイ装置やプリンタなどの出力装置１００５が接続され、プログラムの実行結果をオペレータが視認可能な形式で出力するインターフェースである。
【００２７】
通信装置１００６は、所定のプロトコルに従って、他の装置との通信を制御するネットワークインターフェース装置であり、通信部による通信に用いられる。また、通信装置１００６は、例えば、ＵＳＢ等のシリアルインターフェースを含む。
【００２８】
ＣＰＵ１００１が実行するプログラムは、リムーバブルメディア（ＣＤ−ＲＯＭ、フラッシュメモリなど）又はネットワークを介して計算機に提供され、非一時的記憶媒体である不揮発性の補助記憶装置１００３に格納される。このため、計算機は、リムーバブルメディアからデータを読み込むインターフェースを有するとよい。
【００２９】
学習機１０００、認証クライアント１１００、及び認証サーバ１２００は、それぞれ、物理的に一つの計算機上で、又は、論理的又は物理的に構成された複数の計算機上で構成される計算機システムであり、同一の計算機上で別個のスレッドで動作してもよく、複数の物理的計算機資源上に構築された仮想計算機上で動作してもよい。
【００３０】
学習機１０００のＣＰＵ１００１は、パラメータ初期化部１０１０、ニューラルネット算出部１０３０、ベクトル間距離算出部１０４０、ロス算出部１０５０、パラメータ更新部１０６０を含む。認証クライアント１１００のＣＰＵ１００１は、ニューラルネット算出部１１２０、ベクトル二値化部１１３０、登録ベクトル融合部１１４０、マスクベクトル生成部１１５０、テンプレート変換部１１６０、サンプル変換部１１６１、テンプレート照合部１１７０、及び通信部１１８０を含む。認証サーバ１２００のＣＰＵ１００１は、ベクトル間距離算出部１２１０及び通信部１２２０を含む。
【００３１】
例えば、学習機１０００のＣＰＵ１００１は、学習機１０００の主記憶装置１００２にロードされたパラメータ初期化部プログラムに従って動作することで、パラメータ初期化部１０１０として機能し、学習機１０００の主記憶装置１００２にロードされたニューラルネット算出プログラムに従って動作することで、ニューラルネット算出部１０３０として機能する。学習機１０００のＣＰＵ１００１に含まれる他の部、認証クライアント１１００のＣＰＵ１００１に含まれる各部、及び認証サーバ１２００のＣＰＵ１００１に含まれる各部についても同様である。
【００３２】
学習機１０００の補助記憶装置１００３は、学習データ格納部１０９０及びパラメータ格納部１０９１を含む。認証クライアント１１００の補助記憶装置１００３は、パラメータ格納部１１９０を含む。認証サーバ１２００の補助記憶装置１００３は、登録テンプレート格納部１２９０を含む。
【００３３】
以下、認証システムが実行する処理手順の一例を、説明する。図２は、パラメータ学習処理、生体情報登録処理、及び１：Ｎ認証処理の一例を示すフローチャートである。
【００３４】
まず、学習機１０００は、パラメータの学習処理を行う（Ｓ２０１０）。この処理では、学習機１０００は、学習データ格納部１０９０に予め格納された学習データに基づきニューラルネットワークのパラメータを学習し、学習したパラメータをパラメータ格納部１０９１に格納する。ステップＳ２０１０におけるパラメータ学習の詳細は、図３を参照して後述する。
【００３５】
ステップＳ２０１０で取得されたパラメータは、パラメータ格納部１０９１に格納され、学習処理の終了後に認証クライアント１１００のパラメータ格納部１１９０へコピーされる。学習機１０００と認証クライアント１１００とがネットワーク１３００を介して接続されていない場合には、例えば、リムーバブルメディアを介して、当該パラメータが認証クライアント１１００に提供される。
【００３６】
次に、認証クライアント１１００と認証サーバ１２００とが、生体情報の登録処理を行う。まず認証クライアント１１００の生体情報取得部１１１０は、例えば、入力装置１００４から、又はネットワーク１３００を介して他の装置から、ユーザの生体情報（例えば、指紋、顔、虹彩、静脈など）を取得する（Ｓ２１１０）。
【００３７】
認証クライアント１１００は、取得した生体情報から、登録データを生成し（Ｓ２１２０）、認証サーバ１２００へ送信する（Ｓ２１３０）。ステップＳ２１２０の登録データ生成処理により、登録ベクトル、マスクベクトル、及び登録テンプレートの３つが得られる。ステップＳ２１２０における登録データ生成処理の詳細は、図６を参照して後述する。
【００３８】
次に認証サーバ１２００は、登録データを受信し（Ｓ２２１０）、受信した登録データを登録テンプレート格納部１２９０へ格納する（Ｓ２２２０）。登録データは、後述する登録テンプレート、バイナリベクトル、及びマスクベクトルを含む。以上の処理を各ユーザに対して実行することで各ユーザの生体情報登録が完了し、１：Ｎ認証が利用可能になる。
【００３９】
次に、認証クライアント１１００と認証サーバ１２００が、１：Ｎ認証処理を行う。認証クライアント１１００の生体情報取得部１１１０はユーザから生体情報を取得する（Ｓ２１４０）。認証クライアント１１００は、得られた生体情報から認証データを生成して（Ｓ２１５０）、認証サーバ１２００へ送信する（Ｓ２１６０）。なお、ステップＳ２１５０の認証データ生成により、バイナリベクトルと認証サンプルが得られる。認証データは、バイナリベクトルを含む。なお、ステップＳ２１５０の詳細については、図７を参照して後述する。
【００４０】
認証サーバ１２００は、認証データを受信し（Ｓ２２３０）、認証データに含まれるバイナリベクトルを使った絞り込み照合を行う（Ｓ２２４０）。ステップＳ２２４０の詳細については、図８を参照して後述する。ステップＳ２２４０において、候補テンプレートＩＤが得られる。認証サーバ１２００は、当該候補テンプレートＩＤに基づき登録テンプレート格納部１２９０から候補テンプレートを取得し（Ｓ２２５０）、認証クライアント１１００へ送信する（Ｓ２２６０）。
【００４１】
なお、ステップＳ２２５０において候補テンプレートが取得されなかった場合は、この時点で認証失敗となり、ステップＳ２２６０以降の処理は行われない。この場合、例えば、認証サーバ１２００は、認証クライアント１１００に認証が失敗したことを通知し、認証クライアント１１００は、認証が失敗したことを示す認証結果を、例えば、出力装置１００５等に出力する。
【００４２】
ステップＳ２２５０において候補テンプレートが１つ以上取得された場合は、ステップＳ２２６０以降の処理が実行される。このとき、候補テンプレート数は登録テンプレート格納部１２９０に格納されている登録テンプレートの数よりも少なくなるため、テンプレート照合の回数を削減することができる。これにより、本実施例の認証システムにおいては、単純に全件の登録テンプレートと認証サンプルの照合を行う場合と比較して高速な処理を実現することができる。
【００４３】
認証クライアント１１００は、ステップＳ２２６０で送信された候補テンプレートを受信する（Ｓ２１７０）。テンプレート照合部１１７０は、候補テンプレートと、認証データ生成処理において生成された認証サンプルと、の照合を、例えば、既存の照合方法を用いて行う（Ｓ２１８０）。
【００４４】
ステップＳ２１８０におけるテンプレート照合の結果、認証サンプルと同一の生体情報を有する登録テンプレートが存在するか否かが決定する。テンプレート照合部１１７０は、認証サンプルと同一の生体情報を有する登録テンプレートが存在すると判定した場合、ステップＳ２１９０において、認証が成功したことを示す認証結果を、例えば、出力装置１００５等に出力する。
【００４５】
一方、認証サンプルと同一の生体情報を有する登録テンプレートが存在しないと判定した場合は、ステップＳ２１９０において、認証が失敗したことを示す認証結果を、例えば、出力装置１００５等に出力する。以上により、バイナリベクトルによるテンプレートの絞り込みを導入した１：Ｎ認証が完了する。
【００４６】
図３は、ステップＳ２０１０におけるパラメータ学習処理の一例を示すフローチャートである。本実施例では、Ｓｉａｍｅｓｅ  Ｎｅｔｗｏｒｋを用いたパラメータ学習が実行される。Ｓｉａｍｅｓｅ  Ｎｅｔｗｏｒｋは、２つの同一のネットワーク（本実施例ではいずれもニューラルネットワークとする）を含む。
【００４７】
Ｓｉａｍｅｓｅ  ｎｅｔｗｏｒｋにおける学習データは、それぞれ、当該２つのネットワークそれぞれに入力される入力情報（例えば、画像情報）と、当該２つの入力情報が同じクラスであるか異なるクラスであるかを示すフラグ（同一性情報）と、を含む。なお、当該同一のネットワークそれぞれは、多層（例えば３層以上）のネットワークである。
【００４８】
なお、入力情報が同じ人物の同じ生体情報である場合にのみ、クラスが同じであるものとする。具体的には、例えば、２つの入力情報がいずれもユーザＡの右手の人差し指の静脈の画像情報（画像自体は異なってもよい）である場合は、これらの入力情報におけるクラスは等しい。例えば、ユーザＡの右手の人差し指の静脈の画像情報と、ユーザＢの右手の人差し指の静脈の画像情報と、のクラスは異なる。また、例えば、ユーザＡの右手の人差し指の静脈の画像情報と、ユーザＡの左手の人差し指の静脈の画像情報と、のクラスは異なる。つまり、入力情報が画像情報である場合には、同一の対象（被写体）から得られた画像情報においてのみ、クラスが等しい。
【００４９】
Ｓｉａｍｅｓｅ  Ｎｅｔｗｏｒｋにおける学習では、入力情報のクラスが同じであれば出力ベクトル間の距離が小さくなるように、入力情報のクラスが異なれば出力ベクトル間の距離が大きくなるように、ニューラルネットワークのパラメータを更新する。
【００５０】
まず、学習機１０００のパラメータ初期化部１０１０は、パラメータ格納部１０９１に格納されているパラメータを初期化する（Ｓ３０１０）。パラメータ初期化部１０１０は、例えば、０を代入する、正規分布などの確率分布に従う乱数を代入するなどの方法によって、パラメータを初期化する。なお、パラメータの初期化方法として、ニューラルネットワークの学習で一般的に行われる他の方法が用いられてもよい。
【００５１】
学習データ取得部１０２０は、学習データ格納部１０９０から、学習に用いるデータを取得する（Ｓ３０２０）。具体的には、例えば、学習データ取得部１０２０は、学習データ（つまり、２つの生体情報のペアとフラグとを含むデータ）をＭ個選択する。なお、Ｍ個の学習データが一度に選択されてパラメータ更新が実行される方式は、Ｍｉｎｉ  Ｂａｔｃｈと呼ばれる。なお、パラメータ更新のための学習データの選択方法として、ニューラルネットワークの学習で一般的に行われる他の方法が用いられてもよい。
【００５２】
ニューラルネット算出部１０３０は、学習データ中の生体情報をニューラルネットワークへ入力して出力層から出力される出力ベクトルを取得する（Ｓ３０３０）。なお、本実施例において、画像認識の分野でよく使われる畳み込みニューラルネットワークを用いることができる。
【００５３】
また、ニューラルネットワークの出力ベクトルの各要素の値を所定範囲に含まれる値に変換する関数が、ニューラルネットワークの最終層の関数として用いられる。当該所定範囲は、例えば、バイナリベクトルの各要素がとり得る２値を、それぞれ最大値及び最小値とする範囲である。本実施例では、バイナリベクトルの各要素は０又は１であるものとするため、当該所定範囲は０以上１以下である。
【００５４】
従って、本実施例において、各要素の値を０以上１以下に変換するＳｉｇｍｏｉｄ関数は、当該関数の一例である。以下、Ｓｉｇｍｏｉｄ関数が用いられているものとする。このような関数が最終層の関数として、用いられることにより、出力ベクトルの各要素は、０以上１以下の値となり、確率値とみなすことができる。
【００５５】
ベクトル間距離算出部１０４０は、ステップＳ３０２０で取得した学習データに含まれる入力情報のペアそれぞれについて、ステップＳ３０３０で取得した出力ベクトル間の距離を算出する（Ｓ３０４０）。なお、ベクトル間距離としては、ベクトルの各要素の差分の二乗の総和（ユークリッド距離）、ベクトルの各要素の差分の絶対値の総和（マンハッタン距離）の他、下記の式１が示すベクトル間距離関数を適用することができる。
【００５６】
【数１】
2019101927.tif 000003
【００５７】
上記式１のベクトル間距離関数における、ｘ、ｘ’は距離を算出する対象のベクトルを表す。また、ｘｉは出力ベクトルｘのｉ番目の要素、ｘ’ｉは出力ベクトルｘ’のｉ番目の要素であり、ｎは出力ベクトルｘ及び出力ベクトルｘ’の次数である。ニューラルネットワークの最終層がＳｉｇｍｏｉｄ関数であるため、出力ベクトルの各要素の値は０から１の値に正規化されている。従って、出力ベクトルの各要素は、当該出力ベクトルから得られるバイナリベクトル（出力ベクトルから得られるバイナリベクトルの詳細については後述する）において、当該出力ベクトルの各要素に対応する要素の値が１となる確率と解釈することもできる。このように解釈した場合、式１に示すベクトル間距離関数によって得られる距離は、２つのバイナリベクトルのハミング距離の期待値を表す。
【００５８】
続いて、ロス算出部１０５０は、ステップＳ３０４０で得られたベクトル間距離に基づいてロスを算出する（Ｓ３０５０）。ロスは、ベクトル間距離がどの程度理想的な値になっているかを示す値であり、０に近づくほど最適化が進んでいることを示す。下記の式２に示すＣｏｎｔｒａｓｔｉｖｅ  Ｌｏｓｓ、及び下記の式３に示すロス関数は、いずれも、ロスの計算に用いられる数式の一例である。
【００５９】
【数２】
2019101927.tif 000004
【００６０】
【数３】
2019101927.tif 000005
【００６１】
ただし、式２及び式３におけるｙは出力ベクトルのペアについてクラスが同じであるか異なるかを示すフラグであり、２つの出力ベクトルが同じクラスであるときに１、異なるクラスであるときに０である。また、Ｍａｒｇｉｎは、予め定められた値であり、例えば、１である。
【００６２】
式２及び式３を含むロス関数は、２つの出力ベクトルに対応する生体情報が同じクラスであり、かつ当該出力ベクトル間の距離が小さい場合、及び２つの出力ベクトルに対応する生体情報が異なるクラスであり、かつ当該出力ベクトル間の距離が大きい場合に、小さい値をとる。また、当該ロス関数は、２つの出力ベクトルに対応する生体情報が同じクラスであり、かつ当該出力ベクトル間の距離が大きい場合、及び２つの出力ベクトルに対応する生体情報が異なるクラスであり、かつ当該出力ベクトル間の距離が小さい場合に、大きい値をとる。
【００６３】
続いて、パラメータ更新部１０６０は、ステップＳ３０５０で算出したロスが小さくなるようにニューラルネットワークの各パラメータを更新する（Ｓ３０６０）。これにより、同じクラスのベクトル間の距離が小さくなり、異なるクラスのベクトル間の距離が大きくなるようにパラメータの学習が進む。また、出力ベクトルの各要素の値が０又は１に近づくようにパラメータの学習が進む。
【００６４】
続いて、パラメータ更新部１０６０は、学習が終了したか否かを判定する（Ｓ３０７０）。具体的には、例えば、パラメータ更新部１０６０は、Ｍｉｎｉ  Ｂａｔｃｈの実行回数が所定数に到達することを示す第１の条件が満たされた場合に、学習が終了したと判定し、第１の条件が満たされていない場合に、学習が終了していないと判定する。また、例えば、パラメータ更新部１０６０は、ロスの値が所定値を下回ることを示す第２の条件が満たされた場合に、学習が終了したと判定し、第２の条件が満たされない場合に、学習が終了していないと判定する。また、パラメータ更新部１０６０は、例えば、第１の条件又は第２の条件の少なくとも一方が満たされた場合に、学習が終了したと判定し、双方とも満たされていない場合に、学習が終了していないと判定してもよい。
【００６５】
パラメータ更新部１０６０が、学習が終了していないと判定した場合（Ｓ３０７０：Ｎｏ）、ステップＳ３０２０に戻り再度学習を実行する。パラメータ更新部１０６０は、学習が終了したと判定した場合（Ｓ３０７０：Ｙｅｓ）、得られたパラメータをパラメータ格納部１０９１に格納する（Ｓ３０８０）。
【００６６】
なお、本実施例では、２つのニューラルネットワークを含むＳｉａｍｓｅ  Ｎｅｔｏｗｏｒｋによるパラメータ学習が行われたが、３つ以上のニューラルネットワーク（例えば、Ｔｒｉｐｌｅｔ  Ｎｅｔｗｏｒｋ）を含むネットワークによってパラメータ学習が行われてもよい。以上により、パラメータの学習が完了する。
【００６７】
図４は、学習データ格納部１０９０に格納された学習データのデータ構造の一例を示す説明図である。学習データは、学習生体情報４１０とクラス名４２０とを含む。学習生体情報４１０は、学習用に収集した１：Ｎ認証に用いる生体情報と同じモダリティの生体情報であり、例えば、指紋、顔、虹彩、静脈などの画像を含む。
【００６８】
クラス名４２０は、学習生体情報４１０のクラスの名称であり、例えば英数字で構成される文字列である。このクラスは、生体情報が帰属する人物や身体の部位を示す。クラス名が同一の生体情報は、同じ生体から取得された同じ種類の生体情報である。クラス名が異なる生体情報は、異なる生体から取得された生体情報である。
【００６９】
図５は、パラメータ格納部１０９１に格納されるパラメータのデータ構造の一例を示す説明図である。図５に示すパラメータはニューラルネットワークの計算過程を一意に決定するために必要となるパラメータである。例えば、当該ニューラルネットワークが畳み込みニューラルネットワークである場合、パラメータは、畳み込みカーネルの各輝度値、バイアスの値、及び全結合層の重みの値、などを含む。
【００７０】
これらのパラメータが決まれば、入力する生体情報に対して、出力ベクトルの値を一意に算出することができる。なお、本実施例では、画像情報が生体情報として用いられるため、パラメータが輝度値を含んでいるが、例えば声の情報が生体情報として用いられる場合には、輝度値の代わりに例えば、声を示す信号から得られる所定の特徴量がパラメータに含まれる。
【００７１】
図６は、認証クライアント１１００による登録データ生成処理（Ｓ２１２０）の詳細の一例を示すフローチャートである。ステップＳ２０１０の終了後かつステップＳ２１２０の開始前に、パラメータ格納部１０９１に格納されたパラメータが、パラメータ格納部１１９０にコピーされて格納される。
【００７２】
まず、ニューラルネット算出部１１２０は、パラメータ格納部１１９０に格納されたパラメータで定義されるニューラルネットワークにステップＳ２１１０で取得した生体情報を入力し、出力ベクトルを生成する（Ｓ６０１０）。
【００７３】
ベクトル二値化部１１３０は、ステップＳ６０１０で得られた出力ベクトルに対して二値化処理を行って、全ての要素が０又は１であるバイナリベクトルを生成する（Ｓ６０２０）。ベクトル二値化部１１３０は、ステップＳ６０２０において、例えば、出力ベクトルの各要素の値域が０から１である場合、所定の閾値（例えば０．５）未満の要素を０、当該所定の閾値以上の要素を１に変換することで二値化処理を実施する。ただし、この二値化処理はこのような単純な閾値処理に限られない。
【００７４】
例えば、ベクトル二値化部１１３０は、出力ベクトルの各要素の値について、当該値が他の出力ベクトルの当該要素における値の所定の閾値以下の割合（例えば下位５０％）に含まれれば０、当該所定の閾値以上の割合（例えば上位５０％）に含まれれば１に変換する等の、一般的な二値化方式が適用してもよい。なお、他の出力ベクトルとは、認証クライアント１１００による過去の認証処理によって得られた出力ベクトルを含んでもよいし、学習データ格納部１０９０に格納された学習データによって得られた出力ベクトルを含んでもよい。
【００７５】
なお、同じ人の同じ種類の複数の生体情報から登録情報が生成されてもよい。つまり、ステップＳ２１１０が複数回実行されて、同じ人の同じ種類の複数の生体情報が生成され、当該複数の生体情報それぞれについて、ステップＳ６０１０及びステップＳ６０２０が実行されることにより、複数のバイナリベクトルが生成される。
【００７６】
なお、１つの生体情報から複数のバイナリベクトルが生成されてもよい。具体的には、例えば、生体情報が画像である場合、１つの画像に対して、機械的に位置ずれさせたり、傾けさせたり、歪ませたり、ノイズを加えたり、等して、複数の画像を生成してもよい。
【００７７】
登録ベクトル融合部１１４０は、複数のバイナリベクトルを融合して、登録ベクトルを生成する（Ｓ６０３０）。登録ベクトル融合部１１４０は、例えば、複数のバイナリベクトルの各要素の中央値を算出し、各要素の中央値を要素の値とするバイナリベクトルを登録ベクトルに決定する。なお、当該複数のバイナリベクトルの個数が偶数個である場合には、例えば、中央の２つの値の一方（例えば大きい方）の値を、中央値とする。なお、中央値以外の統計量（例えば、平均又は最頻値等）が用いられてもよい。
【００７８】
なお、登録ベクトル融合部１１４０は、複数のバイナリベクトルを、そのまま登録ベクトルに決定してもよいし、１つのバイナリベクトルのみが生成された場合には、当該バイナリベクトルを登録ベクトルに決定してもよい。
【００７９】
続いて、マスクベクトル生成部１１５０は、登録ベクトルに対応するマスクベクトルを生成する（Ｓ６０４０）。バイナリベクトルの照合の際に、マスクベクトルを作用させることで照合の精度が向上する。生体情報は、特徴空間上で一様に分布しておらず、個人ごとに特定の偏りがある。このため、バイナリベクトルの各要素に含まれる誤差には個体差が発生する。
【００８０】
マスクベクトル生成部１１５０は、例えば、登録時に取得した複数のバイナリベクトルや、生体情報に恣意的に摂動やノイズを加えたものから生成した複数のバイナリベクトルを分析し、ベクトルの各要素の値のぶれ易さ（即ち信頼度の低さ）を算出する。
【００８１】
マスクベクトル生成部１１５０は、例えば、生成した登録ベクトルの各要素の値が、どの程度の確率で反転するかを集計することにより、このぶれ易さを算出する。具体的には、マスクベクトル生成部１１５０は、例えば、分析対象の複数のバイナリベクトルの各要素について、当該要素が０であるバイナリベクトルの数と当該要素が１であるバイナリベクトルの数との差が大きいほど、当該要素におけるぶれ易さを低い値に設定し、当該差が小さいほど当該要素におけるぶれ易さを高い値に設定する。
【００８２】
また、マスクベクトル生成部１１５０は、１つの生体情報から得られた出力ベクトルから、ぶれ易さを算出してもよい。具体的には、例えば、出力ベクトルの各要素が所定の閾値未満の場合に０、所定の閾値以上の場合に１となるバイナリベクトルが生成される場合には、マスクベクトル生成部１１５０は、当該要素の値が当該所定の閾値に近いほど、ぶれ易さを高い値に設定し、当該要素の値が当該所定の閾値に遠いほど、ぶれ易さを低い値に設定する。
【００８３】
ぶれ易さが所定値以上の要素については、誤差が含まれやすいため、当該要素を除外したベクトルを用いてデータの照合を実行した方が、精度が高まる可能性がある。この誤差が含まれやすい要素の除外を実現するのがマスクベクトルである。
【００８４】
マスクベクトル生成部１１５０は、具体的には、誤差が含まれやすい（例えば、ぶれ易さが所定値以上の）要素の値を０、誤差が含まれにくい（例えば、ぶれ易さが所定値未満の）要素の値を１とするマスクベクトルを生成し、バイナリベクトルと共に登録しておく。
【００８５】
続いて、テンプレート変換部１１６０は、ステップＳ２１１０で取得された生体情報に対してテンプレート変換を施し、登録テンプレートを生成する（Ｓ６０５０）。テンプレート変換部１１６０は、生体情報に対して特徴抽出処理を行うことで、生体情報を特徴点やパターン画像へ変換したデータを、登録テンプレートとして生成してもよい。
【００８６】
また、テンプレート変換部１１６０は、変換後のデータに対してテンプレート保護技術を適用して、不可逆な変換を行い、元の生体情報やその特徴を秘匿したデータを登録テンプレートとして生成してもよい。以上により、認証クライアント１１００による、ステップＳ２１２０の登録データ生成処理が完了する。
【００８７】
図７は、認証クライアント１１００によるステップＳ２１５０の認証データ生成処理の詳細の一例を示すフローチャートである。まず、ニューラルネット算出部１１２０は、パラメータ格納部１１９０に格納されたパラメータで定義されるニューラルネットワークにステップＳ２１４０で取得した生体情報を入力し、出力ベクトルを生成する（Ｓ７０１０）。
【００８８】
ベクトル二値化部１１３０は、ステップＳ７０１０で得られた出力ベクトルに対して二値化処理を行って、バイナリベクトルを生成する（Ｓ７０２０）。ステップＳ７０１０及びステップＳ７０２０の処理は、それぞれステップＳ６０１０及びステップＳ６０２０の処理と同様であるため、詳細な説明を省略する。
【００８９】
サンプル変換部１１６１は、ステップＳ２１４０で取得された生体情報に対して、登録テンプレート生成処理における変換と同様の、サンプル変換を施すことにより、認証サンプルを生成する（Ｓ７０３０）。サンプル変換部１１６１は、登録テンプレートと同様に、生体情報から特徴抽出処理を行うことで、生体情報を特徴点やパターン画像へ変換したデータを、認証サンプルとして生成してもよい。
【００９０】
また、テンプレート保護技術を適用して登録テンプレートが生成された場合、サンプル変換部１１６１は、変換後のデータに対して当該テンプレート保護技術を適用して、認証サンプルを生成する。以上により、認証クライアント１１００によるステップＳ２１５０の認証データ生成処理（Ｓ２１５０）が完了する。
【００９１】
図８は、認証サーバ１２００によるステップＳ２２４０の絞り込み照合処理の詳細の一例を示すフローチャートである。まず、ベクトル間距離算出部１２１０は、変数ｉに１を代入する（Ｓ８０１０）。
【００９２】
ベクトル間距離算出部１２１０は、登録テンプレート格納部１２９０に格納された、ｉ番目の登録データに含まれるバイナリベクトルである登録ベクトルを参照し、ステップＳ７０２０で生成されたバイナリベクトルとの距離を算出する（Ｓ８０２０）。ベクトル間距離算出部１２１０は、これらのベクトル間の距離として、例えば、ハミング距離を算出する。
【００９３】
さらに、ステップＳ６０４０でマスクベクトルが生成された場合には、ベクトル間距離算出部１２１０は、マスクベクトルの値が１である要素のみからハミング距離を算出することができる。具体的には、例えば、ベクトル間距離算出部１２１０は、距離算出対象のバイナリベクトルそれぞれについてマスクベクトルとの論理積を算出し、当該論理積間の排他的論理和を算出し、得られたベクトルの要素のうち値が１である要素の数をカウントすることで、マスク対象の要素が除外されたハミング距離を算出することができる。
【００９４】
なお、マスク対象の要素数（即ち、マスクベクトルにおいて値が１である要素の数）が多いほど、バイナリベクトル間の距離が小さくなりやすいため、ベクトル間距離算出部１２１０は、例えば、算出した距離をマスク非対象の要素数で割ることによって正規化した距離を、算出しておくことが望ましい。
【００９５】
続いて、ベクトル間距離算出部１２１０は、ステップＳ８０２０で算出した距離が所定の閾値Ｔより小さいか否かを判定する（Ｓ８０３０）。ベクトル間距離算出部１２１０は、当該距離が当該閾値Ｔより小さいと判定した場合（Ｓ８０３０：Ｙｅｓ）、ｉ番目の登録テンプレートのＩＤを候補テンプレートＩＤとして追加する（Ｓ８０４０）。
【００９６】
距離が閾値Ｔより小さいということは、一定以上の確率でｉ番目の登録データが認証対象者のものであることを示すため、当該登録データの登録テンプレート自体が照合対象となる。また、ベクトル間距離算出部１２１０は、当該距離が当該閾値Ｔ以上と判定した場合（Ｓ８０３０：Ｎｏ）、ステップＳ８０５０に遷移する。
【００９７】
続いて、ベクトル間距離算出部１２１０は、ｉを１増加させて（Ｓ８０５０）、登録データの総数Ｎと比較する（Ｓ８０６０）。ベクトル間距離算出部１２１０は、増加後のｉが総数Ｎ未満であると判定した場合（Ｓ８０６０：Ｎｏ）、ステップＳ８０２０に戻り、ｉが総数Ｎ以上であると判定した場合（Ｓ８０６０：Ｙｅｓ）、絞り込み照合処理を完了する。以上により、ステップＳ２２４０の絞り込み照合処理が完了する。
【００９８】
図９は、登録テンプレート格納部１２９０に格納された登録データのデータ構造の一例を示す説明図である。登録データは、例えば、ユーザＩＤ欄９１０、登録ベクトル欄９２０、マスクベクトル欄９３０、及び登録テンプレートらｎ９４０を含んで構成される。ユーザＩＤ欄９１０は、各ユーザに対して一意に識別する情報であるユーザＩＤを格納する。ユーザＩＤは、例えば、英数字で構成される。ユーザＩＤは、登録データ生成処理（Ｓ２１２０）において認証クライアント１１００によって生成されてもよいし、登録データ格納処理（Ｓ２２２０）において認証サーバ１２００によって生成されてもよい。
【００９９】
登録ベクトル欄９２０は、ステップＳ６０３０で生成された登録ベクトルを格納する。マスクベクトル欄９３０は、ステップＳ６０４０で生成されたマスクベクトルを格納する。登録テンプレート欄９４０は、ステップＳ６０５０で生成された登録テンプレートを格納する。
【０１００】
以上、本実施例の認証システムは、複数の同一のニューラルネットワークを用いて、同一の人の同種の生体情報から得られた出力ベクトルの距離が近くなるように、かつ異なる人又は異なる生体情報から得られた出力ベクトルの距離が遠くなるように、当該ニューラルネットワークのパラメータを学習する。また、認証システムは、当該パラメータが適用されたニューラルネットワークによって、登録対象の生体情報からバイナリベクトルを生成し、登録する。
【０１０１】
また、認証システムは、認証対象の生体情報を取得し、当該パラメータが適用されたニューラルネットワークによって当該生体情報からバイナリベクトルを生成し、生成したバイナリベクトルと、登録されたバイナリベクトルと、を比較して、認証対象の生体情報と、同一の対象の生体情報の候補を絞る。つまり、本実施例の認証システムは、登録テンプレートを直接比較する対象を絞ることにより、認証を高速化することができる。さらに、本実施例の認証システムは、複数の同一のニューラルネットワークを用いた学習により、認証精度の低下を抑制することができる。
【０１０２】
なお、本実施例の生体認証システムは、生体情報に限らず、入力画像と同一の登録画像を検索する画像検索システムに適用することができる。この場合、認証クライアント１１００は検索クライアントとして、認証サーバ１２００は検索サーバとして機能する。つまり、画像検索システムは、検索クライアントに入力された入力画像から生成されたバイナリベクトルと、登録されたバイナリベクトルと、を比較して、入力画像と同一の登録画像の候補（類似画像）を絞ることができる。
【実施例２】
【０１０３】
本実施例は、１：Ｎ認証において、認証クライアント１１００の代わりに、認証サーバ１２００がテンプレート照合処理を行う。以下、実施例１との相違点を説明する。図示を省略するが、本実施例の認証サーバ１２００は、テンプレート照合部を含む。
【０１０４】
図１１は、パラメータ学習処理、生体情報登録処理、及び１：Ｎ認証処理の一例を示すフローチャートである。図２との相違点を説明する。ステップＳ２１５０において、認証クライアント１１００は、バイナリベクトルに加えて、認証サンプルを認証データに含めて、ステップＳ２１６０において認証データを送信する。
【０１０５】
ステップＳ２２５０に続いて、認証サーバ１２００のテンプレート照合部が、候補テンプレートと認証サンプルとの照合処理を行う（Ｓ１１２６０）。ステップＳ１１２６０の処理は、ステップＳ２１８０の処理と同様であるため、説明を省略する。続いて、認証サーバ１２００は、当該照合処理における認証結果を認証クライアント１１００へ送信する（Ｓ１１２７０）。つまり、本実施例において、認証サーバ１２００は認証クライアント１１００へ候補テンプレートを送信しない。
【０１０６】
本実施例の認証システムにおいて、認証サーバ１２００が１：Ｎ照合を完結させるため、処理が単純化し、認証クライアント１１００の負荷を軽減することができる。但し、実施例１の認証システムにおいては、認証サンプルが認証クライアント１１００から外部に送信されることがないため、テンプレート保護技術が適用される場合は、実施例１の認証システムの方が実施例２の認証システムより、セキュリティ性が高い場合がある。従って、利用者のユースケースに応じて実施例１の認証システムと実施例２の認証システムとが使い分けられることが望ましい。
【実施例３】
【０１０７】
本実施例の認証システムは、１つの登録データについて、実施例１で説明したバイナリベクトルに加えて、これより次数の低いバイナリベクトルを生成する。また、本実施例の認証システムは、絞り込み照合処理において、認証対象の生体情報について、当該次数の低いバイナリベクトルを生成して、登録された次数の低いバイナリベクトルとの照合を行い、一次絞り込み処理を実施する。
【０１０８】
さらに、認証システムは、絞り込み照合処理において、認証対象の生体情報と、一次絞り込み処理によって絞り込まれた登録データと、の間で次数の高いバイナリベクトル（実施例１においても生成されていたバイナリベクトル）を比較する二次絞込みをして、候補テンプレートを取得する。つまり、本実施例の認証システムは、次数の低いバイナリベクトルを用いた一次絞り込みを実行して、予め二次絞込みの対象を絞り込むことで、さらに高速な１：Ｎ認証を実現する。以下、実施例１との相違点を説明する。
【０１０９】
図１２は、ステップＳ２０１０におけるパラメータ学習処理の一例を示すフローチャートである。図３との相違点を説明する。パラメータ更新部１０６０が、学習が終了したと判定した場合（Ｓ３０７０：Ｙｅｓ）、ニューラルネット算出部１１２０は、前述のＳｉａｍｅｓｅ  Ｎｅｔｗｏｒｋに含まれる同一のニューラルネットワーク（以下、第一ニューラルネットワークとも呼ぶ）それぞれに同一の出力層を追加されたネットワーク（以下第二ニューラルネットワークとも呼ぶ）からなる、新たなＳｉａｍｅｓｅ  Ｎｅｔｗｏｒｋを参照する（Ｓ１２０００）。つまり、第一ニューラルネットワークがＮ層からなるとすると、第二ニューラルネットワークはＮ＋１層からなり、第二ニューラルネットワークの第１層、・・・、第Ｎ層は、それぞれ、第一ニューラルネットワークの第１層、・・・、第Ｎ層と一致する。
【０１１０】
以下、学習機１０００は、第二ニューラルネットワークにおいて、第一ニューラルネットワークと共通するパラメータを、ステップＳ３０７０において学習が終了したと判定した時点の値に固定した状態で、第二ニューラルネットワークの出力層に関するパラメータ（つまり第一ニューラルネットワークと非共通のパラメータ）を学習する。
【０１１１】
まず、学習機１０００のパラメータ初期化部１０１０は、第二ニューラルネットワークの出力層に関するパラメータを初期化する（Ｓ１２０１０）。パラメータ初期化の方法は、ステップＳ３０１０と同様である。学習データ取得部１０２０は、学習データ格納部１０９０から、学習に用いるデータを取得する（Ｓ１２０２０）。学習データの取得方法は、ステップＳ３０２０と同様である。
【０１１２】
ニューラルネット算出部１０３０は、学習データ中の生体情報を第二ニューラルネットワークへ入力して出力層から出力される出力ベクトルを取得する（Ｓ１２０３０）。また、第二ニューラルネットワークの出力の各要素の値を０以上１以下の値に正規化する関数（例えば、Ｓｉｇｍｏｉｄ関数）が、第二ニューラルネットワークの出力層の関数として用いられることが望ましい。
【０１１３】
ベクトル間距離算出部１０４０は、ステップＳ１２０２０で取得した学習データに含まれる入力情報のペアそれぞれについて、ステップＳ１２０３０で取得した出力ベクトル間の距離を算出する（Ｓ１２０４０）。ベクトル間距離の算出方法は、ステップＳ３０４０と同様である。
【０１１４】
続いて、ロス算出部１０５０は、ステップＳ１２０４０で得られたベクトル間距離に基づいてロスを算出する（Ｓ１２０５０）。ロスの算出方法は、ステップＳ３０５０と同様である。続いて、パラメータ更新部１０６０は、ステップＳ１２０５０で算出したロスが小さくなるようにニューラルネットワークの各パラメータを更新する（Ｓ１２０６０）。
【０１１５】
続いて、パラメータ更新部１０６０は、学習が終了したか否かを判定する（Ｓ３０７０）。学習終了判定の方法は、ステップＳ３０７０と同様である。パラメータ更新部１０６０が、学習が終了していないと判定した場合（Ｓ１２０７０：Ｎｏ）、ステップＳ１２０２０に戻り再度学習を実行する。パラメータ更新部１０６０は、学習が終了したと判定した場合（Ｓ１２０７０：Ｙｅｓ）、ステップＳ３０８０に遷移する。
【０１１６】
以下、図６について実施例１との相違点を説明する。ステップＳ６０１０において、ニューラルネット算出部１１２０は、第一ニューラルネットワークにステップＳ２１１０で取得した生体情報を入力して第一出力ベクトルを生成し、第二ニューラルネットワークにステップＳ２１１０で取得した生体情報を入力して第二出力ベクトルを生成する。
【０１１７】
ステップＳ６０２０において、ベクトル二値化部１１３０は、第一出力ベクトルに対して二値化処理を行って第一バイナリベクトルを生成し、第二出力ベクトルに対して二値化処理を行って第二バイナリベクトルを生成する。
【０１１８】
ステップＳ６０３０において、登録ベクトル融合部１１４０は、複数の第一バイナリベクトルを融合して、第一登録ベクトルを生成し、複数の第二バイナリベクトルを融合して、第二登録ベクトルを生成する。ステップＳ６０４０において、マスクベクトル生成部１１５０は、第一登録ベクトルに対応する第一マスクベクトルと、第二登録ベクトルに対応する第二マスクベクトルと、を生成する。
【０１１９】
以下、図７について実施例１との相違点を説明する。ステップＳ７０１０において、ニューラルネット算出部１１２０は、第一ニューラルネットワークにステップＳ２１１０で取得した生体情報を入力して第一出力ベクトルを生成し、第二ニューラルネットワークにステップＳ２１４０で取得した生体情報を入力して第二出力ベクトルを生成する。
【０１２０】
ステップＳ７０２０において、ベクトル二値化部１１３０は、第一出力ベクトルに対して二値化処理を行って第一バイナリベクトルを生成し、第二出力ベクトルに対して二値化処理を行って第二バイナリベクトルを生成する。
【０１２１】
図１３は、認証サーバ１２００によるステップＳ２２４０の絞り込み照合処理の詳細の一例を示すフローチャートである。図８との相違点を説明する。ステップＳ８０１０に続いて、ベクトル間距離算出部１２１０は、登録テンプレート格納部１２９０に格納された、ｉ番目の登録データに含まれる第二登録ベクトルを参照し、ステップＳ７０２０で生成された第二バイナリベクトルとの距離を算出する（Ｓ１３０１０）。ベクトル間の距離の算出方法は、ステップＳ８０２０と同様である。
【０１２２】
続いて、ベクトル間距離算出部１２１０は、ステップ１３０１０で算出した距離が所定の閾値Ｔ２より小さいか否かを判定する（Ｓ１３０２０）。ベクトル間距離算出部１２１０は、当該距離が当該閾値Ｔ２以上と判定した場合（Ｓ１３０２０：Ｎｏ）、ステップＳ８０５０に遷移する。
【０１２３】
ベクトル間距離算出部１２１０は、当該距離が当該閾値Ｔ２より小さいと判定した場合（Ｓ１３０２０：Ｙｅｓ）、登録テンプレート格納部１２９０に格納された、ｉ番目の登録データに含まれる第一登録ベクトルを参照し、ステップＳ７０２０で生成された第一バイナリベクトルとの距離を算出する（Ｓ１３０３０）。
【０１２４】
続いて、ベクトル間距離算出部１２１０は、ステップ１３０３０で算出した距離が、所定の閾値Ｔ１より小さいか否かを判定する（Ｓ１３０４０）。ベクトル間距離算出部１２１０は、当該距離が当該閾値Ｔ１以上と判定した場合（Ｓ１３０４０：Ｎｏ）、ステップＳ８０５０に遷移する。ベクトル間距離算出部１２１０は、当該距離が当該閾値Ｔ１より小さいと判定した場合（Ｓ１３０４０：Ｙｅｓ）、ステップＳ８０４０に遷移してｉ番目の登録テンプレートのＩＤを候補テンプレートＩＤとして追加する。
【０１２５】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることも可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１２６】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０１２７】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０１２８】
１０００  学習機、１００１  ＣＰＵ、１００２  主記憶装置、１００６  通信装置、１０３０  ニューラルネット算出部、１０４０  ベクトル間距離算出部、１０５０  ロス算出部、１０６０  パラメータ更新部、１０９０  学習データ格納部、１１１０  生体情報取得部、１１２０  ニューラルネット算出部、１１３０  ベクトル二値化部、１１４０  登録ベクトル融合部、１１５０  マスクベクトル生成部、１１９０  パラメータ格納部、１１００  認証クライアント、１２００  認証サーバ、１２９０  登録テンプレート格納部
【図１】
2019101927.tif 000012
【図２】
2019101927.tif 000013
【図３】
2019101927.tif 000014
【図４】
2019101927.tif 000015
【図５】
2019101927.tif 000016
【図６】
2019101927.tif 000017
【図７】
2019101927.tif 000018
【図８】
2019101927.tif 000019
【図９】
2019101927.tif 000020
【図１０】
2019101927.tif 000021
【図１１】
2019101927.tif 000022
【図１２】
2019101927.tif 000023
【図１３】
2019101927.tif 000024