导读
随着硬件性能的提升和人脸数据量的增大,人脸识别也越来越成熟,商业应用也越来越多。经常看到很多文章说,人脸识别算法做了什么什么改进在LFW上的识别准确率达到99.6%以上
。
实际上,仅仅一个准确率指标是无法衡量一个模型的性能,准确率无法体现出人脸识别中最重要的指标通过率
和拒绝率
,通过率
包含两种情况同一个人通过的概率和不同人通过的概率,拒绝率
包含两种情况不同人被拒绝的概率和同一个人被拒绝的概率,通常我们希望模型在不同人通过率越低的情况下同一个人通过率越高越好,下面的评估指标主要也是基于这两个进行演化的。
人脸识别
现在人脸识别的应用多种多样,如人脸考勤、实名验证、身份验证、人脸支付以及天网系统等。实际上底层的实现技术主要还是依靠人脸验证
和人脸搜索
,人脸验证也称为1:1人脸匹配
,人脸搜索也称为1:N人脸匹配
。
首先我们从包含人脸的图片中通过人脸检测
提取出人脸的位置信息
以及人脸关键点
,然后通过仿射变换
结合人脸关键点进行人脸对齐
,获取到对齐后的人脸图片。再将人脸图片通过人脸识别模型
进行人脸特征提取,提取出来的特征是一个高维向量,这个向量的维度通常是128、256、512、1024甚至更高。
判断两张人脸图片是否相似的度量主要有两个指标欧式距离
和余弦相似度
。先通过人脸识别模型
将人脸图片转换为特征向量
。欧式距离
顾名思义就是计算两个向量的欧式距离,所以两个向量的欧式距离越小表示他们越相似。余弦相似度
就是计算两个向量的夹角的余弦值,
c
o
s
θ
cos\theta
cosθ的取值范围在
[
−
1
,
1
]
[-1,1]
[−1,1],我们可以对其进行归一化操作到
[
0
,
1
]
[0,1]
[0,1]通过
0.5
+
0.5
∗
c
o
s
θ
0.5+0.5*cos\theta
0.5+0.5∗cosθ来实现,余弦相似度越大表示是同一个人的概率越大。
无论是1:1人脸匹配
还是1:N人脸匹配
,我们都需要先确定一个阈值(欧式距离或相似度),通常人脸相似的度量指标都是用的相似度
,我们后面所说的阈值其实也就是一个相似度阈值。通过人脸数据集根据通过率或拒绝率
来确定阈值,大于这个阈值表示为同一个人否则不是同一个人。
人脸验证
1:1人脸验证(verification),比对两张图片是否为同一个人,常见的应用有火车站人脸闸机实名验证
、手机人脸解锁
等。通过判断比对图片的相似度是否大于阈值,常用的性能评估指标有如下几个
- FAR
FAR
(False Accept Rate)认假率,表示错误的接受比例,与FPR
(False Positive Rate)假正例率等价,指不是同一个人却被错误的认为是同一个人占所有不是同一个人比较的次数
,计算公式如下
F A R = 非 同 人 相 似 度 > T 非 同 人 比 较 的 次 数 FAR = \frac{非同人相似度>T}{非同人比较的次数} FAR=非同人比较的次数非同人相似度>T
F P R = F P F P + T N FPR = \frac{FP}{FP+TN} FPR=FP+TNFP
关于详细的混淆矩阵(TP、TN、FP、FN)说明,请参考我的另一篇文章分类算法中常用的评估指标 - TAR
TAR
(True Accept Rate)表示正确的接受比例,与TPR
(True Positive Rate)真正率等价,指是同一个人且被正确的认为是同一个人占所有同一个人比较的次数
,计算公式如下
T A R = 同 人 相 似 度 > T 同 人 比 较 的 次 数 TAR = \frac{同人相似度>T}{同人比较的次数} TAR=同人比较的次数同人相似度>T
T P R = T P T P + F N TPR = \frac{TP}{TP+FN} TPR=TP+FNTP - FRR
FRR
(False Reject Rate)错误拒绝率,与FNR
(False Negative Rate)假负率,指是同一个人但被认为不是同一个人占所有是同一个人比较的次数
,计算公式如下
F R R = 同 人 相 似 度 < T 同 人 比 较 的 次 数 FRR = \frac{同人相似度<T}{同人比较的次数} FRR=同人比较的次数同人相似度<T
F N R = F N F N + T P FNR = \frac{FN}{FN+TP} FNR=FN+TPFN
在一些1:1的人脸识别比赛中,也会有一些其它的评估指标,FMR
(false match rate)和FNMR
(false non-match rate)。FMR
指错误匹配率
等价于FAR,FNMR
指错误的不匹配率
等价于FRR
。
有时候还会看见类似于FNMR @ FMR = 0.000001
,这种表达式所指示的是先在数据集上计算出FMR = 0.000001时的阈值,然后再根据这个阈值计算FNMR。类似于这种TAR=0.998@FAR=1e-6,表示的是当不是同一个人通过率为1e-6时,相同人的通过率为99.8%。对于1:1人脸验证来说当FAR越低的情况下,TAR越高越好
人脸搜索
1:N人脸识别评估分为两种情况开集识别
(open-set identification)和闭集识别
(close-set identification)。
在评估1:N的人脸识别时我们需要三组图像,gallery
G(底库,已注册的人脸库),probe
(探针,待识别的人脸图像),probe
分为
P
n
P_n
Pn和
P
g
P_g
Pg,
P
n
P_n
Pn中的人脸照片不在gallery
中,被称为imposter
,
P
g
P_g
Pg中的人脸照片在gallery
中,被称为genius
。
开集识别
开集识别
(open-set identification):开集识别需要解决的问题是判断一个probe
P
j
P_j
Pj在不在gallery
中,如果在这个人是谁。
P
j
P_j
Pj可以在gallery
中,也可以不在。
假设gallery
G
=
{
g
1
,
g
2
.
.
.
.
.
g
n
}
G=\{g_1,g_2.....g_n\}
G={g1,g2.....gn},
g
i
g_i
gi表示gallery
中的一个人,待测人脸
P
j
P_j
Pj与每个
g
i
g_i
gi计算一个相似度,用
S
j
i
S_{ji}
Sji表示,
S
j
i
S_{ji}
Sji表示两张人脸图片是同一个人的概率。我们将G
中的每一个人与
P
j
P_j
Pj计算相似度,得到一个集合
S
{
s
j
1
,
s
j
2
.
.
.
.
.
s
j
n
}
S\{s_{j1},s_{j2}.....s_{jn}\}
S{sj1,sj2.....sjn},对集合
S
S
S进行由大到小的排序(用的欧式距离就是从小到大排序)。假定与
P
j
P_j
Pj在gallery
中对应人的是
g
∗
g*
g∗,定义
r
a
n
k
(
P
j
)
=
n
rank(P_j)=n
rank(Pj)=n表示
P
j
P_j
Pj与
g
∗
g*
g∗的相似度排在第n位,
r
a
n
k
1
rank1
rank1也称为
t
o
p
m
a
t
c
h
top\ match
top match。
对于刷脸支付
就是一个
t
o
p
1
top1
top1的open-set identification,人脸身份验证
就是一个
t
o
p
k
topk
topk的open-set identification。
闭集识别
闭集识别
(close-set identification):闭集识别需要解决的问题是,在gallery
中找到probe
P
j
P_j
Pj,
P
j
P_j
Pj属于gallery
中。与开集识别
一样,闭集识别关心的也是在
t
o
p
k
topk
topk中是否包含正确的识别结果。
评估指标
下面的评估指标在开集识别
和闭集识别
中都适用
- DIR
DIR
(Detection and Identification Rate):指
P
j
∈
P
g
P_j \in P_g
Pj∈Pg与
G
G
G中的真实的结果
s
∗
s*
s∗之间的相似度大于
τ
\tau
τ且大于其他所有与
P
j
P_j
Pj不是同一个人的相似度在
P
g
P_g
Pg中所占的比例,DIR
衡量的是库内人员的通过性能。计算公式如下
P
D
I
(
τ
,
1
)
=
∣
{
P
j
∈
P
g
,
r
a
n
k
(
P
j
)
=
1
,
a
n
d
P
j
∗
>
τ
}
∣
∣
P
g
∣
P_{DI}(\tau,1)=\frac{|\{P_j\in P_g,rank(P_j)=1,and\ P_{j*}>\tau\}|}{|P_g|}
PDI(τ,1)=∣Pg∣∣{Pj∈Pg,rank(Pj)=1,and Pj∗>τ}∣
下面我们来举例说明一下
假设G中有A、B、C三个人的人脸信息每个人有一张照片,Pj是属于C的另一张人脸照片,如果Pj与A、B、C的相似度分别为0.5、0.6、0.9,τ为0.7,那么此时才算是匹配正确。如果Pj与C的相似度为0.68<τ,会被认为是库外人员从而导致漏匹配。如果Pj与A、B、C的相似度为0.6、0.8、0.78,那么此时Pj的top1匹配应该是B,因为C与Pj的相似度排在第二位是rank(Pj)=2,此时Pj匹配上了错误的人。
- FAR
FAR
(False Alarm Rate):指
P
j
∈
P
n
P_j \in P_n
Pj∈Pn与
G
G
G中最相似的人相似度大于
τ
\tau
τ在
P
n
P_n
Pn中所占的比例,FAR
衡量的是对库外人脸的拒绝性能也是人脸识别系统安全性的保证
。计算公式如下
P
F
A
(
τ
)
=
∣
{
P
j
∈
P
n
,
m
a
x
i
(
s
j
i
)
>
=
τ
}
∣
∣
P
n
∣
P_{FA}(\tau)=\frac{|\{P_j \in P_n,max_{i}(s_{ji})>=\tau\}|}{|P_n|}
PFA(τ)=∣Pn∣∣{Pj∈Pn,maxi(sji)>=τ}∣
对于1:N的人脸搜索来说,当FAR越低的情况下,DIR越高时,表示模型的性能越好
,下面我们通过一个例子来说明一下,这两个评估指标是如何计算的
gallery(G) | ||||
---|---|---|---|---|
A | B | C | ||
P(g) | a | 0.92 | 0.83 | 0.75 |
b | 0.88 | 0.75 | 0.67 | |
c | 0.54 | 0.67 | 0.68 | |
P(n) | d | 0.68 | 0.55 | 0.49 |
e | 0.56 | 0.65 | 0.78 | |
f | 0.59 | 0.61 | 0.67 |
上表展示了
P
g
P_g
Pg(照片在G中)和
P
n
P_n
Pn(照片不在G中)在gallery
(G)中的测试结果,a、b、c在G中分别对应A、B、C,d、e、f均不在G中。阈值
τ
\tau
τ取0.7时,我们来计算一下DIR
和FIR
- a与A的相似度最高,且
S
a
A
>
τ
S_{aA} > \tau
SaA>τ,所以
匹配成功
- 虽然b与B的相似度
S
b
B
>
τ
S_{bB}>\tau
SbB>τ,但
S
b
B
<
S
b
A
S_{bB} < S_{bA}
SbB<SbA,所以
匹配错误
- c与C的相似度最高,但
S
c
C
<
τ
S_{cC}<\tau
ScC<τ,所以
匹配错误
所以 D I R = 1 / 3 ≈ 33.33 % DIR=1/3 \approx 33.33\% DIR=1/3≈33.33%
- d与A的相似度最高,且
S
d
A
<
τ
S_{dA} < \tau
SdA<τ,因为d不在库中,所以
匹配正确
- e与C的相似度最高,且
S
e
C
>
τ
S_{eC} > \tau
SeC>τ,因为c不在库中,所以
匹配错误
- f与C的相似度最高,且
S
f
C
<
τ
S_{fC} < \tau
SfC<τ,因为f不在库中,所以
匹配正确
所以 F A R = 1 / 3 ≈ 33.33 % FAR=1/3 \approx 33.33\% FAR=1/3≈33.33%