项目地址:
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实时人脸检测的代码里就可以了

  • https://github.com/jiangdongguo/OpenCV4Android
  • http://blog.csdn.net/andrexpert/article/details/78992490

更多相关文章

  1. Android感应检测Sensor
  2. 判断一个activity初始化是否完毕的方法
  3. android中检测网络是否断开
  4. LeakCanary源码解析之检测篇
  5. Android(安卓)调用摄像头拍照 以及 从相册中选择照片
  6. Failed to fetch url https //dl.google.com/android/repository
  7. Java入侵检测(三)
  8. Android(安卓)调用系统相机拍照并储存在本地
  9. 实例14---不准+弱智的生物钟

随机推荐

  1. MySQL如何使用union all获得并集排序
  2. MySQL select、insert、update批量操作语
  3. mysql数据库mysql: [ERROR] unknown opti
  4. Android(安卓)Auto-IP support
  5. Android解析json数据
  6. Android创建文件夹及文件并写入数据
  7. Android之判断当前网络状态
  8. Android获取apk的版本及包名等信息
  9. android折叠展开自定义列表项测试
  10. Android(安卓)架构