基于MTCNN和Arc-Softmax的人脸侦测与识别

人脸识别流程图

在这里插入图片描述

特征提取器

Arc-Softmax

公式

在这里插入图片描述

运用到Mnist数字10分类上的效果图:

在这里插入图片描述
代码实现:https://blog.csdn.net/qq_39086406/article/details/103188022

网络搭建

在这里插入图片描述

数据集制作

在这里插入图片描述
注:VggFace,CelebA等数据集也可以尝试

人脸校正算法

import numpy as np
import PIL.Image as pimg
def adjust(fx1,fy1,fx2,fy2,face):
    # 1.找到眼睛倾斜的角度和两眼距离
    p1 = np.array([fx1,fy1]) # 左眼坐标
    p2 = np.array([fx2,fy2])  # 右眼坐标
    dp = p1 - p2
    angle = np.arctan(dp[1] / dp[0])
    # 2. 旋转图片
    angle = angle * 180 / np.pi
    rot_img = face.rotate(angle)
    rot_img=rot_img.resize((96,96))
    return rot_img

模型训练

损失函数:CrossEntropyLoss()
优化器:SGD(net1.parameters(),lr=0.1,momentum=0.9,weight_decay=0.0005)

模型测试

在这里插入图片描述
训练正常的情况下,相似度cosine1会比较高,相似度cosine2会比较低

效果展示

使用流程

1、将要识别的人的图片传入MTCNN中,输出带人脸的框
(MTCNN请看https://blog.csdn.net/qq_39086406/article/details/103183595)
2、将带人脸的框转化为正方形后,再做人脸校正,再resize成96x96
3、传入特征提取模型中,输出并保存特征
4、向特征提取器输入识别的人的其他图片或其他人的图片,得到若干其他特征
5、将特征3的特征和4的特征做余元相似度
6、相似度大于某一设定阈值则为本人

效果图

我设置的阈值相似度是80%,大于阈值则为本人
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值