You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用s2anet输出的bounding box统计穿越指定线的车辆数量

Car_Detections

问题结论

完全可以直接基于你已经训练好的S2ANet输出的bounding box实现过线车辆计数,不需要额外使用背景减法重新检测。
S2ANet本身就是针对航拍场景下的旋转目标检测设计的,对无人机视角的车辆检测精度已经足够适配需求;而背景减法容易受无人机视角晃动、光照变化、阴影、相邻车辆遮挡等因素干扰产生大量误检,反而会拉低计数的准确率。

具体实现思路
  • 第一步:先整理你导出的CSV检测数据,按视频帧序号从小到大排序,每帧对应所有检测到的车辆的bounding box坐标。如果是S2ANet输出的带角度的旋转框,直接计算旋转框的几何中心点坐标即可;如果是转换后的水平框,取水平框上下左右边界的中点作为车辆的代表点即可。
  • 第二步:对车辆做跨帧ID匹配,简单场景直接用IOU匹配即可:相邻两帧中,两个车辆框的IOU大于设定阈值(通常设置为0.4~0.6即可),就判定为同一辆车,继承上一帧的唯一ID;新出现的、没有匹配到上一帧ID的框,分配新的唯一ID。如果场景中车辆移动速度快、存在漏检情况,可以搭配卡尔曼滤波预测车辆轨迹,提升匹配准确率。
  • 第三步:定义过线判定规则,你给出的统计线段是x=766,y坐标范围为[642,676]的竖直线段,你可以根据自己的需求定义过线方向:比如车辆中心点从x<766的区域移动到x>766的区域算正向过线,反之算反向过线,可选择统计单向或双向的过线总量。你可以用以下简单逻辑判断点在直线的哪一侧:
    # 竖直线x=766的位置判定,返回值0代表左侧,1代表右侧
    def judge_line_side(point_x: float) -> int:
        return 0 if point_x < 766 else 1
    
  • 第四步:增加去重判定逻辑,只有同时满足两个条件才判定为有效过线:1. 同一ID的车辆中心点相邻两帧分别位于统计线段的两侧,即发生跨线;2. 跨线时点的y坐标落在[642,676]的区间内。每个ID的车辆仅计数一次,避免车辆在边界处晃动导致重复计数。

内容的提问来源于stack exchange,提问作者Mixalis Michalas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:39:03