目标检测跟踪 python教程 目标检测与跟踪方法_反向投影

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_02

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_03

 

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_04

 

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_05

 

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_06


 

三、相关方法-Part Two

1、目标跟踪相关方法

(1)生成式方法

生成式模型通常寻找与目标(待跟踪目标)最相似的候选作为跟踪结果,这一过程可以视为模板匹配。
在目标跟踪早期,主要是各种生成式方法,生成式方法都采用不训练、在线更新的方法,而且都是在CPU上进行计算,模型的速度很快,最快的可以达到2000+FPS。

(2)判别式方法

判别式模型通过训练一个分类器去区分目标与背景,选择置信度最高的候选样本作为预测结果。
从最近几年的论文和相关竞赛中可以看出,判别式方法基本已经“一统天下”,现在的目标跟踪是相关滤波和深度学习的时代。

2、生成式方法主要包括均值漂移、卡尔曼滤波、粒子滤波和稀疏编码。

判别式方法主要包括相关滤波、深度学习和深度学习+相关滤波。

3、均值漂移——Mean Shift

CVPR 2000:Real-Time Tracking of Non-Rigid Objects Using Mean Shift.

Mean Shift是早期的目标跟踪算法,是一种基于概率密度分布的跟踪方法,使目标的搜索一直沿着概率梯度上升的方向,迭代收敛到概率密度分布的局部峰值上。首先,Mean Shift会对目标进行建模,比如利用目标的颜色分布来描述目标,然后计算目标在下一帧图像上的概率分布,从而迭代得到局部最密集的区域。

它的关键部分和它的名字一样,就这两个部分,分别是mean(求质心)和shift(向质心方向移动)。

RGB对光照的变化比较敏感,相比之下HSV空间(色调H、饱和度S、亮度V)更适合做目标跟踪。

Mean Shift能应用到目标跟踪领域,是因为反向投影图。

什么是反向投影图?反向投影图的每个像素值体现了该像素属于被跟踪目标的概率。

如何计算反向投影图?

a、统计目标box区域内H(色调)分量的直方图,横坐标是色调变量(

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_07

),纵坐标是该色调值下的像素个数,最后再对其进行归一化,使得该直方图成为概率直方图。

b、将下一帧图片的所有像素从RGB空间映射到HSV空间。

c、将第二步得到的HSV图转换为反向投影图。比如(x=1,y=1)位置的H分量是

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_08

,那么就将该位置的值替换为第1步中概率直方图中

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_09

对应的概率。

根据初始目标box的大小和位置确定搜索窗口的大小和位置。

a、Mean.加权平均法计算搜索窗口的质心。

b、Shift.将质心作为新的搜索窗口中心。

c、Iter.重复a和b直至质心的位置收敛。

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_10

4、均值漂移——Cam Shift

WACV 2002:Real Time Face and Object Tracking as a Component of a Perceptual User Interface.

 Cam Shift,即Continuously Adaptive Mean-Shift算法(连续自适应的Mean-Shift)

Mean Shift在目标跟踪的过程中在每一帧中得到的目标box的大小一直不变,对目标的尺度变化不具有鲁棒性,Cam Shift由此应运而生,它可以产生自适应大小的目标box。

我们假设在连续两帧中跟踪目标的大小和位置都不相同。第一帧的目标box的大小和位置已知,我们可以根据Mean Shift计算出第二帧中目标box的位置。这里我们采用大小相同的目标box,而是使用第一帧中大小和位置的信息计算一个二阶矩,由于不变矩的存在,利用第一帧的二阶矩和第二帧中的位置信息可以推算出第二帧中目标box的大小信息。

5、均值漂移——总结

优点:算法复杂度小;是无参数算法,易于与其它算法集成;采用加权直方图建模,对目标小角度旋转、轻微变形和部分遮挡不敏感等。

缺点:目标的运动不能过快。

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_11


目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_12

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_13

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_14

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_15

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_16

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_17

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_18

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_19

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_20

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_21

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_22

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_23

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_24

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_25

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_26

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_27

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_28

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_29

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_30

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_31

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_32

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_33

 

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_34

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_35

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_36

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_37

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_38

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_39

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_40

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_41

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_42

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_43

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_44

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_45

目标检测跟踪 python教程 目标检测与跟踪方法_目标检测跟踪 python教程_46

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_47

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_48

目标检测跟踪 python教程 目标检测与跟踪方法_反向投影_49

目标检测跟踪 python教程 目标检测与跟踪方法_直方图_50

目标检测跟踪 python教程 目标检测与跟踪方法_目标跟踪_51