2026 华秋杯 AI 开源硬件创新设计大赛:4.人脸识别实战检验

原创2026-09-18 08:58:01浏览3
3
Star

一、前期操作

1. 打开操作窗口

在项目文件夹的地址栏里直接输入 cmd 回车,就得到一个已经定位在项目根目录的命令行窗口。

2. 确认板子在线上

%PY% diag\bexec.py "uname -n; ls -l /dev/hailo0; pkill -9 -x gst-launch-1.0; echo CLEAN_DONE"

正常会看到板子主机名、/dev/hailo0 设备节点、以及 CLEAN_DONE

那句 pkill每次开跑前必须做的:板子上的 GStreamer 进程万一被强杀过,会一直占着 NPU 设备不放,下一次就会报「设备不够用」。杀掉它是无害的(本来也是残留)。

PY是解释器脚本的路径,存放路径不一样也不一样,我就不放我的路径了。

3.确认底库里现在有谁

& $PY diag\gallery_show.py

主要看两个参数:底库里有几个模板、阈值是多少。比对结果解释不了的时候,回来对着这两个数看。

二、把待验证的照片放进一个文件夹

这是我放的十张照片

从中能看出1.2是宗主,其他都不是。

三、开始操作

分步跑的好处是每一步都能停下来看结果,出问题立刻知道卡在哪。

登记照片

& $PY diag\query_batch.py --stage prep --dir faces\260917 --tag step

第1 步(板端):找脸 + 定位 5 个关键点

& $PY diag\query_batch.py --stage detect --dir faces\260917 --tag step

本机把 10 张照片拼成一段 300 帧的视频(每张占 30 帧),一次性送进板子。板子只跑 SCRFD 一个网络,把每帧的检测框和 5 个关键点导出来

第 2 步(本机):按关键点把脸摆正

第 3 步(板端):提 512 维特征

& $PY diag\query_batch.py --stage embed --dir faces\260917 --tag step

把 10 张对齐好的小脸再拼成一段视频,送进板子跑 ArcFace,导出每帧一个 512 维向量(已经 L2 归一化,所以后面的"余弦相似度"就是点积)。

第 4 步(本机):比对出结论

& $PY diag\query_batch.py --stage report --dir faces\260917 --tag step

对每张照片,把它那 30 帧的向量求均值(先剔掉与中位向量余弦 < 0.90 的离群帧),归一化成一个模板;再和底库里 8 个模板各算一次余弦,取最大值作为这张照片的分数;超过阈值判为命中。

从输出结果看,1.2是命中的,后面均判定失败。符合我们的预期

同时,也输出了矩阵图和判定图,也给大家贴出

矩阵图

判定图

总结:人脸识别暂告一段落,实测效果很棒,日常使用和简单项目均能满足使用