基于深度学习神经网络人脸识别系统(考勤系统)

 第一步:建立人脸数据库

收集人脸数据这一部分比较简单,想识别谁就要收集谁的照片,注意图片里面只能出现他一个人的脸,尽量收集不同视角的人脸以提高准确率,本文是用dlib库进行人脸采集

# Dlib 正向人脸检测器 / Use frontal face detector of Dlib
detector = dlib.get_frontal_face_detector()

# Dlib 人脸 landmark 特征点检测器 / Get face landmarks
predictor = dlib.shape_predictor('data/data_dlib/shape_predictor_68_face_landmarks.dat')

# Dlib Resnet 人脸识别模型, 提取 128D 的特征矢量 / Use Dlib resnet50 model to get 128D face descriptor
face_reco_model = dlib.face_recognition_model_v1("data/data_dlib/dlib_face_recognition_resnet_model_v1.dat")

第二步:搭建模型

本文利用resnet50模型来获取128个人脸特征,其网络结构如下:

这一步代码,我们阔以不用自己训练,阔以用训练好的模型:

        # Dlib Resnet 人脸识别模型, 提取 128D 的特征矢量 / Use Dlib resnet50 model to get 128D face descriptor
        self.face_reco_model = dlib.face_recognition_model_v1("data/data_dlib/dlib_face_recognition_resnet_model_v1.dat")

第三步:进行识别

人脸的识别无非就是先检测到图片或者视频里面的人脸,然后抠出来和数据库里面的人脸进行相似度计算

        for k in range(len(faces)):
            # c. 对于某张人脸, 遍历所有存储的人脸特征 / For every face detected, compare it with all the faces in the database
            val = 999999
            label_name = "未知人"
            for key, value in self.face_feature_data.items():
                e_distance_tmp = return_euclidean_distance(
                    current_frame_face_feature_list[k],
                    value)
                if val > e_distance_tmp and e_distance_tmp < 0.4:
                    val = e_distance_tmp
                    label_name = key

            top = faces[k].top()
            bottom = faces[k].bottom()
            left = faces[k].left()
            right = faces[k].right()

            cv2.rectangle(img_rd, (left, top), (right, bottom), (0, 0, 255))
            img_rd = cv2ImgAddText(img_rd, label_name, left, top - 25)

第四步:搭建GUI界面

第六步:整个工程的内容

提供整套,提供测试数据,提供GUI界面代码,主要使用方法可以参考里面的“文档说明_必看.docx”

代码的下载路径(新窗口打开链接)基于卷积神经网络人脸识别系统

有问题可以私信或者留言,有问必答

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值