From 5935fffd0ac283c5e73e80b0adb7ba1e08265bbb Mon Sep 17 00:00:00 2001 From: Shuming Liu Date: Wed, 6 May 2026 14:22:33 +0800 Subject: [PATCH] first commit --- README.md | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..cbc26da --- /dev/null +++ b/README.md @@ -0,0 +1,67 @@ +# 学生人脸识别 Android App + +这是一个 Android/Kotlin 项目,用于批量导入学生头像,建立本地人脸特征库,并通过手机摄像头实时识别已入库学生。 + +## 技术方案 + +- CameraX:相机预览与实时帧分析 +- ML Kit Face Detection:检测图片或摄像头画面中的人脸位置,模型随 App 打包 +- TensorFlow Lite:使用 FaceNet/MobileFaceNet 模型生成人脸 embedding +- 本地 JSON 存储:在手机本地保存学生资料与人脸特征 +- 手机内置上传服务:电脑浏览器上传头像到手机本地入库 + +新增学生不需要重新训练模型,只需要对头像生成一次 embedding 并保存。识别时把摄像头中的人脸 embedding 与本地库做距离匹配。 + +## 电脑批量导入 + +运行 App 后,点击手机界面底部的: + +```text +上传地址 +``` + +手机会显示类似: + +```text +http://192.168.1.23:8080 +``` + +让电脑和手机连接同一个 Wi-Fi,然后在电脑浏览器打开这个地址。网页里可以一次选择多张学生头像,点击上传后,手机会本地检测人脸、生成 embedding 并写入本地数据库。 + +网页同时支持两种批量导入方式: + +- 选择一个文件夹,自动上传文件夹里的所有图片 +- 上传一个 `.zip` 压缩包,手机端自动解压后入库 + +文件夹选择在 Chrome / Edge 这类支持目录选择的浏览器里效果最好。 + +## 头像命名规则 + +建议使用: + +```text +学号_姓名.jpg +20240001_张三.jpg +``` + +如果文件名不符合规则,应用会把文件名同时作为学号和姓名保存。 + +## 模型文件 + +请放入 FaceNet 兼容的 TFLite 模型: + +```text +app/src/main/assets/facenet.tflite +``` + +推荐使用输入为 `[1, 160, 160, 3]`、输出为 128/192/256/512 维 float embedding 的 MobileFaceNet 或 FaceNet TFLite 模型。 + +## 构建 + +安装 JDK 17 和 Android Studio 后,用 Android Studio 打开项目运行,或在项目根目录执行: + +```bash +./gradlew assembleDebug +``` + +当前环境没有 Java Runtime,无法在本机完成编译验证。