【机器学习小记】【人脸识别】deeplearning.ai course4 4th week programming

目标:
	1. 使用预训练好的模型,进行
	1.1 人脸验证
	1.2 人脸识别

参考自:
【中文】【吴恩达课后编程作业】Course 4 - 卷积神经网络 - 第四周作业 - 人脸识别与神经风格转换

人脸验证

给出一组【人脸和身份】,在数据库中查找,【人脸】和【身份】是否匹配。
在这里插入图片描述
将两个图片送入CNN网络进行编码成128维的向量。
比较两个编码之间的距离距离越小,越相似

CNN网络

使用FaceNet模型(别人已经训练好)

CNN的损失函数

三元组损失

  • A是“Anchor”,是一个人的图像。
  • P是“Positive”,是相对于“Anchor”的同一个人的另外一张图像。
  • N是“Negative”,是相对于“Anchor”的不同的人的另外一张图像。

A-P的平方,每个维度相加 + α \alpha α < A-N的平方,每个维度相加
∑ i n ∣ ∣ f ( A i ) − f ( P i ) ∣ ∣ 2 + α < ∑ i n ∣ ∣ f ( A i ) − f ( N i ) ∣ ∣ 2 \sum_i^n||f(A_i)-f(P_i)||^2 + \alpha < \sum_i^n||f(A_i) - f(N_i)||^2 inf(Ai)f(Pi)2+α<inf(Ai)f(Ni)2
A与P之间的距离要尽可能小,A与N之间的距离要尽可能大。
其中, α \alpha α是【相同】和【不同】图像之间至少的区分度。


移项得,
∑ i n ∣ ∣ f ( A i ) − f ( P i ) ∣ ∣ 2 − ∑ i n ∣ ∣ f ( A i ) − f ( N i ) ∣ ∣ 2 + α < 0 \sum_i^n||f(A_i)-f(P_i)||^2 - \sum_i^n||f(A_i) - f(N_i)||^2 + \alpha < 0 inf(Ai)f(Pi)2inf(Ai)f(Ni)2+α<0
我们定义,损失函数(三元组损失):
J ( A , P , N ) = m a x ( ∑ i n ∣ ∣ f ( A i ) − f ( P i ) ∣ ∣ 2 − ∑ i n ∣ ∣ f ( A i ) − f ( N i ) ∣ ∣ 2 + α , 0 ) J(A,P,N) = max(\sum_i^n||f(A_i)-f(P_i)||^2 - \sum_i^n||f(A_i) - f(N_i)||^2 + \alpha,0) J(A,P,N)=max(inf(Ai)f(Pi)2inf(Ai)f(Ni)2+α,0)
使J尽可能得小。

实现验证

输入【人脸】和【身份】。我们需要验证,该【人脸】是否是该【身份】。


我们可以事先将数据库中的所有【人脸】进行编码,并使用字典将【人脸】和【身份】一一对应。

之后,每当摄像头拍下一张照片,我们只需要将它放到CNN网络进行编码,然后将该编码与数据库中相应身份的编码一起计算二者的距离。若距离dist小于阈值就验证成功。

人脸识别

输入【人脸】。我们需要验证,该【人脸】是否在数据库中。


做法类似人脸验证,事先编码好数据库所有【人脸】

遍历数据库中所有人脸的编码,计算二者之间的距离。取所有距离的最小值。

如果该距离最小值小于阈值,则验证成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值