AI-深度学习

口鼻遮挡工程实录:D 附录D-完整教学样例

展开合集目录
  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-完整教学样例
口鼻遮挡工程实录:D 附录D-完整教学样例的封面

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

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

样例的性质

本附录使用人为构造的数字演示规则,便于手工核算,不是板端识别截图,也不是准确率测试集。所有示例默认鼻嘴可见阈值 60%、弱点比例门槛 25%、持续两秒且至少三次观测;除特别说明外,ROI 有效且不触发姿态分流。

样例一:无遮挡,响应偏弱仍然放行

头部与人脸检测成功,PIPNet 提供有效鼻嘴凸包。鼻 ROI 有 100 个像素,其中 90 个可见;嘴 ROI 有 200 个像素,其中 170 个可见。两覆盖率分别为 90% 和 85%。即使嘴部有六个弱点,响应弱点比例 6/20=30%,仍输出 VISIBLE/UNET_CLEAR。

鼻嘴 response_checked=false,表示响应不否决覆盖达标。World 跳过,原因 visible_passthrough。连续重复该状态不会形成异常确认。

样例二:手遮嘴,局部证据一致

鼻覆盖 90%,嘴覆盖 20%;鼻弱点 0/9,嘴弱点 8/20=40%。鼻放行,嘴同时低覆盖与弱响应,所以为 MOUTH_OCCLUSION_SUSPECT。

同一轨迹在 0.0、1.2、2.4 秒三次观测都得到该状态。第三次 duration_seconds=2.4、observations=3、confirmed=true。随后 World 检出手,分数 0.72,手框覆盖嘴 mask 的 80%,局部点稳定,得到 review.status=supported,objects 包含手。

原状态与确认标记保留。物体证据附加在原结论之上,没有把状态名改成 HAND_OCCLUSION。

样例三:只有鼻部遮挡

鼻覆盖 20%、鼻弱点 3/9≈33.3%;嘴覆盖 85%、嘴弱点 0/20。区域融合得到 NOSE_OCCLUSION_SUSPECT。World 只针对鼻部匹配证据。

假设纸巾检测分数 0.7,但纸巾框只覆盖鼻 ROI 的 30%,未达到 60%,就不能形成充分证据。如果它确实与区域有重叠,可得到 candidate;原鼻部疑似状态仍然保留。

这里分数高不弥补覆盖不足;分类信心与是否覆盖目标部位是两个独立条件。

样例四:纸巾使分割变低,关键点却稳定

鼻覆盖 85%,嘴覆盖 15%,嘴弱点仅 1/20=5%。低覆盖与正常响应冲突,主状态 UNCERTAIN。由于两 ROI 均有效且至少一个低覆盖,World 仍会运行。

纸巾分数 0.8、嘴覆盖 90%、局部点稳定,可以得到 supported;review.final_state 仍为 UNCERTAIN。界面应同时表达“不确定的原判定”和“纸巾物体证据”,不能擅自将主状态改成已确认遮挡。

如果没有检出纸巾,status 可以是 unverified,但主状态也不能改成 VISIBLE。

样例五:侧向贴边与倾斜

鼻、嘴覆盖不足;左侧中心距离分别为 0.02 和 −0.01,处于接触带 −0.15~0.04;鼻组、嘴组接触比例分别为 6/9、12/20;两组可靠且无过远点,右侧不满足。主状态成为 SIDE_LEFT_CANDIDATE,即使分割融合原本有遮挡候选。

同方向持续两秒且至少三次后显示 SIDE_LEFT_SUSPECTED。默认 observe 下 side_sustained=true、confirmed=false,World 不因纯 SIDE 状态触发。若中途变为右侧,则重新计时。

如果同一帧鼻嘴覆盖都达到 60%,优先级更高的可见放行会输出 VISIBLE;pose_state 仍可记录 SIDE_LEFT。可靠倾斜也服从这个可见优先顺序。

样例六:有头无脸

头部模型有框,YuNet 没有中心落在原头框内的合格人脸,输出 NO_FACE。不运行 PIPNet/U-Net,不应显示鼻嘴覆盖 0%。默认时序可以确认持续 NO_FACE,但其含义仍是持续未找到脸,不能自动说已经识别出后脑或遮挡。

若本帧连头框也没有,heads=[],对应旧轨迹被移除;不能虚构一个 NO_FACE 记录接着累计。

样例七:区域无效与错误放行的区别

情况 A:外唇某点映射到 x=258,超出 256 输入范围,嘴区域无效。最终 UNCERTAIN/INVALID_REGION,World 不运行。把该点钳位到 255 再计数会改变算法,应拒绝而不是补造像素。

情况 B:所有嘴点漂到脸颊,凸包面积、边界和像素数检查都通过;脸颊又被分割为可见皮肤,所以嘴覆盖 95%,鼻覆盖 90%。当前规则会输出 VISIBLE,World 随之跳过。这是已知的潜在误放行路径,不是系统已经解决的问题。

两种情况说明,数值和采样几何有效并不等于解剖位置正确。后续改进需用真实样本验证定位约束,而不是把所有不稳定标记重新无条件变成遮挡。

样例八:调参导致状态变化

固定原图和模型,鼻覆盖 90%、嘴覆盖 62%,嘴响应弱。mouth_visible=0.60 时放行;改为 0.65 后嘴覆盖不足,并因响应弱进入遮嘴候选。

直播应用新参数时,旧轨迹时序被重置。不能沿用参数 0.60 时已经播放的时间立刻确认新状态。新参数即使用于直播,也需要另行写入配置并重启 Stream,才影响正常业务启动配置。

用一条记录串起完整检查

每次复现按以下顺序保存:原图和哈希 → 模型指纹与参数版本 → 头脸框 → crop → 98 点及响应 → 鼻嘴 mask 指标 → segmentation_state/pose/state/source → track 与 persistence → World 调用与匹配 → 耗时和错误。

找到第一个与预期不符的环节,再决定检查模型、预处理、几何还是策略。若只保留最后一句“疑似遮挡”,以后几乎无法说明它为什么出现。


上一篇:附录C-模型与代码索引 · 系列目录