ARCS 人脸示例配套升级与验证

范围

更新 samples/algorithms/face_detect 和 demos/arcs/face_detect。 两者使用 ARCS lsface.arcs.0.0.0009.0.1008,384 维特征、12 B 结果头和 2956 B 单条结果。 SDK 统一接收入口检查当前结果 ABI;示例分别处理引擎错误,摄像头 demo 的按键操作使用受保护的结果快照。 VenusA SDK 示例的资源和预编译 AP 不在本轮升级范围内。

配套资源

镜像

Flash 偏移

大小

AP

0x000000

318184 B

检测

0x100000

448056 B

对齐

0x170000

557304 B

活体

0x200000

957528 B

特征

0x300000

1936808 B

CP

0x800000

按实际构建读取

新版活体模型不能放进原 0x200000…0x2C0000 的空间,因此特征模型起点后移到 0x300000。 每个示例的 res/manifest.json 固定 AP/模型 SHA256、大小、地址和容量。 AP SHA256 为 79297e6bb34d4cbe290aee3341e57640ff78cb4aa29ccd9fac9e3f8ce98e7713。 example.cmake 在每次编译/打包时执行资源校验;合并脚本也调用同一个检查器。 结果类型的编译期断言与 manifest 保持一致,SDK ABI 后续变化时不能沿用这些 AP 二进制。

AP 直接在 Flash 0 启动,CP 入口为 0x30800000。AP/CP 各占 8 MiB PSRAM, CP PSRAM 基址 0x28800000;IPC 基址 0x2004E000,LSF 共享区基址 0x20048000。 AP 算法池为 768 KiB,模型保持 XIP。

SDK 可独立使用已发布的配套二进制。维护者在集成 PDK 仓库中重建 AP 的命令为:

$faceAPConfig = (Resolve-Path apps/remote-ap/sdk-face-arcs.conf).Path
./build.ps1 -S apps/remote-ap -B build/sdk-arcs-face-ap -DBOARD=arcs_evb "-DCONFIG_FILES=$faceAPConfig"

发布新的 AP/引擎时,须核对生成的 .config、链接地址及资源契约,再同步两个示例的 res/ap.bin、配套模型和 manifest;不要将 rust-face-detect-demo 的紧凑布局 AP 直接复制过来。

2026-10-10 实板结果

设备为当前 arcs_evb,COM6 / CH343 / 5AB9015836,此前读取芯片 ID 为 6b3bc01b1758c9bd。 以下命令均从集成仓库根目录执行:

./build.ps1 -S arcs-sdk/samples/algorithms/face_detect -B build/sdk-face-sample -DBOARD=arcs_evb
./build.ps1 -S arcs-sdk/demos/arcs/face_detect -B build/sdk-face-camera -DBOARD=arcs_evb

两项构建和整包资源检查通过。SDK 单独使用时将源码路径去掉 arcs-sdk/ 前缀。 基础示例整包为 8677832 B;摄像头示例整包为 8800138 B。 每个整包包含布局填充;实板分段写入并以 cskburn --verify-all 逐段读回验证,未执行整片擦除。

自动检查

结果

证据(集成仓库根目录)

基础静态图示例,25 秒

23 次有效结果;检测到人脸、活体通过、有效特征为 384 维;无 ABI/引擎错误

build/sdk-face-static-hardware

摄像头 demo,30 秒

相机 320×240 启动成功,结果计数达到 100;无 ABI/引擎错误

build/sdk-face-camera-hardware

主机 ABI/边界检查

当前布局、旧格式、截断、非法索引/数量、特征上界及错误包,ASan/UBSan 通过

build/sdk-fd-validation-checks

资源校验

两套正确资源通过;等长 AP 字节损坏被拒绝;手动合并与自动整包一致

pack_example.py / merge_bins.py

静态 CP 烧录读回 MD5 为 9704e815ef394ee337b29034a651728d;摄像头 CP 为 18e635bbbcaabd0f34c4d2e50b7fa922。 最终板上保留摄像头 SDK demo。原 CUP2 320 固件快照位于 build/face-arcs-optimized-320-device.bin。

测试前后对 0xF80000…0x1000000 的 524288 B 数据区逐字节比对一致,SHA256: e51b25df8693c26bd38dfb668e8e943c016d1342bcd4ae719743af3454bae7ab。 备份分别为 build/sdk-arcs-examples-data-before.bin 与 build/sdk-arcs-examples-data-after.bin; 比对报告 build/sdk-arcs-examples-persistence.json。原 CUP2 ID 1 数据未被修改。

自动验证入口与边界

SDK 内提供 tools/verify_example.py,需要 pyserial,默认 921600 波特率。 在烧录/复位后立即运行,明确选择实际端口:

python arcs-sdk/components/acomp/fd/tools/verify_example.py --port COM6 --kind static --seconds 25 --output build/sdk-face-static-hardware
python arcs-sdk/components/acomp/fd/tools/verify_example.py --port COM6 --kind camera --seconds 30 --output build/sdk-face-camera-hardware

脚本检查真实结果进度与错误,保存 device.log / report.json,失败返回非零。 上述自动结果不代表 LCD 外观、触摸/实体按键、真人注册/比对准确率、假体效果或长期稳定性已验收。 摄像头 demo 仍按原业务通过实体按键注册/比对,注册特征为 RAM 临时数据。