Android|基于Opecv+MTCNN+FaceNet的人脸识别实现

项目地址:
https://github.com/Monologuethl/Android_Facenet_Recognition
参考代码:

  • https://github.com/vcvycy/Android_Facenet

  • https://github.com/jiangdongguo/OpenCV4Android
    在这里插入图片描述
    新增加功能:

  • 增加了 初始化(提取特征得到特征库) 增加了 录入照片功能 增加了 实时识别功能

  • 开发平台: rk3399开发板,Android 7.1.2, IDE: Android Studio 3.1.2

  • 由于模型没有做压缩速度偏慢,模型也是用到其他人训练好的,所以准确率感人。。

  • 人脸检测用到opencv 直接用的检测demo,得到脸部位置,送给facenet提取特征,于特征库比较(欧式距离),得到相似度。

  • 录入功能用到mtcnn捕捉人脸后,存入脸部照片,其实可以增加一个输入照片信息的框和得到照片提取照片存入特征库。

  • 后续工作 优化识别的速度,模型压缩,增加活体识别。

  • 导师是想让我用ncnn或者tengine去实现,但是不会弄就用了tensorflow lite。

Android_Facenet

  • Facenet for Android.

  • 编译环境:Android 3.1.2

  • 人脸检测:MTCNN类用法 (MTCNN.Java)

  • 类实例化 MTCNN mtcnn=new MTCNN(getAssets())
    只有1个API:public Vector detectFaces(Bitmap bitmap,int minFaceSize)
    参数bitmap:要处理的图片
    参数minFaceSize:最小的脸像素值,一般>=40。越大则检测速度越快,但会忽略掉较小的脸
    返回值:所有的脸的Box,包括left/right/top/bottom/landmark(一共5个点,嘴巴鼻子眼)
    人脸识别:FACENET类用法

  • FACENET facenet=new FACENET(getAssets())
    只有一个API:public FaceFeature recognizeImage(Bitmap bitmap)
    参数bitmap:要提取特征的人脸图片(一般先通过MTCNN检测人脸,然后crop出来)
    返回值:FaceFeature,人脸特征,我简单封装了一下;其实就是512维的特征向量(浮点数)

  • 人脸特征比较:即人脸特征向量的欧几里得距离。见FaceFeature.compare() 主要移植自:https://github.com/davidsandberg/facenet

后续的工作就是加到opencv实时人脸检测的代码里就可以了

在这里插入图片描述

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值