マスク(透明、普通)をして顔認証ができそうか確認しました
はじめまして、ANKH Systems ソフトウェアエンジニアのh-kim
です。近年、COVID-19(新型コロナウイルス感染症)の感染拡大防止のため、非接触システムの需要が増えています。例えば、企業の勤怠管理や入退室管理での「顔認証機能」活用は増えていると思いますが、withコロナの世界では、感染病対策のマスクを外しにくい状況があります。
そんな中、「マスクをしたまま、顔認証が出来るか」を、今回はMicrosoft社のFace APIを利用し、マスクを着用した状態で顔識別が行えそうか小さい実験を行いました。
顔認識システムについて
顔認識システム(Face recognition system)を利用した生体認証は2種類があります。
1:1 照合 (Verification): 検索する顔が特定人物であるか確認。e.g. スマートフォンのロック解除
1:N 識別 (Identification): 顔がDBに登録されているか、そうであれば誰か。e.g. 入退管理
今回、確認したいことは1:Nの顔識別です。1:N顔識別器は識別結果として指定された閾値を超える相似スコアの登録人物(ID)の候補リストを出力します。1:N 顔識別で識別の性能指標は2種類、誤受入識別率と誤拒否識別率があります。
誤受入識別率(FPIR, False positive identification rate): 登録していない人物が間違って識別される割合
誤拒否識別率(FNIR, False negative identification rate): 登録人物が認識に失敗する割合
誤受入識別率(FPIR)と誤拒否識別率(FNIR)はトレードオフ関係で、相似スコアの閾値Tを低くするとFNIRは低くなりますがFPIRが増え、閾値Tを高くするとFPIRが低くなりますがFNIRが増えます。
犯罪の捜査など識別された候補リストから人が確認するアプリケーションでは閾値を低めにし選択肢を多めにすることができ、登録した人のみ入室可能とするようなアプリケーションではFPIRを低くするために閾値を高く設定する必要があります。
Microsoft社のFace APIについて
実験にはMicrosoft社で提供している顔認識サービス, Face APIを使用しました。こちらのサービスはWeb APIの他に .Net, Python, Java, Node.js, Go, iOSの開発環境を提供しています。
Microsoft社は米国国立標準技術説明所(NIST)の顔認識ベンダーテスト(FVRT)の1:N顔識別で良い成績(*)をとっており、かつ外部開発者が利用できる顔認識サービスを提供しています。
実験概要
本実験では、マスクをした状態でも1:N顔識別ができそうか確認するために2種類のマスクを用意しました。
一つ目は、ドラッグストアなどで一般的に販売されているサージカルマスクです。
二つ目は、サービス業などでよく使われている、透明シールドのマスクです。鼻や唇が確認できることからサージカルマスクより顔識別しやすくなると考えられます。今回は、特殊抗菌処理コーティングした透明シールド付マスク「MEDIFIT-G(メディフィットG)」を使用しました。
実験には、ANKH Systemsの社員の協力を得て顔写真を撮影したのですが、撮影はオフィスにて行い、カメラはそれぞれのスタッフのノートPC Webcamを使いました。
■ 事前の「登録」顔写真
顔認識システムに、4名の社員に登録をしてもらいました。それぞれ、「マスクをしていない素顔:正面」で登録しています。
■ 「テスト」用の顔写真
1) 登録者の顔写真
上記同じ4名に、「登録」顔写真とは別の写真を、用意してもらいました。こちらの写真は登録人物が識別に失敗する割合(誤拒否識別率, FNIR)を確認するために使います。
a. マスクをしていない素顔: 2枚/人、計8枚
b. 透明マスクを着用した場合: 3枚/人、計12枚
c. 通常のサージカルマスクを着用した場合: 3枚/人、計12枚
2) 未登録者の顔写真
事前に、顔認識システムに登録してない5人の素顔3枚/人、計15枚の顔写真も用意しました。こちらの写真は登録していない人物が誤って識別される割合(誤受入識別率, FPIR)を確認するために使います。
尚、Microsoft Face APIでの顔識別では、顔検出モデルと顔認識モデルを設定する必要があります。顔検出モデルでは表情情報などが取れない代わりに低画質でも検出できるdetection_02
、顔認識モデルでは現在(2020年9月)利用可能な一番精度が良いそうなrecognition_03
を使用しました。
結果
まず、Face API - Identifyの閾値(confidenceThreshold
)を0にし、識別を行います。この場合、未登録の人物識別でも認識器は識別候補を返却します。登録人物の写真での誤拒否識別率と識別した第一候補のConfidence(相違スコア)の結果が表1になります。
種別 | 誤拒否識別率 FNIR(R=1, T=0) | Confidence | Min Confidence | Max Confidence |
---|---|---|---|---|
素顔 | 0.00 | 0.96 ± 0.02 | 0.93 | 0.98 |
透明マスク | 0.00 | 0.88 ± 0.08 | 0.74 | 0.95 |
サージカルマスク | 0.00 | 0.66 ± 0.14 | 0.40 | 0.82 |
未登録顔 | - | 0.20 ± 0.11 | 0.095 | 0.38 |
表1. 閾値を0にして識別した結果。Confidenceは識別した第一候補のConfidence
未登録人物の識別した最高Confidenceが0.38であり、登録人物の最低Confidence 0.40より低いため、閾値をその間の値にすることで、今回のテストでは誤受入識別率FPIR=0.0の状況で全種別(素顔、透明マスク、サージカルマスク)の誤拒否識別率FNIR=0.0を達成できます。
ですが、登録人物が増え、未登録人物の件数が増えると似顔の割合が増えると考えられるので、未登録人物での識別候補のConfidenceは上ると思われます。大人数が使用する識別システムの場合、低い誤受入識別率(FPIR)を維持するためにはこれより高い閾値が必要になるでしょう。識別した第一候補のConfidenceは素顔、透明マスク、サージカルマスク純で低くなっており、閾値を高く設定すると誤拒否識別率(FNIR)はサージカルマスクをした場合高く、素顔で識別を受けた場合低くて、透明マスクはその間ほどである見込みです。
未登録の人物がマスクをした状態で識別した場合のConfidenceの傾向を確認するために、顔認識システムに登録する人数を4人から3人に減らし、登録しない1人の写真(素顔 3枚、透明マスク 3枚、サージカルマスク 3枚)で閾値を0にし認識を行いました。認識された第一候補のConfidenceの結果は表2になります。
種別 | Confidence |
---|---|
素顔 | 0.31 ± 0.04 |
透明マスク | 0.22 ± 0.04 |
サージカルマスク | 0.100 ± 0.002 |
登録人物でなく未登録の人物での識別候補のConfidenceも透明マスク、サージカルマスクを着用することで減少する傾向があります。未登録の人物がマスクし顔識別することで誤受入(False positive)されることが増えることはなく、誤受入識別率は下るでしょう。
まとめ
Microsoft社のFace APIで顔識別システムを作成し、社員9人の写真を利用し確認しました。
今回の実験では誤受入識別率FPIR=0.0の状況で素顔、透明マスク、サージカルマスクの3種別に関してすべてFNIR=0.0の識別結果が得られました。良い画質ではないWebcam, 場所によっては逆光になるオフィスでの実験でしたが、使用人数がすくないシステムであればマスク着用でも無難に認識できる顔識別システムが作れることを確認しました
識別された候補のConfidenceは素顔、透明マスク、サージカルマスク順に低くなっています。大人数登録、低誤受入識別率(FPIR)の要求される状況で、閾値は高くする必要があり、誤拒否識別率(FNIR)は素顔が一番低く、透明マスク、サージカルマスク順に高くなるでしょう。
未登録者の顔識別で、Confidenceは素顔、透明マスク、サージカルマスク順に低くなっていました。未登録人物がマスクを着用することで誤受入識別(False positive)が増えることはなく、少くなる見込みです。
最後に
今回はマスクをした状況下で顔識別モデル(Microsoft Face API)の識別結果を確認しましたがいかかでしたでしょうか?
弊社では顔識別を利用したアプリケーション開発などを取り組んでいます。
少しでも気になった方はぜひ当社にお気軽にお問い合わせください。
[1]: Grother, P., Grother, P., Ngan, M., & Hanaoka, K. (2019). Face Recognition Vendor Test (FRVT) Part 2: Identification. US Department of Commerce, National Institute of Standards and Technology.
https://doi.org/10.6028/NIST.IR.8271
[2]: 日本規格協会. (2010). 情報技術-バイオメトリック性能試験及び報告-第 1 部: 原則及び枠組み. JIS X 8101-1 (ISO/IEC 19795-1).