我正在开发一个人脸识别项目,我可以先注册自己,然后启动一个识别脚本,该脚本将启动我的网络摄像头,它会识别我自己。我正在关注这篇文章,它工作得很好。
我注意到,如果我向相机展示我的照片,而不是在相机前展示我自己,它仍然会检测并识别我的脸。其中不涉及反欺骗。我想在代码中包含反欺骗方法,以便它可以检测检测到/识别的面部是真的还是假的。为此,我想到了以下方法:
1。眨眼检测: 最初我以为我会实现一个眨眼检测算法,但它也有它的缺点。如果一个真人脸有一段时间没有眨眼怎么办,在这种情况下,我们的代码会将该脸标记为假脸。此外,在距离相机 1-1.5 米的地方也没有检测到眼睛。
2。使用温度传感器:我还接口了欧姆龙热传感器,这样我就可以得到脸部的温度。在正常人脸上,温度总是高于阈值。如果照片中出现人脸,它将始终低于该阈值。我实现了这个并且运行良好。但后来意识到,如果有人在手机中显示照片,那么由于手机屏幕温度很高,它总是超过阈值,因此它被标记为真实照片。
上述方法对我不起作用。我正在寻找一个可以适用于所有场景的简单解决方案。我正在树莓派上做这个项目,所以寻找一个与树莓派兼容的解决方案。
对于任何错误,我们深表歉意,因为我不是来自树莓派的背景,但作为一个帮助人们的正派人,我认为你应该尝试分辨率检查(如果可能的话),因为手机屏幕的分辨率总是低于真实的脸部。然后您可以使用它与眨眼方法来抓住手机,因为照片不会眨眼。人类平均每分钟眨眼 12 次,即每 5 秒眨眼 1 次。这将帮助您抓住打印的照片。希望这会有所帮助。
您应该在人脸检测器顶部使用物体检测器。它绝对可以检测到手机。
您可以重新训练它来检测是否有照片被举起。
首先运行对象检测器,保存手机的边界框坐标,然后查看面部边界框坐标是否位于手机内部。
我现在正在研究人脸识别系统作为我的论文项目。您尝试过这篇文章吗? Adrian 说它可以在 Raspberry Pi 中使用,但这意味着我们必须安装 TensorFlow 和 Keras 才能做到这一点。我认为这会有所帮助。