Add time period r30 linaro build branch
This commit is contained in:
+9
-8
@@ -1,17 +1,18 @@
|
|||||||
cmake_minimum_required(VERSION 3.5.1)
|
cmake_minimum_required(VERSION 3.5.1)
|
||||||
|
|
||||||
set(CMAKE_SYSTEM_NAME Linux)
|
set(CMAKE_SYSTEM_NAME Linux)
|
||||||
set(CMAKE_SYSTEM_PROCESSOR arm)
|
set(CMAKE_SYSTEM_PROCESSOR aarch64)
|
||||||
|
|
||||||
#set(tools /usr/local/cross-compile/aarch64-cc/)
|
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(tools /home/alex/work/toolchain/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu)
|
set(CMAKE_C_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-gcc)
|
||||||
set(CMAKE_C_COMPILER ${tools}/bin/aarch64-linux-gnu-gcc)
|
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PATH}/bin/aarch64-linux-gnu-g++)
|
||||||
set(CMAKE_CXX_COMPILER ${tools}/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_PROGRAM NEVER)
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
|
||||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE BOTH)
|
||||||
|
set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
|
||||||
|
|
||||||
project(mpp_test)
|
project(mpp_test)
|
||||||
|
|
||||||
|
|||||||
@@ -195,8 +195,8 @@ void parse_options(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
case 'r':
|
case 'r':
|
||||||
thresh = atoi(optarg);
|
thresh = atoi(optarg);
|
||||||
if (thresh < 50) {
|
if (thresh < 30) {
|
||||||
thresh = 50;
|
thresh = 30;
|
||||||
} else if (thresh > 90) {
|
} else if (thresh > 90) {
|
||||||
thresh = 90;
|
thresh = 90;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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/<camera_id>/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 \
|
||||||
|
"<source>" \
|
||||||
|
"<camera_id>" \
|
||||||
|
"<timestamp>" \
|
||||||
|
"<class_name>" \
|
||||||
|
"<confidence>" \
|
||||||
|
"<left>" \
|
||||||
|
"<top>" \
|
||||||
|
"<right>" \
|
||||||
|
"<bottom>"
|
||||||
|
```
|
||||||
|
|
||||||
|
其中 `<source>` 来自推理程序启动时的 `-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 管理程序启动参数。
|
||||||
|
- 推理日志和截图失败不能影响主推理流程。
|
||||||
|
- 所有脚本执行失败只写入推理日志,不退出程序。
|
||||||
|
- 第一阶段先实现推理日志。
|
||||||
|
- 第二阶段再实现低置信度截图脚本触发。
|
||||||
|
|
||||||
Reference in New Issue
Block a user