メインコンテンツへスキップ

顔認識はどのように動いているのか?

顔認識は顔を特徴ベクトルと呼ばれる固定長の数値列に変換し、あるベクトルと別のベクトルの距離を測ります。近い数値になる顔が同一人物として報告されます。この過程で画像そのものが保存されたり比較されたりすることはありません。

最終確認

要点

  • 顔は数値ベクトルになり、比較はピクセルではなくその数値の演算で行われます。
  • 一致とは距離がしきい値を下回ることであり、しきい値は事実ではなく選択です。
  • しきい値を下げると本当の一致も誤った一致も増えます。必ず両方です。
  • 数百万件から探すことは、2 枚を比べることとは別の課題であり、評価も分かれています。
  • この技術が読むのは幾何構造です。名前は知りませんし、確認もできません。

顔認識は手順としてどう進むのか?

どのシステムが実行しても、顔認識は同じ四つの手順をたどります。データから学習した要素が関わるのは三番目だけで、残りは前処理と演算です。

  • 検出:画像内で顔が写っている領域を見つけ、顔が見つからない画像は除外します。
  • 整列:顔を回転・拡大縮小して標準的な向きに合わせ、角度の違う 2 枚を比較できるようにします。
  • ベクトル化:学習済みモデルが整列後の顔を固定長の数値列に変換します。通常は 128〜512 個です。
  • 比較:2 つのベクトルの距離を測り、選ばれたしきい値を下回れば一致として報告します。

顔特徴ベクトルとは何で、何が入っているのか?

特徴ベクトルとは、モデルが本人性を示すものとして学習した幾何情報——顔の各部の相対的な比率と構造——を表す数値の並びであり、ピクセルそのものではありません。圧縮された写真ではなく、そこから顔を意味のある形で復元することはできません。人間が読める形式でもなく、どの数値が鼻や目に対応するといった対応関係もありません。有用なのはただ一点、同一人物の 2 枚は近いベクトルになりやすく、別人はそうなりにくいという性質だけです。

2 つの顔が一致と判定される基準は何か?

しきい値が決めます。これはシステムの運用者が設定するものであり、データから見つかるものではありません。どのしきい値も 2 種類の誤りを引き換えにしており、両方をなくす設定は存在しません。

  • 厳しくすれば報告される一致は減り、本当の一致を取りこぼす割合は増えます。
  • 緩めれば本当の一致は増え、同時に他人も多く返ってきます。
  • 適切な値は誤りごとの損失次第で、端末のロック解除と公開ウェブの検索では前提が異なります。

なぜ数百万の顔から探すほうが 2 枚を比べるより難しいのか?

別の課題であり、評価も分けられています。2 枚を比べるのは検証(1:1)です。大規模な集合から顔を探すのは識別(1:N)であり、NIST が両者を別の試験として評価しているのもそのためです。集合に顔が 1 件増えるたびに、他人がしきい値の内側に入る機会も 1 つ増えます。1 回の比較では無視できる誤り率も、数百万回繰り返せば無視できなくなります。

顔認識は写真に何を求めるのか?

モデルは整列できる顔で学習されているため、取り出せる情報は入力画像にほぼ全面的に依存します。画質の問題はわずかな減点ではなく、たいていは結果そのものを決めます。

  • 圧縮後も構造が残る程度に、顔が画面内で十分大きいこと。
  • 極端な角度はモデルが頼る幾何構造を隠すため、おおよそカメラの方を向いていること。
  • 片側の強い影は測定内容を変えるため、光が均一であること。
  • 目と鼻筋を覆うものは、最も情報量の多い領域を奪います。

顔検索と顔監視はどう違うのか?

共通しているのは数学だけで、それ以外はほとんど異なります。検索は、あなたが渡した 1 枚の写真を、すでに公開されているページと照合し、そのページへのリンクを返します。監視システムは、ライブ映像の中で顔を登録済みリストと継続的に照合するもので、通常は本人が何かを提供することはありません。FaceSearch は前者であって後者ではありません。アップロードされた 1 枚の画像を受け取り、公開情報源を検索し、似た顔が現れるページを返します。カメラには接続しておらず、リストも保持していません。

顔認識に分からないことは何か?

その人が誰であるかは分かりません。分かるのは 2 つの画像が幾何的に似ているということだけで、それ以外——名前、アカウント、両方が同一の実在人物だという判断——は、一致が見つかったページに由来するものであり、モデルに由来するものではありません。説明文が誤っているページでの高い一致度は、やはり誤った答えです。結果は確認の出発点であり、結論ではありません。

出典