_木子_ 发表于 2020-5-27 16:19:04

【二哈识图】Arduino视觉识别入门教程—01智能门禁系统

项目一:智能门禁系统
课程目录:
Arduino视觉识别入门教程—01智能门禁系统
Arduino视觉识别入门教程—02植物保护系统
Arduino视觉识别入门教程—03借还书系统
Arduino视觉识别入门教程—04英语单词游戏

生活趣事:
2019年12月份,百度、京东和支付宝先后推线下“刷脸支付”应用,这不禁让人们猜测,期待已久的“刷脸支付”已走向了商用。对于我们来说,刷脸吃饭正在成改变着我们的生活方式。

刷脸支付
刷脸支付意味着我们出门不用手机,也能完成各种付款。这对某些“忘事佬”的朋友,简直就是福音,至少出门不会遇见忘记“带脸”的尴尬。同时,人脸识别也可以实现安全监控,如在智能安防中的智能门禁系统。

而这节课我们就来运用哈士奇的人脸识别功能,来做一个智能门禁系统。

功能介绍:
在这个项目中,我们将学习HUSKYLENS的人脸识别功能,利用其内置的机器学习功能,分辨学习过的人脸和其他人脸。当我们的智能门禁系统当识别到学习过的人脸时,舵机能旋转一定角度从而实现开门的功能,同时播放欢快的音乐,给主人疲惫的一天带来一些愉悦。而当识别到陌生人脸时,蜂鸣器会发出警告声,吓走陌生人。当然了我们的门禁系统还得有正常得访客功能,所以加入按钮实现门铃功能。这样我们就可以实现智能门禁系统的制作了。

材料清单:
知识园地:
人脸与人体的其它生物特征(指纹、虹膜等)一样与生俱来,具有唯一性和不易被复制 的特性。人脸图像属于最早被研究的一类图像,也是计算机视觉领域中应用最广泛的一类图像,这个项目就是利用了 HUSKYLENS的人脸识别功能。

一、什么是人脸识别?
—————————————————————————————————————————————————

人脸识别是基于人的面部特征信息进行身份识别的一种生物识别技术。使用摄像头或者摄像机采集含有人脸的图像或视频,自动检测图像信息和跟踪人脸,对检测到的人脸进行脸部的一系列相关分析技术。


人脸识别工作原理:
人脸识别的过程中有 4 个关键的步骤:下面简单说明一下这 4 个步骤。


人脸检测:寻找图片中人脸的位置,一般会用方框标出。


人脸对齐:通过定位人脸上的特征点,识别不同角度的人脸。


人脸编码:可以简单理解为提取人脸信息,转换为计算机可以理解的信息。


人脸匹配:将人脸信息匹配已有的数据库,从而得到一个相似度分数,给出匹配结果。人脸识别也被认为是生物特征识别领域甚至人工智能领域最困难的研究课题之一。人脸识别的困难主要是人脸作为生物特征的特点所带来的。


相似性:不同个体之间的区别不大,所有的人脸的结构都相似,甚至人脸器官的结构外形都很相似。这样的特点对于利用人脸进行定位是有利的,但是对于利用人脸区分人类个体是不利的。

易变性:人脸的外形很不稳定,人可以通过脸部的变化产生很多表情,而在不同观察角度,人脸的视觉图像也相差很大,另外,人脸识别还受光照条件(例如白天和夜晚,室内和室外等)、人脸的很多遮盖物(例如口罩、墨镜、头发、胡须等)、年龄等多方面因素的影响。

人脸识别应用场景:
门禁系统:受安全保护的地区可以通过脸部辨识辨识试图进入者的身分,比如监狱、看守所、小区、学校甚至是家里等。

摄像监视系统:在例如银行、机场、体育场、商场、超级市场等公共场所对人群进行监视,以达到身分辨识的目的。例如在机场安装监视系统以防止恐怖分子登机、社保支付防止冒领等。人脸识别目前在各行各业都有非常广泛的应用,例如学生考勤系统、相机、解锁手机、人证核验一体机等。



二、HUSKYLENS 人脸识别功能演示
—————————————————————————————————————————————————

回到我们的智能门禁系统项目,HUSKYLENS 之所以能区分人脸就是因为其内置的机器学习功能,它就像一个数据库的采集者,可以手动录入指定的人脸信息,并且标记这个信息。具体怎么操作呢?先拿出你的 HUSKYLENS,让我们一起操作一遍。


* 第一次使用摄像头的用户请参照WIKI网址进行固件烧录和语言设置:
http://wiki2.dfrobot.com.cn/HUSKYLENS_V1.0_SKU_SEN0305_SEN0336

STEP1 上电
HUSKYLENS 连接在Arduino UNO主板上的IIC接口,主板通过USB线连接电脑,即可供电。


STEP2 选择“人脸识别”功能
向左拨动“功能按键”,直至屏幕顶部显示“人脸识别”。


STEP3 学习人脸
把 HUSKYLENS 对准有人脸的区域,屏幕上会用白色框自动框选出检测到的所有人脸,并分别显示“人脸”字样。


将 HUSKYLENS 屏幕中央的“+”字对准需要学习的人脸,短按“学习按键”完成学习。如果识别到相同的脸,则屏幕上会出现一个蓝色的框并显示”人脸:ID1“。这说明已经可以进行人脸识别了。


* 长按“学习按键”不松开,可以多角度录入人脸。

* 如果屏幕中央没有“+”字,说明 HUSKYLENS 在该功能下已经学习过了(已学习状
态)。此时短按“学习按键”,屏幕提示“再按一次遗忘!”。在倒计时结束前,再次短按
“学习按键”,即可删除上次学习的东西

项目实践:
学习完HUSKYLENS摄像头的基本操作后,让我们一起来实现智能门禁系统项目。首先要实现的功能就是摄像头在识别人脸时,能在程序端区分学习过的人脸和未学习过的。其次就是加入舵机、RGB灯实现身份验证和开门功能,加入蜂鸣器实现警告、欢迎功能,最后实现门铃功能。

任务一:身份验证和开门功能
在这步我们先学习如何使用HUSKYLENS摄像头来识别并区分人脸,并能够判断是否是学习过的,如是学习过的人脸则舵机旋转一定的角度实现开门功能,RGB灯亮绿灯。否则RGB灯红色闪烁。

任务二:声音警告、欢迎功能
在学习了如何区分人脸并执行反馈功能后,我们就可以在此基础上添加更多的功能,比如在识别到不同人脸之后能够播放不同的音乐,从而实现声音警告或者欢迎功能。

任务三:门铃功能
在我们生活的不同场景,所需要的功能不同,这里我们加入门铃功能,需要用中断功能来实现。


任务一:身份验证开门功能
—————————————————————————————————————————————————

1、硬件连接


2、程序设计
这里的区分人脸默认摄像头已经学习过指定人脸信息,当摄像头再次看到人脸时,判断是否是学习过的即可。为了让显示过程更加直白,用主控板的5号引脚RGB灯亮绿灯表示识别到的是指定人脸,此时门禁系统应该会实现自动开门的效果,等待人进入后再自动关闭。若不是之前学习过的人脸,则表示为陌生人,此时舵机不会转动,RGB灯显示红灯闪烁驱赶陌生人。

STEP1 Mind+软件设置
打开 Mind+软件(1.62及以上版本),切换到“上传模式”,点击“扩展”,在“主控板”下点击加载“Arduino UNO”,在“传感器”下点击加载“HUSKYLENS AI 摄像头”,在“执行器”下点击加载“舵机模块”,在“显示器”下点击加载“WS2812 RGB灯”。在“功能模块”下加入“中断”


STEP2 指令学习
来认识一下主要用到的几条指令。


STEP3 流程图分析


3、程序示例


4、运行效果
摄像头提前学习好一张人脸,将上面程序上传到主控板后,当摄像头看到指定人脸,则RGB灯会显示绿色效果,并按顺序依次点亮,之后舵机会从设定的10°旋转到100°,实现开门的效果,(舵机旋转角度可根据实际情况调整),等人通过后再自动关门。当看到其他人脸时,舵机不会转动,RGB会亮红色闪烁进行警告。

      
                                                                                 识别正确                                                      识别错误
任务二:声音警告、欢迎功能
—————————————————————————————————————————————————

1、程序设计:
在这里,完善一下之前的代码,当没有人路过我们门禁系统或者不是本人路过时,可以在RGB和舵机做出反应时加入一段音乐,一首赞美的,一首搞怪的。比迪迦奥特曼主题曲的《奇迹再现》里的“梦想成真不会遥远”和《丑八怪》里的“丑八怪”。

如何加入音乐呢?这里使用套件中的蜂鸣器。

如何找乐谱呢?上网搜索《奇迹再现》、《丑八怪》简谱,截取需要的段落。



如何编写程序呢?在 Mind+,自带播放音符指令,分为低、中、高音,还有各种节拍。


如何将乐谱与指令对应呢?这里提供一个简单的识别方法,以音符 2 为例,如下表。


2、程序示例:


3、运行效果:
提前在摄像头上学好你自己的人脸,将程序上传到主控板中,运行程序时摄像头只要看见你,RGB会按顺序依次点亮,蜂鸣器会唱一段“你梦想成真不会遥远”的旋律,而舵机也会旋转一点角度打开们后,待人通过后又会自动关闭。如果摄像头对着其他人,RGB灯会全部亮红色闪烁,警告陌生人,蜂鸣器会唱“丑八怪”。如果没有人脸时,灯会灭,蜂鸣器也不会播放音乐。

思考:如果有人来访呢,如何解决?

任务三:实现门铃功能
—————————————————————————————————————————————————

1、程序设计:
在之前代码的基础上,增加按钮控制蜂鸣器的代码,我们应该加在哪呢?先想象一下场景,当有人到访时(不是之前学习过的人脸),先是触发之前的程序,播放“丑八怪”。在这结束或者任何时候有人按下按钮,此时我们的系统都应该有所反应。而我们的中断正好有这样的功能,能够停止当前的事情而去触发中断的程序,因此在这我们使用了中断来解决这一问题。

2、程序示例:


3、运行效果:
提前在摄像头上学好你自己的人脸,将程序上传到主控板中,运行程序时摄像头只要看见你,RGB会按顺序依次点亮,蜂鸣器会唱一段“你梦想成真不会遥远”的旋律,而舵机也会旋转一点角度打开们后,待人通过后又会自动关闭。如果摄像头对着其他人,RGB灯会全部亮红色闪烁,驱赶陌生人,蜂鸣器会唱“丑八怪”。如果没有人脸时,灯会灭,蜂鸣器也不会播放音乐。在以上过程中,任意时刻按下按钮音乐都会切换到“叮咚”,而实现访客访问的功能。如果没有人脸时,灯会灭,蜂鸣器也不会播放音乐。

项目小结:
通过门禁系统项目,我们了解了人脸识别的工作原理,学习了 HUSKYLENS 上人脸识别算法的指令应用。在人工智能视觉识别领域,人脸识别是不可或缺的一部分,也有丰富的应用场景,大家一起来开动脑筋,想一想还能做出哪些人脸识别的应用呢。

知识点回顾:
1、了解人脸识别的工作原理
2、学习 HUSKYLENS 人脸识别的相关指令

项目拓展:
这个项目中,我们将人脸识别与音乐及一些传感器结合,设计了一个门禁警报系统,但是如果应用在实际场景中,蜂鸣器报警的声音实在太小,所以能不能将它与物联网相结合呢?可以尝试做一个家庭警报系统吧,利用摄像头检测门口是否有陌生人,如果陌生人停留的时间过长且没有按下门铃访问,那么利用物联网发送消息到主人的电脑或者手机上,甚至还可以实现远程开门的功能。

梅顺民 发表于 2022-4-16 18:19:31

只能录入一个人脸,如何实现录入多个人脸呢?

Nick-ccq 发表于 2022-4-18 14:39:10

梅顺民 发表于 2022-4-16 18:19
只能录入一个人脸,如何实现录入多个人脸呢?

https://wiki.dfrobot.com.cn/_SKU_SEN0305_Gravity__HUSKYLENS_%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%91%84%E5%83%8F%E5%A4%B4#target_16

参考链接里面的教程

DFSkZbrwnJ3 发表于 2023-3-21 17:13:15

学到了学到了

DFSkZbrwnJ3 发表于 2023-3-21 17:19:20

11111111111111111111111111111111111

三春牛-创客 发表于 2023-8-6 22:09:47

不错不错

三春牛-创客 发表于 2023-8-6 22:10:49

学习了,感谢分享

花生编程 发表于 2023-8-7 22:30:35

教程很棒!

花生编程 发表于 2023-8-7 22:31:51

不错不错,感谢分享
页: [1]
查看完整版本: 【二哈识图】Arduino视觉识别入门教程—01智能门禁系统