AI-深度学习

口鼻遮挡工程实录:14 测试评估与问题复盘

展开合集目录
  1. 口鼻遮挡工程实录:01 需求与判断边界
  2. 口鼻遮挡工程实录:02 方案探索与演进
  3. 口鼻遮挡工程实录:03 总体架构与完整时序
  4. 口鼻遮挡工程实录:04 图像预处理与坐标转换
  5. 口鼻遮挡工程实录:05 头部检测与YuNet
  6. 口鼻遮挡工程实录:06 PIPNet98关键点与响应
  7. 口鼻遮挡工程实录:07 FaceOcc分割与口鼻覆盖率
  8. 口鼻遮挡工程实录:08 姿态与几何分析
  9. 口鼻遮挡工程实录:09 多证据融合规则
  10. 口鼻遮挡工程实录:10 跟踪与持续确认
  11. 口鼻遮挡工程实录:11 YOLO-World物体复核
  12. 口鼻遮挡工程实录:12 模型转换与海思部署
  13. 口鼻遮挡工程实录:13 板端运行与调试闭环
  14. 口鼻遮挡工程实录:14 测试评估与问题复盘
  15. 口鼻遮挡工程实录:A 附录A-参数字典
  16. 口鼻遮挡工程实录:B 附录B-状态与结果字段
  17. 口鼻遮挡工程实录:C 附录C-模型与代码索引
  18. 口鼻遮挡工程实录:D 附录D-完整教学样例
口鼻遮挡工程实录:14 测试评估与问题复盘的封面

系列编排日期为 2026 年 8 月;正文依据 2026-10-12 核对的实现整理。历史实测保留真实日期,教学数字不代表实测;本次未重新执行板端推理。

返回系列目录 · 本篇为 14 章+4 份附录中的一篇。

四类验证各自证明什么

验证 能证明 不能证明
合成规则回归 某组输入指标走对分支、重置逻辑正确 神经网络会对真实图像输出正确指标
PC/板端同输入对齐 转换、预处理、解码在样本上接近 接近的两个结果都符合真实标注
设备联调 连接、推理、参数、保存与恢复路径可运行 大规模场景误报漏报达标
独立标注集评估 在规定数据分布上的任务效果 所有新场景或不同镜头都同样有效

将三张成功图片叫做“准确率验证通过”,或把 OM/ONNX mask IoU 当作真实分割准确率,会把证据范围放大。文章与报告都应写清样本量、输入、参考目标和运行方式。

先确定标注规范

建议每个头部分别标注鼻和嘴:可见、外部遮挡、自遮挡/极端姿态、无法标注,并记录头框、人脸可见性和可能遮挡物。边界模糊的样本不要强行塞进二分类,应保留不可判定原因,并进行独立复核。

口罩仅遮嘴、手靠近但未遮住、张嘴、脸离开画面,必须按业务定义区分。事件级标注还要记录开始与结束时间;不能从单张截图补造持续时长。

划分数据时按人员、场景或连续视频段分组,避免相邻帧同时进入调参和测试集。量化校准集、规则调参集、最终独立评估集用途不同,重用时需明确说明。

场景矩阵

维度 至少覆盖
可见性 无遮挡、单独遮鼻、单独遮嘴、同时遮挡、部分遮挡
物体 手、手臂、纸巾、口罩、衣物、未在词表中的物体
姿态 正脸、左右转头、歪头、低头、后脑、贴边
非遮挡干扰 张嘴、胡须、浓阴影、强逆光、眼镜、肤色差异
图像质量 小脸、运动模糊、低照、压缩、曝光变化、镜像
人数与运动 单人、多人交叉、进入离开、头框重叠
系统事件 断流、断连、模型缺失、热调参、配置冲突、重启

当前可见优先规则应额外收集“鼻嘴点漂到其他皮肤”的样本,观察错误放行;World 则需要收集“物体框覆盖 ROI 但实际不在脸前”的样本,观察错误支持。

指标怎样计算

鼻和嘴分别统计 TP、FP、FN,并报告 Precision=TP/(TP+FP)、Recall=TP/(TP+FN)。分母为零时报告 N/A,不伪造满分。

不确定样本不能悄悄删除。至少同时报告明确判定覆盖率、UNCERTAIN 比例、无脸比例、输入有效率,以及在明确判定样本上的精确率和召回率。若只报告已成功检测到脸的子集,必须说明入口漏检未被计入。

持续事件还需统计每小时误报次数、事件漏检率、首次确认延迟、异常解除延迟和重复确认情况。单帧指标好不代表时序体验好;较长 hold 时间可能减少误报,也可能延迟或漏掉短事件。

阈值调参需要控制变量

先固定模型、预处理与数据,再按顺序检查头脸检测、局部 ROI、分割阈值、响应阈值、姿态、时序和物体证据。每轮保存完整参数,不只记“把嘴阈值调高了”。

在调参集上扫阈值并观察误报漏报曲线,选定规则后锁住配置,在独立测试集上一次性评估。若根据测试结果继续改参数,该数据已经参与开发,应重新准备独立验证集。

消融可分别关闭 World、比较旧新融合规则、比较不同头模型、观察是否加入响应证据。比较必须使用同样输入和统计口径;World 当前不反写主状态,因此打开它不会改善主状态分类指标,应单独评估物体证据质量。

项目历史实测,保留原日期与范围

日期与范围 记录结果 正确解读
2026-09-17,独立 FaceOcc 正常脸 100 次平均约 161.633 ms,P95 162.793 ms 纯推理,不含完整级联及加载
2026-09-17,独立 FaceOcc 三样本 相对 PC mask IoU 约 99.64%、99.56%、94.33% 转换一致性,非真实标注精度
2026-09-17,P34 独立模型 20 次平均 394.1 ms,加载约 120.3 ms 不能当作五阶段总延迟
2026-09-17,P34 四模型静态单人 整轮约 1.2 秒;整板 MMZ 采样峰值约 186.2 MiB 含加载与已有视频分配,非多人上界
2026-09-17,可见优先回放 19 组 ARM/Python 对齐,26 项 Python 回归 规则与实现对齐,不是图像准确率
2026-09-21,World 三图及直播联调 无遮挡跳过,手/纸巾有对应输出;第五阶段约 1.21~1.34 秒 有限样本与链路验证
2026-09-21,五阶段资源对照 100 ms 采样下 MMZ 增量峰值差约 8.9 MiB,RSS 峰值差约 8.4 MiB 采样测量,不是瞬时最大值

这些数值来自项目 README/CASCADE 历史记录。本次撰写未重新进行板端测试;详细原日志有些位于临时目录,是否仍可用需以本地文件清单为准。旧文档引用的 application/Doc/五阶段遮挡复核板端接入.md 在本次基线中缺失,不作为已读取的一手证据。

可运行的规则回归入口

在具备 NumPy/OpenCV 的现有 Python 环境,从工程根目录执行:

mkdir -p application/.temp/occlusion-check
python3 -m unittest discover \
  -s application/Dependent/shared/head_pipnet_unet -p 'test_*.py' \
  > application/.temp/occlusion-check/policy.log 2>&1
python3 application/Dependent/shared/yoloworld_occluder/test_review.py \
  > application/.temp/occlusion-check/review.log 2>&1

这些测试包含几何、规则及模拟物体结果,不下载权重,也不代表实板模型效果。ARM 回放另见 head_pipnet_unet/hi3516/build_checks.sh、check_policy.py;完整张量对齐见 check_cascade.py,依赖相应输入与导出产物。

性能测量需要标明边界

分别记录冷加载、热加载、纯模型运行、预后处理、整轮分析和采集到显示延迟。固定图片、实时流、单人与多人必须分组。使用 P50/P95 与最大观察值,而非仅展示最好一次。

MMZ 记录业务基线、阶段峰值、卸载后基线;RSS/HWM 记录进程内存;CPU 百分比说明是相对单核还是整机。采样间隔可能漏过短时峰值,不能称为严格内存上界。反复运行后回不到基线时,先检查帧释放、模型缓冲和输出持有关系。

当前未闭合的问题

尚缺代表性独立标注集与生产误报漏报报告;可见优先存在定位漂移误放行风险;FaceOcc 对侧脸、口腔与阴影的语义需要继续验证;World 的分类分数有转换漂移,手与手臂可能混淆;IoU 关联不提供长期身份;产品报警与恢复流程尚不能从预览标记推定。

后续每次改动保留失败样本、原参数、新参数、模型指纹、状态差异和验证范围。这样一次修复才能进入可回归的工程记录,而不是只剩“现场看起来好了”。


上一篇:板端运行与调试闭环 · 系列目录 · 下一篇:附录A-参数字典