0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何构建一个具有3D面部识别功能的智能开门器

科技观察员 来源:Jörg Wallmersperger 作者:Jörg Wallmersperger 2022-04-18 14:29 次阅读

目的

构建一个具有 3D 面部识别功能的智能开门器

适用于一个或两个家庭的房子。

所需材料

英特尔实感 ID F455 摄像头

树莓派 4B >= 4 GB 内存

Geeek Pi Raspberry Pi 4 护甲箱

16 GB 或更高的 microSD 存储卡,例如 Samsung EVO Select 64 GB microSD

明纬 IRM-60-5ST 5V 10A 电源

Lindby 的传感器外墙灯 Severina 作为外壳

RGB LED 64x32 P2,5 矩阵模块 160mm x 80mm 例如 Adafruit 5036

E18-D80NK IR反射镜+10KΩ上拉电阻

40 针 GPIO 带状电缆或 10x 公/母跳线,20x 母/母跳线

M3 黄铜间隔螺栓 4x 40mm、4x15mm、2x 10mm

8 个 M3 螺母,用于将间隔螺栓固定到外壳的后面板

4x M2.5 螺钉 12mm,用于将 Raspi 连接到外壳的后面板

¼ 英寸螺丝,用于将相机固定在机箱底部

外壳底部用于 USB 电缆的电缆索环

用于绝缘低压电源端子的收缩管

用于前门蜂鸣器的基于 IP 的接口,例如 Siedle 网关(德国品牌内部对讲机)

可选:带有 40 针间距堆叠接头的 Adafruit RGB 矩阵式发动机罩 - 增加矩阵式发动机罩与电路板的距离,使其突出于装甲箱

可选:PIR 传感器 HC-SR 501 作为替代存在检测器和 E18-D80NK 回归反射传感器的替代品

所需工具

钻头

螺丝刀

烙铁

前提

2021 年初,英特尔通过发布 RealSense ID F455 摄像头采纳了这一原则,并为制造商提供了一款有趣的产品,可集成到自制解决方案中。该相机通过大量文档、适用于 Linux、Windows 和 Android 的开源 SDK 以及 C、C++C#Python 语言来评分。与 Apple 相比,它允许对多个人进行身份验证,他们的个人资料要么集中存储在服务器上,要么存储在相机本身的数据库中。英特尔和苹果给出的“错误录取率”——即被错误录取的人数——为 1:100 万。相机的整个认证过程不到一秒钟。

功能性
智能开门器取代了过时的入口照明,因此被安置在一个外壳中。该系统仅由主电压供电,并通过内部 WIFI 进行通信。因此,必须确保准入控制的位置具有适当的 WIFI 接收。

由于相机本身没有存在检测器,它由红外反射光屏障触发。要求入场的人将手擦过挡光板或靠近他们的脸。可以短暂看到机箱底部倒置摄像头的红外照明器发出微弱的红光。摄像头现在将波长为 850 nm 的不可见红外点投射到面部,通过侧面集成的两个全高清摄像头记录它们,并使用它们形成三维点云,并通过 AI 与存储的面部轮廓进行比较推理。相机需要不到一秒钟的时间进行此身份验证过程,并通过 USB 电缆将结果(在肯定的情况下是识别人的姓名)传输到 Raspberry Pi 计算机。

由于我们只使用一台相机,这些配置文件本地存储在相机上。对于具有多个访问权限的身份验证,摄像机提供了一种服务器模式,其中访问配置文件存储在中央服务器上,因此可以由多个摄像机使用。如果验证通过,则被识别人的姓名会在 LED 矩阵显示屏上显示几秒钟,然后通过 WIFI 使用 MQTT 命令打开门。空闲时,LED 矩阵面板显示时间、星期几和当前日期。您可以在此处通过 YouTube 视频找到其工作原理的演示:识别出的人名会在 LED 矩阵显示屏上显示几秒钟,然后通过 WIFI 使用 MQTT 命令打开门。空闲时,LED 矩阵面板显示时间、星期几和当前日期。您可以在此处通过 YouTube 视频找到其工作原理的演示:识别出的人名会在 LED 矩阵显示屏上显示几秒钟,然后通过 WIFI 使用 MQTT 命令打开门。空闲时,LED 矩阵面板显示时间、星期几和当前日期。

硬件设置
在这里我使用了带有 Raspberry PI OS aka Raspian 的 Raspberry 4B 用作主机。

我们决定在不锈钢外壳中安装户外灯,当放置在前门前时,它会散发出不显眼的图像。除了 Raspi 之外,它还包含一个功率为 50 瓦的 5V 电源、一个回归反射传感器和一个分辨率为 64x32 RGB LED 的 Adafruit 5036 LED 矩阵显示器。它使用 4 个间隔螺栓连接到外壳的底板,每个间隔螺栓的长度为 55 毫米(40 毫米 + 15 毫米)。矩阵模块的厚度为 15 毫米,因此底板和磨砂丙烯酸玻璃之间的距离为 70 毫米。为确保 LED 矩阵内容不会因缎面处理而变得过于模糊,LED 矩阵模块与丙烯酸玻璃直接接触非常重要。

接线
将 RGB 矩阵显示器连接到 Raspberry PI 有 2 个选项:

Adafruit RGB Matrix Hat/Bonnet:此插件板通过 LED 矩阵模块随附的 HUB75 连接器提供整齐的布线。为了避免插件板不妨碍 Raspi Armor Case,必须使用 40 针间距堆叠接头将其抬起。这造成了更高设计的缺点。6厘米。由于 Raspi 安装在与传感器相对的外壳下部,因此可以使用 PIR 传感器 HC-SR 501,但在组装外壳长度为 5.5 厘米的 E18-D80NK 红外光栅时会导致碰撞的灯壳。因此,在使用 E18-D80NK 光栅时,我们建议使用如下所示的分立接线或交换位置 - 电源单元在外壳下部,Raspi 在上部!Raspi 通过插头或 Adafruit 阀盖上的螺丝端子供电。此外,Adafruit Bonnet 使用其他用于通信的GPIO端口,因此在 Adafruit Bonnet 案例中,我们使用 GPIO 19 作为存在传感器。因此,传感器输出的跨接电缆必须焊接到阀盖上。

使用跨接电缆或带状电缆的离散接线稍微复杂一点,但功能相同。存在传感器(PIR 或光电传感器)用于在离散接线的情况下连接到GPIO 引脚 5。Meanwell 电源在低压输出端有一个 4 针螺钉端子,通过随附的电源线为 RGB 矩阵和 Raspi 通过 GPIO 引脚 2 提供 5V 电源和 GPIO 引脚 39 用于接地。我们不建议使用跨接电缆为 Raspi 供电,而是使用具有更高横截面和更快速端子的更粗电缆。为此,我们重新使用了 LED Matrix 电源的 2 个冗余电缆夹,用小螺丝刀将它们拉出,并用收缩管覆盖它们,这样就不会有 GPIO 引脚 2 短路的风险。

PIR传感器
为 PIR 传感器的镜头预留的前部外壳孔,通过用两个封闭的塑料螺母将反射式红外光屏障的内外拧紧,将反射式红外光屏障填充。传感器通过矩阵式阀盖提供 5V 电压。如果使用 Adafruit Matrix Bonnet,棕色电缆将连接到标有“5V Out”的端子。

使用离散接线,有几种方法可以从GPIO引脚获得 5V 电压。例如,引脚 4 上的 +5V 和 GND - 蓝色电缆 - 引脚 34 上。传感器输出 - 黑色电缆 - 连接到引脚 29 或逻辑 GPIO 端口 5。

如果您没有对面的墙壁或类似的反射红外光的物体,您可以使用 PIR 传感器,例如 HC-SR 501,而不是光栅。在我们的案例中,这记录了许多误报事件,因此经常触发相机,因为 LED 矩阵模块对人眼来说是不可见的闪烁,并通过对面的墙壁刺激 PIR 传感器。

机箱安装
Severina by Lindby 传感器控制的户外壁灯外壳采用 160 毫米 x 80 毫米尺寸的 RGB LED 矩阵,并提供足够的空间来容纳所有组件。要安装它,您必须在后面板上钻几个孔。

摄像机用 1/4 英寸螺钉从外壳内部拧到下部不锈钢板上。为了防止贵重的相机简单地扭断,它用两个 10 毫米长的间隔螺栓固定。

软件安装
对于软件安装,我们假设一个新安装的 Raspberry Pi OS aka Raspian,它通过内部 WIFI 连接到 Internet。我们还建议通过 Raspberry Pi 系统配置打开 ssh 和 vnc 服务以进行远程访问。

程序“dooropenerF455”基于两个软件模块:第一,英特尔的 RealSense ID SDK,用于控制 3D 摄像头,第二,Henner Zeller 的 RPI LED 矩阵模块。我们使用 MQTT 接口打开门,因此将 Mosquitto 安装为 MQTT 代理:

# installation of smartdoorF455
# bring Raspi up2date and get additional software developement tools
sudo apt update -y
sudo apt upgrade -y
# install essential development tooling
sudo apt install cmake build-essential -y
# mosquitto is the MQTT broker
sudo apt install mosquitto mosquitto-dev libmosquittopp-dev mosquitto-clients -y
# libgraphicsmagick++-dev is required to build rpi-rgb-led-matrix utilities
sudo apt install libgraphicsmagick++-dev libwebp-dev -y
# you may want to encrypt network communication
sudo apt install libssl-dev libcurl4-openssl-dev -y
# let's build the RealSense ID SDK by Intel
cd ~
git clone https://github.com/IntelRealSense/RealSenseID.git
cd RealSenseID
mkdir build
cd build
cmake ..
make -j4
# let's build the rpi-rgb-led-matrix library by Henner Zeller
cd ~
git clone https://github.com/hzeller/rpi-rgb-led-matrix.git
cd rpi-rgb-led-matrix/
make -C examples-api-use
# let's build the smartdoorF455 application
cd ~
git clone https://github.com/joergwall/smartdoorF455.git
cd smartdoorF455
mkdir build
cd build
cmake ..
make -j4

编译后的 C++ 二进制可执行文件“smartdoorF455”或 C 挂件“smartdoorF455_c”现在应该存在于 ~/smartdoorF455/bin 目录中。源代码可以在 ~/smartdoorF455/cpp 或 ~/smartdoorF455/c 中找到。该程序通过带有 sudo 的 shell 脚本启动:

cd ~/smartdoorF455/bin
sudo ./run_smartdoorF455.sh

或者谁更喜欢编程语言 C 的变体:

sudo ./run_smartdoorF455_c.sh

并根据用户名和时间/日期提供以下输出:

/home/pi/log created
smartdoorF455 started successfully
watch /home/pi/log/20211216_092446_smartdoorF455.log for errors

即使相机还没有排练一张脸,时间、星期几和日期现在也应该是可见的。如果不是这种情况,请转到故障排除一章。

人脸进行身份验证
为了将授权用户的脸带入相机,我们使用了一个带有命令行界面的工具。如果设备 /dev/ttyACM0 丢失,请改用 /dev/ttyACM1。当前存储在相机中的参数和选择菜单现在出现。旋转参数可以在“s”菜单中设置为 0 或颠倒设置为 180,具体取决于相机是否倒置 - 即取决于相机是倒置在外壳上还是直立,例如在随附的 mini 上三脚架。菜单项“e”提供了在相机上使用本地配置文件存储的培训。脸部应距离相机约 30 至 50 厘米。然后该过程如下所示:

# enroll user for authentication
cd ~/RealsenseID/build/bin
sudo ./rsid-cli /dev/ttyACM0
Connected to device

Authentication settings::
* Rotation: 0 Degrees
* Security: High
* Algo flow Mode: All
* Face policy : Single
* Dump Mode: CroppedFace
* Matcher Confidence Level : High
Please select an option:

'e' to enroll.
'a' to authenticate.
'd' to delete all users.
'c' to capture images from device.
's' to set authentication settings.
'g' to query authentication settings.
'u' to query ids of users.
'n' to query number of users.
'b' to save device's database before standby.
'v' to view additional information.
'x' to ping the device.
'q' to quit.

server mode options:
'E' to enroll with faceprints.
'A' to authenticate with faceprints.
'U' to list enrolled users
'D' to delete all users.
> e
User id to enroll: Julia
Connected to device
*** Hint Success
*** Hint Success

这样,所有授权人员的面部轮廓都被学习了。指定名称时,请注意RGB LED 矩阵模块只能显示少量字母。使用我们使用的字体,这些只有 5 个字符。如有需要,请在源代码第 99 行使用缩写或缩小 BDF 字体的大小,这样一行最多可以显示 8 个字符

#define FONT_NAME FONT_PATH "4x6.bdf"

源代码
~/smartdoorF455/cpp 或 ~/smartdoorF455/c 下的源代码必须适应情况。是使用 MQTT 还是使用 Adafruit Bonnet 来连接 LED RGB 矩阵模块?这将在源代码中使用适当的#define 常量定义进行调整。例如,如果使用 Adafruit Bonnet,则使用 GPIO 19 而不是 GPIO 5 用于红外反射光栅,因为 RGB 矩阵是通过其他 GPIO 引脚控制的:

/* START SYSTEM CONFIGURATION SECTION */
#define MOSQUITTO_IN_USE /* comment this line, if MQTT is not used to open door */
#define ADAFRUIT_BONNET_IN_USE /* comment this line, if you have direct cable wiring from Raspi to LED Matrix */
#define STDOUT_ADDTL_INFO /* provides additional information on stdout e.g. prints date/time when movement sensor triggers camera */
/* END SYSTEM CONFIGURATION SECTION */

开门指令
为了能够使用此处介绍的解决方案解锁前门,门对讲机必须提供 IP 接口。如果你想解决这个项目的副本,你应该首先详细分析贝尔系统的当前状态,并尝试找到添加IP接口的方法。

我们需要处理基于 Siedle 总线的门禁对讲机,因此使用 Oskar Neumann 的网关,该网关通过 WIFI 将 MQTT 命令转换为 Siedle 总线,但是市场上不再提供。Siedle 提供 Smart Gateway SG-150 作为 IP 接口,然而,对于自建项目来说,价格超过 600 美元是一大笔钱。我们尚未检查的 Siedle IP 接口的其他替代方案是第三方网关,例如Hamares或SMS Guard的智能开门器,它也提供 MQTT 接口。

任何已经在使用基于 IP 的门对讲系统的人都可以摆脱困境,并且可以在标有“TRIGGER DOOR OPENER START”和“TRIGGER DOOR OPENER END”的 C/C++ 代码之间调整源代码来触发开门器。例如,如果此触发器是一个 http 请求,则可以使用 Linux 系统调用将其插入到 ~/smartdoorF455/c/main.c 或 ~/smartdoorF455/cpp/main.cpp 文件中:

/* TRIGGER DOOR OPENER START - ADAPT THIS CODE according to your interface to
your door buzzer */
/* exemplary adaptation of the C/C++ code */
/* Assumption: the door opener can be opened with the http request */
/* ------- http://192.168.178.27:8083/fhem?cmd=set%20Siedle%20open */
/* Make sure the curl module is installed in Raspian: */
/* sudo apt install curl */
/* Since no MQTT protocol is used for the door opener */
/* remove those enclosed between "#ifdef MOSQUITTO_IN_USE" and "#endif" */
/* lines. */

system("curl http://192.168.178.27:8083/fhem?cmd=set%20Siedle%20open");

/* TRIGGER DOOR OPENER END */

Mosquitto MQTT 代理
如果使用 MQTT 与开门机通信,则必须创建以下配置文件用于 Raspi 上的 MQTT 代理的配置:

sudo nano /etc/mosquitto/conf.d/mymosquitto.conf
# add following lines
listener 1883
listener 1884
allow_anonymous true

之后,重新启动代理:

sudo systemctl restart mosquitto

mosquitto 客户端允许我们窃听代理交换的消息以进行调试

mosquitto_sub -d -t "#"

摄像头安全
英特尔在 RealSense ID SDK 中提供了一种安全通信模式。此模式使相机能够与主机系统配对并加密通信。这消除了不速之客通过另一个实感 ID 摄像头(通过 USB-C 快速插入)和其他面部配置文件获得未经授权访问的可能性。由于复杂的原因,我们这里没有使用这种模式。

优化
为了从进程调度程序的管理中删除四个处理器内核之一,以便将其留给我们的应用程序独占使用,必须修改以下文件:

sudo nano /boot/cmdline.txt
“isolcpus=3” 附加到行尾,使其看起来像这样:

console=serial0,115200 console=tty1 root=PARTUUID=e0d8ecc0-02 rootfstype=ext4 fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles isolcpus=3
此步骤在重新启动计算机后生效,旨在防止 LED 矩阵显示屏出现任何闪烁。我们程序的处理器亲和性在 run_smartdoor_F455.sh 使用 taskset 命令的启动脚本结束时分配给释放的 CPU。

结论
三维生物特征面部识别的用户身份验证是一个新领域,为创客社区开辟了令人兴奋的应用场景。但很可惜,英特尔在宣布仅仅8个月后就埋下了这个新的业务领域。尽管如此,我们还是对这款 3D 相机充满热情,并且作为开门器(或者,正确地说,作为门释放器,因为您仍然必须自己打开前门),他们一直在可靠地完成他们的工作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 摄像头
    +关注

    关注

    59

    文章

    4612

    浏览量

    92911
  • 面部识别
    +关注

    关注

    1

    文章

    373

    浏览量

    26492
  • PIR传感器
    +关注

    关注

    2

    文章

    56

    浏览量

    9609
收藏 人收藏

    评论

    相关推荐

    包含具有多种类型信息的3D模型

    Desktop是3D建模CAD程序,用于多种绘图和设计,涵盖建筑、土木和机械工程,以及室内设计、产品设计、景观建筑甚至游戏开发。它通常用于创建和编辑3D模型,同时提供与BIM工作
    发表于 03-28 17:18

    3D动画原理:电阻

    电阻3D
    深圳崧皓电子
    发布于 :2024年03月19日 06:49:19

    88电子元器件3D模型合集

    整合88国外网站下载的电子元器件3D模型,省去逐下载的麻烦。
    发表于 09-25 07:47

    ISM330DHCX iNEMO六轴惯性传感模块应用笔记

    具有出色的稳定性以及超低噪声。独特的嵌入式功能集有助于实现智能和复杂的传感节点,以极低的功耗提供高性能:• 能够支持多达 16 嵌入式有
    发表于 09-08 08:29

    面部表情识别技术的神经科学基础

    面部表情识别技术是建立在神经科学的基础之上。人类的大脑具有专门的神经系统来处理面部表情和情感信息。本文将探讨面部表情
    的头像 发表于 08-24 18:09 357次阅读

    面部表情识别技术在人机交互中的应用

    面部表情识别技术在人机交互中具有广泛的应用。通过识别和理解用户的面部表情,可以实现更加智能、个性
    的头像 发表于 08-21 18:01 427次阅读

    面部表情识别技术的最新研究进展

    面部表情识别技术是人工智能领域的研究热点之一,对于揭示情感状态和心理状况具有重要意义。本文将介绍面部表情
    的头像 发表于 08-21 17:58 679次阅读

    光学3D表面轮廓仪可以测金属吗?

    光学3D表面轮廓仪是基于白光干涉技术,结合精密Z向扫描模块、3D 建模算法等快速、准确测量物体表面的形状和轮廓的检测仪器。它利用光学投射原理,通过光学传感对物体表面进行扫描,并根据反射光的信息来
    发表于 08-21 13:41

    面部表情识别技术在安全领域的应用

    面部表情识别技术在安全领域具有广泛的应用。通过对面部表情的识别和分析,可以判断人的情绪状态和心理状况,从而为安全监控和预警系统提供重要的支持
    的头像 发表于 08-10 18:27 468次阅读

    面部表情识别的挑战和前景

    的主要挑战之一。不同的人具有不同的面部特征和表情表达方式,这增加了面部表情识别的难度。为了解决这个问题,需要建立更加全面和丰富的表情库,提高算法的适应性和鲁棒性。 其次,
    的头像 发表于 08-02 18:21 577次阅读

    手势识别功能开源案例

    电子发烧友网站提供《手势识别功能开源案例.zip》资料免费下载
    发表于 07-11 17:05 2次下载
    手势<b class='flag-5'>识别</b><b class='flag-5'>功能开</b>源案例

    具有智能功能的门铃构建

    电子发烧友网站提供《具有智能功能的门铃构建.zip》资料免费下载
    发表于 07-06 14:31 0次下载
    <b class='flag-5'>具有</b><b class='flag-5'>智能</b><b class='flag-5'>功能</b>的门铃<b class='flag-5'>构建</b>

    【EASY EAI Nano人工智能开发套件试用体验】EASY EAI Nano人工智能开发套件开箱及硬件初体验

    。 来看看我们的主角EASY EAI Nano人工智能开发板。 简单介绍下这个开发板的功能: EASY EAI Nano是灵眸科技的硬件产品。基于瑞芯微RV1126 处理设计
    发表于 05-31 19:18

    3D扫描进度更新,在等快递。还有准备3D打印。#3d建模 #3d扫描 #三维扫描 #3d设计 #创客

    3D打印机3D打印
    学习电子知识
    发布于 :2023年05月28日 20:54:11

    台通过USB远程控制的3D打印机,有人构建了通过WiFi控制的USB开关吗?

    我有台可以通过 USB 远程控制的 3D 打印机,有人构建了通过 WiFi 控制的 USB 开关吗?我希望能够将 2 USB 连接(来自不同的计算机)切换到
    发表于 05-22 06:09