基于卷积神经网络的分布式人脸识别门锁系统的制作方法

文档序号:17118855发布日期:2019-03-15 23:36阅读:206来源:国知局
基于卷积神经网络的分布式人脸识别门锁系统的制作方法

本发明属于于神经网络技术、分布式处理技术领域,更具体的涉及一种基于卷积神经网络的分布式人脸识别门锁系统。



背景技术:

近年来,随着互联网、大量据以及计算机硬件(cpu、gpu等)的飞速发展和各种机器学习算法不断创新迭代,基于神经网络的深度学习在计算机视觉及图像识别分类、自然语言处理、语音识别等领域成果卓著。

卷积神经网络(cnn)作为深度学习的一个重要部分,以其独特的结构优势,在图像处理方面取得了广泛的应用。卷积神经网络(convolutionalneuronnetworks,cnn)由一个或多个卷积层和顶端的全连通层组成,并且包括相关权值和池化层(poolinglayer),这种结构使得cnn能够利用输入数据的二维结构。与其他深层结构相比较,卷积神经网络在图像和语音应用中显示出了优异的结果。卷积神经网络还可以使用标准的反向传播算法进行训练,并且,由于具有较少的参数估计,相比其他深度结构更容易训练。

本发明基于“树莓派3b+”嵌入式开发平台,运用卷积神经网络图像识别技术,基于alexnet网络架构改良,组合“树莓派”和“神经网络识别服务器”两端,搭建了一套分布式人脸识别智能门锁系统,实现嵌入式平台的智能图像识别的应用案例。

在近似的技术方案中,现有家用电子门锁多采用rfid射频识别或生物指纹识别技术,目前暂无使用卷积神经网络技术与家用门锁结合的方案设计,在传统图像识别技术方面,有采用图像特征值匹配的方式实现人脸识别,对识别图像完整度、形变的要求严格,在识别泛化能力和灵活性方面较神经网络稍差。

传统门锁以及rfid射频卡门锁使用钥匙和电子卡片作为信任媒介,无法排除钥匙遗失无法开锁的弊端,而现有指纹式门锁虽然不需要另外携带开锁钥匙,但由于仅能记录指纹信息,无法向使用人提供开锁人员具体情况,不具备远程监控和记录陌生人企图开锁的能力。

除此之外,传统rfid射频卡和指纹识别等电子门锁都使用电池有源式供电,一旦能源耗尽,将会导致不可预估的后果。

本发明使用人脸图像解锁方式,不需要额外解锁媒介的同时,可以存储解锁人员图像,可供使用人员详细查阅解锁记录,同时具备实时猫眼查看功能,此外,本发明在系统供电设计方面,考虑电池供电的局限,将控制部分固定,并接入供电线路,锁闩采用无线充电线圈供电方式,即开锁即通电,可随门体结构灵活移动,解决传统电子门锁电池供电的局限问题。



技术实现要素:

1、发明目的。

本发明以人脸识别门锁为实际应用场景,将卷积神经网络图像识别技术嵌入日常应用。

2、本发明所采用的技术方案。

本发明提出了一种基于卷积神经网络的分布式人脸识别门锁系统,包括树莓派主控端和神经网络识别服务器从控端;

树莓派主控端包括:主运行逻辑模块、用户管理与数据集准备模块、指令与通信管理模块,树莓派主控端用于锁状态控制、图像采集、数据准备和预处理,传送指令至神经网络识别服务器的工作,通过红外传感器输入红外信号至主运行逻辑模块;

用户管理与数据集准备模块,包括添加用户模块、删除用户模块;

指令与通信管理模块包括app交互控制,监听app请求函数:监听函数主要于主函数处被以线程方式被启动,在第一层循环中系统等待连接,一旦app连接完成,系统即进入单次指令接收循环,接收完成后分析请求内容,根据内容修改控制字,请求包括:上锁、放行、解锁模式、添加用户、删除用户、即时查看、查看解锁记录,当主控处在等待神经网络服务器训练时系统会保持上锁模式,屏蔽状态修改请求,以对服务器数据写保护,防止干扰神经网络服务器训练;每次控制字修改完成后,系统自动关闭socket连接,跳出本次请求接收循环,返回上一级循环等待下一次app的随时连接;

神经网络识别服务器包括:神经网络训练模块、识别判断模块和主服务逻辑模块,神经网络服务器作为分布式从控端,接收树莓派主控端的指令,对发送来的数据进行判断并回复,而app接口由树莓派主控端负责监听其传来的状态修改请求并对当前状态切换。

更进一步,所述的树莓派主控端中,人体采集的外部红外传感器触发摄像头启动、锁状态控制的锁闩及嗡鸣器由gpio部分控制。

更进一步,整体供电采用220v电源转12v直流降压转换器,分别通过12v继电器开关连接锁闩供电,通过12v-5v降压转换器连接树莓派主控端供电。

更进一步,锁闩采用完全分体式,通过12v继电器开关控制无线充电发射线圈发送开合信号至无线充电接收线圈,开合电磁锁闩。

更进一步,添加用户模块:向数据及添加用户操作由于涉及用户体验,系统设计为录制两段用户正脸的视频并保存,在通过splitframe方法将视频的每一帧保存临时图片,之后再用getface过程先裁剪再转灰度,最后利用haarcascade算法提取出64*64大小的脸部图片放在系统的proccessed和test数据集文件夹下并记录日志;

删除用户模块:首先删除数据集中对应用户操作主要通过检索数据集中的日志文件,找到对应用户号的用户图片路径,使用os类中的系统命令删除对应路径的用户面部数据,然后重新写入替换的日志,再检索删除循环完成后,用新更改的日志替换原来只读打开的日志即可。

更进一步,神经网络识别服务器包括:

神经网络服务器的服务逻辑通过bind函数绑定与主控通讯的8002端口并监听主控发送指,通过send和recvall函数进行收发操作;循环服务逻辑正式启动前,需将标志参数初始化,

通过主控指令与通信模块相同的socket连接方法,服务逻辑接收一次指令后修改指令字,完成后向主控发送提示准备好执行指令并断开连接,等待主控下一次连接后直接进入指令执行的动作如接收图片判断用户号;

执行指令时系统统一接收图片流长度信息,再根据指令使用openccv将图片stream流解码保存到对应指令操作的文件夹中,之后再通过操作号进入不同的执行操作,检测用户操作,需要训练和测试两组指令和动作分别保存训练数据集和测试数据集后训练完成后,模型跟新请求执行操作,每次操作完成后系统都进入监听并准备连接状态,支持主控系统随时发来指令。

更进一步,引入数据集之后,定义卷积神经网络层各组件、变量和参数,包括卷积核及尺寸shape、权重weight、偏移量bias参数,fweight用于定义全连接层卷积核权重,相比全连接层,卷积层的卷积核在权重上alexnet多使用了一次l2正则化操作;conv2d和max_pool分别为卷积层和池化层定义,卷积层卷积的横纵步长设置为1,即让卷积和一像素一像素地平移采样,池化层横纵步长设置为2,以对半稀疏卷积核采样的数据,丰富采样的泛化性,采样方式全部为‘same’不越过边缘采样,最后设置初始输入的张量尺寸为64*64,单通道。

8.根据权利要求7所述的基于卷积神经网络的分布式人脸识别门锁系统,其特征在于:所述的神经网络层,配置五层卷积池化和两层全连接结构,通过首层的大卷积核配合48个多通道,之后多层池化和卷积对采样数据具体细化分类,最后predict通过将所有卷积核神经元的输出相加得到12输出通道中各通道的数值对应标签号,数值高的通道即为对应匹配度高的标签号;

神经网络训练通过trainner方法作为训练器,使用adam优化器去检查张量经过网络图后输出的值与标注标签差距的loss函数,通过寻找梯度下降的方向调整网络中卷积核及神经元权重和偏移量让差值loss逐渐减少,最终让loss下降到一个最小值来达到最优解;

accuracy方法测试数据集来检测每步训练得到的网络模型对训练数据集之外的图片识别准确度,此方的输出法直接反映了网络的训练拟合程度和识别效果;最后start_train即建立tensoflow对话,加载参数和神经网络图,使用数据集进行多轮训练并整图保存神经网络和其参数的方法,在服务逻辑的训练服务中被调用。

3、本发明所产生的技术效果。

(1)本发明使用的“卷积神经网络”技术的优势之一是使用大量标注数据,进行碎片化、泛华训练、拟合识别模型,较传统特征匹配的图像识别算法具备更良好的截断、形变以及明暗适应能力,识别判断准确率可以得到可观改善,优化人脸识别开锁的准确、快速响应体验。

(2)本发明系统服务器端详细记录了开锁日志,较传统以及普通电子门锁功能更加丰富强大,在隐私安全性方面,树莓派主控端亦作为神经网络服务器的防火墙,保障着解锁用户图像数据的隐私安全,同时无源式锁闩彻底解决电池供电电量耗尽的问题。

(3)本发明较传统门锁以及rfid射频卡门锁使用钥匙和电子卡片作为信任媒介,无法排除钥匙遗失无法开锁的弊端,而现有指纹式门锁虽然不需要另外携带开锁钥匙,但由于仅能记录指纹信息,无法向使用人提供开锁人员具体情况,不具备远程监控和记录陌生人企图开锁的能力。

(4)本发明较传统rfid射频卡和指纹识别等电子门锁都使用电池有源式供电,一旦能源耗尽,将会导致不可预估的后果。

(5)本发明使用人脸图像解锁方式,不需要额外解锁媒介的同时,可以存储解锁人员图像,可供使用人员详细查阅解锁记录,同时具备实时猫眼查看功能,此外,本发明在系统供电设计方面,考虑电池供电的局限,将控制部分固定,并接入供电线路,锁闩采用无线充电线圈供电方式,即开锁即通电,可随门体结构灵活移动,解决传统电子门锁电池供电的局限问题。

附图说明

图1为系统框架图。

图2为gpio配置接线图。

图3为整体供电逻辑结构图。

图4为完全分体式锁闩逻辑结构图。

图5为控制信号及基本动作实现流程图。

图6为运行控制流程图。

图7为识别解锁流程图。

图8为用户采集流程图。

图9为服务器主逻辑流程图。

图10为神经网络结构图。

具体实施方式

实施例1

如图1所示,本系统总体包括“树莓派主控”和“识别服务器”主从两端;树莓派部分包括:主运行逻辑模块(piprograme.py)、用户管理与数据集准备模块usrcollect.py/deleteusr.py)、指令与通信管理模块三大模块(ring.py);神经网络识别服务器包括:神经网络训练模块(classify.py)、识别判断模块和主服务逻辑模块(server.py);

其中树莓派主控部分负责:锁状态控制、图像采集、数据准备和预处理、向服务器下达指令的工作,而神经网络服务器作为分布式从机,根据接受的树莓派主控的指令,对发送来的数据进行判断并回复,而app接口由树莓派主控负责监听其传来的状态修改请求并对当前状态切换,其间所有双向通讯基于socketstream流形式。

gpio配置:

在树莓派主控中,外部红外感知、锁闩及嗡鸣器等设备都交由gpio部分控制,详细配置接线方案如图2。

整体供电方案

如图3,整体供电采用220v电源转12v直流降压转换器,分别通过12v继电器开关连接锁闩供电,通过12v-5v降压转换器连接树莓派主控端供电。

完全分体式锁闩

如图4,锁闩采用完全分体式,通过12v继电器开关控制无线充电发射线圈发送开合信号至无线充电接收线圈,开合电磁锁闩。

控制信号及基本动作实现

如图5,主控采集与决策,红外输入信号输入至主控采集与决策,通过高电平出发信号控制继电器开关吸合,并控制锁闩打开;通过矩形波信号控制嗡鸣器发声。

逻辑与流程

树莓派主控部分,运行控制,如图6,本部分初始化状态先将树莓派gpio口对应红外传感器信号脚的24号pin连接设为数据输入,并清除24脚干扰,然后初始化各标志字符,根据request制定循环中执行的模式,usrnum存取当前识别的用户号,addnum存取app指令添加的用户号,server_busy标志神经网络服务器是否空闲,设定完成后,开启app服务线程,然后进入模式逻辑具体包括:默认解锁模式(fefault)、管理用户模式(manageusr)、上锁模式(lock)、放行模式(free)

识别解锁

如图7,识别解锁流程图,每次解锁循环中,系统需要预先配置红外输入gpio24脚,有输入信号即可进入采集逻辑,之后再将采集图片由send_check函数发送至服务器判断并控制gpio23脚输出是否开锁信号。

数据和用户管理

如图8用户采集流程

添加用户模块(usrcollect):向数据及添加用户操作由于涉及用户体验,系统设计为录制两段用户正脸的视频并保存,在通过splitframe方法将视频的每一帧保存临时图片,之后再用getface类似的过程先裁剪再转灰度,最后利用haarcascade算法提取出64*64大小的脸部图片放在系统的proccessed和test数据集文件夹下并记录日志。

删除用户模块(delete):首先删除数据集中对应用户操作主要通过检索数据集中的日志文件,找到对应用户号的用户图片路径,使用os类中的系统命令删除对应路径的用户面部数据,然后重新写入替换的日志,再检索删除循环完成后,用新更改的日志替换原来只读打开的日志即可。

app交互控制

监听app请求函数(listen,部分代码):监听函数主要于主函数处被以线程方式被启动,在第一层循环中系统等待连接,一旦app连接完成,系统即进入单次指令接收循环,接收完成后分析请求req内容,根据内容修改控制字request,请求包括:上锁(lock)、放行(free)、解锁模式(default)、添加用户(addusr)、删除用户(deleteusr)、即时查看(getcam)、查看解锁记录(gethis),当主控处在等待神经网络服务器训练时系统会保持上锁模式,屏蔽状态修改请求,以对服务器数据写保护,防止干扰神经网络服务器训练;每次控制字修改完成后,系统自动关闭socket连接,跳出本次请求接收循环,返回上一级循环等待下一次app的随时连接。

深度学习服务器部分

如图9服务器主逻辑流程

神经网络服务器的服务逻辑通过bind函数绑定与主控通讯的8002端口并监听主控发送指,通过send和recvall函数进行收发操作,原理与主控指令与通信部分类似。

循环服务逻辑正式启动前,需将标志参数初始化,picnum标志主控发来的图片数量,logfile表示存放图片的日志路径,action表示指令对应的操作,1为识别操作,2为接收保存训练数据集,3为接收保存测试数据集并训练。free指令表示是否为空,若为“1”则可以接受主控的新服务请求,若为“0”则表示服务器正在执行指令,不可接受新指令。order表示当前指令字。

通过主控指令与通信模块相同的socket连接方法,服务逻辑接收一次指令后修改指令字,完成后向主控发送“ok”提示准备好执行指令并断开连接,等待主控下一次连接后直接进入指令执行的动作如接收图片判断用户号。

图10为服务逻辑中具体的指令执行动作示例:

执行指令时系统统一接收图片流长度信息,再根据指令使用openccv将图片stream流解码保存到对应指令操作的文件夹中,之后再通过操作号进入不同的执行操作,这里的检测用户操作只需一步action,而模型跟新请求需要train和test两组指令和action分别保存训练数据集和测试数据集后训练才能完成操作,每次操作完成后系统都进入监听并准备连接状态,支持主控系统随时发来指令。

神经网络设计

如图10,在模块建立神经网络前,系统通过图像预裁切、转码、张量化等操作先引入训练和测试数据集的初步准备,通过预建立64*64大小的图像矩阵和12位值标签建立tensor张量类型。

判断识别过程通过建立session对话并按命名加载保存点中的图和参数,再输入待判断的图片张量,取得网络的输出结果,根据结果中数值最高的通道来拟定用户号,数据集中默认10和11类型用户为未知男性和女性,通过拟定用户号对应的数值和未知数值比较来判断输入图片是否具有录入用户的突出特征,当符合的突出特征高于阀值时即承认拟定的用户号,否则视为未知用户。

引入数据集之后,(按图10结构)统一定义卷积神经网络层各组件、变量和参数,具体包括卷积核及尺寸shape、权重weight、偏移量bias参数,fweight用于定义全连接层卷积核权重,相比全连接层,卷积层的卷积核在权重上较常规alexnet多使用了一次l2正则化操作,丢弃一部分输入以降低部分权值过大,起到稀疏输入数据的作用。conv2d和max_pool分别为卷积层和池化层定义,卷积层卷积的横纵步长设置为1,即让卷积和一像素一像素地平移采样,池化层横纵步长设置为2,以对半稀疏卷积核采样的数据,丰富采样的泛化性,采样方式全部为‘same’不越过边缘采样。最后设置初始输入的张量尺寸为64*64,单通道。

本神经网络结构是alexnet为基础改良卷积神经网络,配置五层卷积池化和两层全连接结构,通过首层的大卷积核配合48个多通道,尽可能多的采取出原图像的多维度数据,之后多层池化和卷积对采样数据具体细化分类,在最优的程度上强化了原alexnet网络的拟合程度,做到区分不同人脸而不受佩戴眼镜的影响,最后predict通过将所有卷积核神经元的输出相加得到12输出通道中各通道的数值对应标签号,数值高的通道即为对应匹配度高的标签号。

神经网络训练主要通过“trainner”方法作为“训练器”使用adam优化器去检查张量经过网络图后输出的值与标注标签差距的“loss”函数,通过寻找梯度下降的方向调整网络中卷积核及神经元权重和偏移量让差值“loss”逐渐减少,最终让“loss”下降到一个最小值来达到最优解。accuracy方法测试数据集来检测每步训练得到的网络模型对训练数据集之外的图片识别准确度,此方的输出法直接反映了网络的训练拟合程度和识别效果。最后start_train即建立tensoflow对话,加载参数和神经网络图,使用数据集进行多轮训练并整图保存神经网络和其参数的方法,在服务逻辑的训练服务中被调用。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1