基于树莓派的人脸识别门禁系统.docx

上传人:b****5 文档编号:5110976 上传时间:2022-12-13 格式:DOCX 页数:24 大小:1.03MB
下载 相关 举报
基于树莓派的人脸识别门禁系统.docx_第1页
第1页 / 共24页
基于树莓派的人脸识别门禁系统.docx_第2页
第2页 / 共24页
基于树莓派的人脸识别门禁系统.docx_第3页
第3页 / 共24页
基于树莓派的人脸识别门禁系统.docx_第4页
第4页 / 共24页
基于树莓派的人脸识别门禁系统.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

基于树莓派的人脸识别门禁系统.docx

《基于树莓派的人脸识别门禁系统.docx》由会员分享,可在线阅读,更多相关《基于树莓派的人脸识别门禁系统.docx(24页珍藏版)》请在冰豆网上搜索。

基于树莓派的人脸识别门禁系统.docx

基于树莓派的人脸识别门禁系统

基于树莓派的人脸识别门禁系统

摘要

摘要:

提出一种基于树莓派的人脸识别门禁系统,该系统通过使用人脸识别云服务可以实时对人员进行辨认。

文中详细描述了该系统的搭建和实现过程,为相关产品提供了一套很好的解决方案。

对所设计的系统进行了模拟测试,其测试结果达到了设计目标。

关键词:

树莓派,人脸识别,云服务,python

 

第1章绪论

1.1研究背景

随着安全入口控制和金融贸易方面应用需要的快速增长,生物统计识别技术得到了新的重视。

目前,微电子和视觉系统方面取得的新进展,使该领域中高性能自动识别技术的实现代价降低到了可以接受的程度。

而人脸识别是所有的生物识别方法中应用最广泛的技术之一,人脸识别技术是一项近年来兴起的,但不大为人所知的新技术。

人们更多的是在电影中看到这种技术的神奇应用:

警察将偷拍到的嫌疑犯的脸部照片,输入到电脑中,与警方数据库中的资料进行比对,并找出该嫌犯的详细资料和犯罪记录。

这并非虚构的情节。

在国外,人脸识别技术早已被大量使用在国家重要部门以及军警等安防部门。

在国内,对于人脸识别技术的研究始于上世纪90年代,目前主要应用在公安、金融、网络安全、物业管理以及考勤等领域。

市场对门禁的安全性和可靠性的要求也越来越高;提出了一种基于ARM9处理器的快速人脸检测门禁系统设计方案;首先选择实用有效特征,简要介绍人脸检测和人脸识别算法的基本原理,针对该算法实现原理详细阐述硬件系统设计方案;最后在设计的硬件系统上进行算法移植,并开发门禁系统控制软件,实现了嵌入式快速人脸识别门禁系统的研制。

通过分析测试结果,系统可靠运行高、速度快,能够实现门禁系统的功能。

1.2人脸识别的研究目的和意义

脸识别是机器视觉和模式识别领域最富有挑战性的课题之一,同时也具有较为广泛的应用意义。

人脸识别技术是一个非常活跃的研究领域,它覆盖了数字图像处理、模式识别、计算机视觉、神经网络、心理学、生理学、数学等诸多学科的内容。

如今,虽然在这方面的研究已取得了一些可喜的成果,但是FRT在实用应用中仍面临着很严峻的问题,因为人脸五官的分布是非常相似的,而且人脸本身又是一个柔性物体,表情、姿态或发型、化妆的千变万化都给正确识别带来了相当大的麻烦。

如何能正确识别大量的人并满足实时性要求是迫切需要解决的问题。

基于视觉通道信息的面部感知系统,包括人脸检测和跟踪、面部特征定位、面部识别、人脸归类(年龄、种族、性别等的判别)、表情识别、唇读等分系统,如图1-1所式,可以看出,继人脸检测和跟追之后,面部特征定位通常是面部感知的一个必备环节,是后续工作的基础,具有重要的意义。

尽管人脸识别不能说是其他面部感知模块的必备功能,但是,可以肯定的是,利用已知的身份信息,结合特定人的先验知识,可以提高表情分析、唇读和语音识别、手势识别乃至手写体识别的可靠性。

而计算机对使用者身份确认的最直接的应用就是基于特定使用者的环境设置:

如使用者的个性化工作环境,信息的共享和隐私保护等等。

1.3人脸识别系统的国内外研究现状

一国外的发展概况[1]

见诸文献的机器自动人脸识别研究开始于1966年PRI的Bledsoe的工作,1990年日本研制的人像识别机,可在1秒钟内中从3500人中识别到你要找的人。

1993年,美国国防部高级研究项目署(AdvancedResearchProjectsAgency)和美国陆军研究实验室(ArmyResearchLaboratory)成立了Feret(FaceRecognitionTechnology)项目组,建立了feret人脸数据库,用于评价人脸识别算法的性能。

美国陆军实验室也是利用vc++开发,通过软件实现的,并且FAR为49%。

在美国的进行的公开测试中,FAR,为53%。

美国国防部高级研究项目署,利用半自动和全自动算法。

这种算法需要人工或自动指出图像中人的两眼的中心坐标,然后进行识别。

在机场开展的测试中,系统发出的错误警报太多,国外的一些高校(卡内基梅隆大学(CarnegieMellonUniversity)为首,麻省理工大学(MassachusettsInstituteofTechnology)等,英国的雷丁大学(UniversityofReading))和公司(Visionics公司Facelt人脸识别系统、Viiage的FaceFINDER身份验证系统、LauTech公司Hunter系统、德国的BioID系统等)的工程研究工作也主要放在公安、刑事方面,在考试验证系统的实现方面深入研究并不多。

二国内的发展概况[2]

人脸识别系统现在在大多数领域中起到举足轻重的作用,尤其是用在机关单位的安全和考勤、网络安全、银行、海关边检、物业管理、军队安全、智能身份证、智能门禁、司机驾照验证、计算机登录系统。

我国在这方面也取得了较好的成就,国家863项目“面像检测与识别核心技术”通过成果鉴定并初步应用,就标志着我国在人脸识别这一当今热点科研领域掌握了一定的核心技术。

北京科瑞奇技术开发股份有限公司在2002年开发了一种人脸鉴别系统,对人脸图像进行处理,消除了照相机的影响,再对图像进行特征提取和识别。

这对于人脸鉴别特别有价值,因为人脸鉴别通常使用正面照,要鉴别的人脸图像是不同时期拍摄的,使用的照相机不一样。

系统可以接受时间间隔较长的照片,并能达到较高的识别率,在计算机中库藏2300人的正面照片,每人一张照片,使用相距1--7年、差别比较大的照片去查询,首选率可以达到50%,前20张输出照片中包含有与输入照片为同一人的照片的概率可达70%。

 2005年1月18日,由清华大学电子系人脸识别课题组负责人苏光大教授主持承担的国家"十五"攻关项目《人脸识别系统》通过了由公安部主持的专家鉴定。

鉴定委员会认为,该项技术处于国内领先水平和国际先进水平。

人脸识别一度被认为是生物特征识别领域甚至人工智能领域最困难的课题之一,但随着科学技术的发展,一些列关于人脸识别的难题相继被攻克,人脸识别技术已经被广泛应用于公安侦破、考勤系统、摄像头监视系统、网络应用、身份识别、支付系统等与国计民生密切相关领域。

云计算的兴起,为人脸识别技术的广泛应用铺平了道路,各大互联网企业相机开发了人脸识别技术云服务,提供了人脸识别的一整套技术方案。

开发人员可以方便高效的使用其提供的服务接口对系统进行开发和调试。

本文利用人脸识别云服务技术的特点,基于树莓派开发了一个基于人脸识别云服务的门禁系统。

1.4本设计主要研究内容

本设计主要针对人的面部特征,设计制作一个基于树莓派的人脸识别门禁系统。

包括有以下几种功能:

(1)用触摸传感器探测到讯号触发人脸识别,及时反馈给树莓派系统核心,结合摄像头探测原件,准确反映目标数据。

(2)树莓派通过读取图像信息并调用FACE++的api对图像中的人脸进行数值换算出具体的人脸的参数,并可以在树莓派系统的终端窗口实时显示。

(3)设有报警模块和步进电机模块。

触摸传感器被触发后启动人脸识别的主程序。

蜂鸣器和LED流水灯发出提示讯号,当检测人脸为正确人脸并与通过与本地照片对比正确后,步进电机转动即开门。

第2章树莓派人脸识别门禁系统的总体设计

2.1人脸识别门禁系统方案

基于树莓派的人脸识别门禁系统分为树莓派开发板模块、电源模块、转5V降压模块、触摸感应传感器模块、报警模块和步进电机模块。

使用本套系统之前需要在本地存储若干张需要进行识别的人脸照片,可以是多人。

程序运行时树莓派会将照片中的面部图像发送至云端服务进行分析,并把人脸的面部参数存储到face++开发者网站,待其处理完毕后再从云端传回识别结果。

触摸传感器触发人脸识别主函数进行实时拍照并将此照片发送至云服务处理并将比对结果发送到树莓派。

流水灯和蜂鸣器提示、识别正确后步进电机转动,并将结果显示在树莓派终端。

2.2人脸识别门禁系统方案设计

在一个系统的硬件设计中应选择合适型号的嵌入式设备后,进行系统所需的扩展和配置。

按照系统功能要求进行扩展和配置外围设备。

要设计合适的接口电路,系统的扩展和配置应遵循以下原则:

1)尽可能选择典型电路,并符合嵌入式设备常规用法。

为硬件系统的标准化、模块化打下良好的基础。

2)系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便二次开发。

3)系统中的相关器件要尽可能做到性能匹配。

4)可靠性及干扰设计是硬件设计必不可少的一部分。

5)工艺设计必须考虑安装、调试、维护的方便。

由此可设计出人脸识别门禁系统的总体结构框图,如图2-1所

 

为适应在树莓派上进行测试以及实际使用,本文采用编程语言Python2.7进行系统的开发和设计,Python语言的可读性高以及面向对象的特征很适合本系统的开发,同时人脸识别face++官网提供了基于Python的SDK。

本系统总体结构图如上。

本地终端为树莓派,云服务采用了FACE++人工智能开发平台。

2.3系统主要功能实现

本系统的设计具有半自动门禁系统的特点。

待检测人员需要用手按下触摸开关,进而触发人脸识别。

系统将对其进行摄像并将图像发送至云端服务进行处理,待处理完之后树莓派对返回的比对结果进行判断。

如果通过对比则驱动步进电机旋转。

系统的实时性是用户体验的关键要素,系统正常工作时待识别的人员感觉不到卡顿状况,实时性良好。

第3章人脸识别门禁系统硬件设计

3.1主控模块

本次设计的主控模块是使用树莓派3代B型主板。

树莓派3B保持了良好的标准模块扩展性,主板上预留的接口可直插通用的500万像素摄像头、7英寸触摸屏、SenseHat传感器模块等。

除了可以在爱好者论坛下载大神们做好的系统包之外,如今还可以直接购买预装了树莓派3B专用NOOBs系统的MicroSD卡。

对新入门玩家以及物联网开发者来说,微软的加入对树莓派3B更有意义。

就在该产品发布之后,微软迅速推出了专门为之适配的Windows10IoT版操作系统,它不仅有着人们更熟悉的UI,同时其驱动程序更加完善,无论是标准扩展模块,还是通过GPIO接口扩展的更多模块,几乎无需重新开发Windows的驱动程序,IP等协议配置也更简单。

主要有以下几点:

 

【RaspberryPi3ModelB】

∙BCM2837

o64位的1.2GHz四核ARMCortex-A53

∙1GB内存

∙10/100自适应网卡

∙802.11nWiFi无线网卡

∙低功耗蓝牙4.1(BLE)

∙HDMI接口

∙USB2.0接口x4

∙MicroSD卡插槽

∙3.5mm音频输出接口

∙40PINGPIO接口

∙CSI摄像头接口

∙DSI显示接口

∙升级后的电源管理系统,以便使用更多耗电的外设(须用2.5A以上电源供电)

本设计使用的是最新树莓派官方系统。

是基于debian的一种linux32位操作系统。

本次设计使用系统中安装的python2.7运行程序。

3.2摄像头模块

 

目前提供了三个应用程序,分别为:

raspistill、raspivid、raspistillyuv。

其中raspistill和raspistillyuv非常相似,并且都是用于捕捉图像,而raspivid用于捕捉视频。

所有应用程序均基于命令行方式运行,通过OpenMAX的mmalAPI进行编写。

OpenMAX的mmalAPI提供了更易使用的系统组件。

注意,mmal是一个由Broadcom为Videocore4系统定制的API。

应用程序使用了四个OpenMAX(mmal)组件:

camera(摄像)、preview(预览)、encoder(编码)、null_sink。

所有应用程序均使用了摄像组件,raspistill使用了图像编码组件,raspivid使用了视频编码组件,raspistillyuv没有使用编码组件,而是直接将YUV或RGB从摄像组件输出到文件。

我们在设计中结合opencv调用摄像头今天拍照操作。

摄像头电路板与RaspberryPi通过一条15芯的排线进行连接。

仅有两个连接座需要连接,排线需要安装到摄像头电路板和RaspberryPi上。

于RaspberryPi,拉起连接座两端的卡扣。

它应该很容易拉起,并能够轻微活动。

把排线完全插入到连接座中,并保证竖直,然后轻轻按下两端的卡扣。

摄像头电路板方面,也需要您将卡扣向电路板相反方向拉开,然后轻轻插入排线,最后将卡扣推回。

3.3步进电机的驱动原理

驱动板上有IN1,IN2,IN3,IN4四个接口,根据资料得知这四个接口依次设置为低电平就可以驱动,我们分别用杜邦线将GPIO21(Pin40),GPIO20(Pin38),GPIO16(Pin36),GPIO19(Pin35)和IN1,IN2,IN3,IN4一一相连。

每次将四个GPIO端口按下表依次设置好电平后,可以sleep几十毫秒来控制转速

序列

GPIO21

GPIO20

GPIO16

GPIO19

0

LOW

HIGH

HIGH

HIGH

1

HIGH

LOW

HIGH

HIGH

2

HIGH

HIGH

LOW

HIGH

3

HIGH

HIGH

HIGH

LOW

4

LOW

HIGH

HIGH

HIGH

3.4总体设计

首先将三张待检测人员的照片存储到树莓派文件系统,执行此段程序时,调用face++的detectAPI将三张照片中的人脸信息存储在开发者账号,然后执行search的API,对现在进行的人脸识别程序中拍摄的照片进行处理,检测照片中的人脸信息并与之前上传的人脸信息对比,并返回相似度最高的人脸信息。

我们在程序中只提取confidence的值,即人脸相似度。

当触摸开关被按下,程序会发出警报LED闪烁,接着进行一张人脸的采集。

并将此照片与已经上传的三张照片做对比。

判断出相似的人脸。

当相似度大于百分之七十,则开门(电机正转开门、停止并发出警报声、电机反转关门)。

第4章人脸识别门禁系统软件设计

4.1安装系统

软件部分:

win32DiskImager、SDFormatter、树莓派镜像文件

硬件部分:

SD卡、读卡器

树莓派支持多种操作系统本次设计使用树莓派官方系统raspbianJessie。

首先把SD卡连接到电脑,打开SDFormatter.注意观察盘符不要误将其他SD卡格式化。

接下来打开win32diskimager.打开存放镜像的路径,点击“write”/“yes”等待镜像烧录成功。

4.2配置中文环境以及扩展文件系统

安装中文字体:

在终端输入:

sudoapt-getinstallttf-wqy-zenhei

终端输入:

sudoraspi-config扩展文件系统

“ExpandFilesystem”回车后将SD空间扩展(重启后生效)。

配置中文环境如下所示。

空格选中”zh_CN.UTF-8“回车“ok”输入:

sudoreboot重启后生效

4.3RPI.GPIO搭建及使用介绍

本系统使用的是树莓派官方系统raspbian。

系统预装了python和C编译器等软件。

运行本次系统前需要对环境进行搭建。

树莓派内核中已经编译自带了gpio的驱动,本次设计用第三方写好的库函数来完成具体的操作。

pythonGPIO是一个小型的python库,可以帮助用户完成raspberry相关IO口操作,但是pythonGPIO库还没有支持SPI、I2C或者1-wire等总线接口。

先安装python-dev,输入以下指令。

sudoapt-getinstallpython-dev

安装RPi.GPIO,依次输入以下指令。

∙下载:

$wget http:

//raspberry-gpio-

∙解压缩:

$tarxvzfRPi.GPIO-0.5.3a.tar.gz

∙进入解压之后的目录:

$cdRPi.GPIO-0.5.3a

∙启动安装:

$sudopythonsetup.pyinstall

导入RPi.GPIO模块:

1

importRPi.GPIOasGPIO

通过该操作,您可以将模块名称映射为GPIO,以便接下来您其它脚本进行使用。

导入模块并检查它是否导入成功,可以尝试:

1

2

3

4

try:

    importRPi.GPIOasGPIO

exceptRuntimeError:

    print("导入RPi.GPIO时出现错误!

您可以使用'sudo'来运行您的脚本。

")

针脚编号

目前有两种方式可以通过RPi.GPIO对RaspberryPi上的IO针脚进行编号。

第一种方式是使用BOARD编号系统。

该方式参考RaspberryPi主板上P1接线柱的针脚编号。

使用该方式的优点是无需考虑主板的修订版本,您硬件始终都是可用的状态。

您将无需从新连接线路和更改您的代码。

第二种方式是使用BCM编号。

这是一种较低层的工作方式–该方式参考BroadcomSOC的通道编号。

使用过程中,您始终要保证主板上的针脚与图表上标注的通道编号相对应。

您的脚本可能在RaspberryPi主板进行修订版本更新时无法工作。

指定您所使用的方式(必须指定):

1

GPIO.setmode(GPIO.BOARD)

或者

1

GPIO.setmode(GPIO.BCM)

RaspberryPi的GPIO上可能同时有多个脚本/循环。

因此,如果RPi.GPIO检测到某个针脚被设置为其它用途而非默认的状态(默认为输入),您会在尝试配置某脚本时得到警告消息。

禁用该警告消息:

1

GPIO.setwarnings(False)

为每个用于输入或输出的针脚配置通道。

配置为输入的通道:

1

GPIO.setup(channel,GPIO.IN)

通道编号是基于您所使用的编号系统所指定的(BOARD或BC)。

配置为输出的通道:

1

GPIO.setup(channel,GPIO.OUT)

通道编号是基于您所使用的编号系统所指定的(BOARD或BCM)。

可以指定输出通道的初始值:

1

GPIO.setup(channel,GPIO.OUT,initial=GPIO.HIGH)

输入读取GPIO针脚的值:

1

GPIO.input(channel)

通道编号是基于您所使用的编号系统所指定的(BOARD或BCM)。

)这将返回0/GPIO.LOW/False或者1/GPIO.HIGH/True。

设置GPIO针脚的输出状态:

1

GPIO.output(channel,state)

通道编号是基于您所使用的编号系统所指定的(BOARD或BCM)。

状态可以为0/GPIO.LOW/False或者1/GPIO.HIGH/True。

在任何程序结束后,请养成清理用过的资源的好习惯。

使用RPi.GPIO也同样需要这样。

恢复所有使用过的通道状态为输入,您可以避免由于短路意外损坏您的RaspberryPi针脚。

注意,该操作仅会清理您的脚本使用过的GPIO通道。

脚本结束后进行清理:

GPIO.cleanup()

4.4Opencv运行环境的搭建

首先进入RaspberryPi系统,将树莓派连上网络,然后Ctrl+Alt+t打开命令终端(直接点击终端图标可能会卡),如果终端窗口没有出现的话,从顶部任务栏可以找到,点开就好。

首先是以下这几条更新命令,每次单独执行:

sudo apt-get update  

sudo apt-get upgrade  

sudo rpi-update  

然后执行安装opencv的构建相关命令:

sudo apt-get install build-essential git cmake pkg-config  

然后是以下这几条命令安装图片工具包,每次单独执行(网上有很多一起执行的,但是经常出现问题)

sudo apt-get install libjpeg8-dev  

sudo apt-get install libtiff5-dev  

sudo apt-get install libjasper-dev  

sudo apt-get install libpng12-dev  

然后是视频I/O包:

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev  

下面安装GTK:

sudo apt-get install libgtk2.0-dev  

然后安装优化函数的包:

sudo apt-get install libatlas-base-dev gfortran  

然后执行以下命令下载opencv3.0:

cd /home/pi  

git clone   

cd opencv

git checkout 3.0.0  

然后安装opencv_contrib:

cd /home/pi  

git clone   

cd opencv_contrib  

git checkout 3.0.0  

然后安装Python开发包:

sudo apt-get install python2.7-dev  

然后安装pip:

wget https:

//bootstrap.pypa.io/get-pip.py  

sudo python get-pip.py  

然后安装virtualenvvirtualenvwrapper:

sudo pip install virtualenv virtualenvwrapper  

sudo rm -rf ~/.cache/pip  

 下面这个步骤不仅仅是命令了,打开~/.profile文件,我是使用vim打开的:

sudo nano ~/.profile(”~”符号树莓派键盘打不出来用笔记本SSH连上去)  

打开profile后,在这个文件最后,添加以下内容后保存退出:

# virtualenv and virtualenvwrapper  

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7  

export WORKON_HOME=$HOME/.virtualenvs  

source /usr/local/bin/virtualenvwrapper.sh  

然后执行下面这个命令:

source  ~/.profile  

然后创建虚拟工作环境并进入:

sudomkvirtualenv LC  

workon LC  

一定要确保进去刚刚创建的虚拟环境了,进入虚拟环境的标志是进去后命令的最前面(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 公务员考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1