目标追踪:FCNT、GOTURN、SiamFC、SiamRPN、SiamRPN++
日萌社
人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新)
7.1 目标追踪(Object Tracking)概述
学习目标
- 目标
- 知道目标追踪的算法类型以及应用
- 知道目标追踪算法的任务类型以及挑战
- 应用
- 无
目标跟踪是计算机视觉领域的一个重要分支。目前的目标跟踪的通常任务是,在视频的第一帧给定一个目标的矩形框,然后后续这个矩形框紧跟着要跟踪的物体。不过,目标跟踪与计算机视觉中的图像识别,分割,检测是分不开的,通常跟踪是这些分割检测的最后一步。
7.1.1 为什么使用目标追踪(Object Tracking)
传统的基于图片的目标检测方法已经非常成熟,对于视频目标检测来说,如果视频流按帧一张一张使用图片的目标检测算法来处理会出现以下两类问题:
- 因为视频流的图片信息具有时间和空间相关性,相邻帧之间的特征提取网络会输出有冗余的特征图信息,会造成没必要的计算浪费。
- 图片的目标检测算法在目标物体运动模糊,拍摄焦距失调,物体部分遮挡,非刚性物体罕见变形姿态的情况下,很难获得较为准确的结果,而这些情况(如下图)在视频的拍摄中情况较为多见。
我们以检测为例,实际检测过程中,外界环境复杂(光照、遮挡等)、相机会抖动等多因素影响,仅依赖检测的结果,检测框是很不稳定的,这里展示仅有检测和追踪的视频结果的对比。
单纯的检测(无追踪)
含追踪效果
可以看到,加入追踪后的检测框极其稳定,输出结果更平滑,几乎不存在抖动,同时还给出了不同物体的label,和同一类型物体的不同的id信息,既对不同物体做了区分,又对同一类型物体做了区分,即实现了多目标追踪
7.1.2 目标追踪介绍
7.1.2.1 定义
视觉目标(单目标)跟踪任务就是在给定某视频序列初始帧的目标大小与位置的情况下,预测后续帧中该目标的大小与位置。
- 输入初始化目标框,在下一帧中产生众多候选框(Motion Model),提取这些候选框的特征(Feature Extractor),然后对这些候选框评分(Observation Model),最后在这些评分中找一个得分最高的候选框作为预测的目标(Prediction A),或者对多个预测值进行融合(Ensemble)得到更优的预测目标。
7.1.2.2 研究内容:
目标跟踪划分为5项主要的研究内容:
(1)运动模型(Motion Model):如何产生众多的候选样本。
生成候选样本的速度与质量直接决定了跟踪系统表现的优劣。常用的有两种方法:粒子滤波(Particle Filter)和滑动窗口(Sliding Window)。粒子滤波是一种序贯贝叶斯推断方法。通过递归的方式推断目标的隐含状态。而滑动窗口是一种穷举搜索方法,它列出目标附近的所有可能的样本作为候选样本。
(2)特征提取:利用何种特征表示目标。
鉴别性的特征表示是目标跟踪的关键之一。常用的特征被分为两种类型:手工设计的特征(Hand-crafted feature)和深度特征(Deep feature)。常用的手工设计的特征有灰度特征(Gray),方向梯度直方图(HOG),哈尔特征(Haar-like),尺度不变特征(SIFT)等。与人为设计的特征不同,深度特征是通过大量的训练样本学习出来的特征,它比手工设计的特征更具有鉴别性。因此,利用深度特征的跟踪方法通常很轻松就能获得一个不错的效果。
(3)观测模型:如何为众多候选样本进行评分。
大多数的跟踪方法主要集中在这一块的设计上。根据不同的思路,观测模型可分为两类:生成式模型(Generative Model)和判别式模型(Discriminative Model)生成式模型通常寻找与目标模板最相似的候选作为跟踪结果。判别式模型通过训练一个分类器去区分目标与背景,选择置信度最高的候选样本作为预测结果。判别式方法已经成为目标跟踪中的主流方法,因为有大量的机器学习方法可以利用。常用的理论方法包括:逻辑回归,岭回归,支持向量机,多示例学习,相关滤波等。
(4)模型更新:如何更新观测模型使其适应目标的变化。
防止跟踪过程发生漂移,模型更新没有一个统一的标准,通常认为目标的表观连续变化,所以常常会每一帧都更新一次模型。但也有人认为目标过去的表观对跟踪很重要,连续更新可能会丢失过去的表观信息,引入过多的噪音,因此利用长短期更新相结合的方式来解决这一问题。
(5)集成方法:如何融合多个决策获得一个更优的决策结果。
集成方法有利于提高模型的预测精度,也常常被视为一种提高跟踪准确率的有效手段。可以把集成方法笼统的划分为两类:在多个预测结果中选一个最好的,或是利用所有的预测加权平均。
7.1.2.3 目标追踪算法分类
- 对于视觉目标跟踪(即单目标跟踪)任务而言
- 在2017年之前,大量的跟踪都是在相关滤波算法的基础上做出改进的,经典的算法包括KCF、DSST等。
- 随着深度学习技术的兴起,跟踪领域中的学者们也开始去尝试着将深度神经网络应用该领域中,前期大家更多的是关注预训练的神经网络的使用;
- 而从2017之后,以SINT和Siamese fc为代表的孪生网络跟踪器受到了研究者们的关注
- 主要的原因还是Siamese fc算法给大家展现了一个超快的跟踪速度,而且跟踪精度也不差。
目标跟踪最近几年发展迅速,以基于相关滤波(Correlation Filter)和卷积神经网络(CNN)的跟踪方法已经占据了目标跟踪的大半江山。如下图给出的2014-2017年以来表现排名靠前的一些跟踪方法。可以看到前三名的方法不是基于相关滤波的方法就是基于卷积神经网络的方法,或是两者结合的方法。视觉目标跟踪方法根据观测模型是生成式模型或判别式模型可以被分为生成式方法(Generative Method)和判别式方法(Discriminative Method)。
- 传统算法:在当前帧对目标区域建模,下一帧寻找与模型最相似的区域就是预测位置
- 生成式:
- 例子:从当前帧知道了目标区域80%是红色,20%是绿色,然后在下一帧,到处去找最符合这个颜色比例的区域
- 1、卡尔曼滤波、粒子滤波(Particle Filter)、Meanshift
- 2、基于相关滤波的算法
- 如KCF, CN, DSST
- 判别式:就是图像特征+机器学习,与生成类方法最大的区别是,分类器采用机器学习,训练中用到了背景信息
- 有两种可以使用的基本网络模型:堆叠自动编码器( SAE )和卷积神经网络( CNN )
- 如:最流行的使用 SAE 进行目标跟踪的网络是 Deep Learning Tracker(DLT),它使用了离线预训练和在线微调, TLD算法
- 深度学习相关算法
- 生成式:
- 基于深度学习的跟踪方法(重点需要去介绍的):
- 具有代表性的基于卷积神经网络的跟踪算法有全卷积网络跟踪器( FCNT )和多域卷积神经网络( MD Net )
- 1、FCNT(ICCV15)
- 1、VOT2015的冠军MDNet
- 2、VOT2016的冠军TCNN
- 3、速度方面比较突出的如80FPS的SiamFC和100FPS的GOTURN
- 深度学习END2END的强大威力在目标跟踪方向还远没有发挥出来,还没有和相关滤波类方法拉开多大差
- 总结:
- 如果追求高准确度,又能忍受慢一些的速度,那么就用CSRT
- 如果对准确度的要求不苛刻,想追求速度,那么就选KCF
- 纯粹想节省时间就用MOSSE
7.1.2.4 视觉目标跟踪问题以及面临的挑战
1、任务类型
- 单目标跟踪(最多)
- 多目标跟踪
- 与单目标跟踪相比,多目标跟踪的研究进展则缓慢得多,可用的数据集不够丰富,可以参考的开源代码也比较少。
- 因为相对来说实现难度更大,多目标跟踪是一个更工程化的问题,深度学习在该问题上的潜力也尚未被很好地挖掘出来。
- 注:一般提到“视觉目标跟踪”或“VOT”,往往指的是单目标跟踪。尽管看起来 SOT(Single Object Tracking)和 MOT(Multi Object Tracking)只是目标数量上的差异,但它们通用的方法实际上截然不同。
多目标追踪需要的一些算法技术
- 匈牙利、KM匹配的后端追踪优化算法:SORT & DeepSORT
- IOU Tracker & V-IOU Tracker
- MOT-RNN
注:除了上述一些,还有跟踪与分割,3D目标跟踪等任务
2、挑战
视觉运动目标跟踪是一个极具挑战性的任务,因为对于运动目标而言,其运动的场景非常复杂并且经常发生变化,或是目标本身也会不断变化。那么如何在复杂场景中识别并跟踪不断变化的目标就成为一个挑战性的任务。
遮挡(Occlusion)是目标跟踪中最常见的挑战因素之一:遮挡又分为部分遮挡(Partial Occlusion)和完全遮挡(Full Occlusion)。解决部分遮挡通常有两种思路:
形变(Deformation)也是目标跟踪中的一大难题:目标表观的不断变化,通常导致跟踪发生漂移(Drift)。
背景杂斑(Background Clutter):指得是要跟踪的目标周围有非常相似的目标对跟踪造成了干扰,
- 解决这类问题常用的手段是利用目标的运动信息,预测运动的大致轨迹,防止跟踪器跟踪到相似的其他目标上,或是利用目标周围的大量样本框对分类器进行更新训练,提高分类器对背景与目标的辨别能力。
尺度变换(Scale Variation):是目标在运动过程中的由远及近或由近及远而产生的尺度大小变化的现象。预测目标框的大小也是目标跟踪中的一项挑战,如何又快又准确的预测出目标的尺度变化系数直接影响了跟踪的准确率。
- 通常的做法有:在运动模型产生候选样本的时候,生成大量尺度大小不一的候选框,或是在多个不同尺度目标上进行目标跟踪,产生多个预测结果,选择其中最优的作为最后的预测目标。
当然,除了上述几个常见的挑战外,还有一些其他的挑战性因素:光照(illumination),低分辨率(Low Resolution),运动模糊(Motion Blur),快速运动(Fast Motion),超出视野(Out of View),旋转(Rotation)等。所有的这些挑战因数共同决定了目标跟踪是一项极为复杂的任务。
7.1.3 目标检测数据集
7.1.3.1 数据集与排行
- 1、单目标
- LaSOT https://cis.temple.edu/lasot/
- TrackingNet https://tracking-net.org/
- OTB Dataset http://cvlab.hanyang.ac.kr/tracker_benchmark/datasets.html
- UAV123 https://ivul.kaust.edu.sa/Pages/Dataset-UAV123.aspx
- VOT Challenge http://votchallenge.net
OTB和VOT区别:OTB包括25%的灰度序列,但VOT都是彩色序列,所以对于一个tracker,如果论文在两个库(最好是OTB100和VOT2016)上都结果上佳,效果肯定是非常优秀的,如果只跑了一个,更偏向于VOT2016,因为序列都是精细标注,且评价指标更好。
VOT竞赛的数据库是每年更新,经常就重新标注、改变评价指标,对当年算法是难度比较大,所以结果相对更可靠。
- 2、多目标
- PathTrack http://people.ee.ethz.ch/~daid/pathtrack/
- ViDrone http://aiskyeye.com/views/index
- DukeMTMC(已关闭) http://vision.cs.duke.edu/DukeMTMC/
- UA-DETRAC http://detrac-db.rit.albany.edu/
- MOT Challenge https://motchallenge.net
多目标跟踪,即MOT(Multi-Object Tracking):就是在一段视频中同时跟踪多个目标。
MOT主要应用场景是安防监控和自动驾驶等,这些场景中我们往往需要对众多目标同时进行追踪。TBD(Tracking-by-Detecton)与DFT(Detection-Free Tracking),也即基于检测的多目标跟踪与基于初始框无需检测器的多目标跟踪。TBD则是目前学界业界研究的主流。下图比较形象地说明了两类算法的区别。
7.1.3.2 评价指标
对于多目标跟踪,最主要的评价指标就是MOTA。
7.1.4 目标追踪的应用
- 1、智能视频监控:基于运动识别(基于步法的人类识别、自动物体检测等),自动化监测(监视一个场景以检测可疑行为),交通监视(实时收集交通数据用来指挥交通流动);
- 3、人机交互:传统人机交互是通过计算机键盘和鼠标进行的,为了使计算机具有识别和理解人的姿态、动作、手势等能力,跟踪技术是关键;
- 4、机器人视觉导航:在智能机器人中,跟踪技术可用于计算拍摄物体的运动轨迹;
- 5、虚拟现实:虚拟环境中3D交互和虚拟角色动作模拟直接得益于视频人体运动分析的研究成果,可给参与者更加丰富的交互形式,人体跟踪分析是其关键技术;医学诊断:跟踪技术在超声波和核磁序列图像的自动分析中有广泛应用,由于超声波图像中的噪声经常会淹没单帧图像有用信息,使静态分析十分困难,而通过跟踪技术利用序列图像中目标在几何上的连续性和时间上的相关性,可以得到更准确的结果。
7.1.5 小结
- 知道目标追踪的算法类型以及应用
- 知道目标追踪算法的任务类型以及挑战
7.2 FCNT
学习目标
目标
说明FCNT的算法结构
- 应用
- 无
深度学习跟踪算法之前诞生了许多优秀的方法,它们是基于构建外观模型来进行跟踪的,这些方法又可以分为两种,一种是生成式,通过最小化重建误差来构建外观模型,另一种是判别式,通过构建一个分类器区分前景和背景(就是目标检测的思路),但是这些方法都是手工选取特征的,手工选取特征的种种不足就不多讲了,于是采用深度学习方法来进行跟踪。
7.2.1 FCNT(Visual Tracking with Fully Convolutional Networks)介绍
论文的贡献主要有以下三点:
1、分析了图像分类上深度神经网络上不同层的特征的属性,以及对跟踪问题的影响。
2、提出一种结合两种层次特征的跟踪算法,更好的选择特征,实现更加鲁棒的跟踪。
- 顶层的CNN layer编码了更多的关于语义特征的信息并且可以作为类别检测器;
- 而底层的CNN layer关注了更多局部特征,这有助于将目标从目标中分离出来。
- a图表示的是ground truth,b图表示的是使用VGG的conv4-3,也就是第10层产生的热力图,c图是通过conv5-3也就是第13层产生的热力图。
较低维的CNN layer(conv4-3)能够更精准地表示目标的细粒度信息,而较高维的CNN layer(conv5-3)热力图显示较模糊,但对同类别的人也做出了响应。
- 3、提出一种 feature 选择机制,剔除与跟踪目标对象干扰或不相关的特征图;更进一步提升跟踪精确度。
7.2.1.1 FCNT架构
跟踪算法基于 VGG-19,16层卷积 以及 3层 fc
- 过程如下:
- 1、将输入的视频帧,首先利用 VGG-19提取feature,然后分别利用 高层的特征,传送给 SNet 以及 GNet,然后分别将这两个特征图进行映射,最后根据一个干扰性判别器,选择其中的一个 heap map 作为最终的输出,给出跟踪目标的 bounding box。
- 2、然后下一帧到来后,以上一帧预测结果为中心crop出一块区域,之后分别输入GNet和SNet,得到两个预测的heatmap,并根据是否有distractor决定使用哪个heatmap 生成最终的跟踪结果
FCNT 设计了特征选择网络,还为这两个层的选择特征映射单独设计了两个额外的通道(即 SNet 和 GNet ): GNet 捕获对象的类别信息; SNet 将该对象从具有相似外观的背景中区分出来。
- 1、 先把GNet输出的热力图作为目标候选。这是因为GNet使用的是顶层特征,能够更好地处理形变、旋转和遮挡等目标跟踪中的常见问题
- 2、若画面中出现同类物体时GNet不能很好的处理,因此还需要计算有没有出现目标漂移的情况。其方法是计算在目标候选区域外出现相似目标的概率P,定义一个阈值,若P大于阈值时则认为出现了同类目标,这时候才利用SNet来定位目标的最终位置,是结果更加准确。
1、Feature Map选择:剔除与跟踪目标对象扰或不相关的特征图
feature map选择方法基于目标热图回归模型,命名为sel-CNN,在VGG的conv4-3 和 conv5-3层独立进行。sel-CNN由一个drop和一个卷积层构成,没有非线性变换。
- 输入是conv4-3或conv5-3,输出目标热图M,是一个位于GT中心的2-维的高斯分布,方差与目标的尺寸正比(如:Figure 1 (a)和(b))。模型的训练是最小化预测前景热图\hat MM^
和目标热图的最平方差
2、目标定位:干扰feature maps通用feature map选择排除后,更复杂的模型获取更精确的跟踪效果。
图中 (c) 和 (d) 展示了目标定位的CNN设计。在第一帧feature map选择完成后,使用conv4-3 和conv5-3层特征分别构建SNet 和GNet。两个网络使用相同结构
- 1、第一个卷积层的卷积核尺寸为9×9,输出36个feature maps
- 2、第二个卷积层卷积核尺寸为5×5,输出前景热图
- 3、两个卷积层都使用ReLU做非线性变换
计算过程略
7.2.1.2 训练以及使用
训练
- 1、在第一帧中使用反向传播对50个迭代进行训练,以进行用于特征图选择和用于目标定位的GNet和SNet。
- 2、在每个更新步骤对SNet进行3次迭代微调。
- 3、学习率设置为1e-9,GNet和SNet的学习率设置为1e-7。对于conv4-3和conv5-3层,通过建议的特征选择方法选择的特征图的数量均设置为K = 384。以目标位置为中心的输入ROI区域的大小为386×386 pixel-s。
7.2.1.3 效果对比
- 平均精确率在不同的条件下:光照变化llumination variation (IV), 平面外旋转out-of-plane rotation (OPR), 比例变化scale variation (SV), 遮挡occlusion (OCC), 形变deformation (DEF), 运动模糊motion blur (MB), 快速运动fast motion (FM), 平面内旋转in-plane rotation (IPR), out-of-view (OV), 背景混乱background cluttered (BC) and解析度低 low resolution (LR).
- 红色和绿色是不同条件下的第一高和第二高的分数
7.2.2 总结
- 了解FCNT的结构特点
7.3 GOTURN
学习目标
- 目标
- 说明GOTURN的算法结构
- 掌握GOTURN的训练过程
- 应用
- 无
7.3.1 GOTURN介绍
7.3.1.1 背景
传统通用目标跟踪器(相对于特定目标跟踪器)完全是通过在线抓取来训练,而没有离线训练。这种跟踪器性能不好的原因是获取的信息太少,仅仅在线训练不能利用大量视频的优势。而这些视频有可能帮助跟踪器处理旋转,视点改变,光线改变等问题,进而提高跟踪性能。而机器学习已经能够从大量的离线数据中学习。
- 在线更新:
- 优点:随时适应目标的变化,和背景信息的变化,对特征的要求较低,低层特征计算速度快分辨率高;
- 缺点:模型更新会累计误差,遮挡或失败时会学到背景,丢失后再也找不回来。
- 在线不更新:
- 优点:不更新速度更快,跟踪目标永远不会被污染,long-term特性非常优秀;
- 缺点:对特征的要求非常高,必须是表达能力足够强足够鲁棒的特征,通常高层特征计算速度慢、分辨率低。
论文提出了一种基于深度学习的目标跟踪算法,有以下几个特点:
100fps,比之前大多数采用深度学习的跟踪算法都快。
基于线下训练,不需要在线的学习。
测试目标可以不同于线下训练的数据集,当然,如果训练集里包含同样的类别,跟踪精度会有一定程度的提高。
7.3.1.2 结构
网络模型取自CaffeNet的前5个卷积层,3个全连接层。每个全连接层有4096个节点,输出层4个节点,代表输出包围盒。网络必须获得视频中被跟踪对象的信息。可以通过剪裁和调整前一帧跟踪到的目标来获得跟踪对象,剪裁中心的目标就是跟踪对象。剪裁的crop会在目标周围留有余地,会让网络学习到一些目标背景和环境信息。
过程:将上一帧的目标和当前帧的搜索区域同时经过CNN的卷积层(Conv Layers),然后将卷积层的输出通过全连接层(Fully-Connected Layers),用于回归(regression)当前帧目标的位置。整个框架可以分为两个部分:
- 1、卷积层,用于提取目标区域和搜索区域的特征
- 2、全连接层,被当成一个回归算法,用于比较目标特征和搜索区域特征,输出新的目标位置
7.3.1.3 算法细节
- 训练与测试分离
- 对网络的训练是offline的,在跟踪的时候没有online update的过程。算法足够快,把耗时的计算过程都离线做好,跟踪过程只有一个计算前馈网络的过程。
- 算法输入输出形式
- 输入:在第t-1帧中,假设目标所在位置为(cx,cy),其大小为(w,h),则提取一块大小为(2w,2h)的图像块输入到CNN中。
- 剪裁后的图像的宽度和高度分别为k1w和k1h,这里的参数k1的作用是用于联系物体的背景(context),当k1值越大时,则截取的图像范围也越大,相应的,包含的背景信息也就越多。文中默认的值为k1=2
- 在第t帧中,也以(cx,cy)为中心,提取大小为(2w,2h)的图像块,输入到CNN中。
- 输出:输出目标在第t帧中左上角和右下角的坐标。
- 输入:在第t-1帧中,假设目标所在位置为(cx,cy),其大小为(w,h),则提取一块大小为(2w,2h)的图像块输入到CNN中。
7.3.1.4 网络的训练过程
对于跟踪问题,一般的当前帧目标的位置和尺度都与上一帧是有关系。论文作者通过对视频序列中的groundtruth进行研究发现,当前帧目标的位置和尺度变化与上一帧的目标存在着某种分布关系。关系如下:
上述描述中,cx,cy,w,h代表的是上一帧目标的位置和大小,c′x,c′y,w′,h代表当前帧目标的位置和大小,Δx,Δy,γw,γh代表目标位置和大小变化的程度(比例)。
作者通过实验发现,这四个变化因子都符合laplace分布,laplace分布的概率密度函数为:
其中μ是位置参数,b是尺度参数,这个分布的期望E(x)=μ,方差为D(x)=2b^2。
7.3.1.5 实验
data augmentation对算法的影响
论文作者做了非常多且非常细致、严谨的实验,
- batch size取50,augmented data的个数可以去取0~49,至少保留一个真实样本(因为augmented data都是从这个真实样本变换得来的)。
- 观察上图可发现,性能最好的是batch中有49个augmented data只有一个real data,但是实际上当augmented data的数量高于20的时候,性能基本保持不变了。
- 论文使用的batch size是50,作者对每个图像进行了10倍的data augmentation。
多个因素对整体效果的影响
还做了损失函数、motion smoothness (data augmentation)、image data对整体性能的影响,最后发现使用L1 loss + motion smothness + image training + video training是效果最好的。
最终结果
- 训练集:ALOV++ 从314个视频序列中去除7个。实际用307个。总共252个目标物体,共计13082张图,平均每个物体52帧。
- 验证集 :56个物体 2795张图。
训练集和验证集无重复:训练集中也用了图片来训练。图片来源自ImageNet 2014。测试集: VOT2014 上的25个序列,没有使用VOT2015的原因是VOT2015的数据集中有大量视频与测试集重复。评价参数:精确度(A),鲁棒性(R),精确度误差(1-A),鲁棒性误差(1-R),总误差(1-(A+R)/2)。 实验结果:
7.3.1.6 论文总结
- 1、当前帧的跟踪预测参考前一帧的跟踪结果。
- 2、采用视频和图片训练的方式有较强的泛化能力。可以跟踪训练集中没有出现的物体
- 3、crop的方式采用了拉普拉斯分布而不是高斯分布。让跟踪器能够更适应微小运动,进而实现跟踪的连续性。
- 4、文中对比的算法都是经典算法,没有与目前基于深度学习的跟踪算法的比较。
- 5、不需要在线微调网络参数,只需要一次前向传播得到目标位置,所以很快,如题跟踪可达100FPS.
7.3.2 小结
- Goturn结构特点
- Goturn的训练过程
7.4 SiamFC
学习目标
- 目标
- 知道SiamFC的网络结构特点
- 掌握SiamFC的网络训练方式
- 应用
- 无
任意对象跟踪的问题是通过仅仅在线地学习对象外观的模型来解决,使用视频本身作为唯一的训练数据。 尽管这些方法取得了成功,但他们的在线方法本质上限制了他们可以学习的模型的丰富性。需要跟踪的目标是通过起始帧的选择框给出的。框中可能是任意物体,甚至只是物体的某个部分。由于给定跟踪目标的不确定性,我们无法做到提前准备好数据,并且训练出一个具体的(specific)detector。过去几年出现了TLD,Struck和KCF等优秀的算法,但由于上述原因,用于跟踪的模型往往是一个简单模型,通过在线训练,来进行下一帧的更新。
- SiamFC可以使用ILSVRC目标检测数据集来进行相似度学习的训练,验证了该数据集训练得到的模型在ALOV/OTB/VOT等跟踪数据集中拥有较好泛化能力。
7.4.1 SiamFC介绍
论文提出了一种全连接孪生网络,实现了端到端的训练。基于相似度学习(similarity learning)的跟踪器SiamFC,通过进行离线训练,线上的跟踪过程只需预测即可。证明这种方法在速度远远超过帧速率要求的情况下在现代跟踪基准测试中实现了非常有竞争力的性能。达到了超过实时的帧率(86 fps 在VOT-15上)
7.4.1.1 架构
SiameseFC的两个子体神经网络,分别输入作为跟踪目标的模板图像和作为搜索范围的检测图像,过程如下:
对于模板图像:
1、以目标中心为裁剪中心,确定一个稍大的正方形(记边长为 C )裁剪区域(可能会超出原图片,以图片颜色均值填充)
2、然后resize到127x127x3,然后通过卷积神经层,得到一个6x6x128的输出feature map。
C 的计算公式如下(设目标框的大小为w×h):
对于检测图像:首先统一resize到255x255x3,然后通过卷积神经层,得到一个22x22x128的输出feature map。
图示符号含义如下:
将第一帧图像目标作为模板图像
目标追踪:FCNT、GOTURN、SiamFC、SiamRPN、SiamRPN++相关推荐
- 【目标跟踪 SOT】SiamFC -用于对象跟踪的全卷积孪生网络
SiamFC - 全卷积孪生网络 $背景知识 SOT(单目标跟踪)和MOT(多目标跟踪)的思想是,在视频中的某一帧中框出你需要跟踪目标的bounding box,在后续的视频帧中,无需你再检测出物体的 ...
- opencv多目标追踪容器
opencv多目标追踪容器 之前做过一个多目标追踪的项目,尝试了一下opencv提供的追踪容器,个人感觉效果一般. # coding:utf-8 # @Time : 14/12/2018 17:07 ...
- python机器识别追踪_多目标追踪器:用OpenCV实现多目标追踪(C++/Python)
原标题:多目标追踪器:用OpenCV实现多目标追踪(C++/Python) MultiTracker : Multiple Object Tracking using OpenCV (C++/Pyth ...
- 11- OpenCV进行目标追踪 (OpenCV系列) (机器视觉)
知识要点 1. OpenCV目标跟踪算法的使用大概可以分为以下几个步骤: 创建MultiTracker对象: trackers = cv2.legacy.MultiTracker_create() ...
- 【Opencv项目实战】目标追踪:实时追踪人工标注的多个目标
文章目录 一.项目思路 二.问题清单 三.算法详解 3.1.定义目标追踪算法 3.2.初始化追踪器 3.3.更新目标追踪器 3.4.绘制目标矩形框 3.5.人工标注感兴趣目标 3.5.1.标注ROI区 ...
- 单目标追踪——【Transformer】Transformer Meets Tracker:Exploiting Temporal Context for Robust Visual Tracking
目录 文章侧重 网络结构 具体的Encoder和Decoder的结构 模型的推理过程 Transformer这个香饽饽怎么能不用来迁移到目标追踪里呢. 我计划对CVPR2021的3篇将Transfor ...
- OpenCV图像处理——目标追踪
总目录 图像处理总目录←点击这里 二十四.目标追踪 24.1.多目标(手动检测)追踪 24.1.1.原理 目标检测:运行之后按下s,通过鼠标对某个目标进行检测,然后点击空格或者回车 目标追踪:open ...
- 据我所知,这是第一个完整实现运动分割、动态目标追踪等的「开源」动态SLAM系统!...
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 今天给大家分享一篇最新文章,VDO-SLAM :一种动态目标感知的视觉SLAM系统,原文名称 VDO- ...
- 基于opencv的BackgroundSubtractorMOG2目标追踪
基于opencv的BackgroundSubtractorMOG2目标追踪 BackgroundSubtractorMOG2是以高斯混合模型为基础的背景/前景分割算法.它是以2004年和2006年Z. ...
- 中科院aibench_中科院发布目标追踪数据集,万条视频,150万个边界框 | 快来下载...
动栗 发自 凹非寺 量子位 出品 | 公众号 QbitAI 中科院发布了一个目标追踪数据集,叫做Got-10k.很大,很精致. 它包含了超过10,000条视频,主角都是在现实世界里移动的物体,分成56 ...
最新文章
- 二维数组求平均值(指针的使用)
- 实用juniper SRX NAT小技巧。
- 无法解析 org.apache.commons:commons-pool2:2.4.2
- jdbc 通过反射和元数据编写通用的查询对象方法
- UE4官方文档UI学习:4.UMG 创建控件模板
- 多声道在系统和软件里的设置与应用(普通声卡和dante声卡)
- html左右箭头翻页代码,左右箭头图片_js实现图片上显示左右箭头类似翻页效果的代码...
- 运维监控系列(4)-Prometheus控制台功能详解
- 增加客流量的方法_7种成熟的方法来增加网站流量
- 《数据库原理与应用》马春梅 禹继国 黄宝贵 祝永志 编著 P30 六个表的实现
- 淘宝详情页排版布局怎么做?大神导航,一个神奇的网站,从此开启大神之路!
- 5. Django templates模板 (一)
- 【内存泄露】LeakCanary常见问题
- C#反射的实现原理及简单应用
- 2021年Java开发爆款推荐!mysql密码修改命令Linux
- python 调用百度地图api 实现批量经纬度转换为实际省市地点(api调用,json解析,mysql读取与写入)
- gz, bz2, bz, Z, tgz, zip, rar, lha, rpm等格式的解压……
- 十、RISC-V SoC外设——timer定时器 代码讲解
- 操作实例:Linux上挂载移动硬盘和IPSAN上的NTFS分区
- Ubuntu18.04安装Matlab2019b
热门文章
- 雪球网 json 获取
- 基于python/scipy学习概率统计(2):伯努利分布(Bernoulli Distribution)
- 《Java并发编程的艺术》读书笔记
- ssh 远程执行脚本(自己总结)
- ftp服务器匿名账号,登陆ftp服务器的匿名账号
- SECS\GEM RMS系统OEE定义
- 基于微信小程序的在线考试系统【毕业设计源码】
- Clipboard.js实现复制文本到剪贴板功能
- Vue项目 在chrome页面崩溃:喔唷 崩溃了(总结)
- pygame飞扬小鸟_飞翔小鸟游戏_李兴球版
- 【目标跟踪 SOT】SiamFC -用于对象跟踪的全卷积孪生网络