【论文阅读】TCNN目标跟踪详解

论文:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking(CVPR2017)
这篇论文是VOT2016的亚军,是由韩国POSTECH大学的Hyeonseob这个组做的,这个组之前提出了MDnet,CNN-SVM算法。

Abstract

这篇文章通过在树形结构中管理多个目标外观模型来呈现在线视觉跟踪算法。所提出的算法使用卷积神经网络(CNN)来表示目标外观,其中多个CNN协作以估计目标状态并确定树中在线模型更新的期望路径。通过在树形结构的不同分支中维护多个CNN,可以方便地处理目标外观中的多模态,并通过沿树路径的平滑更新来保持模型可靠性。由于多个CNN共享卷积层中的所有参数,因此通过节省存储空间和避免冗余网络评估,它利用了多个模型而几乎没有额外成本。通过对前一帧中的状态周围的目标候选者进行采样并根据来自一组活动CNN的加权平均分数来识别最佳样本来估计最终目标状态。与具有挑战性的数据集(如在线跟踪基准和视觉对象跟踪挑战)中的最先进技术相比,我们的算法表现出了出色的性能。

Introduction

当前目标跟踪可分为生成式方法和判别式方法,生成式方法就是使用目标在当前帧上寻找匹配的区域,判别式方法是一个分类方法,就是区分前景和背景。以往的文章假设目标在两帧之间的变化不大,但是这种假设明显是有漏洞的,难处理遮挡、光线变化、突然的运动和变形等。
所以这篇文章使用多个CNN来表示目标的多种外观模型,然后对于每个候选框x,将其利用每个CNN算出来的值加权平均得到x的score而score最高的就是当前帧的target。

Contribution
1、我们提出了一种视觉跟踪算法,用于在树结构中基于CNN管理目标外观模型,其中模型沿树中的路径在线更新。 该策略使我们能够通过平滑更新来学习更多持久模型。
2、我们的跟踪算法采用多种模型来捕获不同的目标外观,并且即使遇到诸如外观变化,遮挡和临时跟踪故障等挑战,也能执行更强大的跟踪。
3、所提出的算法在标准跟踪基准中具有出色的准确性,并且通过大幅度优于最先进的方法。

Algorithm Overview

1、这篇论文使用多个CNN用树形结构组合起来,一起对新的一帧进行目标检测,检测分数最高的proposal就是选中的target;
2、当一个新的帧进来时,根据上一帧的跟踪结果生成256个候选框,对每个候选框都使用目前的CNN树来计算自己的score,score最高的就是选中的target;
3、在在线跟踪过程中,每十帧添加一个新的CNN节点,并删除最前的一个节点,只保留最近的十个CNN节点,这样就做到了模型更新。
【论文阅读】TCNN目标跟踪详解_第1张图片

Proposed Algorithm

4.1 CNN结构

这篇文章中的每个CNN结构都一样,3conv+3fc层,其中卷积层参数直接VGG-M在ImageNet上预训练得到的,而全连接层参数是随机初始化的,网络的输出只有两个值,表示该候选框为前景和背景的概率。网络结构如下:
【论文阅读】TCNN目标跟踪详解_第2张图片

4.2 树构造

树的结构T = {V, S}, 树里面两个点v,u之间的距离(u,v)∈ S表示两个CNN之间的关系,S的长度以下定义:
在这里插入图片描述
其中 F v F_v Fv表示用来训练v的视频帧, x t ∗ x^{*}_t xt表示帧t中估计的target, φ u ( ⋅ ) φ_u (·) φu()表示在u中 x t ∗ x^{*}_t xt的positive score。

4.3 Target State估计

x t 1 , x t 2 , . . . , x t n x^{1}_t,x^{2}_t,...,x^{n}_t xt1,xt2,...,xtn 表示第t帧中的N个候选框,在当前的十个CNN中计算,得到每个 x t i x^{i}_t xti的score H ( x t i ) H(x^{i}_t) H(xti),由下式计算:
在这里插入图片描述
其中 w v t w_{vt} wvt表示节点v在第t帧上的权重。最终选到的target为使得 H ( x t i ) H(x^{i}_t) H(xti)最大的候选框:
在这里插入图片描述

其中 w v t w_{vt} wvt的确定由两个部分组成:
1)使用v预当前帧的关系:
在这里插入图片描述
其中 a v t a_{vt} avt表示在帧t中,使得候选框score最大的值。但是这样忽略了这个CNN的可靠性问题,如果一个CNN错了,则会结果造成很大的影响,所以引出了以下方法。

2)根据CNN的可靠度:
沿着CNN更新路径计算各节点的可靠度,每个CNN 的可靠度用 β v \beta_v βv表示,每个 β v \beta_v βv使用瓶颈边的score(bottleneck edge),每个 β v \beta_v βv从祖先节点中递归计算出来,而不是遍历整个路径(这边大概就是一个记忆化搜索的过程)公式如下:
在这里插入图片描述
其中 p v p_v pv是表示父节点。

根据以上两个策略,权重值 w v t w_{vt} wvt用以下公式计算出来:
在这里插入图片描述

Note that both α v→t and β v are the scores evaluated on CNNs, and taking the 
minimum value out of two bottleneck similarities determines the weight of a new 
CNN associated with frame t when it is updated from CNN in vertex v.

4.4 Bounding Box回归

这里只使用第一帧训练bbox回归,回归方式和RCNN一样。

4.5 模型更新

因为跟踪问题需要在线更新的过程,这边每隔十帧就更新一次模型。在更新过程中,就是在CNN树中添加一个新节点z,再删除最久的一个节点过程。其中z的确定使用其父节点网络初始化z,那父节点怎么确定呢?
遍历所有节点,假设其是z的父节点,选择使得 p z p_z pz最大的节点作为z的父节点:
在这里插入图片描述
选中之后,使用 F z F_z Fz F p z F_{p_z} Fpz训练z,得到z的参数。其中 F z F_z Fz表示用来训练z的视频帧, F p z F_{p_z} Fpz表示用来训练 p z p_z pz的视频帧。在CNN的树形结构一直只有10个节点

4.6 实现细节

在存储时,他们对于每个CNN只存其全连接层的参数,前面三个卷积层是每个CNN共享的,且卷积层参数是用ImageNet预训练的。训练数据对于每个帧取50个正样本和200个负样本,对每个样本,只需存下其conv3的特征。
具体实现细节请参考论文。

Experiment

【论文阅读】TCNN目标跟踪详解_第3张图片
【论文阅读】TCNN目标跟踪详解_第4张图片
【论文阅读】TCNN目标跟踪详解_第5张图片
【论文阅读】TCNN目标跟踪详解_第6张图片
【论文阅读】TCNN目标跟踪详解_第7张图片

Conclusion

我们提出了一种基于树状结构中维护的多个CNN的新型跟踪算法,有助于实现目标外观的多模态和可靠性。 通过计算来自多个CNN的分数的加权平均来执行目标的状态估计。 每个CNN对目标状态估计和在线模型更新的贡献也通过利用树结构来确定。 由于卷积层中的参数共享,使用多个CNN不需要大量增加存储器和计算。 我们的跟踪算法在OTB和VOT2015基准测试中均优于最先进的技术

这篇文章的树形结构只是为了模型更新和各个CNN节点之间的权重计算,在跟踪的时候,每个节点都要在该候选框上运行,再将输出的值加权得到每个该候选框的score

优点:

1、使用树形的结构结合多个CNN表示模型的多种外观,可以适应目标的多种变换,避免了只对最近的帧过拟合;
2、有模型更新的过程;
3、这篇论文分析了自己的缺点,也分析了每个模块起作用的原因。

缺点

1、需要对每个帧做多次树形判断,因为一次只是生成一个候选框的score;
2、比较耗时,而且很多特征需要储存,浪费空间。
3、候选框是根据上一帧的位置确定的,无法处理一些reappear问题;
4、etc。。(有待发现)

你可能感兴趣的:(【论文阅读】TCNN目标跟踪详解)