You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

9.7 KiB

AIDMonitor

基于检测信息构建的管道,实现目标监控,具体作用包括

  • 提供最优的重捕候选,实现长时跟踪器
  • 跟踪过程中判断变化情况,对主跟踪目标信息修正,增加鲁棒性
  • 对主跟踪目标周围目标监控,提前进行干扰预警,抵抗相似目标,增强感知能力

计算观测区

  • 计算方法观测区当前的计算方法是以跟踪目标的7倍宽高尺寸进行计算
  • 作用:观测区的作用是对该区域内部的目标进行监控处理,目的是加快算法处理速度

计算重捕区

  • 计算前提:只有在主跟踪目标丢失记忆时计算
  • 计算方法依据KCF跟踪的波门与观测区之间的回字形区域的距离结合目标自身的运动速度、图像帧频进行外扩最大限制的目标的15倍宽高
  • 作用:在跟踪丢失后的重捕是依据短时间相信预测周边,时间较长,预测出现偏差,扩大搜寻范围
  • 注意事项:重捕区域的位置是跟随主跟踪目标的预测点走,扩大的宽高需要限制边界,保证在图像内部

基于观测区添加监控管道信息

  • 说明:管道缓存历史帧信息帧数较少,且其中的特性有较多和监控功能无重叠,为了不增加管道当中的非通用属性,在本模块的内部构建了缓存队列,邻居目标信息是通过管道告警编号与管道之间建立一对一关系;为了对主跟踪目标与周围邻居目标进行监控,涉及数据结构将二者进行区分,本质上包括三类对象

    • 主跟踪目标的输出,其结果由 AIDMAINOBJ结构体管理
    //主跟踪目标结构体,单帧信息
    typedef struct FRMMAINOBJ_Tag
    {
        UINT32   unFrmId;                           //当前帧编号
        ANGLE32F afAngle;                           //目标方位角、俯仰角
        POINT32F pfCenPos;                          //区域的中心点坐标
        SIZE32F  snSize;                            //目标宽高
    }FRMMAINOBJ;
    
    //主跟踪目标与周围目标的关系结构体,仅统计观测区域范围内,代表一个周围目标的多帧信息
    typedef struct AIDMAINOBJ_Tag
    {
        BBOOL       bOccupy;                //表示被占用标记
        BBOOL       bMoved;                 //运动状态是否运动的(累计时序信息统计)
        UBYTE8      ubEnd;                  //队列尾
        UINT16      ubUpdatePoint;          //更新点,只有达到更新点才能更新数据
        SINT16      uAIDirection;           //受监控管道运动方向(累计时序信息统计)
        SINT32      nStatisticCnt;          //帧统计次数,每次更新到帧数组进行累加
        SINT32      nNoUpdateCnt;           //连续未更新帧计数(用来控制监控信息被删除)
        FLOAT32     f3sDisMove;             //目标在最近3s内的移动距离像素衡量
        ANGLE32F    f3sAglMove;             //目标在最近3s内的移动距离角度衡量
        ANGLE32F    afBornAgl;              //目标初始角度
        DOUBLE64    dColorHu[9];            //主跟踪目标的颜色特征(多帧)
        DOUBLE64    fReIDArray[512];        //主跟踪目标的ReID特征(多帧)
        FRMMAINOBJ  FrmRelation[AID_DEPTH_MAX];//建立主跟踪目标与周围目标关系(单帧)
    }AIDMAINOBJ;
    
    • AI识别管道的输出是与主跟踪目标为同一目标的识别管道视作为邻居目标其结果由 NEIBOR结构体管理
    • AI识别管道的输出与主跟踪目标不为同一目标的识别管道视作为邻居目标其结果由 NEIBOR结构体管理
    //邻居目标特征 + 邻居目标与主跟踪目标的关系结构体,单帧信息
    typedef struct pipeRelationship
    {
        BBOOL    bLost;                              //邻居目标当前状态是否在记忆
        UINT32   unFrmId;                            //当前帧编号
        ANGLE32F afAngle;                            //目标方位角、俯仰角
        POINT32F pfCenPos;                           //区域的中心点坐标
        SIZE32F  snSize;                             //目标宽高
        FLOAT32  fRelationIOU;                       //邻居目标与主跟踪目标的IOU
        FLOAT32  fCenDisXY;                          //邻居目标与主跟踪目标的中心距离
        DOUBLE64 dColorHu[9];                        //邻居目标的颜色特征(单帧)
        DOUBLE64 fReIDArray[512];                    //邻居目标的ReID特征(单帧)
    }LONGRELATION;
    
    //邻居目标特征 + 邻居目标与主跟踪目标的关系结构体,单帧信息
    typedef struct pipeShortRelationship
    {
        BBOOL    bLost;                              //邻居目标当前状态是否在记忆
        UINT32   unFrmId;                            //当前帧编号
        ANGLE32F afAngle;                            //目标方位角、俯仰角
        POINT32F pfCenPos;                           //区域的中心点坐标
        SIZE32F  snSize;                             //目标宽高
        FLOAT32  fRelationIOU;                       //邻居目标与主跟踪目标的IOU
        FLOAT32  fCenDisXY;                          //邻居目标与主跟踪目标的中心距离
    }SHORTRELATION;
    
    //邻居目标与主跟踪目标的关系结构体,仅统计观测区域范围内,代表一个周围目标的多帧信息
    typedef struct NEIBORTAR
    {
        BBOOL       bOccupy;                //表示被占用标记
        BBOOL       bMoved;                 //运动状态是否运动的(累计时序信息统计)
        BBOOL       bCreateBeforeLost;      //创建时机是否在主目标丢失前
        UBYTE8      ubShortEnd;             //队列尾(控制角度位置,实时刷新)
        UBYTE8      ubLongEnd;              //队列尾(控制角度位置,间隔刷新)
        UBYTE8      ubEndFeature;           //队列尾(控制特征)
        UBYTE8      ubIndex;                //在MASTERAIDMONITOR当中占据的索引
        UINT16      ubUpdatePoint;          //更新点,只有达到更新点才能更新数据
        SINT16      uAIDirection;           //受监控管道运动方向(累计时序信息统计)
        SINT32      nAlarmBatchID;          //管道告警编号
        SINT32      nRelationCnt;           //邻居目标与主跟踪目标建立关系的帧计数
        SINT32      nShortRecordCnt;         //帧统计次数,每次更新到帧数组进行累加(间隔刷新)
        SINT32      nLongRecordCnt;          //帧统计次数,每次更新到帧数组进行累加(间隔刷新)
        SINT32      nNoUpdateCnt;           //连续未更新帧计数(用来控制监控信息被删除)
        FLOAT32     fDisStart;              //开始距离,开始统计时的距离
        FLOAT32     f3sDisMove;             //目标在最近3s内的移动距离像素衡量
        ANGLE32F    f3sAglMove;             //目标在最近3s内的移动距离角度衡量
        ANGLE32F    afBornAgl;              //目标初始角度
    
        SHORTRELATION    ShortRelation[AID_DEPTH_MAX];//邻居目标实时存储信息数组,目的用于捕获变化(单帧)
        LONGRELATION     LongRelation[AID_DEPTH_MAX];//邻居目标间隔存储信息数组,目的用于寻求稳定(单帧)
    }NEIBOR;
    
  • 计算方法:获取当前所有的管道数组信息,对管道进行遍历,区分主跟踪目标和其他邻居目标进行监控队列目标的创建、信息更新、邻居目标的删除

    • 主跟踪目标的创建:首次记录的时候创建,记录帧编号、角度、位置、尺度,保存颜色特征模板
    • 主跟踪目标的更新:设置更新点,控制间隔更新,记录帧编号、角度、位置、尺度,颜色特征线性更新;计算轨迹与固定方位的夹角
    • 邻居目标的创建与更新跳过管道帧数不足10帧的目标计算当前管道与观测区的IOU,从监控队列当中查找是否存在记录;
      • 有IOU无记录将目标加入到监控队列标识是在主跟踪目标丢失前后创建计算与主跟踪目标的IOU记录长短时更新的位置、尺寸等信息计算颜色特征
      • 有IOU有记录对监控队列中的目标进行信息更新短时信息每帧更新长时信息依据更新点更新间隔更新颜色特征、轨迹夹角随长时监控记录计算
      • 无IOU有记录说明监控目标出了监控区进行删除
  • 目的:动态维护监控历史信息,未后续查找目标做准备

1 获取重捕候选

  • 目的:提供重捕候选,基于移动速度、移动方向、运动轨迹、颜色特征的相似度排除不相似的目标,提供有效的候选目标
  • 优势在传统算法或者Ai跟踪器无法提供候选的时候可以发挥重捕作用
  • 使用场景主跟踪丢失AIDMonitor模块输出候选

2 辅助主跟踪修正

  • 目的:在主跟踪目标正常跟踪过程中,使用识别的监控管道与主跟踪目标进行位置和尺寸校验,当偏离程度较大时,对主跟踪目标进行修正
  • 优势:可以借助于深度特征捕获到目标的变化
  • 缺点非常依赖AI识别结果包括识别的位置、尺寸连续性
  • 使用场景:需要对管道和主跟踪目标进行同一身份确认,依据连续的监控信息,计算得到位置和尺寸存在偏差
  • 注意事项特性区分度和稳定性不如AI跟踪器谨慎使用

3 抗相似目标干扰

  • 目的:感知相似目标的到来,避免同类干扰
  • 优势:监控范围广,可以在大范围区域实现监控
  • 使用场景:跟踪过程中有较为相似目标与主跟踪目标产生交集,主动避开模型更新