【Visual Object Tracking】Learning notes

【Visual Object Tracking】Learning notes_第1张图片

Dense Optical Tracking: Connecting the Dots

参考学习来自:

  • 单目标跟踪 Siamese系列网络:SiamFC、SiamRPN、one-shot跟踪、one-shotting单样本学习、DaSiamRPN、SiamRPN++、SiamMask

  • 单目标跟踪:跟踪效果 / 单目标跟踪:数据集处理 / 单目标跟踪:模型搭建 / 单目标跟踪:模型训练 / 单目标跟踪:模型测试

  • 单目标跟踪SiamMask:特定目标车辆追踪 part1 / 单目标跟踪SiamMask:特定目标车辆追踪 part2

  • [CVPR2019]我对Siamese网络的一点思考(SiamMask)——作者

  • 常见目标跟踪数据集下载链接整理(更新中)

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

  • 目标跟踪方向开源数据集资源汇总

  • 视频目标跟踪从0到1,概念与方法

  • 单目标跟踪方法-Siam系列

  • 最新综述 | 关于单目标视觉追踪,看这一篇就够了!

  • 大话目标跟踪—背景介绍(YaqiLYU)

  • 深度学习的快速目标跟踪

  • OTB-2015 database与OpenCV320 tracking API

  • CVPR 2017 目标跟踪相关论文

  • EBT:Proposal与Tracking不得不说的秘密

  • https://github.com/Cloud-CV/object-proposals

  • 让视觉目标跟踪在移动端起飞(一)——Transformer和TransT

  • 让视觉目标跟踪在移动端起飞(二)——NAS和LightTrack

  • 让视觉目标跟踪在移动端起飞(三)——如何设计在移动端实现又好又快的tracker

  • 计算机视觉中,目前有哪些经典的目标跟踪算法? - YaqiLYU的回答 - 知乎

文章目录

  • 1 单目标跟踪简介
  • 2 难点
  • 3 基于深度学习的单目标跟踪网络
  • 4 数据集
  • 5 评价指标
  • 6 未来方向
  • 7 Others
  • 多目标跟踪——未完待续。。。

1 单目标跟踪简介

跟踪的定义:在第一帧中给定目标框,在后续帧中不断对目标定位,实际上是一个 one-shot learning 过程。

【Visual Object Tracking】Learning notes_第2张图片

目标视觉跟踪(Visual Object Tracking),大家比较公认分为两大类:生成(generative)模型方法和判别(discriminative)模型方法

在此间基础上还有协同跟踪方法:将生成式跟踪方法与判别式跟踪方法相结合

目前比较流行的是判别类方法,也叫检测跟踪(tracking-by-detection)

tracking-by-detection 和检测算法非常相似,如经典行人检测用 HOG+SVM,Struck 用到了 haar+structured output SVM,跟踪中为了尺度自适应也需要多尺度遍历搜索,区别仅在于跟踪算法对特征和在线机器学习的速度要求更高,检测范围和尺度更小而已。这点其实并不意外,大多数情况检测识别算法复杂度比较高不可能每帧都做,这时候用复杂度更低的跟踪算法就很合适了,只需要在跟踪失败(drift)或一定间隔以后再次检测去初始化tracker就可以了

传统视觉跟踪

(1) 基于目标模型建模的方法: 通过对目标外观模型进行建模, 然 后在之后的帧中找到目标. 例如, 区域匹配、特征点 跟踪、基于主动轮廓的跟踪算法、光流法等. 最常用 的是特征匹配法, 首先提取目标特征, 然后在后续的 帧中找到最相似的特征进行目标定位, 常用的特征 有: SIFT 特征、SURF 特征、Harris 角点等.

【Visual Object Tracking】Learning notes_第3张图片

(2)基于搜索的方法: 随着研究的深入, 人们发现基 于目标模型建模的方法对整张图片进行处理, 实 时性差. 人们将预测算法加入跟踪中, 在预测值附近 进行目标搜索, 减少了搜索的范围. 常见一类的预测 算法有 Kalman滤波、粒子滤波方法. 另一种减小搜索范围的方法是内核方法: 运用最速下降法的原理, 向梯度下降方向对目标模板逐步迭代, 直到迭代到最优位置。

相关滤波——correlation filter(KCF,SRDCF,CF2,CCOT,ECO…等等经典工作在我的脑海里飘荡)。如果给这个时代截取一篇最经典的工作,我想我会选择KCF(Kernelized Correlation Filters)——在线更新模型。他是真的将视觉跟踪推向流行,让整个领域真的沸腾起来的工作。

深度学习方法

(1)预测score,这类算法以相关滤波和 SiameFC 为代表。通过预测候选区域的score map来得到物体的位置,物体的尺度大小通常是通过图像金字塔得到。同时无法得到物体的长宽比变化。

(2)GOTURN 和 SiamRPN 为代表的做 boundingbox regression 的方法。这也是SiamRPN取得当前最好结果的核心所在,充分挖取精度方向的红利。实际上并不是 SiamRPN 预测的有多稳定,而是在预测正确的时候,会给出更为精确的box。利用网络预测长宽比可以调整box,这个方向一直以来被大家所忽视,所以SiamRPN很快杀出重围。

(3)mask 在物体发生旋转的时候,简单的box的表述通常会产生极大的损失,这实际上就是表述本身存在的缺陷。而为了进一步探索在精度上存在的问题。我们更进一步,直接预测物体的mask——SiamMask

【Visual Object Tracking】Learning notes_第4张图片

2 难点

  • 目标出现遮挡(occlusion)
  • 目标消失等长时跟踪问题
  • 身份切换:对于比较像的目标是会误判,比如都是人
  • 运动模糊(motion blur)
  • 快速移动(fast motion)
  • 旋转(rotation)
  • 视点变化 / 形变(deformation)
  • 尺度变化:目标形状变化较大时容易发生漂移(scale variation)
  • 背景杂乱,背景相似干扰(background clutter)
  • 光照变化(illumination)
  • 低分辨率(low resolution)
  • 模板更新问题:模板不更新会导致模型鲁棒性不佳,出现遮挡模糊等无法识别;模板更新策略不佳又会引入模板污染、过拟合等问题

3 基于深度学习的单目标跟踪网络

【Visual Object Tracking】Learning notes_第5张图片

单目标跟踪可以看成是 one-shot learning, one-shot learning 中孪生网络结构用的比较多,下面我们简单的介绍下孪生网络

可以参考

  • 【One Shot】《Matching Networks for One Shot Learning》

  • 【One Shot】《Siamese Neural Networks for One-shot Image Recognition》

伪孪生网络(pseudo-siamese network,伪孪生神经网络),对于pseudo-siamese network,两边可以是不同的神经网络(如一个是lstm,一个是cnn),也可以是相同类型的神经网络。

Contrastive Loss(对比损失函数)

【Visual Object Tracking】Learning notes_第6张图片

Siamese类方法的核心是学习到一个可靠的,通用的相似性度量

One-Shot learning 可以无需重新训练即可应用于新的类别的数据


(1)SiamFC

《Fully-Convolutional Siamese Networks for Object Tracking》(ECCV-2016 workshops)

开山之作,来自牛津 Luca Bertinetto 大神
【Visual Object Tracking】Learning notes_第7张图片

【Visual Object Tracking】Learning notes_第8张图片

如果不靠高斯框,基本上无法跟上目标

跟踪的目标不适合背景嘈杂以及剧烈的抖动

SiamFC 对缺乏对背景的利用,也导致模型的判别性不足

SiamFC 预测时,不在线更新模板图像。这使得其计算速度很快,但同时也要求 SiamFC 中使用的特征具有足够鲁棒性,以便在后续帧中能够应对各种变化。另一方面,不在线更新模板图像的策略,可以确保跟踪漂移,在 long-term 跟踪算法上具有天然的优势

(2)SiamRPN

商汤《High Performance Visual Tracking with Siamese Region Proposal Network》(CVPR-2018)

Short-term real-time sub-challenge 冠军,Short-term tracking challenge 不是

引入 RPN 预测位置

解决了尺度问题

(3)DaSiamRPN

商汤《Distractor-aware Siamese Networks for Visual Object Tracking》(ECCV-2018)

考虑了样本不平衡的问题

(4)SiamRPN++

《SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks》(CVPR-2019)

引入深层网络

(5)SiamMask

《Fast Online Object Tracking and Segmentation: A Unifying Approach》(CVPR-2019)

加入了图像分割的内容

4 数据集

【Visual Object Tracking】Learning notes_第9张图片
包括短时序列数据集 OTB,VOT,ALOV300++ 和 got-1k 等,以及长时序列数据集 LaSOT,OxUAV 和 TLP 等

OTB50:Wu Y, Lim J, Yang M H. Online object tracking: A benchmark [C]// CVPR, 2013.

OTB100:Wu Y, Lim J, Yang M H. Object tracking benchmark [J]. TPAMI, 2015.

LightTrack 的训练集配置是 Youtube-BB, ImageNet VID, ImageNet DET, COCO and GOT-10K,是pysot里面的常用设置。

TransT 的训练集配置是 COCO, TrackingNet, LaSOT, and GOT-10k,是pytracking里面的常用设置。

【Visual Object Tracking】Learning notes_第10张图片

在 VOT2015 时即提出使用旋转矩形框来作为标记。在 VOT2016 的时候提出自动的通过mask来生成旋转框的方法。

5 评价指标


精确度(Precision / Accuracy):跟踪方法估计目标位置的能力
鲁棒性(Robust):跟踪方法在每个序列上的平均失败次数
成功率(Success):跟踪方法估计目标尺度大小的准确度
跟踪长度(Tracking length)
最长子序列指标 (LSM metric):模型的长期跟踪性能
F-score 曲线:精确度和召回率相结合来评价跟踪模型的长期跟踪性能
跟踪速度
期望平均重合度(EAO):将鲁棒性与平均重合度(average overlap)相结合来评估跟踪方法


来自 VOT2018:SiamNet大崛起

【Visual Object Tracking】Learning notes_第11张图片

  • EAO:两个baseline,VOT2016和VOT2017的神话CCOT,和2017年最好算法ECO都只能排在20左右,已经被大幅超越,甚至前几名都与ECO拉开了0.1以上的差距。
  • R鲁棒性前四名:MFT, LADCF, RCO, UPDT,都是DCF(Dual Correlation Filter)类方法,CNN特征提取的backbone都是ResNet-50。
  • A准确性前两名:SiamRPN, SA-Siam-R, 都是SiamNet类方法,这两个算法都表现出准确性奇高,而鲁棒性前十最差的特点。

UPDP 属于 DCF(discriminative correlation filter) + CNN 的方法,目标跟踪新高度UPDT:解除深度特征被封印的力量,Martin大神

上面是公测榜单,内测榜单鲁棒性第一是北邮的 MFT,也是 DFP + CNN 的方法,准确性最高的是 Siam-RPN

下面看看 The VOT2018 long-term challenge

【Visual Object Tracking】Learning notes_第12张图片

DaSiam_LT是 DaSiamRPN 的 long-term 版本,用 SiamRPN 产生 proposal,同时建模Distractor抑制干扰目标的响应,与MBMD优化SiamRPN的思路不同,但速度更快。目标丢失检测的思路非常直接:一旦判断到目标丢失,就扩大检测区域,进行一次全图检测。论文版本DaSiamRPN有110FPS,性能仅比MBMD低了0.003,性价比高很多。

SiamNet 速度快性能也不差,real-time 榜和 long-term 榜都是 SiamNet 登顶,尤其 SiamRPN 潜力巨大,打通了目标跟踪和目标检测,性价比很高,接下来会快速发展壮大,希望速度优势能保得住。

6 未来方向

Long-term tracking

  • 我们希望算法可以了解到目标什么时候被遮挡了,什么时候丢失了。丢失之后可以找回,这才是我们想要的跟踪
    Long-term tracking in the wild: a benchmark,缩写叫LTW

单目标多目标跟踪统一

  • 《Unified Transformer Tracker for Object Tracking》(CVPR-2022)
    【Visual Object Tracking】Learning notes_第13张图片

7 Others

  • 跟踪问题因为需要时序信息(上一帧的输出作为下一帧跟踪的起始),所以一些微小的影响会被放大。不同内核的GPU运行的结果都有所不同,所以最好写个baseline的参数确认一下环境是否一致。

  • 你简单的增大训练集并不能得到更好的结果(要么是模型容量有问题,要么就是训练过程有问题)

  • 所以高层的特征并没有能学习到fine-grained的特征,甚至因为你给了各种光照,它干脆连颜色也丢了吧(疯狂的data argumentation反而会带来坏处)

  • 残差之所以称为残差,是希望残差学习的部分的均值近似为0

  • 反卷积网络,还原原始图像,这样就强迫网络特征层包含底层信息

  • train from scratch 的概念已经在检测领域非常普遍了。跟踪的网络目前我们的经验在跟踪方面并不work。

  • 补充:数据集 OTB 在2013年公开了,对之前的算法是不可见的,所以 OTB 论文的结果非常可靠,但对于 2013 以后的算法是透明的,有调参的可能性,尤其是那些只跑OTB,而且论文中有关键参数直接给出还精确到小数点后两位的算法,建议您先实测再评价(人心不古啊~被坑的多了),但 VOT 竞赛的数据库是每年更新,还动不动就重新标注,动不动就改变评价指标,对当年算法是不可见且难度很大的,所以结果更可靠。

  • Cross-Correlation 的本质就是标准卷积 Conv:用 example feature 作为卷积核,对 instance feature 进行卷积,卷积输出就是每个位置的相似度分数。

多目标跟踪——未完待续。。。

目标跟踪:visual object tracking(VOT),也叫 single object tracking(SOT)

多目标跟踪:multiple object tracking(MOT),相比于VOT,除了要找到跟踪的目标外,还要能够区分跟踪目标属于初始目标中的哪一个(相当于VOT的检测之后,做进一步识别)。

【Visual Object Tracking】Learning notes_第14张图片

  • 目标初始化
  • 外观建模
  • 运动估计
  • 目标定位

跟踪算法类型

  • 基于检测与不需要检测的跟踪器
  • 单目标和多目标跟踪器
  • 在线和离线跟踪器
    离线:过去现在未来的信息都可以利用,比如录像分析
    在线:只可能利用过去和现在,不可能用未来的信息
  • 基于学习和基于训练的策略
    在线学习跟踪器,eg:MDNet / ROLO ( 循环YOLO )
    离线学习跟踪器,eg:GOTURN

你可能感兴趣的:(CNN,/,Transformer,读书笔记,深度学习,人工智能,单目标跟踪,VOT)