【思考】人脸认证真的准确吗?通过身份证的人脸对比有哪些问题?


本人已经开发了一套人脸识别人证对比的接口,应用场景主要在招聘时作为一个身份认证的功能,
通过后台的观察,我思考了几个问题。

1、深度学习比较受光线影响

我们现在的人脸识别模型都已经由传统的模式识别方式发展为深度学习神经网络方式。
然而深度学习依靠数据,泛化性能有时候欠缺,往往受摄像头的取图效果以及现场的光线好坏影响。


2、人脸识别能够识别出十年前的自己吗?

我们在做身份证人证对比的时候,是以身份证上获取的人脸图为参照,以现场摄像头获取的人脸图进行人脸对比。
那么它效果如何呢,通过观察,有些人十年前的自己和现在的自己变化不大,主要是20-30岁这个阶段的男性为主。
但是20-30岁的女性则不然,通常女性同胞喜欢化妆,而且刘海发型变了也会影响识别情况。

3、身份证的图片究竟是个什么效果?

我想身份证的拍摄在公安局应该是有一套标准的,但是每个省每个县区每个拍摄点都会存在一些区别。这种区别可以来自于拍摄器材、拍摄人员操作规范引起。我通过观察,按照基本要求是要保证眉毛和耳朵露出来进行拍摄,但是就是能发现很多图片弄个齐刘海遮住眉毛,而且有的身份证上的图片出现了比较明显的过亮,以至于像眉毛这类属性变得比较淡,
这给人脸认证带来了比较大的挑战。

还有一个就是清晰程度,这个清晰程度102X126的像素,这种像素可能大家不是很敏感,我们说内存把,图片大小仅不到5kb.5kb是什么概念的图片,我们参考一下我们现在手机拍摄的图片,原图内存现在基本上达到几M,也就是1000倍的关系,像素一般是2000x2000以上。也就是同样的一个人的眼睛,清晰度不高的10个像素来描绘,而清晰度高一些的可以用100个像素来描绘。不清晰的照片做人证对比,也会使得现在有些人对比很难通过。


4、双胞胎能够攻击人脸识别吗?

我认为绝大多数产品都很难避免双胞胎的攻击,因为深度学习训练中不会存在很多双胞胎图片的数据来训练。这就给模型很大的挑战。
其次,双胞胎长得太像了,即使识别出来,他们的相似值也会比较高,而我们的识别人证会设置一个阈值,这个阈值设置会从实用性的角度考虑,照顾到绝大多数的人员,所以这个门槛不会是单纯的为了卡双胞胎,如果设置门槛太高,很多人稍微画了一点淡妆就不容易认证成功了。

 

人脸识别这个技术一直在发展,但是还有很多问题或者说很多场景还只能起到辅助作用。

有不懂,或者想了解的可以与我交流,微信ai_hellohello

 

当然可以!以下是基于百度AI智能云SDK的Android人脸对比的代码示例: 首先,在你的build.gradle文件中添加以下依赖项: ``` implementation 'com.baidu.aip:api-face:4.0.0' ``` 然后,在你的Android Activity或Fragment中添加以下代码: ```java // 初始化AipFace AipFace client = new AipFace(APP_ID, API_KEY, SECRET_KEY); // 设置网络连接参数 client.setConnectionTimeoutInMillis(2000); client.setSocketTimeoutInMillis(60000); // 设置日志输出级别 client.setLogLevel(LogLevel.INFO); // 定义两张人脸图片的路径 String path1 = "/sdcard/face1.jpg"; String path2 = "/sdcard/face2.jpg"; // 定义两张人脸图片的BASE64编码字符串 String imgStr1 = null; String imgStr2 = null; try { byte[] bytes1 = FileUtil.readFileByBytes(path1); imgStr1 = Base64Util.encode(bytes1); byte[] bytes2 = FileUtil.readFileByBytes(path2); imgStr2 = Base64Util.encode(bytes2); } catch (IOException e) { e.printStackTrace(); } // 设置请求参数 HashMap<String, String> options = new HashMap<String, String>(); options.put("ext_fields", "faceliveness"); options.put("image_liveness", "faceliveness"); // 发起人脸对比请求 JSONObject res = client.match(new String[]{imgStr1, imgStr2}, options); // 解析返回结果 if (res.getInt("error_code") == 0) { JSONObject result = res.getJSONObject("result"); double score = result.getDouble("score"); System.out.println("人脸相似度:" + score); } else { String errorMsg = res.getString("error_msg"); System.out.println("人脸对比失败:" + errorMsg); } ``` 注意,上述代码中的APP_ID、API_KEY和SECRET_KEY需要替换为你自己的百度AI智能云应用信息。另外,你需要自行准备两张人脸图片,将它们的路径或BASE64编码字符串传递给match方法,即可发起人脸对比请求。最后,解析返回的JSON结果,获取人脸相似度分数即可。 希望这个示例能够对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值