我有一个安卓手机通过人脸识别提高安全性的奇思妙想

2020-03-30 19:33:47 +08:00
 Windelight

需求来自于同学手机有一次被人翻,表示很反感

所以我基于魅族的系统级防盗功能想到了一个 idea

基于现在手机强悍的处理能力尤其是华为的 NPU 或者高通的 AIE,结合快速充电和优秀的功耗控制使这个 idea 成为可能。

主要是基于一个硬件的前置摄像头,加上开放的 Android 系统,结合软件进行。

软件体验:

一个应用程序在第一次安装完成之后用户主动提供自己的人脸进行采集,只需要 2D 图片即可。(此处的安全等级不用很高,精确度也不必)。手动给这个应用开一路绿灯,应用默默在后台运行。应用程序在一个设定的时间间隔后开启前置摄像头拍照片,拍摄后与原有数据对比。如果相似度低于一个阈值,则由软件发起锁屏操作。

形成过程:

这个东西实现可以基于很多 OpenCV 开源的人脸识别库,或者国内 ArcSoft 的免费离线 SDK,配合 code,应该可以实现一个简易的版本。

其它可能的发展:

可以自定义粒度(频次),甚至可以设定为 2 秒一次只要不怕耗电

检测照片的亮度,给予一定的动态宽容度,以改善光线不好的条件下但检测出是个人脸时的识别能力

对于照片的颜色进行判断,光线太暗,屏幕补光(这条对于 OLED 屏幕无效)(不适合晚上)

可以定义一个放行时间,比如借给可信的人使用时。可以通过安卓通知栏的快捷按钮进行快速设置,比如 5 分钟内,15 分钟内一律放行

可以加第二个人脸,比如女朋友用手机不受限制。

给予一定的宽容次数,比如说检测到是人但两次的无法正确识别再关闭。

对于特定软件加规则,比如检测到一个游戏软件在前台运行,自动停止检测。(因为拍出一片黑) 如果检测到通讯、金融的 app 在前台则更改检测频率变快。(更安全)

我觉得可能存在的问题:

对于 Vivo NEX 、小米 Redmi K30Pro 这种设备极其不友好。(会影响升降机的寿命,同时体验极差)

在华为 MateX,小米 Mix Alpha 等设备上因物理限制完全无法使用。(得翻过来那种)

在部分旧设备上完全是增加体验或性能负担(没有指纹解锁、性能低于 SDM660/MT6753T 的设备)

我觉得可能存在冲突的功能:

安卓自带定时锁屏,所以这个软件在没有任何外人时纯属浪费电

落在别人手真的不想锁屏的话点点屏幕就得了?

解决方法

不理会安卓的操作机制,按照软件自己的计时器运作

其它

很安全,不会泄露信息,因为全程离线,本地化操作

我的胡思乱想,如果我开坑填坑的话,到退休前怎么着也能做出来了吧????

完全奇思妙想,如有雷同纯属巧合。

(代码量爆炸(估算))

2855 次点击
所在节点    奇思妙想
10 条回复
mzlgx
2020-03-31 06:45:45 +08:00
可行
Windelight
2020-03-31 09:59:05 +08:00
突然感觉为什么安卓系统级人脸识别接口为什么不开放呢,还要靠第三方 SDK 诶
wobuhuicode
2020-03-31 12:03:22 +08:00
有锁屏为啥还能给人翻,手机厂商做了一把锁,你都挡不住贼,要在每个柜子也加锁……
Windelight
2020-04-01 00:41:32 +08:00
@wobuhuicode 比如必要给别人用时,而有人故意打开了相册那种。
或者说被夺走的情形、借给别人超时未还什么的
hugedeffing
2020-04-01 10:05:54 +08:00
感觉技术上有些问题,当然最主要的问题是隐私问题。

1.隐私问题:必须要提出,每过一段时间,摄像头都会自动拍照。这个拍照无视用户,后台自动拍照。
正常来说,绝大部分人不会愿意接受这一个

2.技术问题:拍照之后,如果相似度低于一个阈值,则由软件发起锁屏操作。依赖离线拍照对比的结果,往往是自己的手机被锁死。

3.尝试下解决方案:当前考虑的是“同学手机有一次被人翻”,可以理解为两种,一种锁屏时被翻且必须要提供解锁码。可以设定双桌面系统,两种解锁码出现的桌面 APP 不同(可以参考多开 APP 方式,技术上可行,当然需和厂商定制)。如果是未锁屏被翻,建议还是用加锁吧,对重要的隐私的 APP 加个九宫锁吧,目前很多手机已经有这个功能了,例如小米啊华为啊……
Windelight
2020-04-01 12:01:05 +08:00
@hugedeffing 很棒的反馈。
所以说我设想的是个人使用,并且是全程离线处理,不保存。另外本身就要无视任何人,因为任何不是自己、自己授权的人,不会被允许使用。
同时不计划也不应该保存识别失败的人脸,因为就像手机的人脸解锁一样,全程无感知,同时做到无痕。
第二点是根据我的手机使用体验出发的,我用过有 Windows Hello 配合英特尔实感摄像头,安卓系统配合 2D 摄像头、3D 红外相机这种,我体验过别人的小众品牌的锤子坚果 Pro1,宣传是 Face++的 2D 方案,再到我自己的小米 6 这种还是 2D,记忆很深刻是 OTA 推送的,那肯定是软件实现,后来华为 Nova3 有了 3D,是华为自研的,也挺爽。现在我用的是坚果 3,又变回了 2D,依旧是很爽。
通过我的体验来说 3D 感觉上更快一些,但是电脑上因为 SR300 过于辣鸡,不算很快,甚至有不准的时候。所以说我觉得无线
aloxaf
2020-04-02 12:51:53 +08:00
这个用 Tasker 可以很快做出一个原型出来
唯一的问题就是好像没有现成的人脸识别插件……用百度云的 API 凑合了一下:

每隔两分钟调用前置相机拍照,借助百度云人脸对比 API 与 /sdcard/DCIM/Tasker/master.jpg 进行对比,相似度小于 90% 则锁屏(通知栏设定放行时间、根据前台 app 设定不同规则、多人脸理论上也是没问题的,但我懒得做了)
https://fars.ee/uZr8

最难的点还是如何在离线状态下进行人脸识别……不知道有没有现成的开源项目能让我交叉编译一个扔手机上去(

来用 Tasker 吧!
Windelight
2020-04-02 13:48:50 +08:00
@aloxaf 感谢巨佬
我的体验中从离线状态人脸识别,就是安卓系统 2D 解锁的部分离线识别率很高,但是发现没有直接调用的能力。
正在尝试........
Cirilla
2020-04-07 17:21:02 +08:00
回复不了,mmp
Cirilla
2020-04-07 17:21:13 +08:00
@Cirilla

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/657692

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX