基于Pyqt5,Opencv,Keras获取人的特征参数

本文介绍了基于Pyqt5, OpenCV和Keras的人脸分析项目,涵盖了人脸比对识别登陆、性别表情识别、眼动跟踪、姿态识别以及心率获取等技术。通过使用预训练模型和解决TensorFlow在进程中的问题,实现了高精度的面部特征分析。" 101687743,4917335,Java大文件读取最佳实践:BufferedReader vs. Scanner vs. Commons-IO,"['Java', '文件操作', '性能优化', '内存管理', '输入输出']
摘要由CSDN通过智能技术生成

读研期间对视频图像处理很感兴趣,从研一开始自学Python和AI相关的知识,到目前面临找工作时期,才发现做项目学习这么久的过程中一直在看别人的博客学习,然而没有好好写一次博客,于是把自己做的一个项目简单地介绍下相当于一个纪念吧。另外项目的传送门:https://github.com/junchou9463

1 概述

对人脸的研究一直是个很有意思的话题,从刚开始的人脸特征提取,如Hog特征,然后根据Hog特征进行人脸识别,行人检测等一系列的应用。这些都是很早的研究,后面我根据这些年对人脸的研究做了一系列的开发应用,包括:1.人脸比对识别登陆 2.人脸性别,表情识别 3.人脸眼动跟踪识别 4.人脸姿态识别 5.人脸运动单元的识别 6.人的心率呼吸速率血氧饱和度的获取 7.人脸的血流标注 8.程序打包等。接下来是相关的介绍。

2 人脸比对识别登陆

Dlib库有个方法是 face_recognition_model_v1.compute_face_descriptor,可以通过Cnn获取人脸128维的特征,所以我们可以将摄像头获取的人脸图像进行特征提取然后和数据库里的进行比对,找出偏差最小的那一项对应的姓名即是用户名,下面是相应的代码:

rects = detector(rgbImage, 0)
if len(rects)> 0:
  largest_face=max(rects, key=lambda rect: rect.width() * rect.height())
  shape = predictor(rgbImage, largest_face)
  face_rec = face_rec_model.compute_face_descriptor(rgbImage, shape)
  files = os.listdir(path)
  for file in files:  # 遍历文件夹
      video_folder = os.path.join(path, file)
      data1 = np.load(video_folder)
      diff = np.linalg.norm(data1 - data2)
      if (diff < 0.6):
         (name, format_name) = file.split('.')
         return name

 

3 人脸性别,表情识别

通过Keras训练IMDB和fer2013数据库可以得到性别和表情的分类模型,后面只需加载该训练模型,然后提取人脸区域进行识别分类即可,训练代码和调用方式如下:

# -*- coding:utf-8 -*-
# Author:Jun

from keras.callbacks import CSVLogger, ModelCheckpoint, EarlyStopping
from keras.callbacks import ReduceLROnPlateau
from keras.preprocessing.image import ImageDataGenerator

from models.cnn import mini_XCEPTION
from utils.datasets import DataManager
from utils.datasets import split_data
from utils.preprocessor import preprocess_input

# parameters
batch_size = 32
num_epochs = 10000
input_shape = (64, 64, 1)
validation_split = .2
verbose = 1
num_classes = 7
patience = 50
base_path = '../trained_models/emotion_models/'

# data generator
data_generator = ImageDataGenerator(
                        featurewise_center=False,
                        featurewise_std_normalization=False,
                        rotation_range=10,
                        width_shift_range=0.1,
                        height_shift_range=0.1,
                        zoom_range=.1,
                        horizontal_flip=True)

# model parameters/compilation
model = mini_XCEPTION(input_shape, num_classes)
model.compile(optimizer='adam', loss='categorical_crossentropy',
              metrics=['accuracy'])
model.summary()


datasets = ['fer2013']
for dataset_name in datasets:
    print('Training dataset:
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 手写数字识别是深度学习在计算机视觉领域的一项经典任务,可以使用PyQt5TensorFlow Keras框架来实现。这种任务可以通过卷积神经网络(CNN)来完成。 首先,需要下载一个手写数字图像数据集,例如MNIST数据集。然后,可以使用TensorFlow Keras框架来搭建一个简单的CNN模型,来对图像进行分类。这个CNN模型可以包含一些卷积层、池化层、扁平层和全连接层来实现对手写数字图像的分类。 接下来,使用PyQt5编写一个简单的GUI界面,提供用户手动输入数字图像的功能。GUI界面可以提供一个画布来让用户手动在上面绘制数字,然后对这个数字图像进行预测和分类。 具体实现时,可以结合PyQt5的信号和槽机制,将用户手动绘制的数字图像与CNN模型进行关联。当用户完成数字图像的绘制后,程序可以自动进行图像分类,并输出数字的识别结果。 总之,PyQt5TensorFlow Keras框架提供了一个完整的工具链,用于实现手写数字识别的任务。开发者可以使用这些工具和技术来实现更加复杂的图像识别和分析任务。 ### 回答2: 手写数字识别是深度学习中的一个常见问题,而PyQt5则是一个流行的Python图形界面开发框架,可以将模型的结果以可视化的方式展示给用户。因此,使用PyQt5TensorFlow-Keras搭建一个手写数字识别的应用程序是很有实际应用价值的。下面简单介绍一下实现步骤。 首先,我们需要一个手写数字数据集,可以使用MNIST数据集。通过使用TensorFlow-Keras的API,我们可以快速地构建一个CNN模型,并在训练数据上进行训练。 接下来,我们需要使用PyQt5构建GUI界面,这里可以使用QWidget框架。我们需要构建一个画布,允许用户手写数字,然后将用户手写的图像输入到CNN模型中进行预测。 在这里,我们可以使用QPainter来绘图,它可以使用户绘制完整的数字。在预测数字时,我们需要对图像进行一些预处理,例如将其大小调整为网络需要的输入尺寸,并将其转换为灰度图像。 在模型训练完毕之后,我们可以将模型保存下来,然后在PyQt5应用程序中加载模型,并使用它进行手写数字的识别。当用户在画布上完成手写数字绘制后,我们可以将其送入已经训练好的CNN模型,然后让程序显示识别结果。 通过这样的方式,我们可以使用PyQt5TensorFlow-Keras开发手写数字识别应用程序,为用户提供更加便捷的数字识别方式。 ### 回答3: 手写数字识别是深度学习中的一个经典问题,利用人工神经网络或深度卷积神经网络可以达到很高的准确率。PyQt5是一个Python编写的GUI库,可以将深度学习算法应用到用户友好的界面中,同时TensorFlow-Keras是一个强大的深度学习框架,利用它可以快速搭建一个卷积神经网络。 首先,我们需要准备手写数字数据集,比如MNIST数据集。我们可以使用Keras自带的数据集接口进行加载。然后,通过PyQt5绘制一个界面,使得用户可以在界面上进行手写数字输入。手写数字数据可以通过鼠标或触控板进行输入,我们可以将手写数字截图并进行处理,可以使用 PIL 库或 OpenCV 进行图片处理,将图片大小调整为合适的大小。接着,我们需要将图片输入到卷积神经网络中进行预测。我们可以使用TensorFlow-Keras搭建一个卷积神经网络模型,并把刚刚处理好的图片输入到模型中,进行预测。最后,我们可以在界面上输出预测结果,告诉用户识别的数字是什么。 总之,借助PyQt5TensorFlow-Keras的强大功能,我们可以轻松地设计一个手写数字识别的应用程序。但是需要注意的是,要精度高的数字识别需要使用比较深的卷积神经网络模型,并花费更多的时间来训练和调优模型。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值