# faceapplication **Repository Path**: hinay/faceapplication ## Basic Information - **Project Name**: faceapplication - **Description**: 完全离线运行的 Android 人脸识别应用,支持人脸注册和实时识别。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-07 - **Last Updated**: 2026-08-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: 安卓开发, 安卓, 人脸识别 ## README # 离线人脸识别 APP 完全离线运行的 Android 人脸识别应用,支持人脸注册和实时识别。 ## 功能 - **人脸注册** — 摄像头拍照,提取人脸特征,输入姓名保存到本地数据库 - **实时识别** — 摄像头实时检测并识别已注册的人脸,显示匹配结果 - **完全离线** — 所有 ML 模型本地运行,无需网络,隐私安全 ## 两种识别模式 APP 支持两种人脸特征提取方式,**开箱即用**: | 模式 | 精度 | 是否需要模型文件 | 说明 | |------|------|-----------------|------| | **几何特征模式**(默认) | 中等 | ❌ 不需要 | 使用 ML Kit 人脸关键点计算几何特征,**直接可用** | | **深度学习模式**(推荐) | 高 | ✅ 需要 `mobilefacenet.tflite` | 使用 MobileFaceNet 提取 128 维深度特征向量 | > 💡 不下载模型也能运行!几何特征模式使用人脸关键点之间的距离和角度作为特征。 ## 技术栈 | 组件 | 技术 | |------|------| | 相机 | CameraX | | 人脸检测 | ML Kit Face Detection (bundled, 离线) | | 人脸特征 | MobileFaceNet (TFLite) 或 ML Kit 几何特征 | | 数据库 | Room (SQLite) | | 语言 | Kotlin + ViewBinding | ## 快速开始 ### 方式一:直接运行(几何特征模式) ```bash # 直接用 Android Studio 打开项目,编译运行即可 ./gradlew installDebug ``` ### 方式二:启用深度学习模式(更高精度) ```bash # 下载模型文件 chmod +x setup_model.sh ./setup_model.sh # 编译运行 ./gradlew installDebug ``` **手动下载模型:** 1. 从 [sirius-ai/MobileFaceNet_TFLite](https://github.com/sirius-ai/MobileFaceNet_TFLite) 下载 `mobilefacenet.tflite` 2. 放入 `app/src/main/assets/` 目录 3. 重新编译 ## 匹配阈值设置 在 `FaceRecognitionHelper.kt` 中调整: ```kotlin // 几何特征模式阈值(默认 0.5) var MATCH_THRESHOLD_GEOMETRIC = 0.5f // TFLite 模式阈值(默认 1.5) var MATCH_THRESHOLD_TFLITE = 1.5f ``` - 阈值越小 → 匹配更严格(漏识别率高) - 阈值越大 → 匹配更宽松(误识别率高) ## 项目结构 ``` app/src/main/java/com/hinay/faceapplication/ ├── MainActivity.kt # 主界面 — 注册/识别入口 + 人脸列表 ├── RegisterActivity.kt # 人脸注册 — 拍照 + 输入姓名 + 存储 ├── RecognizeActivity.kt # 实时识别 — 摄像头检测 + 匹配 ├── FaceOverlayView.kt # 自定义 View — 绘制人脸框和标签 ├── FaceAdapter.kt # RecyclerView 适配器 ├── db/ │ ├── FaceEntity.kt # Room 实体 │ ├── FaceDao.kt # 数据访问 │ └── FaceDatabase.kt # 数据库实例 ├── ml/ │ ├── FaceDetectorHelper.kt # ML Kit 人脸检测封装 │ └── FaceRecognitionHelper.kt # 双模式特征提取 └── util/ └── ImageUtils.kt # ImageProxy → Bitmap 转换 ``` --- ## 本项目风险提示(基于 Apache License 2.0) 本软件按 **Apache License, Version 2.0** 授权。您对本软件的使用、复制、修改或分发均受本许可证条款的约束。 **在法律层面,本软件按“现状”提供,不附带任何明示或默示的担保,包括但不限于适销性、特定用途适用性和非侵权性担保。因使用本软件产生的任何直接、间接、附带、特殊或惩罚性损失,作者及贡献者概不负责(具体免责范围详见本许可证第 7、8 条)。** 以下内容为针对本离线人脸识别 SDK 特性的额外技术及法律风险提示,不扩展或修改 Apache 2.0 许可证的任何法律条款。 --- ### 一、关于预训练模型来源的特别声明(重要) 本项目所包含或引用的**人脸识别/检测预训练模型权重文件(如 .tflite、.onnx、.pb 等)均收集自公共互联网资源**,非本作者团队原创训练或拥有。 鉴于此,请您务必知悉并自行承担以下风险: 1. **训练数据来源不明** 网络收集的模型其训练数据集可能包含未获授权的个人照片、受版权保护的影视截图或特定人群的集中采样。您使用本 SDK 处理实际人脸时,**模型的底层特征提取能力可能隐含了训练数据的偏见**,导致在特定肤色、年龄、性别或族裔群体上出现显著的精度偏差(识别率下降或误识率飙升)。 2. **知识产权及肖像权侵权风险** 若该模型所依赖的训练数据涉及第三方知识产权或自然人肖像权,相关法律合规责任**完全由模型使用方承担**。作者及贡献者不对任何第三方因该模型引发的版权、人格权或数据权利主张负责。 3. **商业使用合规审查义务** 在将本项目用于任何商业目的前,您**有义务且必须**独立完成以下工作: - 溯源模型原始发布方及其附带的使用许可协议(如可能附带非商业限制、禁止再分发等条款); - 评估该协议与 Apache 2.0 是否兼容(如不兼容,您需自行替换为合规模型); - 必要时聘请法律专业人士对模型来源的合规性出具意见。 --- ### 二、离线人脸识别的固有技术风险 1. **安全对抗性与活体检测** 本 SDK 以离线推理为主,**不保证**对照片翻拍、屏幕重放、3D打印面具、对抗补丁(Adversarial Patch)或 Deepfake 等注入式攻击具备有效防御能力。高安全等级场景(如支付、门禁)下,您必须自行叠加多模态活体检测或硬件安全模块(如 TEE/SE)。 2. **安卓碎片化兼容性** 安卓设备芯片(MTK/高通/展锐)、系统版本(本项目仅支持安卓11.0以上)及 Camera HAL 实现差异巨大,作者不承诺全机型稳定运行。生产部署前,请务必在目标机型上完成压力测试、功耗测试及长时间运行稳定性测试。 --- ### 三、生物特征数据合规红线 人脸特征向量、面部图像属于**敏感个人信息**(适用《个人信息保护法》《GDPR》《PIPL》等)。本 SDK **离线运行**仅降低了传输泄露风险,但绝不等于合规豁免。您必须自行完成: - 获取数据主体独立、明确的明示同意; - 本地数据存储的高强度加密(建议使用 Android Keystore 或生物识别强认证绑定); - 提供用户账号注销时的生物特征数据彻底删除机制。 --- ### 四、生产环境准入 尽管 Apache 2.0 允许自由使用,但考虑到**模型不可溯源**和**推理结果不可解释性**,我们**强烈不建议**在未经以下验证前投入生产: - 使用您自身业务场景的真实数据集完成误识率(FAR)和拒识率(FRR)达标测试; - 通过第三方安全渗透测试; - 设定人工审核或业务熔断兜底策略。 ### 五、责任归属 您对本项目的下载、编译、引用、修改或任何形式的使用,即视为**完全理解并自愿承担**上述全部风险。作者、贡献者及项目所属组织**不承担**因模型偏见、数据泄露、识别错误、系统崩溃或合规缺失引发的任何直接、间接、附带或惩罚性损失,包括但不限于业务中断、商誉受损、行政处罚及法律诉讼费用。 **若您无法接受上述任一条款,请立即停止使用并删除所有相关文件。** **最终用户协议义务**:若您将本 SDK 集成至面向最终用户的 App 中,**您必须**在您的用户协议或隐私政策中明确告知用户“人脸识别功能依赖开源模型,其精度存在局限性”,并自行承担因识别错误引发的全部用户纠纷与赔偿。