一. 简介
选择这篇文章的原因在于能实现 100帧的效果,对于跟踪来讲,大多数应用场景需要实时跟踪,应该说仅仅实时跟踪还不够,还需要计算资源来做 视频解码、检测、比对 等多个工作。
这篇文章 2016年来自 Stanford 大学的 David Held,通过 CNN直接回归的方式得到目标位置。
论文下载:Learning to Track at 100 FPS with Deep Regression Networks
代码下载:【Github】
二. 算法框架
先来概括一下该方法的几个要点:
1)作者实现了一个完全 Offline 的 Training,忽略掉了在线学习(online learning)过程,不需要 FineTuning,帧率因此能达到 100FPS;
PS:在线学习 通常效率较低,而且无法有效利用大量的离线数据。
2)与基于分类的方法不同,直接通过一个 前馈网络(feed-forward)回归到目标对象位置;
PS:让我想起了 3000FPS,直接回归貌似都很暴力的解决问题,呵呵的大数据时代。
看上面的跟踪框架:
a)下面是要跟踪的 target目标,在目标周围 添加了 padding-目的是让网络学习到 目标周围的上下文信息。
Track object 大小是待跟踪目标的2倍。
b)以上一帧的跟踪目标为中心,截取同样是2倍目标大小的区域,作为 Search Region,在 Region区域内实现目标回归。
回归方法的假设是目标移动较慢,并且不存在较大遮挡。否则需要扩大 Search Region 或者考虑和 类似 TLD 的 online learning 方法结合。
3)建立的 Track框架,能够离线学习到 Appearance & Motion 的关系;
Tracker 框架基于 图像比对(image-comparison)的思路,通过 当前帧和上一帧 的 Target 对比实现 Tracking,比基于 Patch 分类的方法要高效的多。
输入是 上一帧的 Target 和当前帧的 Search Region,输出 是相对于 Search Region的目标位置(top left & bottom down)。
三. 数据训练
上节的网络结构可以分成以下几个部分:
1)卷积层 实现了图像的高层特征提取
当然上下两部分可能不太一样,上面部分可能是基于图像的完整表示,下面部分可能权值几种在中间目标位置,whatever。
Conv Layers 来自于CaffeNet,输出为 4096维向量。
2)全连接层 用于特征比较,实现位置回归
网络输出为 4个字段,对应 Box的Location,因此 FC 的功能 可能就隐含了 平移旋转、变形、光线、遮挡 等。
这部分由 3个 FC 层组成,包含 ReLU 和 Dropout。
3)Loss层
Loss层通过计算预测 Box 与 Ground Truth 之间的 L1 Loss 来描述。
基于视频的训练:
四. Data Augmentation
为了增加训练数据,防止过拟合,作者借助图像进行数据增广,通过将图像目标进行 Crop & Scale,可以得到更加丰富的数据,当然大家也可以考虑加入颜色变化和 Warp 来进一步提升数据质量,这里不再多说,看一下 Augment得到的仿真数据:
关于目标位置,给了一个拉普拉斯变换,对于Tracker的贡献 比 高斯变换 还要好,可能大家都看到了这个公式:
用来估算新的Center位置,通过随机的 Crops 来模拟小范围 Motion,详细的介绍可以参考论文。
五. 实验效果
算法通过 Caffe 来实现,超参数的设置也与 CaffeNet 一致,看和其它方法的对比:
总结:
算法虽然效率很高,也借助 Data Augmentation 提升效果,但仍然在 Accuracy 上和经典算法有差距,结合 online learning 肯定是无法回避的。