Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Facial Recognition

顔認識は、顔の埋め込み表現を比較して人物を識別または検証します。処理パイプラインの仕組み、検証と識別の違い、バイアス、プライバシーについて解説します。

顔認識は、顔画像を登録済みの顔と比較して人物を識別または認証する生体認証技術です。最新のシステムではディープラーニングを使って各顔を埋め込み表現に変換します。これは一般にフェイスプリントと呼ばれる数値ベクトルで、2つの顔の埋め込み表現の類似度から、同一人物かどうかを判定します。スマートフォンのロック解除、空港ゲートでの旅客の通過迅速化、オンラインで銀行口座を開設する顧客の本人確認などに使われます。また、本人に知られずに顔を撮影できるため、コンピュータービジョンの中でも最も規制の厳しい用途の1つです。

顔認識の仕組み#

顔認識システムは画像ごとに4つの段階を実行します。

  1. 検出:顔検出器が各顔を見つけ、バウンディングボックスといくつかの顔ランドマークを返します。
  2. 位置合わせ:目、鼻、口の位置が一定になるように顔を回転、拡大縮小、切り抜きします。これにより、頭の向きや距離による変動の大部分を取り除きます。
  3. CNNによるエンコード:ネットワークが位置合わせ済みの切り抜き画像を固定長の埋め込み表現に変換します。
  4. コサイン類似度による照合:新しい埋め込み表現を登録済みの埋め込み表現と比較し、しきい値に基づいて一致を判定します。大規模な導入では、登録済みのフェイスプリントをベクトルデータベースに保存して高速検索を実現します。

顔検出は物体検出の問題です。WIDER FACEなどの顔データセットでファインチューニングしたUltralyticsのYOLO26モデルは、エッジカメラ上でリアルタイムに実行でき、後続段階に顔ボックスを渡せます。ディープラーニング以前のシステムでは、顔のランドマーク間の距離からEigenfaces、局所二値パターンまで、人手で設計した特徴に依存していました。照明、表情、年齢が変わっても学習済み埋め込みのほうがはるかに安定するため、こうした特徴は置き換えられました。2015年のFaceNetは、トリプレット損失を使ってコンパクトな128次元の埋め込みを直接学習しました。現在はArcFaceなどのマージンベースの損失によって、異なる人物の埋め込みをさらに離します。照合段階では、次の2種類の問いに対応します。

認証(1:1)では、スマートフォンが所有者を確認する場合のように、顔が申告された本人のものかどうかを判定します。識別(1:N)では、アクセス制御システムが登録済みの全従業員と顔を照合する場合のように、ギャラリー全体を検索します。OpenCV Zooのモデルを使えば、数行のコードでパイプライン全体を実行できます。このコードでは画像内の顔を登録した後、反転コピー内の顔をそのギャラリーと照合して識別します。

import urllib.request

import cv2

# Download OpenCV Zoo's face detector (YuNet), face recognizer (SFace), and a test image
zoo = "https://github.com/opencv/opencv_zoo/raw/main/models"
urllib.request.urlretrieve(f"{zoo}/face_detection_yunet/face_detection_yunet_2023mar.onnx", "yunet.onnx")
urllib.request.urlretrieve(f"{zoo}/face_recognition_sface/face_recognition_sface_2021dec.onnx", "sface.onnx")
urllib.request.urlretrieve("https://ultralytics.com/images/bus.jpg", "bus.jpg")
img = cv2.imread("bus.jpg")
detector = cv2.FaceDetectorYN.create("yunet.onnx", "", (img.shape[1], img.shape[0]))
recognizer = cv2.FaceRecognizerSF.create("sface.onnx", "")

# Enroll each detected face as an aligned 128-D embedding
gallery = [recognizer.feature(recognizer.alignCrop(img, face)) for face in detector.detect(img)[1]]

# Identify the faces of a mirrored copy against the gallery (SFace match: cosine >= 0.363)
mirror = cv2.flip(img, 1)
for face in detector.detect(mirror)[1]:
    probe = recognizer.feature(recognizer.alignCrop(mirror, face))
    print([round(recognizer.match(probe, g, cv2.FaceRecognizerSF_FR_COSINE), 2) for g in gallery])

[0.87, 0.06]と[0.09, 0.89]が出力されます。反転した各顔は、自分自身の登録済み埋め込み表現との類似度がしきい値0.363を大幅に上回り、もう一方の人物との類似度は大幅に下回ります。

  • 顔検出: 画像内の顔の位置を検出しますが、誰の顔かは特定しません。顔認識の最初の段階であり、カメラのオートフォーカスや顔のぼかしにも利用されます。
  • 顔分析とアフェクティブコンピューティング:本人確認は行わず、表情、頭の向き、年齢などの属性を推定します。
  • 人物再識別(Re-ID):服装などの全身の外見を使ってカメラ間で人物を照合します。後ろ向きや低解像度でも機能しますが、短い時間範囲でのみ利用できます。

実際のアプリケーション#

  • デバイスのロック解除:スマートフォンは一瞬で所有者を認証します。AppleのFace IDは3万個を超える赤外線ドットを投影して深度マップを作成するため、印刷した写真では模倣できません。
  • 旅行と国境管理:自動ゲートは、旅行者のライブ写真と電子パスポートのICチップに保存された写真を照合します。
  • 本人確認:銀行やオンラインサービスは、口座開設時にセルフィーを公的身分証明書の写真と照合し、ライブネスチェックも組み合わせます。
  • 写真の整理:写真アプリは個人のライブラリ全体から顔をクラスタリングし、家族の写真をすべて見つけられるようにします。

精度、バイアス、なりすまし#

すべてのシステムでは、2種類の誤りのトレードオフが生じます。誤一致では別人を受け入れ、誤不一致では本人を拒否します。このバランスは類似度のしきい値で決まります。NIST顔認識技術評価(FRTE)は、以前はFRVTと呼ばれ、数百万枚の画像を使って商用アルゴリズムをベンチマークします。99の開発元による189のアルゴリズムを対象とした2019年の調査では、その大半で偽陽性率に人口統計学的な差が見られ、これはアルゴリズムバイアスの代表例となりました。顔認識は写真、画面の再生、マスクでも欺けるため、本番システムでは深度センサー、赤外線、微細な動きの分析を使ったプレゼンテーション攻撃検知(ライブネス検知とも呼ばれます)を追加します。

プライバシーと規制#

フェイスプリントは生体データであるため、法律では極めてセンシティブな個人データとして扱われます。GDPRでは、人物の識別に使われる生体データは特別なカテゴリーに属し、明示的な法的根拠を必要とします。また、イリノイ州の生体情報プライバシー法は、企業がフェイスプリントを収集する前に書面による同意を求めています。EU AI法はさらに踏み込み、2025年2月2日以降、インターネットやCCTVの画像を無差別にスクレイピングして顔認識データベースを構築すること、および法執行機関が限定的に定められた少数のケースを除き、公共空間でリアルタイムの遠隔生体識別を行うことを禁止しています。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう