深度学习之目标跟踪

一. 跟踪进展(Advances in Visual Tracking)

       作者在前面的机器学习文章中也讲到了 Tracking,感兴趣的童鞋可以 Review一下:机器学习实践系列之5 - 目标跟踪

       前面只是基于传统方法的跟踪,这一篇我们 Focus 在深度学习上。

       关注跟踪算法的进展,只需要 Follow VOT Challenge 就可以了,Visual Object Tracking大餐全在这里咯。闲话少说,上图(盗用了 mengmeng wang ppt上的图):

     深度学习之目标跟踪

二. 引入CNN

       CNN在分类、检测领域火的一塌糊涂的时候,目标跟踪貌似并未找到感觉,原因是显而易见的:

1)由于跟踪的特殊性,无法有效区分正负样本,只有当前跟踪的目标是正样本,其余Crop均为副样本,下一个时候可能又会不同,这种特殊性导致很难训练;

2)跟踪需要在一个视频序列中变化,而这种变化又存在依赖和位置关系等信息,很难转换成一个分类问题;

       虽然如此,但人们相信 深度学习必然能解决 Tracking的问题,而大量数据也应该在 Tracking 领域发挥其价值。


三. Multi-Domain Network (MDNet)

       这是一篇经典文献,提出一个 共享层(Shared Layers) + 多目标分支网络(Domain-specific Layers) 来实现目标跟踪。

       论文下载:Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

       MD-Net 实现的跟踪,实际上是 通过在上一帧目标周围进行Candidate采样,通过对候选目标分类,得到概率最大的一个作为目标,其实就是 Tracking by classification的思路。Multi-Domain 体现在训练过程,提高了共享部分的特征提取能力。

        深度学习之目标跟踪

       剖析一下网络组成:

1)Input

     网络输入是 107*107 的RGB图像(采集的Candidate)。

2)Shared Layers

     共享层包含3个卷积层+2个全连接层,共享层输出为 512 channel 的 Feature。

3)Domain-Specific Layers

     上图 FC6对应一个二分类的全连接层,通过 Softmax Crossentropy Loss 区分目标和背景。

     对应K个分支(即K个不同的视频),每次训练使用对应该视频的 一个分支。

     ● 训练过程:

1. 对整个NetWork,训练N次(文中N=100)

   1.1 对于每个 Branch网络 k( k=1...K ),do:

         训练一个 mini-batch, 选择32个正样本 和 96个负样本(负样本从1024个负样本中hard select得到),

         PS:网络很简单,借助多个分支,在对应多个视频数据集上交叉训练。

     ● 跟踪过程:

1. 对应每个待跟踪目标,建立一个 FC6 全连接层(记为 FC6-k,每个FC6 负责一个目标,前面网络多个目标共享);

    1.1. 对于输入每一帧图像,在该目标位置附近采样256个 Box 作为Candidates;

    1.2. 所有Candidate 归一化到 107*107尺寸,输入到训练好的 MD-Net 网络(shared + FC6-k);

    1.3. 网络输出是一个二维的向量(Box ID,目标概率),最终目标是概率值最高的Box;

2. 每隔一段时间,根据得到的正负样本(置信度较高的),进行网络更新;


       MDNet 的特点概括为:

1)引入CNN,通过分类实现跟踪;

2)通过在线 Fine-Tune来提升效果,有效应对目标形变;

3)采用 Hard negative mining 得到高质量的负样本;

4)Bounding box regression 策略,通过回归使得结果更加精确;


四. 公共数据集

       Object Tracking Benchmark

       VOT: 【2014】【2015】【2016