首页 自述 友链 开往

文章

Fedora44增加人脸识别解锁

硬件信息

本机是Lenovo Yoga 14sIHU 2021出厂预装的windows10并配备了windows hello的人脸识别功能摄像头。 因此硬件确认部分可以确定该电脑可以使用人脸识别解锁,否则需要确保电脑有一个红外摄像头

这台机器的摄像头是 USB UVC 复合设备(lsusb 显示 13d3:5419 IMC Networks Integrated Camera,Azurewave 模组),系统里暴露 4 个节点:

/dev/video0, video1  → "Integrated C"(彩色,640x480)
/dev/video2, video3  → "Integrated I"(红外,640x360 GREY)

命名里的 C = Color、I = Infrared。video1/video3 是元数据节点,video2 才是 IR 采集节点。

配置时建议用稳定的 by-path 路径而不是 /dev/video2(设备编号重启后可能漂移,by-path 不会):

/dev/v4l/by-path/pci-0000:00:14.0-usb-0:1:1.2-video-index0

安装 howdy & 编辑配置

howdy 是 Linux 下事实标准的人脸认证方案(PAM 模块,支持锁屏/登录界面刷脸,失败自动回退密码)。按网上的教程装:

sudo dnf5 copr enable principis/howdy
sudo dnf5 install howdy

报错:

Problem: conflicting requests
  - nothing provides python3dist(dlib) >= 6.0 needed by howdy-2.6.1-10.fc43

dlib(Howdy 的人脸识别引擎)已被 Fedora 44 官方仓库淘汰——列进了 fedora-obsolete-packages。而且这不是个例:principis/howdy 的 beta 源同样依赖 dlib,一样装不上。

最终解法是 ronnypfannschmidt/howdy-beta,这个源自带全套依赖(包括自己构建的 python3-dlib 20.0):

sudo dnf5 copr disable principis/howdy   # 清理装不上的源
sudo dnf5 copr enable ronnypfannschmidt/howdy-beta
sudo dnf5 install howdy howdy-gtk

howdy-gtk 是认证时弹出的可视化窗口(显示"正在识别"和实时画面),强烈建议一起装,否则锁屏刷脸时没有任何反馈。

编辑 /etc/howdy/config.ini(或sudo howdy config ),关键项在 [video] 段:

[video]
# IR 摄像头(用 by-path 稳定路径)
device_path = /dev/v4l/by-path/pci-0000:00:14.0-usb-0:1:1.2-video-index0
# 暗帧过滤阈值(后面会用到)
dark_threshold = 80
# 识别严格度 1-10,越低越严格
certainty = 4

howdy测试

首先先用 sudo howdy test 查看测试采集窗口内容是否能看到人脸,如果红外摄像头自带补光灯一般就是能看到了,但是本机的红外摄像头是联动另一个红外补光灯进行人脸采集的,如果画面全黑则说明没有使用补光灯,因此要来到下一步,补光灯联动修复。(如果test能够看到IR传感器采集的人脸则可以直接跳过这一部分)

补光灯联动修复

社区标准方案是 linux-enable-ir-emitter,原理是遍历 UVC 扩展单元控制项寻找点灯指令。安装时注意:COPR 里的版本(4.5.0)太老,会因为 /dev/v4l/by-id 下没有 IR 设备条目而崩溃,需要从 GitHub Releases 装 6.1.2。

EmixamPP/linux-enable-ir-emitter
linux-enable-ir-emitter config

对于绝大多数的硬件设备,该工具可以自动遍历发现,并帮助快速配置。(可能有不行的设备?应该不会

该工具在配置完成后会在 /etc/linux-enable-ir-emitter 下创建运行配置,然后启动 service 服务

sudo systemctl enable --now linux-enable-ir-emitter.service

录入人脸

sudo howdy add

如果输出画面过黑,则调节之前配置中的 dark_threshold,配置完成后可以使用 sudo howdy test 进行测试人脸采集

接入人脸

# ① KDE 锁屏
sudo sed -i '1i auth sufficient pam_howdy.so' /etc/pam.d/kde
# ② SDDM 登录界面
sudo sed -i '2a auth sufficient pam_howdy.so' /etc/pam.d/sddm
# ③ sudo命令
sudo sed -i '1i auth sufficient pam_howdy.so' /etc/pam.d/sudo

KDE Plasma 6 走的是 /etc/pam.d/kde。kscreensaver 只是历史遗留文件名

最终大功告成可以开始享用了

0 条评论