Python中人脸识别的人脸反欺骗方法

Python中人脸识别的人脸反欺骗方法,python,face-recognition,Python,Face Recognition,我正在做一个人脸识别项目,在这个项目中,我可以先注册自己,然后启动一个识别脚本,启动我的网络摄像头,它就会识别我自己。我遵循这一点,它的工作非常好 我所注意到的是,如果我把我的照片展示给相机,而不是我自己在相机前面,它仍然能检测并识别我的脸。它不涉及反欺骗。我想在代码中加入反欺骗方法,这样它就可以检测出检测到/识别出的人脸是真是假。为此,我想到了以下方法: 1。眨眼检测:起初我以为我会实现一个眨眼检测算法,但它也有缺点。如果一个真脸的人有一段时间没有眨眼,那么我们的代码会将这张脸标记为假的。此外

我正在做一个人脸识别项目,在这个项目中,我可以先注册自己,然后启动一个识别脚本,启动我的网络摄像头,它就会识别我自己。我遵循这一点,它的工作非常好

我所注意到的是,如果我把我的照片展示给相机,而不是我自己在相机前面,它仍然能检测并识别我的脸。它不涉及反欺骗。我想在代码中加入反欺骗方法,这样它就可以检测出检测到/识别出的人脸是真是假。为此,我想到了以下方法:

1。眨眼检测:起初我以为我会实现一个眨眼检测算法,但它也有缺点。如果一个真脸的人有一段时间没有眨眼,那么我们的代码会将这张脸标记为假的。此外,在距离摄像机1-1.5米的地方也没有发现眼睛

2。使用温度传感器:我还连接了欧姆龙热传感器,以便获得面部温度。在正常人的脸上,温度总是高于一个阈值。对于照片中的人脸,它将始终低于该阈值。我实现了这个,效果很好。但后来意识到,如果有人在手机中显示照片,在这种情况下,由于手机的高屏幕温度,它总是超过阈值,因此它被标记为真实照片


上述方法对我不起作用。我正在寻找一个简单的解决方案,可以在所有的情况下工作。我正在做这个关于raspberry pi的项目,所以寻找一个与raspberry pi兼容的解决方案。请帮忙。谢谢

对任何错误表示抱歉,因为我不是raspberry pi的背景,但作为一个帮助他人的正派人,我认为你应该尝试分辨率检查(如果可能的话),因为手机屏幕的分辨率总是低于真实的脸。然后你可以用眨眼的方法抓住手机,因为照片不会眨眼。人类平均每分钟眨眼12次,因此每5秒眨眼1次。这将帮助您抓住打印的照片。希望这会有所帮助。

您应该在人脸检测器的顶部使用一个物体检测器。它肯定能检测到手机
你也可以对它进行再训练,以检测照片是否被挂起


首先运行物体检测器,保存手机的边界框坐标,然后查看人脸边界框坐标是否位于手机内部。

我正在研究人脸识别系统,这是我的论文项目。你试过了吗?Adrian说它在Raspberry Pi中是可用的,但这意味着我们必须安装TensorFlow&Keras才能做到这一点。我认为这可能会有所帮助。

因为温度传感器也可用,并且不用于人脸识别,难道这个恶搞者就不能在它附近放一个打火机,让你的脸对着真实的相机吗?@Filip你是对的,这就是为什么我提到的方法对我不起作用的原因。也许你可以实现一个手势检测,这样你就可以用你的手做一个特定的形状,这也是需要的,我想我能做到。但这个应用程序就像n访问控制或考勤系统,用户将走到摄像机前面,并标记他们的考勤。但是谢谢你的建议,我会考虑的。没问题。我建议这样做,因为如果不知道还需要一个手势,或者不知道你的手到底在做什么,这很容易记住,也很难让人猜到。只要这是秘密,它就应该是好的。祝你的项目好运:)通过分辨率检查,你指的是手机中检测到的人脸大小与真实人脸的大小。?分辨率在这里有两种含义=1)你一定注意到手机屏幕看起来有点蓝和黑(像旧的电视黑点类型),比真实人脸更亮。分辨率也就是你说的。好的,你的意思是检查拍摄照片的光强度。如果高于正常阈值,则必须有手机屏幕。是的,它看起来比正常的脸有点蓝。我在网上查看了许多文章,但我不明白如何在opencv中做到这一点。你有我可以参考的链接吗?好主意。你有任何链接到一个模型,可以检测手机。我正在搜索itI。我对它做了一些研究,并意识到这种检测手机的方法也是不可能的。原因是,当一个恶搞者把手机放在摄像机前面识别人脸时,手机可以放在离摄像机非常近的位置,这样人脸就可以清晰可见,所以在这种情况下,手机在摄像机中就不会完全可见,因此很难检测到手机。