顔認証、マスクをつけたらどうなるの?

素顔とマスク姿
素顔とマスク姿

コロナウィルスの世界的流行によって、殆どの方がマスクを常時装着するようになりました。
東海顔認証ではマスクをつけた顔画像の検出・解析には特別のアプリケーションを用意しています。
今回は Face01 シリーズの中の Face01_Graphics と Face01_Imager をご紹介します。

マスクをつけた顔の検出・解析

通常顔認証を行う場合、顔の 68 の特徴点を検出→特徴量として数値化→比較…の順で認証を行います。
たとえば下のような感じです。

68-points method
dlib C++ Library: Correctly Mirroring Datasets

ところがマスクをかけてしまうとこの 68 箇所がうまく測れなくなる場合があります。

ですのでマスクを常時つけた人々のみを顔認証する場合は「鼻筋から上のみ」の特徴点の特徴量を計測する場合があります。
図で表すと下のような感じです。

 5-point face landmarking model 
5-points method
5-point face landmarking model
Face01 における 68 points method と 5 points method

実際の動作の様子

検証環境として Face01_Graphics では

  • ライブラリの CUDA 設定が終わっていること
  • NVIDIA 製 GeForce RTX 2070 SUPER 程度のグラフィックカード

が推奨されます。

あるいはハードウェア資源が乏しい場合、例えばサーバ上で CPU しか使えない場合は face_attestation() 関数の引数において

  • jitters=0,
  • upsampling=0,
  • mode=’hog’,
  • model=’small’,
  • frame_skip=10,

と指定することによって動作させることが可能です。
Face01_Graphics 動作の軽量化については「Face01_Graphics の場合」をご参照ください。

今回は小池都知事と加藤厚労大臣の会見の様子を Face01_Graphics 1.1.7 ( 68-points landmark model ) で動作させました。
ちなみに Face01_Graphics では呼び出す時に引数 model に small を指定することで簡単に 5 points landmark model を実現できます。反対に引数 model に large を指定すると 68 points landmark model になります。
引数の指定方法についてはこちらからご覧ください。

マスクをはめた複数人物の顔認証検証動画
マスクをはめた複数人物の顔認証検証動画
マスクをはめた小池都知事と加藤厚労大臣の顔認証動作の様子

上の動画で分かるように、極めてスムーズにマスクをはめた異なる人物を認証することが出来ます。

より正確に結果を出すためには

5-point landmark model より 68-point landmark model の方がより正確に顔認証処理を行うことが出来ます。この場合、Face01_imager の場合では

  • mode = ‘hog’
  • model = ‘large’

を引数に与えます。

Face01_imager はサーバ環境という乏しい計算資源を活用するため常に負荷の低い HOG を用います。マスクをはめた顔で顔位置が特定できない場合のみ内部で CNN として処理し、その後の処理は HOG モデルへ戻ります。

まとめ

68 points landmark model と 5 points landmarkmodel では勿論 68 points landmarkmodel の方が正確性に長けています。特に理由がない場合は 68-point landmark model を使用すると良いでしょう。
Face01_imager 1.1.4 以降では顔位置探索が出来ない時の場合のみ、時間のかかる CNN モードに内部処理を切り替えることで計算資源の乏しいサーバ環境下に適応しています。

FNN: マスク姿でも顔認証OK 中国で開発 その実力は?
FNN: マスク姿でも顔認証OK 中国で開発 その実力は?

世界に先駆けて、中国ではマスクによる顔認証システム開発を迅速に行ったことで一躍ニュースになりました。この時の認識率は「90% 以下程度」とのことです。顔の大部分の情報が鼻筋から下にかけて存在するためです。

実際、 5-point landmark model でも同じことが言えます。特徴点を絞っているため、全ての特徴点を扱える 68 point landmark model に比べ精度は落ちます。
単純に特徴点の数だけを比べるならば 5-point landmark model 、つまりマスクをしている顔の顔探索がどうしても出来ない場合、全体の特徴点のたった 7% の特徴点を利用して顔探索することになります。ですので特に処理が難しい場合を覗いては 68-point landmark model を使用すると良いと思います。
マスク着用が常態化している現在ではこういった柔軟なシステムの必要性が益々高まっていくことでしょう。

以上です。
今回はマスクをしたまま顔認証が出来る Face01 シリーズについて解説いたしました。

Follow me!