ECO算法的代码运行配置以及阅读笔记

先编译matconvnet 然后就回出现mex文件夹,说明你编译成功了。其中编译是下载matconvnet然后运行vl-compilenn
注意编译时用vs关于vs跟matlab的配置见我之前的博客,关键是vs版本比matlab的要低,否则各种报错。最后我终于成功。太难了!我自己弄的,环境变量啥的设置网上都有,所以不慌,你也可以!
ECO算法的代码运行配置以及阅读笔记_第1张图片
然后就是直接打开下载的eco
ECO算法的代码运行配置以及阅读笔记_第2张图片
运行install 如果你前面做好了这一步是没有什么问题的 。如果有小问题说明还是编译器或者是你看install需要修改的地方都有哪些。
等显示下面这个时就成功install了
ECO算法的代码运行配置以及阅读笔记_第3张图片
最后再demo一下就行了 。然后你看我出来的不是GPU的只有ECO算法的代码运行配置以及阅读笔记_第4张图片
我太难了 这个速度嗯~~
ECO算法的代码运行配置以及阅读笔记_第5张图片
加了hog 和cnn的果然不一样
关于ECO的阅读笔记,总要再写一下,万一一看英文发现好像不曾学过,我太难了 啊啊啊啊哭泣泣自力更生艰苦创业科研使我癫狂我真的也是没有把我好时间,没有坚定方向。真的是。。。行了不唠了~

本文概览:
1,作者:Martin Danelljan;
2,灵感来源:自从KCF出现后,基于KCF改良的CF类跟踪器效果越来越好,但是速度越来越慢;
3,解决问题:在提升改进CF模型的性能的同时增加其速度,同时避免速度过慢和过拟合并提升性能;
4,特征选取:CNN+HOG+CN;
5,算法效果1:使用深度特征,在VOT2016上比当前最好的算法覆盖率提升13.3%;
6,算法效果2:使用传统特征,在CPU上达到60fps,OTB2015上覆盖率为64.8%。
灵感
1,灵感关键点1:模型容量。一般的CF算法在增加特征通道的同时简单的增加模型容量,这对于训练样本本来就少并且对实时性要求高的跟踪算法来说容易导致过拟合和速度过慢;
2,灵感关键点2:训练集大小。一些CF跟踪器需要保留很多训练样本以此防止过拟合,但是会增加内存负担和计算负担,尤其是在高维度特征下。另外一些CF跟踪器则丢弃过去的训练数据,但是可能会导致过拟合于当前训练样本,况且在目标发生遮挡或一些不利条件下,当前训练样本本来就是错的;
3,灵感关键点3:模型更新。大多数CF模型每帧都会对模型进行更新,但是过多的更新会导致模型对物体突然变化很敏感,从而不但导致了跟踪器速度变慢而且由于可能过拟合当前帧目标所以导致鲁棒性也会下降,现在的跟踪算法越来越倾向于间接更新而不是逐帧更新了;
贡献
1:在CF算法中提出了分解的卷积操作,大大减少了模型参数;
2:压缩训练样本空间,有效的减少学习过程中的训练样本数,同时保持训练样本的多样性;
3:提出有效的模型更新策略,同时增加跟踪速度和鲁棒性;
4:减少了80%的模型参数,90%的训练样本数,80%的优化迭代次数。
基本方法C-COT:
1,C-COT好处1:通过在连续时间域进行卷积操作,自动整合多分辨率特征,从而可以独立的灵活的选择特征的分辨率;
2,C-COT好处2:在检测阶段可以直接进行精确的高分辨率定位,和特征分辨率无关;
3,C-COT使用M个训练样本进行滤波器学习,训练样本的每个特征通道的分辨率可能是不同的,通过插值使每个特征通道在连续的时域上拥有同样的大小;
4,C-COT使用了SRDCF中的空间约束项以及共轭梯度下降算法进行模型求解。

?;本文方法:
1,针对以上提出的问题进行解决呗;
2,减少模型参数+压缩训练样本+增加速度+增加鲁棒性+低频率的模型更新;

本文核心——因式分解的卷积操作(特征线性降维)
1,C-COT中学习到的很多滤波器的判别性都很低,尤其是在高维深度特征下,这不但不利于目标定位,同时还加长了训练时间;
2,假设特征通道数为D,在传统方法中为每一个通道学习一个滤波器,本文提出学习C个滤波器(C
在这里插入图片描述
3,分解后卷积操作表达式:
4,矩阵P即为线性降维因子,目标为共同学习矩阵P和C通道滤波器f_C
在6,损失函数是一个非线性最小二乘问题,使用Gaussian-Newton和Conjugate Gradient方法进行优化求解;这里插入图片描述
6,损失函数是一个非线性最小二乘问题,使用Gaussian-Newton和Conjugate Gradient方法进行优化求解;
ECO算法的代码运行配置以及阅读笔记_第6张图片
其意在说明,在C-COT中绝大多数滤波器是稀疏的,故可以对滤波器组(D个)进行压缩得到新滤波器组(C个),这C个滤波器几乎可以线性表出原D个滤波器,但是确大大减小了模型容量。
本文核心——压缩产生式的样本空间模型:
1,目标:避免像C-COT中一样需要存储大量之前的样本;
2,灵感:很明显,单一的用队列保留之前的样本必然会造成冗余;
3,方法:视样本集为一个高斯混合模型,每一个主成分代表目标的不同外形,同一个主成分间相似度高,不同主成分间相似度低,从而产生一个压缩的能表达目标不同外观样本集,且大大减少了内存需求、计算需求和过拟合的风险;
4,优化问题变为下式,其中E为训练样本x和其标签y的联合概率分布p(x,y)的分布
在这里插入图片描述
5,p(x,y):样本和标签联合分布,由于标签y相同,故只需要计算p(x)即可;
在这里插入图片描述
在这里插入图片描述
6.计算模型
7,计算模型更新:对于每一个新的样本,以此建立一个主成分m,并初始化此主成分的先验权重以及均值向量(所有主成分方差向量均为单位向量)。如果主成分数量大于L个,则需要对模型就行简化:某个主成分模型权重小于某值时则删除该模型;合并两个距离最近的模型并更新合并之后的权重和均值向量;
8,引入上述模型后损失函数变为下式,其中使用高斯模型均值代替原训练样本,使用高斯主成分先验权重代替原更新系数,训练样本数
————————————————
在这里插入图片描述
m降到l
ECO算法的代码运行配置以及阅读笔记_第7张图片
本图意在说明,经过本节算法处理后的训练集和原C-COT训练集的对比,可以见本算法处理后的训练集在同等大小下,相对原训练集具有相思样本少且样本外观多样化的特点;
本文核心——模型更新策略:
1,特点:系数更新策略;
2,直觉上:当目标发生大的变化的时候更新模型,然而发现目标发生大的变化并不是一件容易的事情,很可能会导致没有必要的复杂的计算,况且基于本文的损失函数计算残差项在计算量上是十分昂贵的;
3,本文策略简单,固定间隔N帧对目标优化表达式的模型进行共轭梯度更新求解;
4,要注意的是,模型是间隔N帧进行更新,但是样本空间是每帧都更新的,和N无关;
5,本文实验发现当N=5~6的时候效果很不错,每次更新都会有新的主成分参与计算,尤其是可以避免目标的突然变化以及短的不利因素造成的损坏模型或者导致过拟合的影响;
6,N取太大,直觉上会减少计算量,实则不然,N太大导致迭代次数增加,并且模型判别力下降。
实验细节:
1,特征:Conv-1、Conv-5、HOG、Color-Names;
2,为每一组特征学习一个P矩阵;
3,维度降低:Conv-1(96->16),Conv-5(512->64),HOG(31->10),CN(11->3);
4,正则项系数:0.0000002;
5,迭代过程:使用PCA初始化P矩阵,而非随机初始化;f被初始化为0;
6,迭代次数:第一帧用10次Gaussian-Newton迭代,后续子问题用20次共轭梯度迭代;
7,学习速率:0.01;
8,主成分数:50;
9,更新间隔:N=6;
10,实验效果:ALL IS BEST!

本文算法效果好的原因:
1,特征选用全面:CNN+CN+HOG;
2,经过组合的相关滤波器性能强,参数少,计算量少,防止过拟合能力强;
3,经过模型压缩后的训练样本具有样本容量小但是不失多样性;
4,更新策略中并不是每帧更新,有效抑制漂移和过拟合的发生;
5,速度快,性能好,有效的通过整合去除CF中的冗余:模型参数冗余,训练样本冗余。

你可能感兴趣的:(相关滤波eco)