From b5fad0e94f461390faf3bffbe7039ca6231d19c5 Mon Sep 17 00:00:00 2001 From: gqc Date: Thu, 7 May 2026 17:31:49 +0800 Subject: [PATCH] Add time period r30 linaro build branch --- CMakeLists.txt | 17 ++-- main.cpp | 4 +- updata/inference_log_snapshot_plan.md | 124 ++++++++++++++++++++++++++ 3 files changed, 135 insertions(+), 10 deletions(-) create mode 100644 updata/inference_log_snapshot_plan.md diff --git a/CMakeLists.txt b/CMakeLists.txt index c04832e..8dee260 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,18 @@ cmake_minimum_required(VERSION 3.5.1) set(CMAKE_SYSTEM_NAME Linux) -set(CMAKE_SYSTEM_PROCESSOR arm) +set(CMAKE_SYSTEM_PROCESSOR aarch64) -#set(tools /usr/local/cross-compile/aarch64-cc/) -set(tools /home/alex/work/toolchain/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu) -set(CMAKE_C_COMPILER ${tools}/bin/aarch64-linux-gnu-gcc) -set(CMAKE_CXX_COMPILER ${tools}/bin/aarch64-linux-gnu-g++) +set(TOOLCHAIN_PATH "/home/smos/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu" CACHE PATH "Linaro GCC 7.4.1 aarch64 toolchain path") +set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-g++) +set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_PATH}/aarch64-linux-gnu/libc) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) -set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) -set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH) +set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) project(mpp_test) diff --git a/main.cpp b/main.cpp index 5789388..e6ad83f 100755 --- a/main.cpp +++ b/main.cpp @@ -195,8 +195,8 @@ void parse_options(int argc, char **argv) break; case 'r': thresh = atoi(optarg); - if (thresh < 50) { - thresh = 50; + if (thresh < 30) { + thresh = 30; } else if (thresh > 90) { thresh = 90; } diff --git a/updata/inference_log_snapshot_plan.md b/updata/inference_log_snapshot_plan.md new file mode 100644 index 0000000..291c36a --- /dev/null +++ b/updata/inference_log_snapshot_plan.md @@ -0,0 +1,124 @@ +# 推理程序日志与低置信度截图修改计划 + +## 当前分支目标 + +本分支基于 `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 管理程序启动参数。 + +## 推理日志设计 + +日志默认开启,不新增启动参数,不增加日志等级。 + +建议日志目录: + +`/usr/data/camera//detect_logs/` + +日志按日期保存,例如: + +`/usr/data/camera/32020106801320025089/detect_logs/20260507.txt` + +日志保留最近 7 天,超过 7 天自动清理。 + +日志只记录关键识别信息: + +- 识别到且在检测区域内的目标。 +- 识别到但不在检测区域内的目标。 +- 识别到但低于当前置信度阈值的目标。 + +RTSP 场景下不使用 frame 作为主要标识,改为本地时间和 Unix 时间戳。 + +日志格式示例: + +```text +2026-05-07 15:42:31 ts=1778139751 in result 0: (541 241 579 356) 0.835294, Other_Pedestrian +2026-05-07 15:42:31 ts=1778139751 not_in result 1: (100 120 180 260) 0.812300, Other_Pedestrian +2026-05-07 15:42:31 ts=1778139751 filtered result 2: (332 204 367 258) 0.421000 < 0.600000, Other_Pedestrian +``` + +## 低置信度截图设想 + +不新增 Go 管理程序参数。 + +推理程序默认检查自身同级目录下是否存在脚本: + +`./low_conf_snapshot.sh` + +如果脚本不存在,则跳过截图逻辑,不报错,不影响推理。 + +如果脚本存在并可执行,当满足低置信度条件时执行脚本。 + +建议触发条件: + +- 模型识别到了目标。 +- 目标置信度低于当前运行阈值。 +- 目标置信度高于代码内固定的低置信度截图下限。 + +建议代码内固定值: + +- `LOW_CONF_SNAPSHOT_MIN = 0.30` +- `LOW_CONF_SNAPSHOT_GAP = 30` + +即: + +`0.30 <= prop < conf_threshold` + +同一个摄像头、同一个类别,30 秒内最多触发一次截图,避免频繁截图。 + +## 脚本参数设计 + +推理程序调用脚本时传入当前运行参数和识别结果: + +```bash +./low_conf_snapshot.sh \ + "" \ + "" \ + "" \ + "" \ + "" \ + "" \ + "" \ + "" \ + "" +``` + +其中 `` 来自推理程序启动时的 `-s` 参数,可以是 RTSP 地址,也可以是本地测试视频文件。 + +示例: + +```bash +./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 管理程序启动参数。 +- 推理日志和截图失败不能影响主推理流程。 +- 所有脚本执行失败只写入推理日志,不退出程序。 +- 第一阶段先实现推理日志。 +- 第二阶段再实现低置信度截图脚本触发。 +