基于keras的人脸识别

一、整体思路

1. 人脸检测

为了后续人脸识别时能通过摄像头实时检测出人脸,进而对框出的人脸进行识别。

  1. 引用Python中的opencv库,调用其中的人脸分类器。

  2. 调用摄像头,使用循环读取单帧数据。

  3. 进行人脸检测,框出人脸。

2. 读取训练数据

将训练数据集从图片转换成数组形式,并得到对应标签。

  1. 引用Python中的os库对指定文件夹进行逐层搜索。

  2. 使用数组记录下搜索到的图片的路径。

  3. 将图片转化为四维数组。

  4. 根据路径得到每张图片的标签。

  5. 根据路径得到数组序号对应的学号。

3. 训练模型

构建CNN网络将数据集训练为可直接调用的、性能较好的模型。

  1. 加载数据集,使用 train_test_split 函数将数据集分别按一定比例分成训练集与验证集和训练集与测试集。

  2. 使用categorical_crossentropy作为损失函数。

  3. 将得到数据集进行浮点化和归一化。

  4. 根据类别数量nb_classes将类别标签进行one-hot编码使其向量化。

  5. 构建一个空的线性堆叠网络模型。

  6. 构建CNN网络模型。

  7. 训练模型,使用实时数据提升进行训练。

  8. 存储模型,并对模型进行评估。

4. 人脸识别

调用模型对摄像头读取的视频或选中的图片进行人脸识别。

  1. 调用摄像头或读取图片。

  2. 对单帧图片进行灰度化处理。

  3. 检测人脸并框出对应区域。

  4. 对检测出的人脸进行识别。

  5. 显示检测结果的序号与学号。

5. 可视化

  1. 使用pyqt5构建可视化见面。

  2. 打包成可执行文件。

二、核心代码

1. loaddata.py

读取训练数据,将训练数据集从图片转换成数组形式,并得到对应标签,同时得到数组序号对应的学号。

函数功能表

函数名 函数功能
read_path(path_name) 搜索并读取对应路径下的图片,将其和其标签添加到数组 images[ ] 和 lables[ ] 中。
load_dataset(path_name) 将 read_path 中读取的图片转化为四维数组,尺寸为(图片数量x图片长x图片宽x3)。
match_number(path_name) 通过文件夹名字得到数组序号所对应的学号,比如 0 对应 1511277 。

核心代码

def read_path(path_name):  #搜索并读取对应路径下的图片,将其和其标签添加到数组 images和 lables中
    k = -1
    for dir_item in os.listdir(path_name):
        k = k + 1
        numbers.append(str(dir_item))
        # 从初始路径开始叠加,合并成可识别的操作路径
        full_path = os.path.abspath(os.path.join(path_name, dir_item))
        for image_item in os.listdir(full_path):
            if image_item.endswith('.png'):
                image_path = os.path.abspath(os.path.join(full_path, image_item))
                image = cv2.imread(image_path)
                images.append(image)
                labels.append(k)
    return images, labels, numbers
def load_dataset(path_name):  # 从指定路径读取训练数据
    images, labels, numbers = read_path(path_name)
    # 将输入的所有图片转成四维数组,尺寸为(图片数量*IMAGE_SIZE*IMAGE_SIZE*3)
    images = np.array(images)
    return images, labels
def match_number(path_name):  # 得到序号对应的学号
    images, labels, numbers = read_path(path_name)
    return numbers
  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
基于opencv和keras人脸识别是利用计算机视觉技术和深度学习模型来实现人脸检测和识别的方法。 首先,使用OpenCV库中的人脸检测器来检测图像或视频中的人脸位置。OpenCV提供了几种不同的人脸检测算法,如Haar特征分类器、HOG特征分类器和深度学习模型等。这些算法可以基于人脸的特征进行检测,并返回人脸的坐标。 然后,利用OpenCV提供的人脸检测结果,将人脸框选出来并进行裁剪,以准备进行人脸识别。接下来,将裁剪后的人脸图像作为输入,通过预训练的深度学习模型来进行人脸识别Keras是一个高级神经网络库,可以方便地实现深度学习模型。我们可以使用Keras来构建人脸识别模型,其中最常用的模型是卷积神经网络(CNN)。这个模型可以通过训练过程来学习人脸的特征,并将人脸图像映射到对应的身份标签。 在训练模型之前,我们需要从人脸图像数据库中获取大量的人脸图像和对应的标签。这些图像和标签可以用于训练分类器,使其能够区分不同的人脸。在训练过程中,模型将被调整以最大限度地减少误分类,并提高准确性。 训练完成后,我们可以使用该模型来预测新的人脸图像的身份标签。通过将新的人脸图像输入到经过训练的模型中,我们可以得到一个输出概率向量,表示输入图像属于不同身份的概率。我们可以选择具有最高概率的标签作为我们的人脸识别结果。 综上所述,基于opencv和keras人脸识别方法涵盖了人脸检测和人脸识别两个重要步骤。这些技术可以应用于许多领域,如安防系统、人脸解锁和人脸认证等。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值