关于facenet优化的问题
来源:2-2 前向运算

weixin_宝慕林8180759
2021-02-11
我现在是大四学生,毕业设计想做微信小程序版的入场考试人脸识别系统,我想在这个项目基础上做一下优化:
1. 人脸检测 人脸识别 和 活体检测 的推理过程改为在移动端完成, 因为每次把图片发到服务端再做前向推理其实延迟比较大我想做到实时检测,而且对服务器负载也比较大。
2. 优化facenet,因为facenet是用的数据集不是针对亚洲人脸的,我想把两个老师上课提过的两个亚洲人脸数据集上训练。
两个优化方向上遇到的问题
1. tensorflow模型不知道怎么转化部署到微信小程序,我试过用tflite,但好像只能部署到APP上,微信小程序就不行了。
2.没有gpu,也买不起,想用kaggle或者Google colab白嫖gpu资源,但是以上两个平台tensorflow都是2.x版本的,而facenet源码是1.x版本,不知道是否有tensorflow2.x的facenet实现
希望老师能够给一些解决方案,谢谢
2回答
-
weixin_宝慕林8180759
提问者
2021-03-03
我自己回答一下自己的问题。
对于第一点,微信小程序确实可以用tensorflow.js完成预测工作,但有几个条件需要满足:
模型足够轻量,最好不要超过10mb
模型预测速度足够快
不涉及安全问题,如果是想做考试入场人脸识别,人脸识别和活体检测模型不要放到tfjs中
所以,综上所述,人脸检测是可以放到前端的。我特意尝试了一下,并写了一个教程。
对于app离线人脸检测,我觉得可以参考这个教程。
对于优化facenet,其实要从两方面考虑:
1. 数据不足问题,这个问题不好解决,因为公开的亚洲人脸图片库本来就不多
2. 寻找tf2.0的facenet源码,我已经找到了inception-resnet-v1框架tf2.0实现源码
3. 训练方面,triplet loss因为要用难例挖掘技术,相当于预处理时间加长了,所以训练速度变慢,可以考虑使用centerloss。
对于优化facenet,仍存在很多限制,但我觉得主要还是学习facenet的设计思想,至于数据不足的问题,也不是我能解决的。
00 -
会写代码的好厨师
2021-03-03
facenet 没有tf2的版本。 Github上可能有,不过我没有跑过。
可以使用triplet loss相关的网络去训练,这个github上 tf2的代码是有的。
tflit是用在app里面的,小程序的话可以研究下tenflow.js,不一定能用。这也是为什么我会放在云端的原因,否则最保险的方法是开发APP。
实时检测需要压缩模型,目前这个模型跑在终端,也需要几百ms,也没办法做到实时。压缩模型工作量不小。不建议做这个事情。
facenet优化亚洲人脸,这个是ok的,可以考虑做这个。模型可以用tripletloss的网络,github上应该有很多源码可以用。
00
相似问题