Files
vision-anti-pinch/TEST_REPORT.md
T

4.6 KiB
Raw Blame History

2026-09-23 集成验证

执行设备:192.168.195.100 / Orin;摄像头 /dev/video5,UYVY 1920×1536。当前机位朝向室内设备,没有测试人员;用户确认暂不调整机位。

验证 结果
原生 C++/CUDA 共享库 Orin Release 编译通过
摄像头 + CAN 模式,30 秒 882 帧,29.399 FPS,无运行异常
主机取帧到风险结果 均值 42.369 ms,P95 57.368 ms
latest-frame 策略 30 秒期间丢弃 16 个积压帧
真实 CAN USB-CAN 打开失败,lsusb 未见该设备;882 帧均为 CAN_UNKNOWN,score=null
有人视频 150 帧回放 32.898 FPS,31 帧有 1 人,119 帧无有效人体框
RTMW 骨骼 31 个人体记录,每个 133 点
风险证据 22 个手部区域,9 个人体框兜底区域
视频门级风险 clear 132,watch 5,warning 2,unknown 11
原始 run_risk.py 对照 同一姿态记录重放 150 帧,核心输出完全一致
行为测试 本机与 Orin 的 8 项测试均通过
HTTP 实时预览 本机访问远端 /result.json 成功,连续返回新帧

对照方式:将远端 outputs/person-replay/pose_records.jsonl 下载到本机,用用户原始工程的 run_risk.py --pose-jsonl 运行,逐帧比较原始 JSON 的所有顶层字段,包括 skeletons、door_assignments、door_risks、risk、ungated_risk。仅排除不同工程目录导致的绝对 mask 路径差异;150 帧无差异。此项对照验证相同姿态输入下的风险集成,不是 TensorRT 与 ONNX 输出的数值误差测试。

证据:

  • outputs/camera-can/summary.json
  • outputs/person-replay/summary.json 与 causal_results.jsonl
  • outputs/reference-replay/summary.json 与 causal_results.jsonl
  • outputs/reference-parity.json
  • logs/build.log, logs/camera-can.log, logs/person-replay.log

outputs/camera-smoke/ 是初次调通记录,使用了不可靠的驱动时间戳,延迟统计无效。已修正计时来源,性能结论以 camera-can 为准。

未完成的硬件验证:有效 CAN 报文到达与门切换、真实摄像头下人员/手部靠近门区、实车机位 mask 与前后门参数标定。当前无法据此宣称已完成实车防夹效果验收。

本机没有摄像头设备节点;本机完成源码/模型归档、风险对照及行为测试,通过网络预览 Orin 的实时结果。

最新结果变量与可选可视化改造

已对照重启后远端 0920 的 include/latest_result.hpp 和 src/main.cpp,采用默认关闭可视化、单个不可变最新快照、start/latest/request_stop/join 生命周期。

  • 本机与 Orin:17 项测试通过,覆盖原有风险测试及只读快照、旧快照保持、跨线程等待/停止、错误传播、默认无绘制/HTTP/结果文件、JSON 与内存结果一致、预览端口失败不影响推理、独立可视化线程。
  • Orin 真实 TensorRT 视频回放:下游示例读取 90 帧,27.321 FPS;未开启可视化和文件保存。保留 watch/warning/unknown 等风险输出。
  • Orin 真实摄像头:下游示例读取 90 帧,28.858 FPS;主机取帧至结果均值 32.341 ms;关闭可视化,没有创建指定输出目录。
  • --visualize 实机运行 15 秒:成功通过 HTTP 读取逐帧结果及 JPEG 图像;未开启文件保存,没有创建指定输出目录。
  • 后台运行入口默认无可视化;开启预览需显式加 --visualize。
  • 重启后摄像头节点未自动生成。0920 初始化脚本因驱动缺少 vermagic 元数据而判定不匹配;0923 新增初始化脚本,存在 vermagic 时检查内核版本,缺失时交给正常 insmod 的内核检查,未使用强制加载参数。加载原有 0920 驱动后 /dev/video5 恢复。

日志:logs/tests-optional-local.log、logs/tests-optional-orin.log、logs/result-api-video.log、logs/result-api-camera.log、logs/optional-preview.log、logs/optional-preview-probe.json。

use-can Orin 可运行包验证

  • 独立运行包位于 orin/:包含预编译 ARM64 原生库、TensorRT 引擎、Python 风险代码、CAN USB 库、GMSL 驱动和 ./run.sh。
  • 在 Orin 新建的独立临时目录复制整个运行包,SHA256SUMS 全部通过。
  • 从临时目录执行 ./run.sh --max-frames 90,实际摄像头 90 帧完成,29.080 FPS,主机取帧至风险结果平均 36.310 ms;无结果文件输出。
  • 原生库 RUNPATH 为 $ORIGIN/../lib:/usr/local/cuda/lib64,启动脚本按自身位置定位所有项目资产。
  • 系统依赖仍为目标 JetPack 的 CUDA / TensorRT / OpenCV 与 Python numpy/cv2,不包含操作系统或完整 Python 环境。