技术

摇头点头检测源码分析

2020-07-01  本文已影响0人  AI软件技术分享

活体识别要求

最近我们公司的项目需要做一个活体识别的功能,要求如下:

1.离线识别,本地识别活体,这样速度快1s内完成。需要识别出人脸,并判断是否在摇头 ,点头,张嘴,眨眼等动作,进而判断是否活体,准确率要求90%即可,可以去破解相信没有任何一个项目能完全规避的,哪怕是专业公司的。

2.免费,网上收费的项目不采用。

3.引入的新库足够小,我们项目的包本身只有30M,如果引入要上百M肯定过不了技术这关,实在不行,可以采用插件下载方式也行,这是备用方案吧。

4.开源,必须有代码,我们项目交付需要全部的代码,而且需要在android平台下可以编译arm /arm v7/ arm64/x 86 的各种架构,如果没有源码,项目也无法验收。

现在谷歌要FQ,我们只能用不专业的百度搜索了。

资源搜索

专业公司相关SDK

讯飞:SDK在集成开发测试阶段服务量限制为最高500次/每日,完成提额申请或商务合作后可以解除,也就是说,这玩意也是收费的。不符合免费和开源的要求

虹软:动作什么的并不能识别。同时因为该库未开源,所以ArcFace v2.0这个SDK也未去验证是否符合 。而且是1年必须更新一次授权库,首次使用必须联网验证,所以不符合我们离线的要求

百度:该SDK满足我们的,离线,免费的要求,但是它需要申请企业认证,需要上传营业执照等申请一个appkey,也就是说,他让你用你就能用,他给你关你就得黄。所有,这个也放弃了。其实这个SDK是目前找到的公司层面的最符合我们要求的一个SDK,建议小公司直接采用该sdk即可,有大厂维护,短期应该不太会出什么问题, 但是如果他们停掉这服务,你的项目虽然完结(项目钱都收到罗),后期黄了,涉及到合同纠纷,因小失大

系统原生:

谷歌在部分原生系统中提供人脸检测API,但是在我国,手机ROM定制程度太高,可能兼容性无法达到要求。api被裁剪不是你想调用你就能调用的。再者,也只能对静态图片检测人脸,并告眼睛嘴巴的位置,无法识别。所以无法满足要求

网上的开源项目

网上相关资料: Dlib,OpenCV, 经过长达一个月的技术分析 (源码编译,Demo代码编写),发现他们都是轮子,我们要的是汽车和汽车的涉及蓝图 (好比技术和技术源码),而他们只是基础建设中的一个轮子,如果要造车基于目前这个轮子应该还有十万八千里。虽然时间是浪费了,也总结出一些经验,对这一块有自己的一些了解,也不往此行,也为后续研发新的算法提供一些参考。

新的实现:

原理:我们在学习和研发中,动作活体必须要从技术上满足下面几个硬行条件:(对于想自行研发,或者参考教程的非常重要,请认真阅读和思考哦)

1:人脸识别。 这个不用多说,这个是必须的 ,而且性能必须快,如果做不到帧率50fps,基本得黄 ,为什么?因为后面还有别的算法要耗费时间,如果你卡住了,用户的人脸已经转过去了,你还没来得及采集到更多有效特征数据,如何来判断人脸的动作?举个不恰当的例子:鸟已经飞走了,你还在上子弹。

2:人脸特征点。人脸特征点如果达到68基本可满足人脸面部动作识别,如果达到256可以更精细的美颜算法效果,如果达到1024可以识别表情:面部喜怒哀乐等 ,性能要求30fps。

3:人脸追踪。就是在识别到人脸后,通过图像算法,在既定的画面中追踪到这个人脸。可以结合人脸识别,可优化人脸识别的性能。所以至少50fps的要求。

4: 数据处理。现在实现到这一步了,这一步拿到特征数据经过处理可以得到想要的结果:眨眼摇头点头张嘴。

源码Demo下载体验地址:https://pan.baidu.com/s/1i5oXoJ7

总结: 最终实现的性能要求,30fps。是比较理想的,实在不行话10fps也是能满足基本的应用。毕竟性能这块怎么优化都不为过的。

接下来几篇将对源码进行解析,请关注我。

上一篇 下一篇

猜你喜欢

热点阅读