FaceFound Android - 离线人脸识别移动端应用
项目介绍
FaceFound Android 是基于 InsightFace (buffalo_l) 和 ONNX Runtime Mobile 的高性能离线人脸识别 Android 应用。所有推理在设备端完成,无需网络连接,保护用户隐私。
项目地址:https://github.com/Enco-shark/facefound_android
功能特性
- 人脸检测 — SCRFD (det_10g) 多尺度锚点检测,输出边界框 + 5 点关键点
- 人脸对齐 — 5 点最小二乘相似变换,对齐到 ArcFace 标准 112x112 模板
- 人脸识别 — ArcFace (w600k_r50) 提取 512 维嵌入向量,余弦相似度匹配
- 模板管理 — 支持
.npz格式模板导入,持久化存储,查看/重命名/删除 - 识别历史 — 自动保存识别时间、结果和耗时
- 结果保存 — 识别结果图片保存到系统相册
- 主题切换 — 深色/浅色主题
- 现代化 UI — Jetpack Compose + Material 3
- 离线运行 — 所有推理在设备端完成,无需网络
技术栈
| 库 | 版本 | 用途 |
|---|---|---|
| ONNX Runtime | 1.17.0 | 模型推理引擎(核心) |
| Jetpack Compose | BOM 2024.02.00 | UI 框架 |
| Material 3 | (BOM 管理) | 设计系统 |
| Navigation Compose | 2.7.7 | 页面导航 |
| Coil | 2.5.0 | 图片加载 |
| Kotlin Coroutines | 1.7.3 | 异步处理 |
| Lifecycle Runtime KTX | 2.7.0 | 生命周期管理 |
| Activity Compose | 1.8.2 | Compose 集成 |
开发环境
| 项目 | 版本 | 说明 |
|---|---|---|
| Android Studio | Giraffe (2023.1.1)+ | 推荐 Hedgehog 或更新 |
| JDK | 17 | 必须,不支持 JDK 8/11 |
| Gradle | 8.2 | 项目自带 wrapper |
| Android Gradle Plugin | 8.2.2 | 构建插件 |
| Kotlin | 1.9.20 | 编译器版本 |
| Android SDK | compileSdk 34 | 编译目标 |
| minSdk | 24 | 最低支持 Android 7.0 |
| targetSdk | 34 | 目标 Android 14 |
模型文件
| 文件 | 来源 | 大小 | 说明 |
|---|---|---|---|
det_10g.onnx |
InsightFace buffalo_l | ~170MB | SCRFD 人脸检测模型 |
w600k_r50.onnx |
InsightFace buffalo_l | ~65MB | ArcFace 人脸识别模型 |
模型文件需放置于 app/src/main/assets/ 目录。
构建教程
1. 安装开发环境
安装 JDK 17
1 | # Windows: 下载 Adoptium JDK 17,安装后设置 JAVA_HOME |
安装 Android Studio
- 下载 Android Studio
- 安装时勾选 Android SDK,确保 SDK Platform 34 已安装
- 配置 SDK Manager: 勾选 Android 14 (API 34) 和 NDK
配置环境变量
1 | ANDROID_HOME = C:\Users\<用户名>\AppData\Local\Android\Sdk |
2. 获取模型文件
1 | # Python 方式获取模型 |
将模型复制到项目:
1 | # Windows |
3. 导入与同步
打开 Android Studio → Open an Existing Project → 选择项目目录,等待 Gradle 同步完成。
4. 连接设备
- 手机开启 开发者选项 → USB 调试
- USB 连接电脑,授权调试
- Android Studio 顶部设备列表选择你的手机
5. 运行与构建
Android Studio 运行: 点击 ▶️ 或 Shift+F10
命令行构建:
1 | # Windows PowerShell |
构建输出: app/build/outputs/apk/debug/app-debug.apk
Release 构建:
1 | .\gradlew.bat assembleRelease |
输出: app/build/outputs/apk/release/app-release-unsigned.apk
项目结构
1 | android_project/ |
核心推理流程
1 | 摄像头/相册图片 |
性能优化
- ONNX Runtime Mobile — 专为移动端优化的推理引擎
- 多线程处理 — 利用 Kotlin Coroutines 实现异步推理
- 模型量化 — 支持 INT8 量化,减小模型体积
- 内存管理 — 及时释放推理结果,避免 OOM
总结
FaceFound Android 是一款完全离线的人脸识别应用,适合:
- 门禁系统原型开发
- 照片智能分类
- 学习移动端 AI 推理技术
- 保护隐私的本地识别场景
欢迎 Star 和 PR!🌟
- 标题: FaceFound Android - 离线人脸识别移动端应用
- 作者: Enco
- 创建于 : 2026-05-10 11:00:00
- 更新于 : 2026-05-22 13:02:12
- 链接: https://enco-shark.github.io/2026/05/10/FaceFound Android离线人脸识别/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。