ACES エンジニアブログ

ACESのエンジニアブログです。

マスク着用時にも認証可能な顔認識モデルを作成した話

こんにちは、株式会社ACESの市川です。アルゴリズムエンジニアとしてDeep Learningを中心としたアルゴリズムの開発・検証を進めています。

ACESでは「アルゴリズムで、社会をもっとシンプルに。」というビジョンの元、「Issue driven, simple solution.(最重要の課題発見から、最高の課題解決をしよう。)」、「Fact based, build trust.(客観的事実を大切にし、信頼関係を構築しよう。)」、「Gemba first, verify quickly.(自分の足で情報を得て、自分の手で検証しよう。)」という行動指針を掲げ、画像認識を中心に様々なアルゴリズムの開発を行っています。

その中でも、顔認識アルゴリズムは多岐に渡る用途を持つAIアルゴリズムのひとつで、研究・ビジネル両面から高精度のモデルが多数開発されています。しかし、現実世界の「Issue」を考えると、特に近年は「マスクをつけている場合でも正確に認証が可能な顔認識アルゴリズム」が必要になっているものの既存のモデルではこれに対応できないことが指摘されています。

参照:マスクがいかに顔認識を阻んでいるか--NISTが研究結果を発表

japan.cnet.com

今回は、その「Issue」を解決するために取り組んだ「マスク対応型顔認識モデルの開発」について紹介させて頂きます。

顔認識アルゴリズムの基本

顔認識を行う方法にはいくつか選択肢がありますが、現在主流となっている手法のひとつに顔特徴量ベースの手法があります。この手法では、特徴抽出器を利用して顔画像からその人物固有の特徴ベクトルを求めます。この特徴ベクトルが得られれば、異なる2つの顔画像について、特徴ベクトル同士の類似度を比較することで2つの顔画像が同一人物か否かを推定することができるようになります。

f:id:tripdancer0916:20211011222050p:plain
顔画像を入力として、ニューラルネットワークはその人物固有の特徴ベクトルを出力する

特徴ベクトルは当然どのようなものでもいいというわけではなく、「同一人物同士は近く、異なる人物同士は遠い」ような性質を持つ必要があります。この性質を満たす特徴ベクトルを得るニューラルネットワークを学習させるために、距離学習を用いて学習が行われます。距離学習についてはさまざまな文献があり分かりやすくまとまっているので、ここでは割愛したいと思います。

f:id:tripdancer0916:20211004155043p:plain
同一人物同士は近く、異なる人物同士は遠くなるような特徴ベクトル

距離学習については例えば以下の記事が分かりやすいのでご参照ください。

qiita.com

マスク対応の方針

なぜ一般的な顔認識モデルはマスクをつけている人物の顔認識が苦手なのか?それには2つの原因があります。

  1. 口元がマスクで隠れているため、質の高い特徴ベクトルを得るために使える情報が減ってしまっている
  2. モデルを学習する際に用いるデータの中に、マスクをつけている写真が著しく少ない

1.についてはまさにその通りなのですが、例えば人であればマスクをつけていても誰か認識できるという経験事実があるため、目元から上の情報だけでも十分「その人らしさ」を抽出できるのではという仮説が成り立ちます。

この仮説に基づいて、ニューラルネットワークを「目元から上という限られた情報」のみからでも特徴ベクトルを推定できるように学習させるという方針のもと、2.の問題を同時に解決するために「人工的にマスク付きの顔画像を生成してデータ拡張を実施する」というプロセスを実行することにしました。

人工マスクデータの作成

まず「マスクを顔のどの位置につけるのか」を定めるために、顔特徴点推定モデルを利用します。これは顔画像を入力として、定められた顔特徴点の座標を推定するアルゴリズムで瞬き検知や視線推定などの技術に応用されています。

以下の画像のように、顔特徴点推定モデルの出力結果から顔の輪郭がわかるので、この輪郭に沿うようにマスク画像を合成することで、マスク付き画像を作成することができました。

f:id:tripdancer0916:20211004160447p:plain
まず顔の特徴点を抽出してマスクを合わせる位置を定め、マスク画像を合成する

上記のようなマスクの合成は単純なパターンですが、他にも人物の向きや画像の色調・マスクの多様な種類に合わせて様々なパターンの合成をしています。

学習結果

マスク対応モデルの有効性を検証するため、検証用の画像に人工的にマスクを合成したものCALFW+mask)と本物のマスク付き画像を集めたデータセットであるMFR2 というデータセットを用いて、マスク対応をしていないモデルとの精度比較を実施しました。

指標としては「2枚の画像が与えられた時にそれが同一人物か否かを判定する際の精度」(=ACC)を用いました。

結果は以下のようになり、どちらのデータセットでも4,5%程度の精度改善が実現しました。

f:id:tripdancer0916:20211011222605p:plain

また、Masked Face Recognition Competitionというコンペに参加しました。これはマスクをつけた顔画像に対する顔認識モデルの精度を競うコンペで、様々な背景のもと様々なマスクを着用した人物同士について人物同士が一致しているかどうかを正しく判定できるかを評価します。

上で説明した手順で学習させたモデルはこのコンペで3位を獲得することができました。なお、今回紹介したモデルや論文に掲載されているモデルはベンチマークの内容で、実際に提供しているモデルは、データセットの拡充やクレンジング、学習アルゴリズムの工夫をはじめ、様々な工夫を行って、さらなる精度向上も行っています。

コンペの結果は以下の論文にて公開されています。

ieeexplore.ieee.org

(arxiv: https://arxiv.org/abs/2106.15288 )

既存の顔認識モデルとの比較

上で示した学習結果はあくまでベンチマーク指標を用いた定量的な結果なので、現実世界における顔認識を考えた時に有効なモデルになっているかを確認する必要があります。

そこで、今回はAWSのサービスのひとつで、広く用いられているAmazon Rekognitionの「顔の比較」デモと比較してみました。この「顔の比較」は参照画像を比較画像を入力すると、比較画像の中から顔を検出して、それぞれの顔について参照画像の顔と一致しているかどうかを出力してくれます。

f:id:tripdancer0916:20211003181618p:plain
デモの様子。かなり正確な顔認証ができるようです

早速自分の顔写真で試してみました。比較画像は会社のメンバーと撮影した写真を使用します。

f:id:tripdancer0916:20211003181749p:plain
実行結果。顔の検出・認識ともに高精度で実現できていることが分かります。

光の当たり具合などでパッと見た時の印象は変わっているかもしれませんが、正確に同一人物を当てることができています。

では参照画像をマスク付きにした場合はどうでしょうか。

f:id:tripdancer0916:20211003182016p:plain
マスク付きの画像を入力した時の結果

比較画像内の全員が「不一致」と判定されました。やはり、マスクをつけている画像に対しては苦手なようです。

次に、今回開発した顔認識モデルを用いて一致度の計算を行なってみます。

f:id:tripdancer0916:20211011222533p:plain

同一人物の判定は50%を閾値として判定しているので、マスク着用時と非着用時、どちらにおいても正しく同一人物を判定できていることが分かります。

ACESでは積極的に採用を行っています!

ACESでは、積極的に採用を行っています。ACESでは「アルゴリズムで、社会をもっとシンプルに」するために様々な観点からアルゴリズムの開発を行っています。ACESに興味を持っていただいた方がいらっしゃいましたら、お気軽にご連絡下さい!

会社紹介資料はこちら↓

speakerdeck.com

ACESのリクルートページはこちら↓

acesinc.co.jp