Files
yolov5-inferrence/updata/inference_log_snapshot_plan.md
T
2026-06-05 18:14:00 +08:00

4.0 KiB

推理程序日志与低置信度截图修改计划

当前分支目标

本分支基于 origin/time_period_support,保留时间周期参数:

  • -P
  • --time-period

并包含以下编译和参数调整:

  • -r 置信度最低下限调整为 30
  • CMake 使用 WSL 内的 Linaro GCC 7.4.1 交叉编译工具链: /home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu
  • 保持 C++14。
  • 链接 rknn_api

后续日志增强目标

当前系统分为两个程序:

  • 推理程序:负责拉取视频流、模型推理、区域判断,并把识别统计结果推给管理程序。
  • Go 管理程序:负责摄像头配置、置信度、RTSP 地址等参数管理,以及云端对接。

.output 日志主要来自 Go 管理程序,无法完整看到推理程序内部的识别细节。后续计划在推理程序中默认增加独立识别日志,不需要修改 Go 管理程序启动参数。

推理日志设计

日志默认开启,不新增启动参数,不增加日志等级。

日志目录固定在推理程序同级目录:

./.log/

日志按日期保存,例如:

./.log/2026-05-07-yolov5.log

日志保留最近 7 天,超过 7 天自动清理。

所有摄像头日志汇总到当天同一个文件中,每一行必须带 camera=<camera_id>,便于用 grep 过滤单个摄像头。

日志只记录关键识别信息:

  • 识别到且在检测区域内的目标。
  • 识别到但不在检测区域内的目标。
  • 识别到但低于当前置信度阈值的目标。

RTSP 场景下不使用 frame 作为主要标识,改为本地时间和 Unix 时间戳。

日志格式示例:

2026-05-07 15:42:31 ts=1778139751 camera=32020106801320025089 in result 0: (541 241 579 356) 0.835294, Other_Pedestrian
2026-05-07 15:42:31 ts=1778139751 camera=32020106801320025089 not_in result 1: (100 120 180 260) 0.812300, Other_Pedestrian
2026-05-07 15:42:31 ts=1778139751 camera=32020106801320025089 filtered result 2: (332 204 367 258) 0.421000 < 0.600000, Other_Pedestrian

常用查询方式:

grep "camera=32020106801320025089" .log/2026-05-07-yolov5.log
grep "filtered result" .log/2026-05-07-yolov5.log
grep "snapshot" .log/2026-05-07-yolov5.log

低置信度截图设想

不新增 Go 管理程序参数。

推理程序默认检查自身同级目录下是否存在脚本:

./low_conf_snapshot.sh

如果脚本不存在,则跳过截图逻辑,不报错,不影响推理。

如果脚本存在并可执行,当满足低置信度条件时执行脚本。

截图文件默认保存到推理程序同级目录:

./.log/snapshots/<YYYY-MM-DD>/

文件名建议包含时间戳、摄像头、类别、置信度和坐标:

1778139751_32020106801320025089_Other_Pedestrian_0.421000_332_204_367_258.jpg

建议触发条件:

  • 模型识别到了目标。
  • 目标置信度低于当前运行阈值。
  • 目标置信度高于代码内固定的低置信度截图下限。

建议代码内固定值:

  • LOW_CONF_SNAPSHOT_MIN = 0.30
  • LOW_CONF_SNAPSHOT_GAP = 30

即:

0.30 <= prop < conf_threshold

同一个摄像头、同一个类别,30 秒内最多触发一次截图,避免频繁截图。

脚本参数设计

推理程序调用脚本时传入当前运行参数和识别结果:

./low_conf_snapshot.sh \
  "<source>" \
  "<camera_id>" \
  "<timestamp>" \
  "<class_name>" \
  "<confidence>" \
  "<left>" \
  "<top>" \
  "<right>" \
  "<bottom>"

其中 <source> 来自推理程序启动时的 -s 参数,可以是 RTSP 地址,也可以是本地测试视频文件。

示例:

./low_conf_snapshot.sh \
  "rtsp://admin:xxx@10.68.25.89:554/h264/ch1/main/av_stream" \
  "32020106801320025089" \
  "1778139751" \
  "Other_Pedestrian" \
  "0.421000" \
  "332" "204" "367" "258"

实现原则

  • 不修改 Go 管理程序启动参数。
  • 推理日志和截图失败不能影响主推理流程。
  • 所有脚本执行失败只写入推理日志,不退出程序。
  • 第一阶段先实现推理日志。
  • 第二阶段再实现低置信度截图脚本触发。