人脸检测与识别【选修】
本节定位
人脸任务看起来像“只是检测一个特殊目标”,
但真实系统通常至少包含:
- 找到脸
- 对齐
- 提特征
- 比较相似度
所以这节更重要的是理解:
人脸系统往往是一条流水线,不是单个模型。
学习目标
- 理解人脸检测、对齐和识别之间的区别
- 通过可运行示例理解特征比对的直觉
- 理解人脸系统为什么特别关注误识和隐私问题
- 建立人脸任 务的整体流水线感
一、人脸识别系统通常有哪些步骤?
- 检测:先找到脸在哪
- 对齐:把角度和姿态尽量规范化
- 表示:提取人脸向量
- 匹配:比较向量相似度
二、先看一个最小相似度比对示例
from math import sqrt
face_a = [0.9, 0.2, 0.1]
face_b = [0.88, 0.22, 0.12]
face_c = [0.1, 0.8, 0.9]
def cosine(a, b):
dot = sum(x * y for x, y in zip(a, b))
na = sqrt(sum(x * x for x in a))
nb = sqrt(sum(x * x for x in b))
return dot / (na * nb)
print("a vs b:", round(cosine(face_a, face_b), 4))
print("a vs c:", round(cosine(face_a, face_c), 4))
2.1 这个例子最重要的直觉
人脸识别很多时候不是直接分类名字,
而是:
- 看两张脸的表示是否足够接近
三、最常见误区
3.1 只看检测,不看对齐
对齐往往会直接影响后续识别稳定性。
3.2 只看相似度,不看阈值风险
阈值设太宽容易误识,
设太严又容易漏识。