[AI人工智能教程]LattePanda&AI-人脸识别门禁系统 精华

3617浏览
查看: 3617|回复: 5

[AI人工智能教程] LattePanda&AI-人脸识别门禁系统

[复制链接]

LattePanda&AI-人脸识别门禁系统

概述

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别。
LattePanda&AI-人脸识别门禁系统图21
本项目中我们将实现摄像头人脸识别效果,包含人名标签和识别框,并结合灯带的亮灯状态制作人脸识别门禁系统。
(最终效果视频)

项目基础

人脸识别

硬件准备:

AI主控:LattePanda
输入输出设备:5英寸显示屏、键盘、鼠标、摄像头

人脸信息录入:

1、双击桌面上的“startpage.sh”,打开JupyterLab,切换到“home/lattepanda/桌面/LattePanda&AI项目实战/”目录下,如下图,检查一下项目必需的3个文件;
LattePanda&AI-人脸识别门禁系统图20
2、双击进入“图片拍摄”文件夹;
LattePanda&AI-人脸识别门禁系统图19
3、双击打开程序,修改拍摄的照片数量,例如for index in range(3);
LattePanda&AI-人脸识别门禁系统图18

样例代码:

LattePanda&AI-人脸识别门禁系统图17
4、选择无其他人、无杂物的背景,正眼看着摄像头,然后运行程序,拍摄的图片会在程序同目录下依次出现;
LattePanda&AI-人脸识别门禁系统图16
5、双击图片查看拍摄效果;

6、选择效果最好的一张,重命名为此人的姓名;
LattePanda&AI-人脸识别门禁系统图14
7、将照片复制到“LattePanda&AI-人脸识别门禁系统”文件夹下。
LattePanda&AI-人脸识别门禁系统图13

程序编写:

1、双击打开“人脸识别.ipynb”;
LattePanda&AI-人脸识别门禁系统图15
样例代码:
LattePanda&AI-人脸识别门禁系统图12LattePanda&AI-人脸识别门禁系统图11

  1. #导入人脸识别模块
  2. from faceRecognition import *
  3. #人脸检测与识别文件调用
  4. faceDetectorPath = "face-detection-retail-0005.xml"
  5. landmarksPath = "landmarks-regression-retail-0009.xml"
  6. faceReidentificationPath = "face-reidentification-retail-0095.xml"
  7. #调用训练模型文件
  8. model = Model()
  9. model.load(faceDetectorPath = faceDetectorPath,
  10.                   landmarksPath = landmarksPath,
  11.                   faceReidentificationPath = faceReidentificationPath)
  12.                   
  13. #初始化摄像头与窗口
  14. camera = Camera()
  15. screen = Screen("人脸识别门禁系统", (0,0,0))
  16. #打开手写数字交互窗口,按下“Q”键退出窗口
  17. if_run = 1
  18. while (if_run == 1):
  19.     #从摄像头获取图片
  20.     image = camera.read(flip = False)
  21.     #图片剪裁
  22.     image = model.clipResizeFrame(image)      
  23.     screen.clear()
  24.     #获取人脸识别结果并在屏幕上显示识别标签
  25.     results = model.predict(image)
  26.     screen.putImage(image, 80, 0, 640, 480)
  27.     for roi, landmarks, identity in zip(*results):
  28.         x, y = roi.position
  29.         w, h = roi.size
  30.         screen.putTag(identity, x+80, y, w, h, bg=(0,255,0))
  31.         
  32.     #打开与显示交互窗口,如果按下Q键,将无法进入下一次while循环  
  33.     if screen.show():
  34.         if_run = 0
  35.         screen.quit()
复制代码

2、运行程序,当执行到最后一个单元格时,会打开交互窗口。
未识别到人脸:
LattePanda&AI-人脸识别门禁系统图10
检测到未知人脸:
LattePanda&AI-人脸识别门禁系统图9
识别到已知人脸,并显示此人姓名:
LattePanda&AI-人脸识别门禁系统图8
3、按键盘上的“Q”键可退出交互窗口。

项目进阶

人脸识别门禁系统

如果让人脸作为门禁系统的钥匙,会使我们的生活更方便快捷。当识别到主人的人脸时,灯带亮绿灯,表示准许进入;否则显示红灯。

硬件准备:

主控:Arduino UNO、IO 传感器扩展板 V7.1
模块:WS2812 RGB 全彩灯带

硬件连接图:

LattePanda&AI-人脸识别门禁系统图7
*WS2812上有7个RGB灯,程序中的np[0]表示第一个灯,程序中的np[1]表示第二个灯。

程序编写:

双击打开“人脸识别_灯带.ipynb”;
LattePanda&AI-人脸识别门禁系统图5
样例代码:
LattePanda&AI-人脸识别门禁系统图6LattePanda&AI-人脸识别门禁系统图4LattePanda&AI-人脸识别门禁系统图3

  1. #导入人脸识别模块
  2. from faceRecognition import *
  3. import time
  4. from pinpong.board import Board,Pin,NeoPixel
  5. NEOPIXEL_PIN = Pin.D7
  6. PIXELS_NUM = 1 #灯数,如果需要多个灯亮,请改此数值
  7. #初始化,选择板型和端口号
  8. Board("uno", "/dev/ttyUSB0").begin()  
  9. np = NeoPixel(Pin(NEOPIXEL_PIN), PIXELS_NUM) #np[0]表示第一个灯,np[1]表示第二个灯,以此类推
  10. #人脸检测与识别文件调用
  11. faceDetectorPath = "face-detection-retail-0005.xml"
  12. landmarksPath = "landmarks-regression-retail-0009.xml"
  13. faceReidentificationPath = "face-reidentification-retail-0095.xml"
  14. #调用训练模型文件
  15. model = Model()
  16. model.load(faceDetectorPath = faceDetectorPath,
  17.                   landmarksPath = landmarksPath,
  18.                   faceReidentificationPath = faceReidentificationPath)
  19.                   
  20. #初始化摄像头与窗口
  21. camera = Camera()
  22. screen = Screen("人脸识别门禁系统", (0,0,0))
  23. #打开手写数字交互窗口,按下“Q”键退出窗口
  24. if_run = 1
  25. led = 0
  26. count = 0
  27. while (if_run == 1):
  28.     #从摄像头获取图片
  29.     image = camera.read(flip = False)
  30.     #图片剪裁
  31.     image = model.clipResizeFrame(image)      
  32.     screen.clear()
  33.     #获取人脸识别结果并在屏幕上显示识别标签
  34.     results = model.predict(image)
  35.     screen.putImage(image, 80, 0, 640, 480)
  36.     for roi, landmarks, identity in zip(*results):
  37.         x, y = roi.position
  38.         w, h = roi.size
  39.         screen.putTag(identity, x+80, y, w, h, bg=(0,255,0))
  40.         
  41.         #count>30,修改30可调节切换灯颜色的速度
  42.         if identity != "未知人脸" and count>30:
  43.             np[0] = (0, 255 ,0) #设置第一个灯亮绿色
  44.             #np[1] = (0, 255 ,0) #设置第二个灯亮绿色
  45.             count = 0
  46.         elif identity == "未知人脸" and count>30:
  47.             np[0] = (255, 0 ,0) #设置第一个灯亮红色
  48.             #np[1] = (255, 0 ,0) #设置第二个灯亮红色
  49.             count = 0
  50.         count+=1
  51.         
  52.     #打开与显示交互窗口,如果按下Q键,将无法进入下一次while循环  
  53.     if screen.show():
  54.         if_run = 0
  55.         screen.quit()
复制代码

运行效果:

当识别到已知人脸时,灯带的第一个灯亮绿色;
LattePanda&AI-人脸识别门禁系统图2
当屏幕中没有人脸或者是未知人脸时,灯带的第一个灯亮红色。
LattePanda&AI-人脸识别门禁系统图1



firehawk  学徒

发表于 2020-12-27 23:28:47

楼主,示例代码在哪里能看到?
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-8-23 21:58:37

厉害厉害
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-8-23 21:59:49

不错不错!
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-8-24 14:07:13

厉害厉害
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-8-24 14:08:15

赞赞赞赞赞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail