sort跟踪问答

https://github.com/abewley/sort/blob/bce9f0d1fc8fb5f45bf7084130248561a3d42f31/sort.py#L104

https://arxiv.org/pdf/1602.00763.pdf

https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python

https://nbviewer.jupyter.org/github/rlabbe/Kalman-and-Bayesian-Filters-in-Python/blob/master/08-Designing-Kalman-Filters.ipynb

https://www.bilibili.com/video/BV1hC4y1b7K7?from=search&seid=12896740732038936891 系列

https://zh.wikipedia.org/wiki/%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2

对于这种数学知识、公式描述比较多的代码,要搞懂他的公式,和代码,不要去推导公式,那样太花时间,而且没必要,而且过段时间就忘了。明白公式的意思,明白代码怎么和公式对应,怎么调用代码函数,就可以了。

1.KalmanBoxTracker初始化函数中如下代码如何解释?

    self.kf = KalmanFilter(dim_x=7, dim_z=4) 
    self.kf.F = np.array([[1,0,0,0,1,0,0],[0,1,0,0,0,1,0],[0,0,1,0,0,0,1],[0,0,0,1,0,0,0],  [0,0,0,0,1,0,0],[0,0,0,0,0,1,0],[0,0,0,0,0,0,1]])
    self.kf.H = np.array([[1,0,0,0,0,0,0],[0,1,0,0,0,0,0],[0,0,1,0,0,0,0],[0,0,0,1,0,0,0]])

    self.kf.R[2:,2:] *= 10.
    self.kf.P[4:,4:] *= 1000. #give high uncertainty to the unobservable initial velocities
    self.kf.P *= 10.
    self.kf.Q[-1,-1] *= 0.01
    self.kf.Q[4:,4:] *= 0.01

    self.kf.x[:4] = convert_bbox_to_z(bbox)

状态空间方程 (来自bilbili视频)

状态转移方程    x_k=Fx_{k-1}+Bu_{k-1}+w_{k-1}      w\sim ~P(0,Q)  这里离散形式,如果是连续形式,那么F变为A  sort里面B=0

观测、测量 方程 z_k=Hx_k+v_k    v\sim P(0,R)

先验估计   \hat{x}^-_k=A\hat{x}_{k-1}+Bu_{k-1}

先验误差协方差  P^-_k=FP_{k-1}F^T+Q

卡尔曼增益 K_k=\frac{P^-_kH^T}{HP^-_kH^T+R}

后验估计  \hat{x}_k=\hat{x}^-_k+k_k(z_k-H\hat{x}_k^-)

更新误差协方差  P_k=(I-K_kH)P^-_k

    #创建KalmanFilter类,设置隐状态x 是7维,设置观测变量z是4维
    self.kf = KalmanFilter(dim_x=7, dim_z=4) 
    #初始设置x_center位置为 上一时刻位置x_center加上x_center速度乘1 , y_center,面积s同理,比例r、x_center变化速度、y_center变化速度、s面积变化速度 直接等赋值,即不变
    self.kf.F = np.array([[1,0,0,0,1,0,0],[0,1,0,0,0,1,0],[0,0,1,0,0,0,1],[0,0,0,1,0,0,0],  [0,0,0,0,1,0,0],[0,0,0,0,0,1,0],[0,0,0,0,0,0,1]])
    #初始观测矩阵,x_center,y_center, 面积size, 比例r 直接等于
    self.kf.H = np.array([[1,0,0,0,0,0,0],[0,1,0,0,0,0,0],[0,0,1,0,0,0,0],[0,0,0,1,0,0,0]])
    #观测协方差矩阵R,是观测变量x_center, y_center, 面积s, 比例r 的协方差矩阵 
    self.kf.R[2:,2:] *= 10.
    #P是隐状态x向量的协方差矩阵,对x_center变化速度、y_center变化速度、s面积变化速度 设置更高的相关性
    self.kf.P[4:,4:] *= 1000. #give high uncertainty to the unobservable initial velocities
    #隐状态协方差矩阵,整体乘10
    self.kf.P *= 10.
    #每个隐状态过程噪音,的协方差Q, 认为面积变化噪音的方差很小
    self.kf.Q[-1,-1] *= 0.01
    #认为x_center变化速度、y_center变化速度、s面积变化速度 的噪音,相关性很小
    self.kf.Q[4:,4:] *= 0.01
    #设置隐状态,x_center, y_center, 面积s, 宽高比例r  初始值。而x_center变化速度、y_center变化速度、s面积变化速度 初始值为0
    self.kf.x[:4] = convert_bbox_to_z(bbox)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值