深度学习一个重要的作用是实现目标的特征实现自动提取过程,传统的meanshift跟踪常用的有颜色直方图,HOG等边缘特征提取目标实现跟踪,则meanshift跟踪可实现的则是用深度学习自动学习的特征来完成跟踪。好处是对于复杂的情况也能很好的提取目标的特征,使得跟踪的鲁棒性和精度更高。
很多人担心的是实时性的问题,其实来说,深度学习完成的过程主要分成两部,预训练预测,预训练完全可以通过离线训练来完成,那么就可以不用考虑这部分时间。而预测部分消耗的时间相对HOG来说,稍微慢一点(实践)。那么对于实际应用就有其作用。
过程主要是先用标定的方法标定目标为正样本,背景负样本。然后通过patches训练,其中我们利用的是按照像素点来进行训练。以每个像素点为中心,包围的周围的几个像素,这样形成的矩阵框为patches。训练完成的网络保存起来,当下一帧图片到来时则进行预测可以得到目标的置信图。而深度学习主要完成的就是通过训练好的网络得到每张图片的置信图。这部分也可以看做是检测的过程
meanshift跟踪的主要过程就是利用梯度攀升寻找局部最优。简单实践来说,就是寻找候选向量与目标向量之间最相似的特征向量,属于区域匹配问题。所以第一步得到目标的特征向量,这一步可以通过预测第一帧的图像,然后通过置信图中的最明亮区域结合画出来的矩形框确定目标向量,这一步可以改进的空间很大,主要表现在第一帧图像的不能准确表达目标的所有状态,若目标是动态的可形变的,那么这一步就不是完善的,因为后面的每一帧都要和目标向量进行匹配,跟踪过程可能就会产生误差。
改进的过程一方面可以增加另外的核函数,赋予目标不同的权重,这样目标的表达也更为准确,另一方面,可以再次利用直方图的信息来进行匹配,这样可以改变跟踪框,对目标的形变有一定的容忍性。 当然还可以用其他的函数来代替,比如用relu函数来量化,我采用的就是此种方法。效果来说一般。
利用直方图来说的话一般寻找峰值就是目标特征向量所在的区域。如果用核函数则方框中心区域的目标权重肯定比较大,所以可以考虑高斯核函数。(未实践)
另一个可以改进的地方就是相似函数,一般用巴士系数来表示目标与候选之间的相似程度,但是事实证明效果一般,可以考虑更有效的函数,尤其在应对遮挡,交叉运动等情况有所改善。有很多论文从这方面来改进。
最大的可改进的是利用meanshift在应对遮挡或者交叉运动阴影等条件不好的情况下,一般会有辅助的功能来实现,若是结合meanshift与其他的辅助功能,比如分块思想等,则肯定有更好的效果。
从结论上来看,目标的跟踪精度和成功度都有很大提高。实时性实际需要使用GPU肯定可以使用。