前言
从windows切换到Linux会有很多的不适应,自然会想找一些类似于windows体验的Linux替代品,比如windows上的windows hello 就很好用,可以使用指纹或者摄像头实现人脸识别在很多场景下可以避免输入密码。
经过一番搜索发现howdy是目前Linux上最流行的人脸识别认证的软件,于是就第一时间安装,虽然是跟着arch linux wiki走,但是其中还是遇到了很多坑,在此记录下来方便大家参考。
安装
首先使用yay安装aur的包,yay是一个很好用的aur包管理工具,支持模糊搜索,建议arch系的都安装。
yay -S howdy-beta-git
在这里建议安装howdy-beta-git包,相对于howdy包来说会更新一些,howdy有些问题可以已经在这个包里面得到龙解决。
PAM配置
首先我们安装完成之后需要配置PAM,也就是让Linux的的认证通过howdy来进行,每个文件代表其中一个地方的认证。这一步非常关键,但是arch wiki上有点含糊不清,导致总是有部分地方无法使用howdy。
最后我总结的在KDE+SDDM下修改如下四个文件可以保证在登录、锁屏、终端、KDE中调用howdy来认证
/etc/pam.d/sddm
/etc/pam.d/kde
/etc/pam.d/sudo
/etc/pam.d/system-auth
在以上四个文件中的#%PAM-1.0的下一行,也就是下面的各配置语句的最顶部,加入下面两行配置
auth sufficient pam_unix.so try_first_pass likeauth nullok # 同时启用人脸识别和密码登录
auth sufficient /lib/security/pam_howdy.so # 3.0.0+版本howdy beta配置
注意如果你安装的howdy版本低于3.0,第二行配置需要改成auth sufficient pam_python.so /lib/security/howdy/pam.py
howdy配置
首先我们需要确定howdy需要用到的摄像头名称,一般能在windows中开启windows hello的摄像头都有红外摄像头和光学摄像头两种,一般建议如果有红外摄像头的优先用红外摄像头,以便于确保微光环境下的识别成功率。
arch linux wiki中给出的方法是使用v4l2-ctl --list-devices
命令来列出所有的摄像头,不过我个人觉得有更好的办法,就是使用VLC播放器。打开VLC——打开媒体——打开捕获设备,在设备选择里面选择视频设备,然后点击播放就可以方便的查看设备来确定哪个设备是可用的,还可以关闭室内光源拉上窗帘来查看哪个摄像头是红外摄像头,一般来说红外摄像头即便是在微光环境下也能清晰的拍摄视频。
根据上述方法确定之后将摄像头的名称记下来,使用sudo howdy config
命令来打开howdy的配置,将device_path = /dev/video0
改为你自己的设备名即可。
另外对于其他可能有必要修改的选项说明如下:
certainty = 3.5
这里的值范围为1到10,约小的值代表人脸识别的匹配度要求越严格,默认值一般足够,但是如果自己对于安全有特殊要求可以适当的进行调节use_cnn = false
是否使用cnn模型进行人脸识别,cnn模型的识别率更高但是对于显卡的要求也更高,规格较低的显卡可能会导致识别速度较慢dark_threshold = 60
红外摄像头在微光环境下需要依赖红外光发射模块提供光源,而红外光模块发射的频率是有限的,所以部分视频帧可能会出现全黑的情况。这个选项就是设置过滤这些黑暗帧的阈值,适当的跳高可能会对于微光环境下的识别成功率有益。
配置完毕之后我们可以使用sudo howdy -U 用户名 add
来添加人脸,输入名称之后就会自动添加人脸。可以在不同距离和光线环境下多添加几次,以便于提高识别的成功率。
最后我们使用sudo howdy test
来检验配置是否成功,配置正确的情况下会在人脸周边显示一个绿色的圆圈,如果始终显示的是红色的,那么建议再添加几次人脸或者更改certainty的配置。
最后
最后我们可以通过在终端使用sudo、重新登录、锁屏等地方检验是否成功生效,注意在密码提示输入界面需要按下回车才能调用howdy进行识别,可能是为了安全方面的考虑。
标签:manjora,人脸识别,windows,howdy,Linux,pam,摄像头 From: https://www.cnblogs.com/dingnosakura/p/18223572