目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军)

文章链接:https://arxiv.org/pdf/1608.07242.pdf

文章是2016年8月放到arvix上的,看格式应该是投到CVPR2017了,Korea的POSTECH这个团队做的,之前比较有名的还有MDNet和CNN-SVM,相信大家应该不陌生哈。

这篇文章的简称是TCNN(树结构的CNN),是VOT2016的冠军,效果很棒,想法也蛮有新意,下面听我一一道来。

1. Motivations

这篇文章最重要的出发点是Model的可靠性问题(reliability),大部分现有的trackers默认Model是可靠的,就是说模型一直随着目标的变化而稳定变化,这样就有一个问题,当目标被遮挡,或者说在跟丢了情况下,再更新的模型其实已经被污染了,可靠性很低,其实是不能用这样的模型进行后续的跟踪的。

TCNN用了很多个CNN的模型,并构建成一棵树的结构,如图1所示,红色的框越粗说明对应的CNN模型的可靠性(reliability)越高。连接的红色的线越粗,说明两个CNN之间的相关性越高(affinity)。黑色的箭头越粗表示对应的CNN模型对目标估计的权重越高。TCNN还对每一个CNN模型进行了可靠性评估。下面来看看具体是怎么做的。

图1:树形结构示意

2. TCNN Algorithm

2.1 CNN网络结构

每个CNN的网络结构是一样的,前面的卷积层的参数共享,是来自于事先用imageNet训练好的VGG-M网络,后面的全连接层是作者自己设计加上的,在第一帧的时候随机初始化并进行迭代训练,后面每次更新的时候都只更新全连接层的参数。图2是网络结构示意图。

图2:网络结构示意图

由于一棵树里每次的active set(定义为最近更新的10个网络)有很多个CNN,那么怎样让计算过程或者说特征提取过程简化一些?每次在detection的时候采样好几百个candidates,每个candidate都要提取特征,这个计算量可想而知。

这里作者是这样做的,对每一个candidate,在用一个CNN提取特征时,前面的卷积层的特征conv3是共享的,每个节点上的CNN其实只需要保存全连接层即可,也即conv3的特征的提取只需要进行一次,所有的CNN都用同样的conv3的特征,不同的是他们的全连接层。

另外,在确定了目标之后,需要将这个目标保存为训练样本,也只需要保存这个conv3特征即可,不需要再重复计算一次。

网络的训练:第一帧以0.001的学习率迭代50次,之后每次更新以学习率0.003迭代10次,用标准的随机梯度下降(SGD)和softmax交叉熵损失。

2.2 树的结构

树用:表示。其中V是顶点集,后者是边的集合。

每个顶点v:包含的信息有对应的CNNv,和帧集Fv。

每条边edge的得分:用这个分数来衡量边。

2.3 目标查找(target state estimation)

目标候选框生成:以上一帧的位置为中心,在(x,y,s)空间由多变量正态分布生成256个候选框,s是尺度scale。

对这些candidates:

计算他们是否为目标的得分:

那么目标就确定为:

现在需要确定(2)式中的权重系数,就是图一中黑色箭头所代表的量。这个权重从两个量来定义,第一个是:

表示的是CNNv和目标的相关性(affinity),用CNNv对所有的candidates的最大分类得分来衡量。第二个是:

表示的是CNNv这个网络模型自身的可靠性(reliability)。取得是当前的CNNv与他的父节点相连的边的得分与父节点的reliability中小的那一个。最后的CNNv对于t时刻的candidate的权重是这样定义的:

这里(3)式确定的位置还要做一次bounding box regression之后才得到这一帧最终的位置。

2.4 整体模型更新(model update)

采用的策略是每做10次的tracking,创建一个新的CNNn节点。选择这个新的节点的父节点的方式:

即选择能够使新节点的可靠性最高的节点作为其父节点。这过去的10帧就是新节点对应的帧集Fn。以选择的父节点CNNpv为起点,用其自己的帧集Fn和它的父节点的帧集Fpv对CNNpv的全连接层进行fine-tuning,最后得到的就是CNNn。

每次做tracking的时候保持一个active set,里面是10个最新更新的CNN模型,用这个active set来做跟踪。

3. Experiment

速度是1.5FPS。

首先在OTB50上做了自己的对比实验:

可以看到是使用树的结构,并用加权检测而不是简单平均或者用最大权重的来做检测,都对结果是有贡献的。

最后TCNN的实验结果:

(1)OTB50:

(2)OTB100:

(3)VOT2015:

从上面三个实验可以看到效果是非常好的。不过这个方法是在ECO之前的,所以没有与ECO进行比较,ECO的效果比其更好哈,可以看我的上一篇文章ECO。

总结一下效果好的原因:

(1) 使用了多个CNN模型进行检测(10个)

(2) 使用了树的结构来组织CNN模型,避免它们只对最近的帧过拟合

(3) CNN会一直有新的模型加进来,并且是经过fine-tuning的

(4)在确定最终的位置时还做了Bounding Box Regression,进一步提高定位准确性

原文:https://zhuanlan.zhihu.com/p/25312524

目标跟踪算法三:Modeling and Propagating CNNs in a Tree Structure for Visual Tracking (VOT2016冠军)相关推荐

  1. 2017目标跟踪算法综述

    转自  https://www.zhihu.com/question/26493945 作者:YaqiLYU 链接:https://www.zhihu.com/question/26493945/an ...

  2. 2016年之前目标跟踪算法总结

    作者:YaqiLYU 链接:https://www.zhihu.com/question/26493945/answer/156025576 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权, ...

  3. 2018目标跟踪算法综述

    转自  https://www.zhihu.com/question/26493945 作者:YaqiLYU 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 相信很多来这里的人和 ...

  4. 计算机视觉中,目前有哪些经典的目标跟踪算法

    首先来一个跟踪算法的大杂烩: VOT2016 Trackers repository 以下是转载内容 ------------------------------------------------- ...

  5. 计算机视觉中,目标跟踪算法的综述

    作者:YaqiLYU 链接:https://www.zhihu.com/question/26493945/answer/156025576 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权, ...

  6. 目标跟踪算法的分类(三)

    原文: http://www.360doc.com/content/16/0315/10/25664332_542332518.shtml 目标跟踪的任务是获得目标在连续图像序列中位置随时间变化的轨迹 ...

  7. 目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking

    目标跟踪算法五:MDNet: Learning Multi-Domain Convolutional Neural Networks for Visual Tracking 原文:https://zh ...

  8. 基于MeanShift的目标跟踪算法及实现

    from: http://blog.csdn.net/jinshengtao/article/details/30258833 一.简介 首先扯扯无参密度估计理论,无参密度估计也叫做非参数估计,属于数 ...

  9. 基于MeanShift的目标跟踪算法及实现(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/jinshengtao/article/details/30258833 这次将介绍基于MeanShi ...

最新文章

  1. String、StringBuilder、StringBuffer的比较
  2. oracle怎么查别的库,ORACLE_SID、实例名和数据库名的区别及查看方法
  3. ecshop 首页添加某个分类下面的商品
  4. fvdm 跟驰模型 matlab仿真_【新书推荐】【2009.01】控制系统MATLAB计算及仿真(第3版)(黄忠霖)...
  5. 哪些钱借了可以不还?
  6. 【EasyNetQ】- 使用Future Publish调度事件
  7. python协成_Python协程技术的演进
  8. Build the initrd image
  9. 2017.10.31笔记
  10. ansible+ssh自动化运维
  11. 【模拟信号】基于matlab调相信号产生+解调【含Matlab源码 987期】
  12. Java程序员必看的 14 本 Java 书籍!
  13. 京东商城java笔试_京东java笔试
  14. SBC音频编解码算法浅析
  15. Openwrt Web gui LUCI 流程浅析
  16. 神经网络预测结果分析,神经网络预测适用范围
  17. h5 使用canvas实现电子签名和图片的保存
  18. Java同步锁Synchronized底层源码和原理剖析
  19. 量子计算机与人脑接口,科技是把双刃剑,“脑机接口”的利与弊,让人细思极恐...
  20. mtk设备模型之LCM--学习

热门文章

  1. java模拟银行存取_JAVA基础案例 模拟银行存取款业务
  2. mysql session变量_mysql 系统变量和session变量
  3. linux显示进程的h开头的,Linux上进程的开始时间
  4. python回文链表_leetcode链表之回文链表
  5. arm ida 伪代码 安卓 符号表_IDA调试界面介绍及快捷键
  6. mysql 写 性能,MySQL在大型,只写表上的性能
  7. ps怎么更改背景图层大小_PS软件零基础抠图教程,教你PS滤镜抠图技巧和方法
  8. 如果给你500万,让你朝对象腿上开一枪,你愿意吗?
  9. 据说这是中途接手别人项目时的场景
  10. Spring Boot 配置中的敏感信息如何保护?