本论文主要阐述了基于OpenCV的人脸识别原型系统。基于生物特征识别的身份认证方法有指纹、掌纹、眼睛虹膜、人脸等,其中,由于人脸的稳定性和可见性,人脸识别的研究与应用成为热点,本文针对出租公寓安全管理需求,设计和实现了基于OpenCV的人脸识别原型系统,全文内容包括:

  1. 构建了基于OpenCV的视频人脸识别的技术框架。针对出租公寓安全管理需要,构建了基于OpenCV的视频人脸识别的技术框架。
  2. 设计了基于OpenCV的视频人脸快速检测算法。人脸检测是人脸识别的前提,本文采用基于OpenCV的快速人脸检测算法实现视频图像中人脸的快速定位和提取。
  3. 设计了基于CNN算法的视频人脸识别方法。
  4. 系统使用python语言进行实现,实现基于视频的实时人脸身份认定。

第一节 系统功能

本系统用于出租公寓人员进出管理,自动记录人员进出的时间与照片,自动识别是否是公寓的住户。首先,系统从摄像头视频流采集住户的人脸照片,通过openCV进行人脸检测与人脸对齐,接着训练一个人工神经网络模型,进行人脸识别,系统工作时定时采集进出人员的脸部照片,输入模型进行人脸对比,如果相似度超过阀值,则判定为住户,否则是陌生人。接着把采集到的照片与时间记录下来,如果是住户保存住户姓名。系统在运行中可以动态增加新住户,删除住户数据,然后重新训练人工神经网络模型。

第二节 系统框图

系统架构分为两部分,用户界面与基于openCV的人工神经网络模块,人工神经网络模块封装成类对象,由用户界面模块与人员进出日记模块调用。

第三节 抓拍人脸照片的程序代码

从摄像头视频流抓拍照片使用openCV API完成,获取到图片后,装载openCV haarcascade分类器进行人脸检测[1],以确定图片中是否包含人脸。openCV haarcascade分类器是级联分类器,首先根据haar-like特征训练多个弱分类器 ,然后使用adaboost算法将多个弱分类器组合成一个强分类器 ,最终的分类器是由多个强分类器级联而成,见源代码中的文件get_faces.py。

第四节 人工神经网络模型代码

经过人脸检测和人脸对齐两个步骤,获得了包含人脸的区域图像,接下来就要进行人脸识别。这一步使用深度卷积网络,将输入的人脸图像转换成一个向量的表示,这就是“人脸特征”。人脸特征经过全连接层,进入softmax输出层,softmax的每一类对应一个人。

人工神经网络是一个并行和分布式的信息处理网络结构[2],该网络结构一般由许多个神经元组成,每个神经元有一个单一的输出,它可以连接到很多其它的神经元,其输入有多个连接通路,每个连接通路对应一个连接权系数。人工神经网络是生物神经网络的一种模拟和近似。它主要从两个方面进行模拟:一种是从结构和实现机理方面进行模拟,它涉及到生物学、生理学、心理学、物理及化学等许多基础学科。由于生物神经网络的结构和机理相当复杂,现在距离完全认识它们还相差甚远:另外一种是从功能上加以模拟,即尽量使得人工神经网络具有生物神经网络的某些功能特性,如学习、识别、控制等功能。

人工神经网络模型由3层卷积池化、全连接层、输出层构成。第1层卷积池化的卷积核大小(3,3), 输入通道(3), 输出通道(32);第2层卷积池化的卷积核大小(3,3), 输入通道(32), 输出通道(64);第3层卷积池化的卷积核大小(3,3), 输入通道(64), 输出通道(64),见图3.4.1。

人工神经网络模型代码使用TensorFlow架构[3]实现,tensorflow是google 2015年推出的人工智能与深度学习模型框架,具有运算性能强,框架设计通用,支持生产环境部署,语言接口丰富,支持云端协同计算等优点,是目前机器学习和深度学习项目中最受欢迎的开源框架。

TensorFlow架构中包含CNN模型,CNN模型是一种以卷积为核心的前馈神经网洛模型。卷积是分析数学中的一种基础运算,其中对输入数据做运算时所用到的函数称为卷积核。卷积运算是指卷积核以滑动窗的形式在输人数据的各个位置上做小范围加权和的过程。以图像识别为例,卷积核在输入图像上不断滑动时,卷积核与当前滑动窗口内的输入图像像素值相乘后求和即得到输出图像的像素值。这个运算过程与图像处理算法中常用的空间滤波是类似的。因此,卷积可以被通俗地理解为一种“滤波”过程,卷积核与输入数据作用之后得到了“滤波”后的图像,从而提取出了图像的特征。卷积、池化、softmax在TensorFlow架构中都有对应的API函数,可以直接调用,非常方便。

每个住户抓取10张图片,openCV API检测人脸时给出脸部矩形坐标,按照脸部矩形坐标裁切图片,在把脸部图片缩放为128*128像素,输入CNN神经网络模型训练,得到住户人脸识别模型。见源代码中的文件cnn_model.py。

第五节 训练模型代码

人脸图片训练集使用USER_LIST类生成,USER_LIST类调用openCV API把采集到的住户照片进行人脸图片裁切,获得训练集。接着使用CNN_MODEL类生成CNN模型,把训练集分批放到CNN模型进行训练,当准确率达到99.9%停止训练,保存训练得到的模型。因为训练需要比较长时间,训练在后台工作线程进行,THREAD_TRAIN类负责生成后台工作线程,使用TRAIN_MODEL类进行模型训练。见源代码中的文件:train_model.py。

第六节 人脸识别代码

从摄像头抓取进出人员5张带人脸的图片,openCV API检测人脸时给出脸部矩形坐标,按照脸部矩形坐标裁切图片,在把脸部图片缩放为64*64像素,输入CNN神经网络模型预测,模型将会返回住户姓名索引,通过索引查找住户姓名,如果查找失败,就是陌生人。因为人脸识别耗时多,建立后台工作线程进行人脸识别。DETECT_STREAM类负责照片采样与人脸图片裁切,使用openCV进行人脸检测,采样到的人脸图片送到工作线程类THREAD_RECOGNITION,该工作线程调用FACE_RECOGNITION类进行人脸识别。FACE_RECOGNITION类初始化时加载人工神经网络CNN模型训练生成的人脸识别模型。见源代码中的文件:faces_recognition.py。

第七节 来访记录代码

来访记录模块负责把人脸识别的结果记录到磁盘,向UI界面提供来访记录与来访者的照片。当人脸识别模块识别出来访者后,调用RECORD_VISIT类的record()接口把来访信息记录到磁盘,RECORD_VISIT类按照“姓名/日期/图片文件”结构写入磁盘。当用户点击“来访记录”按钮时,UI界面通过RECORD_VISIT类listRecord()接口获取来访记录,RECORD_VISIT类从磁盘读取来访记录,按时间排序后返回。当用户点击“查看照片”按钮时,UI界面通过RECORD_VISIT类GetPhotos ()接口获取来访者的照片。见源代码中的文件:record_visit.py。

第八节 用户界面代码

用户界面选用python tkinter库实现,tkinter是python标准的GUI库,建立在tk技术上。Tk最初是为tcl工具命令语言所设计的,具有可移植性和灵活性高,非常容易使用。用户界面共有6个窗口界面,主窗口、增加住户窗口、删除住户窗口、来访记录窗口、模型训练进度条窗口和查看来访者照片窗口,每个窗口封装成类对象,分别是:AppUI类、UI_ADD_USER类、UI_DEL_USER类、UI_VISIT类、UI_TRAIN类、SHOW_PHOTO类。AppUI类调用UI_ADD_USER类、UI_DEL_USER类和UI_VISIT类,打开相应的窗口;UI_ADD_USER类与UI_DEL_USER类回调用UI_TRAIN类,打开模型训练进度条;UI_VISIT类会调用SHOW_PHOTO类,显示来访者的照片。见源代码中的文件:appui.py。

下载python源代码:https://download.csdn.net/download/u013705518/21540507

基于OpenCV的人脸识别系统的pyhon源代码相关推荐

  1. 基于百度云人脸识别API与opencv的人脸识别系统

    基于百度云人脸识别API与opencv的人脸识别系统 简介 弄这个东西是因为参加了学校的项目,第一次开发做的不是很好. 本系统是基于百度云人脸识别API.opencv级联器.PYQT5进行开发.百度云 ...

  2. python人脸识别毕业设计-Python基于Dlib的人脸识别系统的实现

    之前已经介绍过人脸识别的基础概念,以及基于opencv的实现方式,今天,我们使用dlib来提取128维的人脸嵌入,并使用k临近值方法来实现人脸识别. 人脸识别系统的实现流程与之前是一样的,只是这里我们 ...

  3. 基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  4. 树莓派 --- 基于OpenCV实现人脸识别

    目录 参考博客 调百度人脸识别的API也能达到目的,我这里是基于OpenCV进行人脸识别 OpenCV(Open source Computer Vision Library) 是一个开源的计算机视觉 ...

  5. Python基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  6. 【优秀毕设】基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发、可基于树莓派)

    [优秀毕设]基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发.可基于树莓派) 该系统利用Harr级联检测和LPBH进行人脸检测和训练.识别 利用Tkinter完成界面搭建 利用Fla ...

  7. 基于matlab的人脸五官边缘检测方法,基于MATLAB的人脸识别系统的设计

    基于MATLAB的人脸识别系统的设计(论文12000字,外文翻译,参考程序) 摘要:本文基于MATLAB平台设计了一款简单的人脸识别系统,通过USB摄像头来采集图像,经过肤色方法进行人脸检测与定位,然 ...

  8. 基于OpenCV实现人脸识别--Python

    目录 前言 第一章 OpenCV介绍 第二章 功能描述 2.1 对已有的数据进行检测 2.2 陌生人检测并发出警告 2.3 保存陌生人的视频 2.4 输入图片进行检测 2.5 现场录用信息 第三章 功 ...

  9. 基于 PCA 的人脸识别系统及人脸姿态分析

    文章目录 1 PCA 1.1 原理 1.2 算法流程 1.2.1 零均值化 1.2.2 计算协方差矩阵 1.2.3 特征值和特征向量 1.2.4 降维得到 K 维特征 1.2.5 PCA 的优缺点 2 ...

最新文章

  1. 【设计模式】三大类:创建型模式、结构型模式、行为型模式
  2. Cookie的生命周期
  3. Harris’s Linked List
  4. 网页中嵌套网页flush_如何修改网页中的内容?
  5. python中xrange和range的异同
  6. 洛谷P4727:图的同构计数(Polya引理)(dfs)
  7. javafx窗体程序_JavaFX真实世界应用程序:欧洲电视网广播联盟
  8. 【Spark】Spark基本概念
  9. 【贪心】牛客网:把数组排成最小的数
  10. VS2017中无法识别PlaySound标识符解决办法(《逐梦旅程:Windows游戏编程之从零开始》FirstBlood篇)
  11. 三层链路冗余-单宿主网络(拓扑图及思路)
  12. ubuntu22.04在虚拟机中的安装过程以及搜狗输入法的安装
  13. 公式法求主合取范式和主析取范式的一种思路
  14. android检测cup温度工具,android – 如何获得CPU温度?
  15. pta--输入一个正整数n,再输入n个整数,输出其中的偶数。要求相邻数字中间用一个空格分开,行末不得有多余空格
  16. 使用Groovy和7-Zip-JBinding解压缩7-Zip文件
  17. 工资计算系统数据流图绘制
  18. python求一个序列的和_Python合集之Python序列(三)
  19. Python 为什么这么慢?
  20. 【概率论与数理统计】猴博士 笔记 p29-32 均匀分布、泊松分布、指数分布、几何分布

热门文章

  1. ElasticSerach
  2. hashcat 破解RAR密码操作使用记录
  3. 2021区块链行业十大影响力事件盘点
  4. osgEarth二维地图拉远时,局部小地图不正确放大,最后占满一半地图问题
  5. Servlet | Servlet原理、开发第一个带有Java小程序Servlet
  6. 「存储传记」从“屌丝”到王者,EMC的逆袭之路
  7. 乾颐堂安德全新HCNA真题解析版本(背好必过华为HCNA)第一部分共享
  8. 考研英语记住这些万能句型,写作必拿高分!
  9. 解决CDH 安装Kafka服务中的各种问题
  10. CAD指令框找不到了怎么调出来?CAD指令框调出方法