KCF论文技术路线

2023-11-12

https://blog.csdn.net/crazyice521/article/details/53525366

http://www.cnblogs.com/YiXiaoZhou/p/5925019.html

 

一、算法介绍

KCF全称为Kernel Correlation Filter 核相关滤波算法。是在2014年由Joao F. Henriques, Rui Caseiro, Pedro Martins, and Jorge Batista提出来的,算法出来之后也算是轰动一时,这个算法不论是在跟踪效果还是跟踪速度上都有十分亮眼的表现,所以引起了一大批的学者对这个算法进行研究以及工业界也在陆续把这个算法应用在实际场景当中。这个算法主页里面有论文还有代码都可以在这里面下载,也有一些简介之类的,这篇文章在2015年作者又发在了TPAMI上面,所以大家可能会看到两个版本,但是没有改动,都是可以看到。论文下载地址相关滤波算法算是判别式跟踪,主要是使用给出的样本去训练一个判别分类器,判断跟踪到的是目标还是周围的背景信息。主要使用轮转矩阵对样本进行采集,使用快速傅里叶变化对算法进行加速计算。

二、详细介绍

这部分就直接根据论文当中的安排给大家解释一下,这样大家对照论文去看,也算是比较舒服的理解了。

Abstract:主要介绍了一下这篇文章的想法的由来以及算法的成就和所使用的东西,还介绍了一下论文在哪些数据集上测试了等。简介一般就是论文的总结,对论文做一个总体的介绍,大致的思想基本看了间接之后就能明白了,就是上面我写的那些,使用核相关滤波器训练一个判别式分类器,使用轮转矩阵生成样本去训练分类器,代码也是开源的。

1、Introduction

第一部分就是对整个跟踪的问题进行一个介绍,跟踪是计算机视觉领域一个比较重要的成分,可以应用在多种领域,人机交互、监控等我就不一一列举了,这个大家可以自己去查了,在第一部分比较重要的有这么几句话,Although the reasons for doing so are understandable, we argue that under sampling negatives is the main factor inhibiting performance in tracking. In this paper, we develop tools to analytically incorporate thousands of samples at different relative translations, without iterating over them explicitly. This is made possible by the discovery that, in the Fourier domain, some learning algorithms actually become easier as we add more samples, if we use a specific model for translations. 
主要的意思就是说负样本对训练一个分类器是一个比较重要的存在,但是在训练的时候负样本的数量是比较少的,所以我们本文的算法就是为了更加方便地产生更多的样本,以便于我们能够训练一个更好的分类器。 
Our framework easily incorporates multiple feature channels, and by using a linear kernel we show a fast extension of linear correlation filters to the multi-channel case. 
相关滤波器是根据之前的MOSSE算法(论文地址)改进的,可以说是后来CSK、STC、Color Attributes等tracker的鼻祖。Correlation Filter(以下简称CF)源于信号处理领域,后被运用于图像分类等方面。而Correlation Filter应用于tracking方面最朴素的想法就是:相关是衡量两个信号相似值的度量,如果两个信号越相似,那么其相关值就越高,而在tracking的应用里,就是需要设计一个滤波模板,使得当它作用在跟踪目标上时,得到的响应最大,最大响应值的位置就是目标的位置。(详细的介绍大家可以参考一下王泥喜龙一的博客地址)如下图所示: 
 
CSK(论文下载地址)是这个算法改进的初级版本,这篇是主要引进了循环矩阵生成样本,使用相关滤波器进行跟踪,本篇KCF是对CSK进行更进一步的改进,引进了多通道特征,可以使用比着灰度特征更好的HOG(梯度颜色直方图)特征或者其他的颜色特征等。

2、Related Work

2.1、基于检测的跟踪 
这个听名字就比较好理解了,基于检测到的目标进行跟踪,首先在跟踪之前对目标进行检测,得到目标的位置,然后对目标进行学习,跟踪。 
2.2、样本转换和相关滤波 
对一些以前存在的样本转换的方法和相关滤波的一些知识进行一个介绍。For us, this hinted that a deeper connection between translated image patches and training algorithms was needed, in order to overcome the limitations of direct Fourier domain formulations.而且说出了样本和训练算法都是必须的,直接在频域使用傅里叶变化加快算法。 
2.3、后来的工作 
初始版本就是我上面说的CSK那篇,然后把多通道特征以及核函数这个加进来对算法进行提升。

3、Contributions

提出了一个快速的效果良好的跟踪算法,把以前只能用单通道的灰度特征改进为现在可以使用多通道的HOG特征或者其他特征,而且在现有算法中是表现比较好的,使用HOG替换掉了灰度特征,对实验部分进行了扩充,充分证明自己的效果是比较好的。使用核函数,对偶相关滤波去计算。

4、Building Blocks

4.1、 Linear regression 
主要使用岭回归函数,能够像SVM那些有良好的表现。训练的目的就是找到这么一个函数使得我们的误差函数最小,在本文中使用的误差函数为 
接下来的一切内容都是去讲怎么去最小化这个二次函数,以及怎么去找这个函数,这个方法也是比较简单的,就是对函数求导,然后使导数等于0,然后得到w,既是我们要求的函数。 
4.2、Cyclic Shifts 
本文的重点来了,循环矩阵,文章中为了介绍方便,作者使用了单通道一维的数据表示去进行讲解,可以直接扩展到二维的情况。一维的情况下就是矩阵想乘的问题了,就是矩阵分析当中学过的左乘一个单位矩阵和右乘一个单位矩阵。左乘是行变换,右乘列变化。目的就是得到更多的样本,每乘一次都是一个新的样本,这样的话就可以多出来n*n个样本了,这就是循环矩阵在这里最大的用处,制造样本的数量,以图像的形式展示就是这样的,一个样本经过循环矩阵之后就可以产生这么多的样本。

在二维图像的情况下就是像下图这样

 
把图像向上、向下分别移动不同的像素得到新的样本图像,这就是循环之后的样本,这样算是直接增加了样本的数量,然后用来对分类器进行训练,更多的样本肯定能够训练的分类器的效果就更好了。 
4.3、Circulant matrices 
循环矩阵的计算可以直接把所有的样本都转换为对角矩阵进行处理,因为在循环矩阵对样本进行处理的时候,样本并不是真实存在的样本,存在的只是虚拟的样本,可以直接利用循环矩阵所特有的特性,直接把样本矩阵转换为对角矩阵进行计算, 这样可以大幅度加快矩阵之间的计算,因为对角矩阵的运算只需要计算对角线上非零元素的值即可。Eq. 7 expresses the eigendecomposition of a general circulant matrix. The shared, deterministic eigenvectors Flie at the root of many uncommon features, such as commutativity or closed-form inversion. 说的意思就是大概是做了特征分解,其实是一个意思就是简化运算,加快速度。

4.4 Putting it all together

本节就是对上面w进行一个求解的过程,具体的公式推导的部分我不会做详细的推导,主要是我也不是很懂,哈哈,虽然自己推出来了,如果有想知道的或者大神希望指点,想要知道没有推出来的同学也可以问问我,我给你们说一下我的思路。

4.5 Relationship to Correlation filters

Correlation filters have been a part of signal processing since the 80’s, with solutions to a myriad of objective functions in the Fourier domain . Recently, they made a reappearance as MOSSE filters [9], which have shown remarkable performance in tracking, despite their simplicity and high FPS rate. 
相关滤波一开始是信号处理的东西,经过MOSSE的发表之后引进到tracking 当中,因为计算的速度和精度都很不错,所以取得了很好的效果。

Circulant matrices allow us to enrich the toolset put forward by classical signal processing and modern correlation filters, and apply the Fourier trick to new algorithms. 
循环矩阵丰富了样本库,给出了更好的相关滤波算法。

这一个小节可以好好看一下,就是相关滤波跟踪算法怎么来的。

5 Non-linear regression

使用非线性回归对模型进行训练。

5.1 Kernel trick- brief overview

核技巧,这个是本文的另外一大亮点,把低维空间的计算映射到高维的核空间,在低维空间不可分的情况到高维空间之后变的线性可分了,这样用一个简单的核函数直接做映射可以很好的完成这个工作。 
核函数主要的目的就是把一个线性问题映射到一个非线性核空间,这样把在低维空间不可分的到核空间之后就能够可分了。 
本章节接下来的部分就是对核技巧进行很好的解读了。

5.2 Fast kernel regression

快速的核回归。就是怎么去计算核函数,怎么快速得到最优解。

5.3 Fast detection

快速检测。核函数训练完成之后,新来的样本直接进行映射到核空间,然后使用训练得到的函数进行运算得到函数值,对所有的位置都进行计算,就能快速的检测到目标的位置所在。

6 Fast kernel Correlation

本节就是介绍了几种常见的核函数的形式,以及每种核函数所对应的计算方式。

6.1 Dot-product and polynomial kernels

6.2 Radial Basis Function and Gaussian kernels

6.3 Other kernels

7 MULTIPLE CHANNELS

In this section, we will see that working in the dual has the advantage of allowing multiple channels (such as the orientation bins of a HOG descriptor [20]) by simply summing over them in the Fourier domain. This characteristic extends to the linear case, simplifying the recently-proposed multi-channel correlation filters [31], [32], [33] considerably, under specific conditions.

7.1 General case

 
这个公式看明白了这一节就没什么问题了,无非就是单通道转换为多通道,使用高斯核函数。

7.2 Linear kernel

这个就是线性核函数多通道 


In conclusion, for fast element-wise operations we can choose multiple channels (in the dual, obtaining the DCF) or multiple base samples (in the primal, obtaining the MOSSE), but not both at the same time. This has an important impact on time-critical applications, such as tracking. The general case [31] is much more expensive and suitable mostly for offline training applications.

8 EXPERIMENTS

8.1 Tracking pipeline

8.2 Evaluation

在50个序列集上进行测试对比。 


最后结果是0.732,精度还是不错的,比着原有算法有大幅度提升。

9 CONCLUSIONS AND FUTURE WORK

In this work, we demonstrated that it is possible to analytically model natural image translations, showing that under some conditions the resulting data and kernel matrices become circulant. Their diagonalization by the DFT provides a general blueprint for creating fast algorithms that deal with translations. We have applied this blueprint to linear and kernel ridge regression, obtaining state-of-the-art trackers that run at hundreds of FPS and can be implemented with only a few lines of code. Extensions of our basic approach seem likely to be useful in other problems. Since the first version of this work, circulant data has been exploited successfully for other algorithms in detection [31] and video event retrieval [30]. An interesting direction for further work is to relax the assumption of periodic boundaries, which may improve performance. Many useful algorithms may also be obtained from the study of other objective functions with circulant data, including classical filters such as SDF or MACE [25], [26], and more robust loss functions than the squared loss. We also hope to generalize this framework to other operators, such as affine transformations or non-rigid deformations.


--------------------- 
作者:小小菜鸟一只 
来源:CSDN 
原文:https://blog.csdn.net/crazyice521/article/details/53525366 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

 

KCF目标跟踪方法分析与总结

correlation filter

Kernelized correlation filter

tracking

读"J. F. Henriques, R. Caseiro, P. Martins, J. Batista, 'High-speed tracking with kernelized correlation filters'" 笔记

KCF是一种鉴别式追踪方法,这类方法一般都是在追踪过程中训练一个目标检测器,使用目标检测器去检测下一帧预测位置是否是目标,然后再使用新检测结果去更新训练集进而更新目标检测器。而在训练目标检测器时一般选取目标区域为正样本,目标的周围区域为负样本,当然越靠近目标的区域为正样本的可能性越大。

注意论文中关于向量是行向量还是列向量总是指示不清楚,所以本文对变量符号统一之后进行推导,首先所有的小写字母均表示列向量,所有的大写字母表示矩阵,其中矩阵的每一行是一个样本,文中的函数除了是对行向量操作,其余都是对元素操做的,四则运算符号也都是针对元素操作的。还有所有对循环矩阵使用傅里叶变换时使用的生成向量都是循环矩阵的第一行向量,这点很重要。

KCF的主要贡献

  • 使用目标周围区域的循环矩阵采集正负样本,利用脊回归训练目标检测器,并成功的利用循环矩阵在傅里叶空间可对角化的性质将矩阵的运算转化为向量的Hadamad积,即元素的点乘,大大降低了运算量,提高了运算速度,使算法满足实时性要求。

  • 将线性空间的脊回归通过核函数映射到非线性空间,在非线性空间通过求解一个对偶问题和某些常见的约束,同样的可以使用循环矩阵傅里叶空间对角化简化计算。

  • 给出了一种将多通道数据融入该算法的途径。


一维脊回归

脊回归
设训练样本集,那么其线性回归函数,是列向量表示权重系数,可通过最小二乘法求解

其中用于控制系统的结构复杂性,也就是VC维以保证分类器的泛化性能。
写成矩阵形式

其中的每一行表示一个向量,是列向量,每个元素对应一个样本的标签,于是令导数为0,可求得

因为后面实在傅里叶域内计算,牵涉到复数矩阵,所以我们将结果都统一写成复数域中形式

其中表示复共轭转置矩阵。

循环矩阵
KCF中所有的训练样本是由目标样本循环位移得到的,向量的循环可有排列矩阵得到,比如

当然对于二维图像的话,可以通过x轴和y轴分别循环移动实现不同位置的移动

举例

 

enter description here

 

1474942884758.jpg

 

 

enter description here

 

1474942898329.jpg

 

所以由一个向量可以通过不断的乘上排列矩阵得到n个循环移位向量,将这n个向量依序排列到一个矩阵中,就形成了x生成的循环矩阵,表示成

 

enter description here

 

1D向量得到的循环矩阵.jpg

 

 

enter description here

 

2D图像不同循环次数后的移位.jpg

 

循环矩阵傅氏空间对角化
所有的循环矩阵都能够在傅氏空间中使用离散傅里叶矩阵进行对角化

其中x对应于生成X的向量(就是X的第一行矩阵)的傅里叶变化后的值,,是离散傅里叶矩阵,是常量

关于矩阵的傅里叶对角化请参加 循环矩阵傅里叶对角化,后面的笔记会专门讲解傅里叶变换。

傅氏对角化简化的脊回归
带入脊回归公式得到

注意这里的分号是点除运算,就是对应元素相除。因为,( 循环矩阵傅里叶对角化)对上式两边同时傅氏变换得

于是

这里和论文式(12)不一样,论文里(12)式分子上似乎多了个共轭符号,因为Appendix A.5中的式(55)后面那个应该是少了个共轭转置符号。

这样就可以使用向量的点积运算取代矩阵运算,特别是求逆运算,大大提高了计算速度。

核空间的脊回归

我们希望找到一个非线性映射函数列向量,使映射后的样本在新空间中线性可分,那么在新空间中就可以使用脊回归来寻找一个分类器,所以这时候得到的权重系数为

行向量张成的空间中的一个向量,所以可以令

上式就变为

该问题称为的对偶问题
令关于列向量导数为0,

注:其实类似于核空间变量的协方差矩阵,矩阵的转置乘以矩阵,一定可逆。

对于核方法,我们一般不知道非线性映射函数的具体形式,而只是刻画在核空间的核矩阵,那么我们令表示核空间的核矩阵,由核函数得到,那么
于是

论文提出的一个创新点就是使循环矩阵的傅氏对角化简化计算,所以这里如果希望计算时可以同样将矩阵求逆运算变为元素运算,就希望将对角化,所以希望找到一个核函数使对应的核矩阵式循环矩阵。

Theorem 1. Given circulant data C(x), the corresponding kernel matrix K is circulatant if the kernel function satisfies ,for any permutation matrix M.
即核矩阵是循环矩阵应该满足两个条件:第一个样本和第二个样本都是由生成样本循环移位产生的,可以不是由同一个样本生成;满足,其中是排列矩阵。

证明:设,则,于是

因为K的第一行为所以相当于将第一行的第个元素放到K的第i行j列上,
那么就得到了循环矩阵,所以是循环矩阵。证明里表示除的余数,因为这个过程是循环的。

证毕。

若K是循环矩阵,则

其中是K中第一行。这里觉得奇怪?两个转置?这是因为我们已经约定是列向量,而的第i行是,是不是明白了~
这里推出来的公式和论文中公式(17)也不大一样

那么那些核函数满足上述性质呢?论文中给出

  • Radial Basis Function kernels -e.g. Gaussian

  • Dot-Product kernels -e.g. linear, polynomial

  • Additive kernels - e.g. intersection,  and Hellinger kernels

  • Exponentiated additive kernels.

快速检测

首先由训练样本和标签训练检测器,其中训练集是由目标区域和由其移位得到的若干样本组成,对应的标签是根据距离越近正样本可能性越大的准则赋值的,然后可以得到

待分类样本集,即待检测样本集,是由预测区域和由其移位得到的样本集合
那么就可以选择最大的样本作为检测出的新目标区域,由判断目标移动的位置。

定义是测试样本和训练样本间在核空间的核矩阵
由于核矩阵满足,即类似于theorem 1 的证明可得是循环矩阵

我记得曾经见到过有人问非方阵的情况,假设采样窗口非方形,即那么采样窗口通过移位都会产生个样本,无论是训练样本还是测试样本,所以一定是方阵

于是得到各个测试样本的响应

注意我们说过小写的都是列向量,是列向量。注意我们这里是矩阵的第一行,即的第一列,而文中(22)式中是论文中的第一行,这是因为本文和论文中关于的定义正好是相转置的。也就是说我觉得(22)式只是少了一个共轭。。。
觉得蛮奇怪的,怎么和论文中推导结果好多都差一个共轭符号??
这是因为都是对称向量,而对称向量的共轭转置是实数,所以就和论文中一样了,这点参考KCF高速跟踪详解

核矩阵的快速计算

现在还存在的矩阵运算就是核矩阵的第一行的计算

内积和多项式核
这种核函数核矩阵可以表示成,于是

因此对于多项式核

径向基核函数
比如高斯核,这类函数是的函数

所以

对于高斯核则有

1D到2D

上面公式推导的很爽,可是都是在1D情况下得到了结论,2D图像该怎么办呢?

这个问题困扰了我好久。。。。刚开始我也想从线性空间的脊回归推导,假设是目标图像,是由生成的循环矩阵块,即表示的第块,是由右移,下移得到的样本块。那么即使块循环矩阵能够通过2D傅里叶变换矩阵对角化又怎么用呢??因为我们不可能带入类似的式子中啊(这个式子是类比于1D脊回归写的,并无实际意义)

哎呀,想破脑袋啊!

啊哈,想明白了,线性假设下没办法用,直接在核空间推导,发现豁然开朗~

现在有一个函数,自变量,因变量,也不知道怎么映射的,也不知道是多少,反正是个确定但未知的值。那么在核空间我们就可以使用脊回归的公式了~

注意:由移位生成的样本共有个,所以,这里,是对应样本的标签,是对应样本标签的矩阵形式。

ok,现在再来看看定理2

Theorem 2. The block matrix  with elements  is a Block-Circulant Matrix (BCCM) if  is a unitarily invariant kernel.
这里和Theorem 1是类似的,a unitarily invariant kernel就是说,定理的证明参见Theorem 1.

而径向基核,dot-product kernel等都满足这个条件,所以得到的核矩阵都是块循环矩阵。

块循环矩阵可以使用2D傅里叶变换矩阵对角化( 循环矩阵傅里叶对角化

其中是2D傅里叶变换矩阵,是生成块循环矩阵的生成矩阵,表示对进行2D傅里叶变换的结果。

ok,那现在

其中表示全1的m维列向量。

这里的分别对应着的矩阵形式。

对应的响应

其中表示块循环矩阵的生成矩阵。

后面测试就类似于1D不推了

多通道问题

论文中在提取目标区域的特征时可以是灰度特征,但是使用Hog特征能够取得更好的效果,那么Hog特征该如何加入前面提到的模型呢?

Hog特征是将图像划分成较小的局部块,称为cell,在cell里提取梯度信息,绘制梯度方向直方图,然后为了减小光照影响,将几个cell的方向直方图串在一起进行block归一化,最终将所有的cell直方图串联起来就是图像的特征啦。

那么,按照传统的方式一张图像就提取出一个向量,但是这个向量怎么用啊?我们又不能通过该向量的移位来获得采样样本,因为,你想啊,把直方图的一个bin循环移位有什么意义啊?

所以论文中Hog特征的提取是将sample区域划分成若干的区域,然后再每个区域提取特征,代码中是在每个区域提取了32维特征,即,其中就是梯度方向划分的bin个数,每个方向提取了3个特征,2个是对方向bin敏感的,1个是不敏感的,另外4个特征是关于表观纹理的特征还有一个是零,表示阶段特征,具体参见fhog。提取了31个特征(最后一个0不考虑)之后,不是串联起来,而是将每个cell的特征并起来,那么一幅图像得到的结果就是一个立体块,假设划分cell的结果是,那么fhog提取结果就是,我们成31这个方向为通道。那么就可以通过cell的位移来获得样本,这样对应的就是每一通道对应位置的移位,所有样本的第i通道都是有生成图像的第i通道移位获得的,
,所以分开在每一个通道上计算,就可以利用循环矩阵的性质了。

我们来看1D的情况,1D弄明白了,2D也就明白咯,因为我们上面说了怎么推导2D的
样本cell数为M,每个cell特征维数为L,第个样本的第通道向量表示成,样本的总特征可以表示成.

于是K矩阵的第一行有

这里用到

这是dot product kernel的情况,那径向基核就很容易推了

 

enter description here

 

多通道的处理.jpg

 

总结

KCF相对于其他的tracking-by-detection方法速度得到了极大的提升,效果也相对较好,思想和实现十分简单。

 

enter description here

 

KCF目标检测.jpg

 

借上图来总结下KCF的过程,左图是刚开始我们使用红色虚线框框定了目标,然后红色实线框就是使用的padding了,其他的框就是将padding循环移位之后对齐目标得到的样本,由这些样本就可以训练出一个分类器,当分类器设计好之后,来到了下一帧图像,也就是右图,这时候我们首先在预测区域也就是红色实线框区域采样,然后对该采样进行循环移位,对齐目标后就像图中显示的那个样子 了,(这是为了理解,实际中不用对齐。。。),就是周围那些框框啦,使用分类器对这些框框计算响应,显然这时候白色框响应最大,因为他和之前一帧红色框一样,那我们通过白色框的相对移位就能推测目标的位移了。

然后继续,再训练再检测。。。。

论文中还说到几点

  1. 对特征图像进行cosine window加权,这主要是为了减轻由于边界移位导致图像不光滑。

  2. padding的size是目标框的2.5倍,肯定要使用padding窗口,要不然移位一次目标就被分解重组合了。。。效果能好哪去。。

  3. 对于标签使用了高斯加权

  4. 前后帧结果进行了线性插值,为了让他长记性,不至于模型剧烈变化。

但是其缺点也是很明显的。

  1. 依赖循环矩阵,对于多尺度的目标跟踪效果并不理想。当然可以通过设置多个size,在每个size上进行KCF运算,但这样的话很难确定应预先设置多少size,什么样的size,而且对size的遍历必将影响算法的速度。KCF最大的优势就是速度。

我在想能不能通过少量特征点的匹配来调整窗口的size,当然这样的话,速度也是个问题。

 

enter description here

 

1475242117128.jpg


这种情况下还能保证最大响应就对应着目标中心所在的框吗?如果不能偏差会不会越来越大?

 

  1. 初始化矩阵不能自适应改变,其实这个问题和上一个缺点类似,这里强调的是非刚体运动,比如跳水运动员,刚开始选定区域肯定是个瘦长的矩形框,但当运动员开始屈体的时候显然这个预选定框就很大误差了。

 

enter description here

 

1475242288757.jpg

 

3.难处理高速运动的目标

  1. 难处理低帧率中目标,这个和3类似,都是说相邻帧间目标位移过大。

 

enter description here

 

1475242373962.jpg

 

目标下一帧出现位置不在你的padding内,你怎么也不可能移位找到。。。

5.虽然算法中对模型系数进行线性插值,但是对于目标一旦被遮挡若干帧之后,可能模型就再也回不去了。。。因为模型已经完全被遮挡物污染掉了。

6.我觉的论文还有一个问题就是仅仅通过检测到的框中心和目标实际中心的距离来度量性能,这是有问题的。
比如我现在有一个人垂直我的镜头逐渐远去了,但他的中心一直在我镜头的中心处,那我就开始画个框就是镜头的视角范围,那这样我检测结果百分之百,可是有什么用呢。。。。当然论文方法是在很多不同数据集上检验的性能还是很有说服力的。我的意思就是对于单个数据集不能仅凭这个指标定方法的好坏。

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KCF论文技术路线 的相关文章

  • 11- OpenCV进行目标追踪 (OpenCV系列) (机器视觉)

    知识要点 1 OpenCV目标跟踪算法 的使用大概可以分为以下几个步骤 创建MultiTracker对象 trackers 61 cv2 legacy MultiTracker create 读取视频 或摄像头数据 cap 61 cv2 V
  • 【神经网络深度学习】--语义分割 Unet

    Unet 发表于 2015 年 属于 FCN 的一种变体 Unet 的初衷是为了解决生物医学图像的问题 由于效果确实很好后来也被广泛的应用在语义分割的各个方向 如卫星图像分割 工业瑕疵检测等 Unet 跟 FCN 都是 Encoder De
  • 【毕业设计】机器视觉停车位识别检测系统 - python 深度学习

    文章目录 1 简介 2 检测效果 3 实现方式 3 1 整体思路 3 2 检测空车位 3 3 车辆识别 4 最后 1 简介 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这两年开始 各个学校对毕设的要求越来越高
  • Convolutional Pose Machine - 卷积姿态网络

    Convolutional Pose Machine 卷积姿态网络 论文主要解决 单人单目 RGB图像姿态估计问题 本篇论文也是现在非常火热的openpose开源项目的核心之一 这篇来自CMU的论文为单人姿态估计方面研究注入新的思路 论文网
  • CV 经典主干网络 (Backbone) 系列: CSPNet

    CSPNet 引言 1 模型介绍 2 CSPNet的优点 2 1 减少了模型的参数量和FLOPS数值 2 2 解决了梯度信息的重复问题 2 3 减少内存流量 3 融合策略 总结 引言 对于传统深度学习 总是想达到一个增加速度同时精度提高的效
  • Canny边缘检测算法原理及其VC实现详解(一)

    目录 1 边缘检测原理及步骤 2 Canny边缘检测算法原理 2 1 对原始图像进行灰度化 2 2 对图像进行高斯滤波 2 3 用一阶偏导的有限差分来计算梯度的幅值和方向 2 4 对梯度幅值进行非极大值抑制 2 5 用双阈值算法检测和连接边
  • 国外机器视觉解决方案供应商Top 10

    由制造行业的杂志 Manufacturing Tech Insights 2016年评选的机器视觉解决方案供应商Top 10名单如下 Cognex 提供强大的机器视觉软件解决方案 高效的设备防错与故障检测监测供应商 Datalogic 为了
  • 看得见的实力!传智教育「智能机器人软件开发」课程,打造新型互联网人才!

    在日常生活中 你一定看到过这些场景 进入商场或银行 会有机器人帮你解决问题 疫情期间 火神山医院通过机器人给患者送餐 新型物流企业 机器人自动进行货物分拣 这些以前只能在电影中看到的场景 现在已逐渐融入到我们的生活中 机器人的出现 在不经意
  • AD如何圆形布局led

    1 左击选中led 2 右击复制 点击圆心 3 选择edit paste special 4 输入个数 和角度 360 个数 5 点OK 选择圆心双击
  • 线阵相机、镜头及光源的选型

    线阵相机顾名思义就是取像是成线性的 它的传感器是成线型的 举个例子 比如面阵相机的分辨率是640 480就是说这个相机横向有640个像元 纵向有480个像元 而线阵相机分辨率只体现在横向 比如2048像素的线阵相机就是说横向有2048个像元
  • 机器视觉图像分析领域,单目测量和双目测量有什么区别和用途?

    单目测量和双目测量在许多应用场景中都有广泛的应用 以下是一些典型的应用场景 单目测量应用场景 1 无人机定位与导航 单目摄像头可以用于无人机的视觉定位与导航 通过捕捉地面特征点 实现无人机的姿态估计和位置定位 2 机器人视觉导航 在轻量级的
  • LUT学习了解

    知乎 LUT Lookup Table 颜色查找表 通过LUT可以将一组RGB值输出为另一组RGB值 从而改变画面的曝光与色彩 如果我们规定 当原始R值为0时 输出R值为5 当原始R值为1时 输出R值为6 当原始R值为2时 输出R值为8 当
  • Halcon三维模型预处理(1):调平的三大手法

    面结构光拍摄生成的点云模型 往往相对系统坐标系是有角度的 首先讲一下调平的目的 1 为接下来的预处理切除背景面做准备 3 不做调平 后续处理会很麻烦 因为不清楚坐标系在平台的为位置 2 对于无序抓取项目 平台相对相机可能是有角度的 将抓取平
  • 大数据毕业设计 机器视觉图像拼接算法研究与实现 - python opencv

    文章目录 0 前言 一 拼接效果 二 算法介绍 1 拼接算法简介 1 1 基于区域相关拼接算法 1 2 基于特征相关拼接算法 1 3 拼接算法的基本流程 2 拼接算法原理 2 1 第一种 特征匹配 2 2 第二种 计算图像之间的变换结构 2
  • 拉普拉斯的原理

    拉普拉斯是一种二阶导数算子 是一个与方向无关的各向同性 旋转轴对称 边缘检测算子 若只关心边缘点的位置而不顾其周围的实际灰度差时 一般选择该算子进行检测 拉普拉斯算子为二阶差分 其方向信息丢失 常产生双像素 对噪声有双倍加强作用 因此它很少
  • KCF论文技术路线

    https blog csdn net crazyice521 article details 53525366 http www cnblogs com YiXiaoZhou p 5925019 html 一 算法介绍 KCF全称为Ker
  • Ciclop开源3D扫描仪软件---Horus源码分析之src\horus\engine\calibration\autocheck.py

    c 光明工作室 2017 2037 COPYRIGHT 光明工作室团队成员大部分来自全国著名985 211工程院校 具有丰富的工程实践经验 本工作室热忱欢迎大家的光临 工作室长期承接嵌入式开发 PCB设计 算法仿真等软硬件设计 1 基于C8
  • Ubuntu yolov5 环境配置

    查看Ubuntu版本 cat proc version Linux version 5 4 0 150 generic buildd bos03 amd64 012 gcc version 7 5 0 Ubuntu 7 5 0 3ubunt
  • CV 经典主干网络 (Backbone) 系列: CSP-Darknet53

    CSP Darknet53 0 引言 1 网络结构图 1 1 输入部分 1 2 CSP部分结构 1 3 输出部分 2 代码实现 2 1 代码整体实现 2 2 代码各个阶段实现 3 代码测试 4 结论 0 引言 CSP Darknet53无论
  • 螺纹检测案例-螺距测量-大径小径检测-螺牙检测

    齿轮检测分析 Gear inspection and analysis 螺纹结构及检测要素 1 大径 宽径 2 小径 窄径 3 中经 4 螺距 间距 5 螺牙高度 深度 VisionBank 软件螺纹检测工具 02 01 螺纹检测分析流程

随机推荐

  • chart模板文件简单语法使用

    参考网址 https docs helm sh chart template guide the chart template developer s guide helm 模板 helm模板语法嵌套在 和 之间 有三个常见的 Values
  • 通过反编译定制android ROM

    以下操作是基于接近原生Android 4 4的系统下进行 是白牌设备 1 copy system 整个目录的 apk copy 到本地 2 对里面的 apk 重新进行签名 3 放回设备里面 重新启动 如果运行正常 那么现在就拥有设备的系统签
  • 上海链节科技的介绍

    上海链节科技有限公司 诞生于产业加速重塑 数字化金融格局加速转型的浪潮中 立足于区块链 数字经济为实体经济赋能 为社会进步和经济发展提供高效率 低成本的数字化转型解决方案 通过与实体企业 人民大众的生产 生活消费产生直接 正向的链接 从真正
  • JavaFX 程序退出时结束子线程

    1 前言 在JavaFX的程序开发中 在调用子线程之后子线程还未结束时 我们点击应用程序右上角的关闭按钮的时候 我们会发现程序还没有真正的结束运行 这是因为我们的子线程没有在JavaFX的管理之下 2 如何关闭 在主方法中找到Stage类
  • 机器学习数据集_机器学习数据集的选择

    机器学习数据集 Before you is an article guide to open data sets for machine learning In it I for a start will collect a selecti
  • 会话列表

    java实现 题目描述 小云正在参与开发一个即时聊天工具 他负责其中的会话列表部分 会话列表为显示为一个从上到下的多行控件 其中每一行表示一个会话 每一个会话都可以以一个唯一正整数id表示 当用户在一个会话中发送或接收信息时 如果该会话已经
  • Wifi模块—源码分析Wifi热点扫描2(Android P)

    一 前言 这次接着讲Wifi工程流程中的Wifi热点扫描过程部分的获取扫描结果的过程 也是Wifi扫描过程的延续 可以先看前面Wifi扫描的分析过程 Wifi模块 源码分析Wifi热点扫描 Android P 二 图示调用流程 这次的调用流
  • 【华为OD机试真题2023B卷 JS】勾股数元组

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 勾股数元组 知识点编程基础 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 如果3个正整数 a b c 满足a2 b2 c2的关系 则称 a b c 为勾股数 著名的勾
  • 【华为OD】最多几个直角三角形_全组合求解

    目录 一 题目描述 二 输入描述 三 输出描述 3 1 描述 四 题目解析 五 Java玩法 六 JavaScript玩法 一 题目描述 有 N 条线段 长度分别为 a 1 a n 现要求你计算这 N 条线段最多可以组合成几个直角三角形 每
  • Java中内部类详解(类的五成员之五:内部类)

    目录 友情提醒 概述 Java类的五成员之五 内部类 一 内部类 1 成员内部类 2 方法内部类 3 匿名内部类 4 静态内部类 二 匿名内部类与Lambda表达式 友情提醒 先看文章目录 大致了解知识点结构 直接点击文章目录可以跳转到文章
  • Git 如何优雅地回退代码

    前言 从接触编程就开始使用 Git 进行代码管理 先是自己玩 Github 又在工作中使用 Gitlab 虽然使用时间挺长 可是也只进行一些常用操作 如推拉代码 提交 合并等 更复杂的操作没有使用过 看过的教程也逐渐淡忘了 有些对不起 Li
  • 测试开发工程师的简历和面试准备

    文章目录 职业规划 核心事项 不必等待准备 完美 才投简历 准备简历 确定一批目标公司和目标职位 详细事项 可以慢慢完备 时间有限 注意结合所需 简历 简历命名 邮件标题同理 携带个人信息 优先使用pdf格式的简历 最好打印大小是A4 简历
  • WINAPI WinMain

    include
  • 为什么每个程序执行都有内核地址空间和程序地址空间?

    为什么每个用户态的程序映射到虚拟地址空间 都需要有内核地址空间和程序地址空间呢 因为程序地址空间最终都会调用系统调用 也就是内核的东东 所以每个程序要想执行 就必须有内核地址空间 也必须有程序地址空间 所用的application程序要想使
  • 11 种加密 & 哈希算法的原理及其 Java 实现

    11 种加密 哈希算法的原理及其 Java 实现 一 目的 二 运行环境 三 基本原理及步骤 I 各种加密算法的原理 DES 数据加密标准 Data Encryption Standard 算法介绍 算法流程 优点 缺点 破解方式 适用场景
  • Linux期末考试题库(超全)

    文章目录 Linux期末考试题库 选择题 填空题 简答题 操作题 Linux期末考试题库 选择题 在创建Linux分区时 一定要创建 D 两个分区 A FAT NTFS B FAT SWAP C NTFS SWAP D SWAP 根分区 在
  • react样式处理

    react样式处理有两种处理方式 行内样式处理 使用className来定义类名 使用行内样式处理 语法 lt 元素 style css属性1 值1 css属性2 值2 gt 用法 引入react核心包 import React from
  • 完全免费快速搭建个人www服务器

    想拥有自己的web服务器吗 想把服务器放到自己家里吗 通过ADSL拨号也能建立个人的服务器吗 本文告诉你答案 要建立自己的web服务器 需要两个最重要的工作 1 让别人知道你的主机 目前访问Internet上主机的方式主要有两种 一是通过I
  • [JAVAee]SpringBoot配置文件

    配置文件的介绍 配置文件当中记录了许多重要的配置信息 例如 数据库的连接信息 用户的账户与密码 项目的启动端口 第三方系统的调用密匙 用于记录问题产生的日志 在spring框架中一些特定的框架会自动调用配置文件中的配置信息来运用 配置文件中
  • KCF论文技术路线

    https blog csdn net crazyice521 article details 53525366 http www cnblogs com YiXiaoZhou p 5925019 html 一 算法介绍 KCF全称为Ker