One:
1、Tensorflow和Pytorch有哪些区别?
答:
1)Pytorch 是采用的动态图机制(可以进行修改),TensorFlow采用的是静态图机制(不能进行修改);
2)TensorFlow存在着大量的API,Pytorch相反API很简洁;
3)Pytorch因为简单易上手,在学术界超越了TensorFlow;但是在工业界更加注重部署,因此TensorFlow并没有被淘汰;
4)Pytorch在建立前向计算图、传入变量数据、求梯度上更加简便
2、卡尔曼滤波在DeepSort中怎么实现的?
-
首先,卡尔曼滤波怎么DeepSort中是自己写的。卡尔曼滤波有两大核心模块,一个是预测模块,一个是更新模块,这两个模块均是预测的状态值(均值和协方差)。
-
在DeepSort中,YOLO检测的结果是作为卡尔曼滤波的传感器测量值。由于观测的结果和预测的结果必然存在着误差,因此我们考虑将这两个结果结合起来。
-
卡尔曼预测的均值是通过矩阵A进行计算的,其中在跟踪任务中,矩阵B并没有被考虑。
-
预测的方差是通过公式推导出来的,又由于协方差存在着噪音,当数据越大时,噪音越大,因此预测公式中的Q是与均值x相关的,从代码中也可以看出来,当预测每一帧的状态时,都会利用测量(YOLO)的结果去更新Q。
-
YOLO检测的结果是在观测空间的,而卡尔曼预测的结果是在状态空间。如何将这两个空间的高斯分布相乘,因此采用了映射矩阵(dim,2*dim),这个矩阵将状态空间的分布转移到观测空间。
-
其中观测空间也存在着误差,因此也会存在这协方差矩阵R。
-
我们已知,两个高斯分布相乘,结果仍为高斯分布,因此就可以得到另一个高斯分布,其均值和方差如下所示。因此我们将预测的高斯分布和观测的高斯分布所对应的均值和协方差带入到公式,我们就可以得到更新的结果公式。
以上的整个过程,一方面是通过1-k-1帧的先验知识和数学模型,预测得到第k帧的状态(均值和协方差),另一方面利用观测值(YOLO)直接获取第k帧的状态(均值和协方差),我们通过映射矩阵将状态空间的结果映射到观测空间,再对两个相乘的高斯分布计算新的状态(均值和方差)。DeepSort中的卡尔曼的具体流程如下图所示,在DeepSort中,是利用python中的numpy实现了矩阵分解和矩阵相乘。