06-Kalman隔帧轨迹预测 Kalman 滤波与隔帧检测轨迹如何在「无测量帧」上继续走本文只讲一件事当检测隔几帧才跑一次时中间帧没有新的人体框测量跟踪仍能给出连续轨迹靠的是 Kalman 预测有测量时再做 更新。读完后应能独立想清隔 3 帧检测、25 帧/秒时中间帧的框从哪来为何检测间隔变大时匹配阈值要放宽过程噪声与测量噪声拧反了跟拍会变成什么样。1. 问题检测贵跟拍不能停人体检测YOLO是扫描阶段最重的算子之一。若 25fps 全帧都跑算力与延迟都会顶满。折中是 隔帧检测detect_stride 1每帧都检测detect_stride 3默认常见配置每 3 帧检测一次中间两帧 不产生新测量。跟拍与轨迹却必须 每帧都有位置。否则圆镜/裁切窗会在检测帧跳一下、中间帧卡住观感像坏云台。图检测帧把框当测量做 Update隔帧只靠运动模型 Predict。2. 本项目如何决定「本帧要不要检测」配置里有检测步长检测步长。每一帧进入跟踪时先按帧号门控再把可能为空的检测列表交给 ByteTrackconstbooldo_detect(ctx.cfg.detect_stride1)||(idx%ctx.cfg.detect_stride0);std::vectorPfByteTrackFaceBoxboxes;if(do_detect){// YOLO → boxes}conststd::vectorPfByteTrackFaceStatetracksbt.update(boxes);// 空 boxes 仍 Predict条件行为本帧需要检测有检测框跟踪做关联 Kalman 更新本帧不检测检测框为空跟踪仍执行只做 Kalman 预测 与轨迹维护也就是说检测列表为空时不是跳过跟踪而是做「无测量的一步」。默认与兜底帧率探测不到合法 源帧率或配置帧率非法时一律按 25.0 帧/秒 处理ByteTrack 构造也用该帧率。后文数值例子一律按 25fps。3. 时间轴stride3 时每一帧在干什么设帧号 idx 0,1,2,3,…检测步长 3idxidx % 3检测Kalman00是Predict内部 Update11否仅 Predict22否仅 Predict30是Predict Update…………图实心点为检测帧空心为仅预测帧轨迹折线在中间帧仍前进。数值例子25fps帧间隔 Δt 1/25 0.04 s。两次检测之间的墙钟时间3 × 0.04 0.12 s。若人横向速度约 v_x 80 px/s慢走横穿 720p两次检测间位移期望Δx ≈ vx × 0.12 9.6 像素中间两帧若完全不预测圆镜会落后约 36 px 再瞬移追上有匀速预测则每帧挪约 80×0.043.2 px观感连续。4. ByteTrack 里的 Kalman状态与模型ByteTrack 使用经典 8 维匀速模型中心 宽高比/高 速度直觉上可把状态写成符号与论文/实现细节略有差异便于心算x [cx, cy, a, h, vx, vy, va, vh]ᵀ匀速离散预测Δt1 帧cx ← cx vxcy ← cy vya ← a vah ← h vh协方差同步传播P ← F P Fᵀ Q有测量 z检测框时卡尔曼增益 K 由预测不确定度与测量噪声共同决定状态按「预测值 增益 × 残差」更新更新后不确定度通常变小。Q过程噪声相信运动模型的程度大 → 更信测量R测量噪声相信检测框的程度大 → 更信预测。图R 过大跟手慢Q 过大框抖隔帧场景要在两者间找平衡。位置噪声大致按框高比例取值速度噪声更小——符合「人不会瞬间瞬移」的先验。5. 封装层如何把 YOLO 框喂进跟踪器封装层把检测框转成跟踪器输入当detections为空时objects为空向量——底层对每条已有轨迹仍执行 predict丢失缓冲轨迹缓冲继续倒数。本项目默认track_buffer 30约 30 帧 ≈ 1.2 s 25fps。构造时帧率取整source_fps25→ ByteTrack 内部frame_rate25与输出时间轴一致。6. 为何 stride 大时要放宽 match_thresh检测变稀后相邻两次测量之间人已走过更远。IoU 匹配若仍很严会把「同一个人的下一检测」当成新目标ID 切换主角锁丢。detect_stridematch_thresh直觉10.70测量密可严匹配20.62略放宽≥30.55明显放宽容忍更大位移跟踪分数下界 / 高分阈值 仍对齐 YOLO 分数阈值high 至少score0.05且 ≥0.30与 stride 解耦——放宽的是关联距离门不是检测分数门。数值例子IoU 与位移设上一检测框 640×360 画面中人框为 x400,y200,w120,h280。0.12 s 后中心右移 30 px快跑新框 x430,y200,w120,h280。轴对齐 IoU 近似IoU 交集面积 ÷ 并集面积交集宽 90、高 280交集面积 25200并集 2×33600−2520042000IoU ≈ 25200/42000 0.60在match_thresh0.70下可能匹配失败在0.55下可通过。这正是 stride≥3 放宽的动机。扫描启动日志会打印实际阈值step … 匹配阈值0.55 检测步长37. 与 hold / 离线平滑的分工Kalman 解决的是 扫描期逐帧状态ByteTrack 输出的人体框序列。成片跟拍还有后处理短时丢检时轨迹会保持一段时间与检测步长相关通常可达数十帧离线高斯平滑lens/crop在锁定轨迹上再滤一次。不要把三者混为一谈层级作用典型时间尺度Kalman predict填补无检测帧1stride 帧track hold短时丢检不删轨可达数十帧离线高斯成片轨迹去抖0.10.7 s σKalman 错了后面平滑只能「抹平错误」不能恢复正确身份。8. 完整一步从帧号到轨迹点完整一步可以概括为判断本帧要不要跑检测要检测则得到人体框否则检测列表为空无论是否检测都调用bt.update(boxes)空列表表示只预测对每条轨迹做人脸识别与相似度记录历史主角锁定后写入定位结果中的跟拍轨迹。因此调试「中间帧框从哪来」时看 ByteTrack 输出即可不必指望中间帧有 YOLO 日志。9. Q/R 与隔帧的失效模式9.1 测量过信R 过小 / 等效检测框抖 → 更新后状态猛跟抖 → 中间帧预测带着错误速度冲出去 → 下一检测再拉回来 → 锯齿。9.2 模型过信Q 过小 / R 过大人突然加速或转向预测仍沿旧速度走下一检测 IoU 掉到 match 阈值以下 → 切 ID。stride 越大越危险所以本项目用放宽 匹配阈值 补偿。9.3 长时间无测量若 轨迹缓冲 耗尽仍无检测轨迹删除。检测步长3、buffer30 时约可跨过 30 帧无更新含中间预测帧墙钟约 1.2 s。极端遮挡仍会丢轨——这是设计边界不是 bug。9.4 数值演练错误速度的积累假设更新后误估 v_x 15 px/帧实际应为 3。stride3 下两次检测间预测位移15 × 3 45 像素真实位移 9 px误差 36 px。下一框 IoU 可能从 0.6 掉到 0.3 以下触发 ID 切换。离线平滑无法修复切 ID只能让错误轨迹「更圆滑地错」。10. source_fps25 为何重要Kalman / ByteTrack 的 帧率 影响内部缓冲与部分时间相关逻辑。本项目探测不到合法 fps → 25.0成片滤镜图大量写死fps25质量稳定性把运动除以检测步长做等效。心算时固定时间秒≈ 帧号 / 25隔帧检测的「物理秒」间隔是detect_stride/25不是「跳过了 stride 个神秘单位」。11. 调参清单只动跟踪相关旋钮位置调大效果风险检测步长person_focus 配置更省算力匹配更难、预测误差放大匹配阈值由 stride 自动设定代码已随 stride 减小手动改大易切 ID轨迹缓冲默认 30更耐遮挡幽灵轨迹更久YOLO 分数阈值驱动 track/high更少误检漏检增多更依赖预测建议先定 stride再接受自动 match_thresh不要在 stride3 时强行把 match 拧回 0.70。12. 小结公式卡隔帧门控do_detect (stride≤1) || (idx % stride 0)空测量仍更新跟踪器每一帧都调用bt.update(boxes)有检测就关联并校正无检测就只预测。匹配阈值本项目检测步长1 时匹配阈值约 0.70步长2 时约 0.62步长≥3 时约 0.55。预测位移量级两次检测间位移 ≈ 速度 ×检测步长 / 帧率把这四条背熟就可以在日志里区分「检测没跑」与「跟踪没跑」并解释为何中间帧仍有框。

相关新闻

最新新闻

老楼无线门禁信号差怎么办?8层砖混实测:中继器布放、铁门屏蔽、穿墙衰减全记录

老楼无线门禁信号差怎么办?8层砖混实测:中继器布放、铁门屏蔽、穿墙衰减全记录

广州某8层老楼采用2.4G无线自组网门禁方案改造,现场存在铁门、墙体遮挡、电气设备等干扰因素。主机与中继器直线距离仅10米,但因墙体S型遮挡,中继器信号长期显示黄灯(弱)。本文把这次施工调试中遇到的6个问题和解决方案…

2026/8/18 13:23:00
贵阳创业避雷:低价代理记账背后隐藏哪些财税风险?

贵阳创业避雷:低价代理记账背后隐藏哪些财税风险?

在贵阳注册创业,不少小微企业与个体工商户为压缩运营成本,倾向选择价格极低的代理记账服务。市场上几百元一年的代账套餐层出不穷,很多创业者容易被低价吸引,忽略财税工作潜藏的风险。 财税属于企业核心基础性工作,账目…

2026/8/18 13:23:00
告别Office订阅费:Ohook激活工具三步让Microsoft 365全功能常驻

告别Office订阅费:Ohook激活工具三步让Microsoft 365全功能常驻

告别Office订阅费:Ohook激活工具三步让Microsoft 365全功能常驻 【免费下载链接】ohook An universal Office "activation" hook with main focus of enabling full functionality of subscription editions 项目地址: https://gitcode.com/gh_mirrors/…

2026/8/18 13:23:00
一摞旧乐谱变可编辑MusicXML:免费开源软件Audiveris的数字化落地记录

一摞旧乐谱变可编辑MusicXML:免费开源软件Audiveris的数字化落地记录

一摞旧乐谱变可编辑MusicXML:免费开源软件Audiveris的数字化落地记录 【免费下载链接】audiveris Latest generation of Audiveris OMR engine 项目地址: https://gitcode.com/gh_mirrors/au/audiveris Audiveris 是一款免费开源的光学音乐识别(O…

2026/8/18 13:23:00
为什么我卸载了米哈游官方启动器?Starward的5个实用理由

为什么我卸载了米哈游官方启动器?Starward的5个实用理由

为什么我卸载了米哈游官方启动器?Starward的5个实用理由 【免费下载链接】Starward Game Launcher for miHoYo - 米家游戏启动器 项目地址: https://gitcode.com/gh_mirrors/st/Starward 电脑桌面右下角长期躺着三枚游戏图标——原神、星穹铁道、绝区零各自的…

2026/8/18 13:22:59
你以为失去的B站缓存视频,还能这样找回来:m4s转MP4轻松完整指南

你以为失去的B站缓存视频,还能这样找回来:m4s转MP4轻松完整指南

你以为失去的B站缓存视频,还能这样找回来:m4s转MP4轻松完整指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 那天晚上…

2026/8/18 13:17:59