python - 在 Python 中进行人脸识别的 Face Anti-Spoofing 方法
问题描述
我正在做一个人脸识别项目,我可以先注册自己,然后启动一个识别脚本,该脚本将启动我的网络摄像头,它会识别我自己。我正在关注这篇文章,它的工作非常好。
我注意到的是,如果我将我的照片展示给相机而不是我自己在相机前,它仍然会检测并识别我的脸。它不涉及反欺骗。我想在代码中包含反欺骗方法,以便它可以检测到检测/识别的面部是真的假的天气。为此,我想到了以下方法:
1. 眨眼检测:最初我想我会实现一个眨眼检测算法,但它也有它的缺点。如果一个真人脸的人有一段时间没有眨眼怎么办,在这种情况下,我们的代码会将这张脸标记为假脸。此外,在距相机 1-1.5 米的距离也没有检测到眼睛。
2.使用温度传感器:我还连接了欧姆龙热传感器,这样我就可以得到脸部的温度。在正常人脸中,温度总是高于阈值。如果照片中有人脸,它将始终低于该阈值。我实现了这一点,它工作正常。但后来意识到如果有人在手机中显示照片,在这种情况下,由于手机屏幕温度高,它总是超过阈值,因此它被标记为真实照片。
上面提到的方法对我不起作用。我正在寻找一个可以在所有场景中工作的简单解决方案。我在树莓派上做这个项目,所以寻找一个与树莓派兼容的解决方案。请帮忙。谢谢
解决方案
抱歉有任何错误,因为我不是来自树莓派的背景,但作为一个体面的人,我认为你应该尝试分辨率检查(如果可能的话),因为手机屏幕的分辨率总是低于真实面孔。然后您可以使用它与眨眼方法来抓住手机,因为照片不会眨眼。人类平均每分钟眨眼 12 次,因此每 5 秒眨眼 1 次。这将帮助您抓住打印的照片。希望这会有所帮助。
推荐阅读
- php - call_user_func_array 和使用参数解包/三个点(...$array)的调用有什么区别?
- jquery - jQuery ui 滑块 - div 外的 ui 滑块句柄
- c - 总是在 mmap 中为常规文件添加 MAP_NORESERVE 标志?
- excel - Sumproduct 减去不同月份列中最早月份的总金额
- java - 带有客户端证书返回访问的 https 请求在 android 中被拒绝,但它在 post man 中运行良好,改造和 okhttp3 返回相同的错误
- java - 从另一个子 JFrame 向 JFrame 发送数据而不打开新的 JFrame
- python - 即使在部署之后,heroku 应用程序也没有运行
- svg - 如何在 jasper 报告中使用透明 SVG 并导出为 pdf
- php - NumberFormatter::PERCENT 带小数
- linux - 查找一个目录中缺少的文件在一秒钟内 - 需要忽略文件扩展名