视频目标跟踪的个人理解

先说下目标跟踪和目标检测的区别:

1、目标跟踪可以利用之前帧目标的信息预测下一帧目标的位置,目标检测在每一帧都要从头开始,所以目标跟踪比检测快。

2、目标跟踪是实例化的(针对某个特定的物体),而目标检测会把所有的物体都检测出来。

3、对于被遮挡的目标,目标检测很有可能检测不出来,而目标跟踪由于有前几帧提供的位置等信息,可以很容易的找到它的位置。

因此,对于目标跟踪来说,对实时要求很高,即速度一定要快,fps较低的算法即使精度等指标都特别好,也会黯然失色。目前端到端的CNN网络中,在跟踪过程中是不可能进行反向传播的,计算量太大。(还不如重新执行目标检测省事呢)

要跟踪的目标怎么设定:

(1)可以给出目标在第一帧的位置(x,y,w,h)

  (2) 在弹出的用户交互界面,用鼠标选择跟踪区域

目前,目标跟踪的问题:

1、在一下特殊情况下不够鲁棒:外观变形,光照变化,快速运动和运动模糊,背景相似干扰,可能会跟踪失败

2、跟踪的稳定性(这个以后肯定会被过多地关注),即标注的框不再有那么多的闪动

我的想法:当下一帧的Bounding box与上一帧的IOU(重叠覆盖区域)超过一个值,比如说0.95时,我们可以选择不更新Bounding box。但是这个又会影响跟踪的准确度,所以很矛盾。

  • 相关滤波:优点 -> 得益于循环矩阵假设和 FFT,计算速度非常快,较大 feature map 也能轻松应对;缺点 -> 循环矩阵假设造成了边界效应,检测范围受限;

  • 交叉相关:优点 -> 没有假设也没有边界效应,是实实在在的滑窗检测,有卷积高效实现速度可以接受;缺点:计算量高,仅适合较小 feature map。然后将很粗的 score map 双三次插值上采样,获得更精确稳定的目标位置

  • 在线更新:优点 -> 随时适应目标的变化,和背景信息的变化,对特征的要求较低,低层特征计算速度快分辨率高;缺点 -> 模型更新会累计误差,遮挡或失败时会学到背景,丢失后再也找不回来。

  • 在线不更新:优点 -> 不更新速度更快,跟踪目标永远不会被污染,long-term 特性非常优秀;缺点 -> 对特征的要求非常高,必须是表达能力足够强足够鲁棒的特征,通常高层特征计算速度慢、分辨率低。

  • 既然两种方法都有优缺点,我觉得可以结合在一起需要有一个指标来告诉我们何时更新目标模板,何时不更新。

  • 在线更新可以借用光流信息,对目标的特征模板进行更新(最好不要有后向传播)。而鲁棒的特征一般需要将不同层次的特征进行很好的融合(语义特征和底层富含位置信息的纹理特征)。

针对SiamFC 类算法的改进的思路:

1、优化CNN,采用轻量级(可参考更实用的MobileNet/SENet)CNN的计算量是一个跟踪速率慢的原因

2、在离线训练时,训练出鲁棒性更好的网络,可以改动损失函数,网络结构等

3、借用光流信息(可以得到一定的运动特征),可以对目标的特征模板进行更新,或者开个光流分支,也进行卷积相关运算。将最后得到的响应图融合。

4、延伸它的应用:比如在追踪行人时,更改一下网络。使它同时可以预测人体的姿态等(可用于人体交互)

5、残差学习可能会更容易


展开阅读全文

没有更多推荐了,返回首页