同步发于JuzerTech网站,里面有我软、硬件学习的纪录与科技产品开箱,欢迎进去观看。


Fully-Convolutional Siamese Networks for Object Tracking

此篇开启了采用孪生网路( Siamese Network ),处理追踪(Tracking) 问题的研究方向。

论文载点

作者 : Luca Bertinetto, Jack Valmadre, João F. Henriques, Andrea Vedaldi, Philip H. S. Torr

摘要 (Abstract)

对于追踪任意物体的任务之中,传统上时常采用该视频本身当作训练资料,单纯以线上的方式来学习物体表面特征。

尽管这个方法十分的成功,但线上学习的原理,大幅限制了模型能学习到的丰富程度。

近期有大量的研究尝试以 CNN ( Convolutional Neural Networks ) 来处理相关问题,然而被追踪的物体不能预先知道,所以仅能采用 SGD ( Stochastic Gradient Descent ) 以线上的方式来调整网络参数,大幅增加了系统的执行时间。

在本篇文章中,我们采用了全卷积孪生网路 ( Fully-Convolutional Siamese Networks ) ,透过 ILSVRC15 资料集,来训练物体追踪网络,我们的网络执行上比即时速度 ( real-time ) 还要快,尽管他如此简单,但在多个指标上仍达到了最佳的成绩。

1. Introduction

我们假设问题为,追踪视频中的任意物体,该物件会在第一帧 ( Frame ) 以矩形框标示。算法可能需要追踪任意的物体,但我们难以取得足够的任意物体资料来做为训练数据,训练特定的检测器。

多年来,大多数成功的算法,采用的是,提取自该视频本身的训练资料,于线上学习该物体的外观来达成的。这类演算法大多归功于 TLF, Struck, KCF 等出色的展示能力。然而从该视频提取训练资料的方式,明显只能训练出相对简易的模型。

虽然在计算机视觉领域,越来越多问题采用深度卷积网络来解决。但在物体追踪领域,因为训练资料的不足与运算的即时性,较难以训练出针对各别视频的物体追踪器。

近期有许多文章针对这个限制进行解决,它们采用预训练好相似任务的模型来执行。第一类为采用correlation filters 透过模型本身的表达能力来执行,缺点是无法完整利用端到端学习的特点;另一类为采用SGD 来调整网路,虽然能达到很好的效果但大幅限制了执行的速度。

作者们采用相似性比较来处理这个问题,透过一个全卷积的孪生网路,输入图片( search image )与被搜索物体 ( exemplar ) ,提取特征,并透过紧密又有效率的滑窗(sliding-window),执行互相关( cross-correlation ) ,定位被搜索物体的所在位置,这始得速度能有非常大的提升。

作者们断言,相似学习的做法,因为缺少大量的已标记资料,而长年被相对忽略。

事实上,直到最近可使用的资料集也仅只有几百个标记的视频。然而我们认为 ILSVRC 资料集的出现,让我们能训练这样的网路。此外透过同支视频来训练与测试物体追踪,是个被受争议的作法,近期已经被 VOT 协会所禁止。我们于 ImageNet Video domain 训练,并于 ALOV / OTB / VOT domain 进行测试。

2. Deep similarity learning for tracking

追踪任意物体的任务可以视为相似性任务来处理。

我们训练一个函数 f (z ,x) 来比较 z 与 x 之相似性, z 代表要被追踪的物体( examplar image ) , x 代表整张要被搜索的影像 ( candidate image ),如果两者相似即回传高的分数,反之则低的分数。

寻找位置的方式为,测试所有可能的位置,选择相似性分数最高的点。在实验中我们单纯采用最初选取的物体( examplar image ) 进行搜索。函数 f 为透过具有视频与物体轨迹的数据集进行训练。

在相似性领域中通常采用孪生网路 (siamese) 来进行处理,孪生网路透过相同的变换 φ 对两个数入进行一样的处理,并透过距离函数(相似性指标) g 来对两个输出进行结合,f (z, x) = g( φ(z), φ(x) )。孪生网路大量应用于人脸验证( face verification )、关键点描述学习( keypoint descriptor )、单次字元辨识等领域(one-shot character recognition)。

2.1全卷积孪生网路架构 ( Fully-convolutional Siamese architecture )

假设网络全部为转换结构 ( commutes with translation ),即为全卷积网络。

这个好处是我们可以采用更大的被搜索图像 ( candidate image ),不需要受到被追踪物体( examplar image )大小的限制,并会在最后,一次性计算所有网格的相似程度,最后会输出一个二维的分数图。

在追踪过程,我们会把被搜索图像放置于先前目标物的位子,并透过比较最大分数与中心图的距离,在乘上步辐( stride ) ,以求出每帧之间的位移。

最后一步的逐步互相关 ( cross-correlation ) ,与卷积的效果相同,故我们把追踪图像( examplar image ) ,当成卷积核,于被搜索图像上 ( candidate image ),进行卷积。

2.2训练大型搜索图像 ( Training with large search images )

作者们采用 Logistic loss,来训练判别器 ( discriminative ) , v 代表预测分数,y 代表标签 (label) 。

并逐点计算平均值

训练是采用SGD ( Stochastic Gradient Descent ) 来收敛网路。

被追踪物体与搜索图像取得方式,为撷取视频中距离 T 帧 ( frame ) 的两张图像,并以目标为中心点,不考虑物体的类别。并在不破坏图像比例的情况下对图像进行标准化( notmalization ),如果物体在中心点半径 R 内,我们即视他为正样本。

虽然全卷积网路,可以采用不同大小的,被追踪物体( examplar image ),但在此我们假设他的大小是统一的,之后也许可以放宽标准。

2.3 ImageNet Video for tracking

ILSVRC 2015 ( ImageNet Large Scale Visual Recognition Challenge ) 新加入了 ImageNet Video 数据集,当成一个在视频中侦测物体的挑战。挑战者需要分类与定位 30 个类别的动物与交通工具。训练集(Training Set) 、 验证集 ( Validation Set ) 共包含了接近 4500 支影片,总共有 100万帧标注好的影格。这数量与 VOT, ALOV, OTB 等数据集相比是非常惊人的。

我们认为ILSVRC将会引起追踪领域的注意,因为他拥有庞大的资料,与不同以往经典指标的背景与物件。

2.4 实际应用上的考量 ( Practival considerations )

a . 数据部分 ( Dataset curation )

在训练阶段,我们采用 127 x 127 大小的追踪图像( examplar image ),255 x 255 大小的被搜索图像 ( candidate image )。图像裁切方式为选取方框 ( w x h  ) ,并多选取四周一定范围的像素 p , p 的计算方式为 p = ( w + h ) / 4 ,在乘上一个比例参数,变成 A ( 127 x 127 或 255 x 255 ),公式如下。

图像都是离线撷取的,以防止在训练过程中,需要重新调整大小,在早期的版本中我们有采用一些策略,限制从影片提取的图像帧数,来做为训练数据。在本文中的实验皆是选取 ImageNet 中全部 4417 支影片( 超过200万个标记 ),进行训练。

b. 网路结构 ( Network architecture )

网路采用 Alex Net 中,卷积的部分,详细结构如下表所示,前面两层卷积后面都接了 Max pooling 。并且除了最后一个卷积层之外每一层结尾都加上了非线性的 ReLU 激活函数。在训练的过程中每一个线性层后面都接了一个 BN 层 ( Batch Normalization ) 。有一个重点是本网路皆未加 padding 因为 padding 违反了全卷积的概念。

c. 追踪演算法 ( Tracking algorithm )

作者们采用较单纯的演算法,不执行模型更新与纪录前面数帧图像 ( frame ),也没有搭配而外的特征,如光流 ( optical flow )、直方图 ( Color Histograms ),并且没有特别调整预测的外框 ( bounding box ),尽管如此,他仍取得了十分杰出的效果。

另外为了速度,作者们仅针对前一帧四倍大的区域进行搜索,并且采用余弦窗 ( Cosine Window ) 对于较大的位移进行抑制 。

3. 相关研究 ( Related work )

近期一些研究采用 RNN ( Recurrent Neural Networks ) ,来处理追踪问题。

如 Gan 等人,训练一个 RNN 网路,判别每一帧图像中目标物的绝对位置; Kahou 等人也是采用类似的方法,使用 differentiable attention mechanism 训练 RNN。很可惜的是,这些方法没有展示出,足以跟其他方法相比的效果,但他们开创了未来一个研究的方向。我们发现了一个有趣的共通点,我们的孪生网路可以解释为展开的 RNN 网路,在两倍的序列中训练与验证。

Denil 等人,采用粒子滤波器,透过学习好的距离测量标准,比较第一帧与后面的每一帧影像,但他们的做法与我们比较整个物体不太相同,是比较物体内一定的小范围而已。为了学习距离测量标准,他们训练了一个有限波兹曼机 ( RBM- Restricted Boltzmann Machine ) ,然后使用欧式距离 ( Euclidean distance ) ,在两格隐藏激活函数之间 。虽然波兹曼机是非监督是算法 ( unsupervised ) ,但他们仍建议,透过要检测对象中心的随机点训练。这方法需要在线学习,或是知道物体外观才能离线使用。除了 MNIST 数字外,此方法仅在人脸与行人追踪上得到验证。

虽然为每个视频,重新训练一个特定的网路模型是不太可行的,但不少研究采用了预训练网路,再进行微调的方式来达成。如 SO-DLT、MDNET,就是先离线训练一个类似任务的网路,在执行时透过 SGD 微调,这类的方法在执行上会比较慢。有个折衷的方式是同时结合网路与传统算法,如 DeepSRDCF、 FCNT 等,但因网路的维度过高,仍不能达到即时的速度。

跟我们同期,也有其他作者采用一对影像训练卷积网路 ( Conv net ),执行物体追踪的问题。 Held 等人,开发了 GOTURN 网路,透过卷积网路回归出矩形位置。优点是可以处理长宽比等问题,不需要详尽的评估,但需要大量的资料增强 ( Augmentation )。 Chen 等人,训练了 YCNN 网路,Y 指的是网路的形状,他们网路最后面,是全连接 (Fully connected) 的结构,这代表了他们的图形大小于训练时就指定了,不能任意变换。 Tao 等人推出了 SINT ( Siamese INstance search Tracker ) 网路 ,同样采用孪生网路的形式,但他们导入了光流 (Optical Flow) 与外框回归 (Bounding Box Regression) 等技术 ,以增加准确度,虽然采用了 ROI Pooling 等方式提高效率,但执行上仍只有 2 帧每秒的速度。

上述的方法 ( MD-Net、SINT、GOTURN ),皆是采用 ALOV、OTB、VOT 等训练网路,作者们在此篇文章中还验证了在不同的资料域训练,仍能达到好的结果。

4. 实验阶段 (Experiments)

4.1 Implementation details

Training : 网路采用 MatConvNet ,参数为高斯分布,透过 SGD 迭代更新参数。总共迭代 50 轮,每一轮使用 50000 对图像,每次使用 8 个一组的 mini-batches,学习率 ( Learning Rate ) 从 10-2 递减到 10-5。

Tracking : 整个流程尽量的简化, 最初的图像外观仅于第一次执行时计算。并透过双三次插值 (Bicubic interpolation) 上采样分数图,从 17x17 到 272 x 272,能取得较准确的定位。

对目标物进行五总尺度的搜寻1:025{-2,-1,0,1,2}

作者们有开源 SiameseFC 的代码,载点如下

SiameseFC tracker

作者们的电脑是 Intel Core I7-4790K 搭配 NVIDIA Titan X ,可以达到 86/58 帧 每秒 ( 3/5 scales )

4.2 Evaluation

实验分为五个尺度和三个尺度,分别称为SiamFC、SiamFC-3s。

4.3 The OTB-13 benchmark

OTB-13 考虑了不同域值得每帧准确度,透过预测范围与标签之间的 IoU ( Intersection-over-union ) 大小来计算域值。在 OTB-13 指标,作者们与 Staple、LCT、CCT、SCT4、DLSSVM_NU、DSST、KCFDP 等算法进行比较,比较结果如下图所示

4.4 The VOT benchmarks

VOT (Visual Object Tracking) 工具包,里面包含 356 支连续图像,其中有部分来自 ALOV、OTB 数据集,在测试的过程中如果追踪器追丢了,会在 5 帧后重新初始化。

VOT-14 : 作者们与参加  VOT-14 挑战中,前 10 名的追踪器进行比较,再而外加上 Staple 跟 GOTURN 两个发表于 CVPR 2016 跟 ECCV 2016 的文章。采用准确度 (accuracy)、稳定度 (robustness) 进行比较,准确度计算方式为平均的 IoU,稳定度则为总错误数,下图为比较图。

VOT-15 : 作者们与参加 VOT-15 的前 40 名追踪器进行比较,比较标准为预期平均重叠 (expected average overlap measure),意思为追丢后,没有重新初始化,情况下的 IoU 值,比较图如下所示。

4.5 Dataset size

下表为训练数据集的丰富程度,与他们所对应的准确度。可以看到越丰富的训练集能提升越高的准确度。

SiamFC 文章阅读相关推荐

  1. 如何估算文章阅读时长?

    简评:包括 Medium 在内的很多阅读类网站或 App 都有阅读时长的提示,那么这个数值是怎么来的呢? 早些时候,阅读类平台还在野蛮生长. Medium 的工程师写着代码的同时,也在阅读自家平台上的 ...

  2. .Net Discovery系列文章阅读索引--带你探索未知的.Net世界

    .Net Discovery系列文章是讲述.Net平台机制的文章,目前已有12篇,分别讲述了.Net垃圾收集.实时编译.字符串等部件的机制,现在推出1周年之际总结文章阅读索引,希望对大家有所帮助.   ...

  3. “云时代架构”经典文章阅读感想十二

    云时代架构"经典文章阅读感想十二 (牛逼的架构师是怎么炼成的?) 前几周阅读的三四十岁的大龄程序员,应该如何保持自己的职场竞争力?中提到如何在35岁左右可以实现掌握有核心竞争力.其中之一便是 ...

  4. 用户dsn保存位置‘_苹果iOS 13.6终于能保存文章阅读进度了 朋友都等秃了

    几天前,iOS 13.6 Beta 2和iPadOS 13.6 Beta 2发布,据外媒iPhoneHacks消息,苹果此次通过新软件更新对Apple News应用程序进行了改进,更新后的iOS 13 ...

  5. 阅读量PHP设计,zblogPHP如何修改文章阅读量

    很多网站访问量比较少,尤其是对于新站来说,有时发布的文章几天下来阅读量一直上不去,甚至还保留在个位数,这样看起来难免会有些尴尬,如何打破这种尴尬?zblogphp文章阅读量可以修改吗?答案是肯定的,修 ...

  6. python刷阅读_通过python+selenium3实现浏览器刷简书文章阅读量

    准备工作 下载python,本文以python3.6为例.python3.6下载地址:python3下载地址,选择合适的版本安装.安装成功后,打开命令提示符,在其中输入python,显示如下信息,则说 ...

  7. [html] 请实现一个文章阅读的进度条

    [html] 请实现一个文章阅读的进度条 chrome 浏览器中,通过document.documentElement.scrollTop获取页面滚过高度,通过document.documentEle ...

  8. “云时代架构”经典文章阅读感想十六

    云时代架构"经典文章阅读感想十六 (支付宝架构师眼中的高并发架构) 经过这一学期的阅读,看到最多的一个名词就是高并发. 高并发高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒 ...

  9. WordPress文章阅读量统计和显示(非插件, 刷新页面不累加)

    本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. WordPress文章阅读 ...

  10. Android--从零开始开发一款文章阅读APP

    代码地址如下: http://www.demodashi.com/demo/11212.html 前言 本案例已经开源!如果你想免费下载,可以访问我的Github,所有案例均在上面,只求给个star. ...

最新文章

  1. php和js中,utf-8编码转成base64编码
  2. Latex 设置文字大小
  3. selenium webdriver (12) -- 鼠标和键盘
  4. 【C++】 C++标准模板库(五)Stack
  5. xgboost 正则项_XGBoos算法背后的数学:尽可能简单地解释XGBoost算法背后的机制
  6. C#程序设计下,网易云课堂,计算机专业
  7. Appium+python自动化(十六)- ADB命令,知否知否,应是必知必会(超详解)
  8. 【Tensorflow】基础概念epoch,batch_size辨析
  9. java全世界各国城市地址解析
  10. SAP ABAP开发实战——从入门到精通系列教程目录
  11. 网页压缩 - GZIP
  12. 清理注册表 php,怎样清理注册表?
  13. python-格式化写入xml文件
  14. 【性能测试】性能测试的基本流程
  15. randint和randrange的区别
  16. 全球及中国3D打印材料行业运营动态及投资价值分析报告2021年版
  17. software reporter tool占用高_明星御用高保湿护肤品排行榜 推荐10款让你保持年轻的护肤品...
  18. Go语言学习二 语言结构 基础语法 数据类型
  19. C++基础数论————排列组合
  20. 「龙书」作者Alfred Aho 和 Jeffrey Ullman 获图灵奖

热门文章

  1. 倍福plc的型号_倍福模块选型
  2. PJzhang:360压缩的用户许可协议和隐私政策阅读
  3. 当失控的预装行为以非正当手段伸向行货机时_北京鼎开预装刷机数据统计apk(rom固化版)分析...
  4. C语言笔试题2022
  5. 学机器人编程还是计算机编程,为什么要学习机器人编程课程
  6. USB加密狗复制USBTrace数据截取工具分享
  7. java面试题--算法集锦(建议收藏)
  8. 网络电视接口 php,【小白教程】智能电视背后这些接口怎么用?
  9. 解决 Oracle 密码过期 the password has expired
  10. 用SPSS做数据分析