本人拒否率(棄却率)と他人受入率について
こちらの記事は古くなっており非推奨となりました。
最新のドキュメントは以下から閲覧可能です。
・GitHub FACE01
・FACE01 document
相関関係図
顔認証に限らず生体認証には本人拒否率(FRR: False Rejected Rate)と他人受入率(FAR: False acceptanceRate)の 2 つが存在します。
- 本人拒否率:本人の生体情報と照合したときに本人が拒否される率で、値が低いほど認証精度が高い
- 他人受入率:他人の生体情報と照合したときに受け入れられてしまう率を表し、値が小さいほど認証精度は高い

図1 では本人拒否率と他人受入率の相関関係をグラフで表しています。これらの数値は相関関係にあるため、どの値で閾値を設けるかによって変動します。中央のピンク色の丸が最もバランスのとれている閾値の値です。
このピンク色の丸の位置が低ければ低いほど「顔認証としての精度が高い」と言う事が出来ます。
交差ポイントを下げるために
図1 のピンク色の交差ポイントを EER (Equal Error Rate: 等価エラー率)と呼びます。この交差ポイントを下げるためには以下のような方法があります。ここでは深層学習のメソッドは含みません。
- 対象となる映像の解像度を上げる
- 対象となる映像にシャープネス処理をかける
- 顔画像ファイルの解像度を上げる
- 顔画像ファイルにシャープネス処理をかける
リストの2は以下のようなコードにしました。openCV の filter2D を用いて通常のシャープネス処理をしています。
# シャープの度合い
k = 1
kernel_1 = np.array([
[0, -k, 0],
[-k, 1 + 4 * k, -k],
[0, -k, 0]
])
frame = cv2.filter2D(frame, -1, kernel_1)
リストの3に関しては以前にもご紹介しましたが、ImageMagic の mogrify コマンドによって一括処理をしています。
$ mogrify -unsharp 12x6+0.5+0 ./*
リストの4は以下のようなコードにしました。こちらも openCV の filter2D を用いていますがアンシャープマスクを適用しました。
kernel_2 = np.array([
[0, -1, 0],
[-1, 5, -1],
[-0, -1, -0],
])
rgb_frame = cv2.filter2D(frame, -1, kernel_2)

図 2 の 217 ファイル分の顔画像に対して顔認証処理を行いました。普段のデモ動画では非積極認証でしたが今回の検証は静止画に対しての積極認証となります。
検証結果

プログラム中 ( Face01_CNN ) での閾値は 0.55 です。
この様な理想的光源下での正面顔(積極認証)では 100% の認証率になります。
この検証結果だけから考えると、他人受入率 0% 、本人拒否率 0% ということが出来ます。
実際の顔認証では写真のようには行きません。検体が動いている場合などは「非積極認証」と言われます。
閾値の変更で FRR, FAR ともに値が変わってきますがその関係はトレードオフです。
実際にテスト検証によって1:1認証における FRR, FAR, EER を算出しました。【本人拒否率(本人棄却率)と他人受入率、等価エラー率の測定】からみることが出来ます。

マルチモーダル認証
生体認証はパスワードやカードなどの本人認証技術と異なり、画像処理などにより特徴量空間における類似度でもって本人性を「統計的に」判別するため、その精度は100%ではない。これは全世界共通の大原則です。
このため誤認識の発生を前提にシステム構築する必要があります。
マルチモーダル認証技術は、顔認証という生体認証にプラスワンの生体認証を重ね、認証誤差 0% を目指すものです。
こちらについては別ページ(顔認証技術の今後の動向(2))にまとめてありますのでぜひご覧ください。
マスクをしたままでの顔認証
マスクをつけることが常態化した現在、マスク環境下での顔認証は「出来て当たり前」になりつつあります。
東海顔認証では Face01_CNN という深層学習を使ったアプリケーションをご提供しています。
詳しくはこちらの記事からご覧ください。

マスクをつけた状態での顔認証はマスクをつけていないときよりも認証率は下がると言われています。
東海顔認証の顔認証では 5 points method を用い、より正確に顔認証するために深層学習を用いています。
また、マスクをつけたままの顔認証では学習させる顔画像ファイルを手早く作ることが利便性に繋がります。
そのような時は FaceCrop_CNN を使うと便利です。こちらのページに環境設定などを掲載しています。
以上です。
最後までお読み頂きありがとうございました。