案例摘要
本项目面向 RK3588 Android 智能眼镜,在设备本地完成正脸、左侧脸和右侧脸检测,不依赖云端识别服务。SDK 接收 Camera2 实时视频帧或本地图片,输出人脸框、五点关键点、方向、偏航角、置信度和短时跟踪编号,并以 Core AAR、Face AAR、Camera2 Demo 和集成文档的形式交付。
本案例属于人脸检测与姿态方向判断,不属于人员身份识别。当前交付不包含姓名或工号识别、人脸库、1:1 验证、1:N 检索、活体检测、年龄、性别或情绪分析。
项目背景
目标设备为 arm64-v8a 架构的 RK3588 Android 智能眼镜。客户需要在相机预览中定位人员,为点击选人、局部放大和后续业务交互提供目标位置,同时要求算法在设备侧离线运行,并能够接入现有 Android App。
项目输入包括 Camera2 YUV_420_888 实时视频帧、NV21、RGBA_8888 和本地静态图片。工程上还需要处理相机帧率高于算法提交频率、图像缓冲区生命周期、旋转与镜像、YUV stride 以及模型坐标到预览画面的映射。
交付范围
| 交付项 | 内容 |
|---|---|
| Android SDK | Core AAR 与 Face AAR |
| 演示程序 | Camera2 实时人脸检测 Demo APK |
| 检测接口 | 同步检测与异步检测 |
| 输入 | YUV_420_888、NV21、RGBA_8888、本地图片 |
| 输出 | 人脸框、置信度、五点关键点、正/左/右方向、yaw、trackId、单次耗时 |
| 文档 | 接入指南、示例代码、错误排查、版本说明和 SHA-256 校验清单 |
| 运行方式 | RK3588 Android 设备本地离线处理 |
技术方案
检测链路为:Camera2 或静态图片 → 图像格式与方向处理 → OpenCV YuNet 检测 → 五点关键点几何分析 → 正脸/左侧脸/右侧脸判断 → 短时跟踪 → 结果回调与界面叠加。
当前交付基线采用 OpenCV 4.10.0 和 YuNet CPU 检测器。实时链路内部将模型输入缩放至 320×320,静态图片标准检测使用 640×640。正脸、左侧脸和右侧脸共用同一检测器与同一 SDK 接口,方向由五点关键点的几何关系估算。
Demo 默认每 100 ms 提交一次检测,约为每秒 10 次检测请求;相机预览保持设备自身帧率。每个 SDK 实例只保留一个未完成的异步请求,并使用应用自有 DirectBuffer 保存 Y、U、V 数据,避免队列持续增长或相机帧关闭后访问失效缓冲区。Camera2 侧使用 acquireLatestImage() 跳过过期帧,减少延迟累积。
关键问题与修复
客户反馈部分人脸图片在桌面端可以检测,但 Android Demo 返回 0 个结果。对照模型、输入和移动端输出后,问题定位到 OpenCV Java 结果矩阵的读取方式。
FaceDetectorYN.detect() 返回 N×15 单通道矩阵。原 Android 代码没有按完整 15 个值读取每一行,导致有效结果在长度检查阶段被丢弃。修复后按矩阵列数和通道数读取完整结果,同时补充旋转、颜色转换、横向宽图裁剪回退和配套 AAR 一致性检查。
回归范围随后扩展到正脸、侧脸、无脸、静态图片和 Camera2 实时链路,以区分模型、输入预处理、结果解码和界面坐标映射问题。
工程验证
以下数据来源于 2026-07-29 项目交付记录,适用版本为 Eye Algo Face SDK 0.4.5 fix5,目标环境为 RK3588 Android arm64-v8a。这些结果用于证明对应构建、接口和短时链路可运行,不代表批量准确率、长期稳定性或量产性能。
| 验证项 | 结果 |
|---|---|
| SDK、Core 与 Face 单元测试 | 157/157 通过 |
| 独立 Demo 单元测试 | 13/13 通过 |
| Python 人脸工具测试 | 143/143 通过 |
| Android Lint | 0 Error、19 Warning |
| APK 与 AAR 构建 | 通过 |
| RK3588 安装、启动与权限 | 通过 |
| Camera2 10 秒短时链路 | submit/callback 79/79,dropped 0 |
| 短时错误扫描 | 未发现崩溃、相机、权限或原生库错误 |
工程样本覆盖正脸、左侧脸、右侧脸对称样本和无脸负样本。该小样本回归只用于验证检测、方向输出和界面链路,不用于形成 Precision、Recall、F1 或分姿态准确率结论。
项目结果
- 正脸、左侧脸和右侧脸检测合并到同一 Android SDK 接口。
- Camera2 实时帧与本地图片使用统一的结果结构,便于现有 App 接入。
- 图像在设备本地处理,可减少原始视频上传云端的需求;无网络时仍可执行人脸定位和方向判断。
- 检测框和五点关键点可作为点击选人、短时跟踪、局部放大和后续算法的前置输入。
- 交付包包含可运行 Demo、AAR、接入说明、错误排查和哈希清单,便于客户复现构建与核对制品。
适用场景
- 智能眼镜视野中的人员检测和目标框选。
- 多人画面中的点击选人和局部放大。
- 设备端正脸、左侧脸和右侧脸方向提示。
- 离线相册或现场采集图片的人脸区域定位。
- 为后续身份识别、活体检测或行为分析提供人脸裁剪输入;这些后续能力不属于本次交付范围。
验收边界
当前成果定位为客户测试与工程接入版本,不是生产签名版本。正式上线前仍需由客户提供生产签名材料,并在冻结的真实验收集上确认标注规则、Precision、Recall、F1、分姿态混淆矩阵及允许阈值。
极端侧脸、遮挡、强反光、暗光、小脸和屏幕翻拍仍可能出现漏检或方向误判。现有单张样本耗时不能外推为平均值、P95、稳定帧率或整机长期性能;本案例不把未完成的 8 小时长稳测试写为通过。
常见问题
该 SDK 是否需要联网?
当前检测链路在 RK3588 Android 设备本地运行,不依赖云端识别服务。App 是否联网取决于客户自己的业务功能。
该案例是否包含人脸身份识别?
不包含。当前交付只做人脸位置检测、五点关键点和正脸/左侧脸/右侧脸方向判断,不提供人员姓名、人脸库或 1:1、1:N 比对。
SDK 如何接入现有 Android App?
项目以 Core AAR 和 Face AAR 交付,支持同步与异步接口,并提供 Camera2 Demo、输入格式说明、缓冲区生命周期要求、示例代码和错误排查文档。
已完成哪些 RK3588 验证?
已完成安装、启动、权限、静态工程样本和 Camera2 10 秒短时链路验证。正式准确率、生产签名和 8 小时长期稳定性仍按独立验收项管理。
能否直接用于其他 RK3588 设备?
可以复用算法接口和集成方法,但摄像头规格、Android 版本、图像方向、stride、内存、温度和设备负载不同,仍需在目标设备重新执行构建、功能、性能和稳定性验证。
在线咨询
电话咨询
微信咨询
回到顶部