精华内容
下载资源
问答
  • 单目标跟踪

    2020-01-04 22:11:09
    目标跟踪初体验KCF win+cmake+opencv安装 转载 https://blog.csdn.net/hjl240/article/details/52002749

    目标跟踪初体验KCF

    win+cmake+opencv安装

    转载 https://blog.csdn.net/hjl240/article/details/52002749

    展开全文
  • diagnose单目标跟踪.zip

    2019-07-22 22:33:22
    单目标跟踪库diagnose
  • KFC单目标跟踪代码

    2019-02-13 14:56:12
    使用opencv3.4,测试KCF单目标跟踪,代码经过编译测试,可正常执行,修改了网络上一些代码错误。该代码上传错误
  • 文章目录单目标跟踪知乎综述 单目标跟踪知乎综述 基于孪生网络的跟踪算法汇总
    展开全文
  • 单目标跟踪Siam

    千次阅读 2019-12-27 17:22:46
    关于单目标跟踪 本人不了解传统的相关滤波法,所有想法总结仅仅建立在深度学习的基础上。对于单目标跟踪而言一般的解释都是在第一帧给出待跟踪的目标,在后续帧中,tracker能够自动找到目标并用bbox标出。关于SOT...

    一. 关于单目标跟踪

    本人不了解传统的相关滤波法,所有想法总结仅仅建立在深度学习的基础上。对于单目标跟踪而言一般的解释都是在第一帧给出待跟踪的目标,在后续帧中,tracker能够自动找到目标并用bbox标出。关于SOT(single object track),有两条思路。第一种,我们可以把跟踪粗暴地当做一个配对问题,即把第一帧的目标当做模板,去匹配其他帧。基于这种思路,网络并不需要“理解”目标,只需当新的一帧图像来到时,拿着模板“连连看”找相同就可;siam系列实质上就是这个思路,每次两个输入,模板和新图片,然后通过网络在新图片上找和模板最相似的东西,所以这条思路的关键在于如何配得准。另一种思路是通过第一帧给出的目标“理解”目标,在后续帧中,不需要再输入模板,即只有一个输入,网络可以根据自己理解的模板,在新图片中预测出目标,所以这条思路的关键在于如何让网路仅仅看一眼目标(第一帧)就能向目标检测那样,“理解”目标,这就涉及到单样本学习问题,也是检测和跟踪的gap。

    二. SiamFC

    目前基于siamese系列的网络已经占据了单目标跟踪大半壁江山。这一切都源于2016年siamFC的提出,siamfc实际上就是将跟踪当做匹配问题,下面具体介绍siamfc。
      在这里插入图片描述

    首先简单介绍下siamfc的网络框架,图中z是模板(即待跟踪的目标),x是当前帧的图像, [公式] 是用于提取图像特征的卷积网络,因为作用于x(srch_img)的[公式]与作用于z(template)的[公式]完全一样所以称为孪生网络(siamese),经过卷积网络提取特征后分别得到x和z的feature map,然后将二者卷积( [公式] 表示卷积),即将6×6×128的feature map当做卷积核,在22×22×128上进行卷积得到17×17×1的heatmap,heatmap上值最大的点就对应于x图像中目标的中心。

    下面说一些细节,首先[公式]网络是5层不带padding的AlexNet。显然5层不符合深度学习“深”的理念,但是由于网络不能加padding所以限制了网络深度,为什么不能padding呢,事实上target在x上的位置,我们是从heatmap得到,这是基于卷积的平移等变性,即target在x上平移了n,相应的就会在heatmap上平移n/stride,且值不会变。但如果加入了padding,对于图像边缘的像素,虽然也会平移,但值会变,因为padding对图像的边缘进行了改变。siamRPN++和siamDW解决了这个问题,后面会详细讲。然后是训练时,x和z的获取方式:z是以第一帧的bbox的中心为中心裁剪出一块图像,再将这块图像缩放到127×127,255×255的srchimg也是类似得到的。这里有几个细节需要注意,第一,template与srch_img的中心就是目标的中心,且template是裁剪过的,如果不裁剪那么template中背景过多,导致匹配失败。不过在siamfc中背景信息完全被丢弃,换句话说,siamfc对缺乏对背景的利用,也导致模型的判别性不足,后续有相关工作对此进行改进。第二,训练阶段的标签怎么得到呢,如果只是简单将目标所在位置标为1,其他位置标为0,就会产生严重的样本不均衡问题,于是作者将离目标中心点r半径内的label都设置为1,其他设为0,loss function为 [公式] ,y为预测值,v为标签值,这里关于label的设置也有一些可以优化的点,使用focal loss是否对模型的判别性是否会更高呢。第三,在测试时,siamfc的template是不更新的,即一直为第一帧,这就导致模型的鲁棒性不佳,例如随着时间的变化template出现遮挡、模糊等情况,但是如果更新策略不佳又会引入模板污染、过拟合等问题,在这方面也有相关工作讨论。在测试时,首先搜索区域不是整个srchimg而只是之前的四倍大小的搜索区域,其次在feature map上加了余弦窗,最后为了解决尺度问题,对srch_img进行缩放了3种尺度。

    三. Siam系列

    1. SiamRPN

    SiamRPN是CASIA在2018提出来的网络,它将siam与检测领域的RPN进行结合。关于RPN(faster RCNN)可以参看faster RCNN,这篇帖子写得非常好。在检测领域RPN本意是用作检测,它将feature map上的各个点当做锚点,并映射到映射到输入图片上,再在每个锚点周围取9个尺度不同的锚框,对每个锚框进行检测是否有物体以及位置回归。

    在这里插入图片描述
    siamRPN的网络框架见上图,这里可以从one-shot的思路理解sianRPN,我们把template分支的embedding当作卷积核,srch_img分支当作feature map,在template与srchimg卷积之前,先将卷积核(即template得到的feature map)通过1*1卷积升维到原来的2k(用于cls)和4k(用于位置的reg)倍。然后拉出分类与位置回归两个分支。(建议没看多RPN的朋友看下上面推荐的那篇讲faster rcnn的帖子,看完这里就自然懂了)。这里的anchor到底是什么呢,根据笔者粗浅的理解,siamfc相当于直接将template与srching直接卷积匹配,而siamRPN在template上引入k个anchor相当于选取了k个尺度与srch_img进行匹配,解决了尺度问题。(笔者对anchor的理解还不够深入,后面深入研究下再写一篇文章专门探讨anchor的本质及其优缺点)

    siamRPN无论是在A还是R上都优于siamfc(这里补充一下,对于跟踪而言主要有两个子指标A(accuracy)与R(robust), A主要是跟踪的位置要准,R主要是模型的判别性要高,即能够准确识别哪些是目标,从而判断出目标的大致位置。关于R与A可参见VOT评价指标),也就是说siamrpn的模型判别性与准确性都比siamfc好,结果见下图。

    在这里插入图片描述

    笔者认为,准确性的提升主要来自与siamrpn将位置回归单独拉出来作为一个分支,这一点在后续的siamfc++中也可以看到作者相关的论述。在模型判别性方面,笔者认为,提升的关键在于siamrpn在进行匹配(即template与srchimg卷积的过程)时,由于引入了k个anchors,相当于从k个尺度对template与srch_img进行更加细粒度的匹配,效果更好也是情理之中。另外很重要的一点就是sianrpn解决了尺度问题。

    1. DaSiamRPN

    关于这篇文章,笔者之前在github上做过一些笔记,这里就简单摘录一些,具体笔记见DaSiamRPN
    DasiamRPN并没有对siamfc的网络结构进行过多的改进,而是从训练数据,模板更新,搜索区域三个角度对模型的rubost进行了提升。使得SiamRPN网络能够适应长期跟踪。

    首先作者对siamrpn的缺点进行了分析,主要有三点:

    • 在训练阶段,存在样本不均衡问题。即大部分样本都是没有语义的背景(注:背景不是非target的物体,而是指那些既不属于target,也不属于干扰物,没有语义的图像块,例如大片白色。)这就导致了网络学到的仅仅是对于背景与前景的区分,即在图像中提取出物体,但我们希望网络还能够识别target与非target物体。作者从数据增强的角度解决此问题。
    • 模型判别性不足,缺乏模板的更新,即在heatmap中很多非target的物体得分也很高;甚至当图像中没有目标时,依然会有很高的得分存在。作者认为与target相似的物体对于增强模型的判别性有帮助,因此提出了distractor-aware module对干扰(得分很高的框)进行学习,更新模板,从而提高siam判别性。但是排名靠前的都是与target很相似的物体,也就是说该更新只利用到了target的信息,没有利用到背景信息。
    • 由于第二个缺陷,原始的siam以及siamRPN使用了余弦窗,因此当目标丢失,然后从另一个位置出现,此时siam不能重新识别target, (siamRPN的搜索区域是上一阵的中心加上预设的搜索区域大小形成的搜索框),该缺陷导致siam无法适应长时间跟踪的问题。对此作者提出了local-to-global的搜索策略,其实就是随着目标消失帧数的增加,搜索区域逐渐扩大。

    针对这三个问题,作者给出了相应的解决方案。首先对于数据问题,当然是使用数据增强,主要方法有:增加训练集中物体的类别;训练时使用来自同一类别的负样本,以及来自不同类别的正样本辅助训练;增加图像的运动模糊。关于template的更新问题,作者对heatmap得到目标先NMS去除一些冗余框,然后将相似度靠前的框(干扰物)拿出来,让网络对其学习,拉大target_embedding与这些干扰物之间的相似度。这样的优点在于既综合了当前帧的信息,同时因NMS靠前的都与目标很相似,这就抑制了模板污染问题。

    1. siamMask

    关于siamMask,先放一张效果图,就可以知道他做的是什么工作。
    在这里插入图片描述
      简单来说siamMask就是将跟踪与分割结合到了一起,从其结果上,相比与之前的视频分割工作,其提升了速度,相比与之前的DasaimRPN其提升了A与R.

    在这里插入图片描述
    这里不对分割进行探讨,仅从跟踪的角度来看,笔者认为saimMask的提升相比与siamRPN主要来源与多任务学习(即更加精细的像素级的数据集与学习任务)。

    在这里插入图片描述  
    上图是siamMask的网络框架,从中我们也可以看出,就网络本身而言,siamMask只是比siamRPN多了一个(分割)分支,即多了一个学习任务。

    1. siamRPN++

    siamRPN++可以说是将siam系列网络又推向一个高峰,它解决的是如何将siam网络加深的问题。笔者在写siamfc那部分时提到,siamfc中的backbone使用的是只有5层的AlexNet,且不含padding, 其实在siamrpn的backbone也很浅。这是因为网络不能加padding, 不能加padding,那么随着网络深度的增加,feature map就会越来越小,特征丢失过多。而加padding则会破坏卷积的平移等变性。在siamrpn++中,作者是从实验效果的角度对padding进行探究。作者认为padding会给网络带来空间上的偏见。具体来说,padding就是在图片边缘加上黑边,但是黑边肯定不是我们的目标,而黑边总是在边缘,那么对于神经网络来说,它就会认为边缘都不是目标,即离边缘越远的越可能是目标。这就导致了神经网络总是习惯认为图像中心的是目标,而忽视目标本身的特征,而siamfc的训练方法target也确实是在图片中央。(这里需要指明的是,在siamfc的训练过程中,总是让template与srch_img处于图片的中央,作者在siamfc中说因为他们使用了全卷积的结构,所以在siamfc中不会有空间上的bias,显然这里的结果和siamrpn++的结果有矛盾,这也是笔者在写这篇贴子时想到的,siamfc到底有没有空间的bias还有待笔者代码测试,也欢迎评论区小伙伴讨论。)

    回到siamrpn++上来,有了上面的分析,解决办法自然也就有了,既然网络总是习惯认为中心是目标,那让target不要总是在图片中央不就好了,于是siamrpn++最大的贡献就产生了,在训练时让目标相对于中心偏移几个像素,论文中实验表明偏移64个像素最佳.

    在这里插入图片描述
    关于网络结构方面,siamrpn++也在siamrpn的基础上做了一些改进,见上图,首先当然是加深backbone,论文中使用了resNet50。此外在核相关环节,siamrpn是直接将template与srch_img的经过backbone后的embedding都先升维至原来的2k倍和4k倍,这样做的缺点是参数量的不平衡,即在核相关环节的参数量是其余环节的4倍,这为训练增加了难度(为什么增加了难度?)。这种参数量的不平衡主要来自与核相关的卷积操作,因此siamrpn++使用depthwise cross correlation的卷积方式,用下面这张网上截来的图来说明这种操作。

    在这里插入图片描述
    除此之外,siamrpn++还综合了更多的特征,见网络框架图。这中融合使得网络学会更多的图像特征,在最近的siamCAR中也使用了类似的方法,分刷得很高,看来特征融合确实是提分利器。

    最后放下siamrpn++的测试结果,

    在这里插入图片描述

    不得不承认,siamrpn++的EAO(综合了A和R的指标)还真是高得惊人,不过仔细看A与R可以发现,siamrpn++的Accuracy非常出众,但robustness提升空间还很大,也就是说,网络的判别性并没有那么惊艳,但是讲道理网络深度加深而且还有特征融合的助力,最受益的应该就是R,这其中原因还有待笔者跑跑代码再做评论(盲猜是不是模板未更新的缘故,然而加入了模板更新的Dasiamrpn的R值更高)。

    1. siamDW

    与siamrpn++一样siamDW也是解决siam系列网络深度的问题,两篇都同为CVPR2019的oral。

    siamDW认为siam系列网络不能加深原因有二:第一,随着网络深度的增加,网络的感受野增加,从而减少了网络的判别性与回归的准确度;第二,padding会引入spatial bias,因为如果使用padding的话,对于卷积核(template)来说是一定带来说是一定带padding,而对于search image中间部分是没有padding的,只有边缘的才有padding,作者认为这会导致不连续,导致对于search image边缘的目标识别很差。因此本文的作者从两个方面探究了加深siam系列网络的办法:第一,感受野的问题,作者探究发现siam系列网络prefer small stride,4~8最宜,同时网络最后的感受野最好在整幅exemplar的60%至80%最佳,stride也要根据这个来调整;针对padding问题,作者设计了一种新的残差网络结构,先padding,得到feature map后再删除feature map上受padding影响元素。

    在这里插入图片描述
    再来看下结果

    在这里插入图片描述
    6. siamFC++

    针对siam网络分析了之前的工作不合理的地方,提出了4条guidelines,并就这4条guidelines对siamfc进行了改进,个人认为这几点guidelines非常有意义。

    • 跟踪网络分为两个子任务,一个是分类,一个是位置的准确估计。即网络需要有分类与位置估计两个分支。缺少分类分支,模型的判别性会降低,表现到VOT评价指标上就是R不高;缺少位置估计分支,目标的位置准确度会降低,表现到VOT评价指标上就是A不高。
    • 分类与位置估计使用的feature map要分开。即不能分类的feature map上直接得到位置的估计,否则会降低A。
    • siam匹配的要是原始的exemplar,不能是与预设定的anchors匹配,否则模型的判别性会降低,siamFC++的A值略低于siamRPN++,但是R值在测试过的数据集上都比siamRPN++高,作者认为就是anchors的原因,在论文的实验部分,作者进行了实验发现siamRPN系列都是与anchors进行匹配而不是exemplar本身,但是anchors与exemplar之间存在一些差异,导致siamRPN的鲁棒性不高。
    • 不能加入数据分布的先验知识,例如原始siamFC的三种尺度变换,anchors等实际上都是对目标尺度的一种先验,否则会影响模型的通用性。

    在这里插入图片描述
    网络结构如上图,值得注意的是siamfc++未使用anchors那么她是怎么解决尺度问题的呢,笔者在论文中似乎未见到作者关于这方面的提及,如果有朋友注意到还请在评论区告知,此外作者在论文中说他们追随了“per-pixel prediction fashion”,这是指什么也还有待开源代码后笔者再研究下。

    另外值得注意的是作者在训练时是如何定义正副样本的。作者认为落在bbox内部的点都算positive,在计算loss时,只考虑positive的点,在对位置回归时,作者实验发现PSS loss比IOU loss高0.2个点,所以位置回归分支使用PSS loss,分类分支使用focal loss,quality分支使用BCE(即作者使用了两种不同的loss来训练分类分支)。在训练时,只使用了positive的点,该模型对背景的区分度可能不够(还是要运行代码看呀),如果把背景也加上会不会进一步提升模型的判别性。跟踪不仅仅是单纯的根据exemplar图像本身特征寻找,目标周围的环境对跟踪也有帮助,对loss进行改进。

    最后看下消融实验以及最后的结果

    在这里插入图片描述

    由该图可以看到siamFC++改进的各部分对于最后结果的提升(与原始的siamFC比较),位置回归对EAO提升最大,the regression branch (0.094), data source diversity (0.063/0.010), stronger backbone (0.026), and better head structure (0.020).

    在这里插入图片描述

    展开全文
  • C++,传统OpenCV跟踪算法,单目标跟踪,多目标跟踪,C amshift跟踪 技术交流 资源共享 博主QQ:68823886

    C++,传统OpenCV跟踪算法,单目标跟踪,多目标跟踪,C amshift跟踪

    技术交流 资源共享 博主QQ:68823886

    展开全文
  • 基于容积卡尔曼滤波的单目标跟踪MATLAB代码
  • 单目标跟踪 meanshit http://blog.csdn.net/real_myth/article/details/53781829
  • 视觉单目标跟踪任务概述

    千次阅读 2020-11-14 20:59:54
    单目标跟踪的基本流程 单目标跟踪的分类 1.经典目标跟踪方法(2010年以前) 2.相关滤波(Correlation Filter,CF) 3.基于深度学习的跟踪方法(Deep Learning,DL) (1) 基于预训练深度特征的跟踪模型 (2) 基于离线...
  • 基于Meanshift的单目标跟踪的Matlab跟踪代码,首先用鼠标选定跟踪目标窗口,双击后会启动跟踪程序
  • 单目标跟踪数据集分享单目标跟踪数据集目录LaSOTGOT-10kVOTOTB100ILSVRC2015 单目标跟踪数据集目录 (有更多的数据集欢迎分享,保持更新) LaSOT 百度网盘链接: https://pan.baidu.com/s/1eqGBX6KFyKnWgHPYAWetjA. ...
  • 单目标跟踪小综述

    2020-11-21 23:39:20
    本文转载自Smarter。最近看了几篇关于单目标跟踪的paper,为了方便自己梳理脉络同时和大家交流讨论,将一些重要的paper整理在这。 首先用一张图罗列下本文涉及到的paper:一...
  • 本文提出了一种基于状态混合模型理论的单目标跟踪贝叶斯算法。 与现有方法相比,该算法旨在推导所有测量的似然函数。 鉴于此,进一步提出了一种解析贝叶斯算法。 此外,在动力学和测量模型的线性高斯假设下,提出了...
  • 基于PIR Sensor 的单目标跟踪系统的设计与实现
  • matlab源码的IMM交互多目标单目标跟踪
  • 通过粒子滤波和稀疏表示的鲁棒组合进行单目标跟踪
  • 单目标跟踪——个人笔记

    千次阅读 2019-01-10 21:39:19
    单目标跟踪——个人笔记 以《Handcrafted and Deep Trackers: A Review of Recent ObjectTracking Approaches》为主线看单目标跟踪文献。 随手记。 MOSSE D. S. Bolme, J. R. Beveridge, B. A. Draper, and Y. M. ...
  • stc单目标跟踪

    2017-05-08 15:47:17
    一个简单的目标跟踪程序实例
  • 基于UKF滤波的单目标跟踪算法研究,利用UKF算法对机动的单目标实现跟踪
  • 基于Meanshift的单目标跟踪算法【matlab+c两个版本】

    千次下载 热门讨论 2014-06-12 16:49:26
    基于meanshift的单目标跟踪算法实现 说明: 1. RGB颜色空间刨分,采用16*16*16的直方图 2. 目标模型和候选模型的概率密度计算公式参照上文 3. opencv版本运行:按P停止,截取目标,再按P,进行单目标跟踪 4. Matlab...
  • 基于meanshift的单目标跟踪算法实现 说明: 1. RGB颜色空间刨分,采用16*16*16的直方图 2. 目标模型和候选模型的概率密度计算公式参照上文 3. opencv版本运行:按P停止,截取目标,再按P,进行单目标跟踪 4. Matlab...
  • 对于单目标跟踪问题以截获概率建立了跟踪优化模型,并给出了跟踪精度约束条件;对模型进行求解,得到了自适应雷达辐射间隔与辐射功率的控制策略;与其它2种雷达辐射控制方式进行仿真比较,仿真结果证明:跟踪时间超过...
  • 粒子滤波在单目标跟踪多目标跟踪电池寿命预测中的应用-粒子滤波算法原理及在多目标跟踪中的应用(Matlab程序).ppt 本帖最后由 huangxu_love 于 2013-7-26 12:50 编辑 推荐一本学习粒子滤波原理的好资料《粒子...
  • 最近基于嵌入式设备(Khadas Vim3)做了一套单目标跟踪算法,跟踪效率可以做到每秒25帧左右。
  • 粒子滤波在单目标跟踪多目标跟踪电池寿命预测中的应用-粒子滤波原理及应用仿真.doc 本帖最后由 huangxu_love 于 2013-7-26 12:50 编辑 推荐一本学习粒子滤波原理的好资料《粒子滤波原理及应用仿真》,本手册...
  • 毕业设计项目是有关跨摄像头的单目标跟踪,之前使用KCF算法,但是没有预测运动轨迹,不能实现跨屏跟踪。 现在没有思路,求问大神是否可以在KCF基础上修改,或者如果需要重新开始的话,可以使用哪些算法呢?有没有...
  • 单目标跟踪小结(1):理论推导和单目标跟踪小结(2):算法中,我们推导单目标跟踪问题的理论公式并介绍了三种算法。在本文中,我们将采用高斯叠加滤波算法(Gaussian Sum Filtering)跟踪一个随机运动的目标。...
  • opencv单目标跟踪

    2014-01-06 20:25:28
    linux下单目标实时跟踪算法,基于camshift方法。
  • opencv3中的单目标跟踪

    2019-03-20 18:39:03
    opencv的3版本以上支持了深度学习的一些东西,其中单目标跟踪就是其中一个,以下代码就是官网上的测试例子 #include <opencv2/opencv.hpp> #include <opencv2/tracking/tracking.hpp> #include <...
  • 内容主要提取自edX平台上Chalmers的micromaster项目:...在随后的每个时刻,我们有多个测量,记做 ,但每个时刻测量个数不定,因为是单目标跟踪,所以对目标的测量为1个(这里我们假设点目标,即一个目标产生一个...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,716
精华内容 686
关键字:

单目标跟踪