精华内容
下载资源
问答
  • 【目标跟踪】KCF高速跟踪详解

    万次阅读 多人点赞 2016-03-24 16:03:58
    详细讲解KCF高速跟踪算法的推导过程。

    Henriques, João F., et al. “High-speed tracking with kernelized
    correlation filters.” Pattern Analysis and Machine Intelligence, IEEE
    Transactions on 37.3 (2015): 583-596.

    本文的跟踪方法效果甚好,速度奇高,思想和实现均十分简洁。其中利用循环矩阵进行快速计算的方法尤其值得学习。另外,作者在主页上十分慷慨地给出了各种语言的实现代码。
    本文详细推导论文中的一系列步骤,包括论文中未能阐明的部分。请务必先参看这篇简介循环矩阵性质的博客

    思想

    一般化的跟踪问题可以分解成如下几步:

    1. ItI_t帧中,在当前位置ptp_t附近采样,训练一个回归器。这个回归器能计算一个小窗口采样的响应。
    2. It+1I_{t+1}帧中,在前一帧位置ptp_t附近采样,用前述回归器判断每个采样的响应。
    3. 响应最强的采样作为本帧位置pt+1p_{t+1}

    循环矩阵表示图像块

    在图像中,循环位移操作可以用来近似采样窗口的位移。
    这里写图片描述
    训练时,围绕着当前位置进行的一系列位移采样可以用二维分块循环矩阵XX表示,第ij块表示原始图像下移i行右移j列的结果。类似地,测试时,前一帧结果附近的一系列位移采样也可以用XX表示。
    这里写图片描述
    这样的XX可以利用傅里叶变换快速完成许多线性运算。

    线性回归训练提速

    此部分频繁用到了循环矩阵的各类性质,请参看这篇博客
    线性回归的最小二乘方法解为:
    w=(XHX+λI)1XHyw=\left( X^HX+\lambda I\right)^{-1}X^Hy

    根据循环矩阵乘法性质,XHXX^HX的特征值为x^x^\hat x \odot \hat x^*II本身就是一个循环矩阵,其生成向量为[1,0,0...0][1,0,0...0],这个生成向量的傅里叶变换为全1向量,记为δ\delta
    w=(Fdiag(x^x^)FH+λFdiag(δ)FH)1XHyw=\left( Fdiag(\hat x \odot \hat x^*)F^H+\lambda Fdiag(\delta)F^H\right)^{-1}X^Hy

    =(Fdiag(x^x^+λδ)FH)1XHy=\left( Fdiag(\hat x \odot \hat x^*+\lambda\delta)F^H \right)^{-1}X^Hy

    根据循环矩阵求逆性质,可以把矩阵求逆转换为特征值求逆。
    w=Fdiag(1x^x^+λδ)FHXHyw=F\cdot diag\left(\frac{1}{\hat x \odot \hat x^*+\lambda\delta} \right) \cdot F^H X^H y

    w=Fdiag(1x^x^+λδ)FHFdiag(x^)FHyw=F\cdot diag\left(\frac{1}{\hat x \odot \hat x^*+\lambda\delta} \right) \cdot F^H \cdot Fdiag(\hat{x}^*)F^H\cdot y

    利用FF的酉矩阵性质消元:
    w=Fdiag(x^x^x^+λδ)FHyw=F\cdot diag\left(\frac{\hat{x}^*}{\hat x \odot \hat x^*+\lambda\delta} \right) \cdot F^H \cdot y

    分号表示用1进行对位相除。
    反用对角化性质:Fdiag(y)FH=C(F1(y))Fdiag(y)F^H=C(\mathcal{F}^{-1}(y)),上式的前三项还是一个循环矩阵。
    w=C(F1(x^x^x^+λδ))yw=C\left( \mathcal{F}^{-1}\left( \frac{\hat{x}^*}{\hat x \odot \hat x^*+\lambda\delta}\right) \right) \cdot y

    利用循环矩阵卷积性质F(C(x)y)=x^y^\mathcal F(C(x)\cdot y)=\hat x ^* \odot \hat y
    F(w)=(x^x^x^+λδ)F(y)\mathcal{F}(w)=\left( \frac{\hat{x}^*}{\hat x \odot \hat x^*+\lambda\delta}\right )^* \odot \mathcal F(y)
    由于x^x^\hat x \odot \hat x^*的每个元素都是实数,所以共轭不变:

    F(w)=x^x^x^+λδF(y)=x^y^x^x^+λδ\mathcal{F}(w)=\frac{\hat{x}}{\hat x \odot \hat x^*+\lambda\delta} \odot \mathcal F(y)=\frac{\hat{x}\odot \hat{y}}{\hat x \odot \hat x^*+\lambda\delta}

    论文中,最后这一步推导的分子部分写成x^y^\hat x ^* \odot \hat y,是错误的。但代码中没有涉及。

    线性回归系数ω\omega可以通过向量的傅里叶变换和对位乘法计算得到。

    核回归训练提速

    不熟悉核方法的同学可以参看这篇博客的简单说明。核回归方法的回归式为:
    f(z)=αTκ(z)f(z)=\alpha^T \kappa(z)
    其中κ(z)\kappa(z)表示测试样本zz和所有训练样本的核函数。参数有闭式解:
    α=(K+λI)1y\alpha = \left( K + \lambda I\right)^{-1}y

    KK为所有训练样本的核相关矩阵:Kij=κ(xi,xj)K_{ij}=\kappa(x_i,x_j)。如果核函数选择得当,使得xx内部元素顺序更换不影响核函数取值,则可以保证KK也是循环矩阵。以下核都满足这样的条件:
    这里写图片描述

    设核相关矩阵的生成向量是kk。推导和之前线性回归的套路非常类似:
    α=(Fdiag(k^)FH+Fdiag(λδ)FH)1y=(Fdiag(k^+λδ)FH)1y\alpha = \left( Fdiag(\hat k)F^H+Fdiag(\lambda\delta)F^H \right)^{-1}y=\left( Fdiag(\hat k + \lambda\delta)F^H \right)^{-1}y

    =Fdiag(1k^+λδ)FHy=C(F1(1k^+λδ))y=Fdiag\left(\frac{1}{\hat k + \lambda\delta}\right)F^Hy=C\left( \mathcal F^{-1} \left(\frac{1}{\hat k + \lambda\delta} \right) \right)y

    利用循环矩阵卷积性质F(C(x)y)=x^y^\mathcal F(C(x)\cdot y)=\hat x ^* \odot \hat y
    α^=(1k^+λδ)y^\hat{\alpha}=\left( \frac{1}{\hat k + \lambda\delta} \right)^* \odot \hat y
    这里kk是核相关矩阵的第一行,表示原始生成向量x0x^0和移位了ii的向量xix^i的核函数。考察其处于对称位置上的两个元素:
    ki=κ(x0,xi),kNi=κ(x0,xNi)k_i=\kappa(x^0,x^i), k_{N-i}=\kappa(x^0,x^{N-i})

    两者都是同一个向量和自身位移结果进行运算。因为所有涉及到的核函数都只和位移的绝对值有关,所以ki=kNik_i=k_{N-i},即kk是对称向量。

    举例:x0=[1,2,3,4]x^0=[1,2,3,4]x1=[4,1,2,3]x^1=[4,1,2,3]x3=[2,3,4,1]x^3=[2,3,4,1]。使用多项式核κ(x,y)=xTy\kappa(x,y)=x^Ty,容易验证κ(x0,x1)=κ(x0,x3)\kappa(x^0,x^1)=\kappa(x^0,x^3)

    对称向量的傅里叶变换为实数,有:

    α^=(1k^+λδ)y^=y^k^+λδ\hat{\alpha}=\left( \frac{1}{\hat k + \lambda\delta} \right) \odot \hat y=\frac{\hat y}{\hat k + \lambda\delta}

    论文中,利用kk的对称性消除共轭的步骤没有提及。

    线性回归系数α\alpha可以通过向量的傅里叶变换和对位乘法计算得到。

    核回归检测提速

    所有待检测样本和所有训练样本的核相关矩阵为KK,每一列对应一个待测样本。可以一次计算所有样本的响应(N×1N\times 1向量):

    y=KTαy'=K^T\alpha

    利用循环矩阵的转置性质性质,C(k)C^(k)的特征值为k^\hat k^*
    y=C(k)Tα=C(k^)α=kαy'=C(k)^T\cdot \alpha=C(\hat k ^*)\cdot \alpha =k^**\alpha

    利用循环矩阵的卷积性质:
    y=(k)α=kαy'=(k^*)*\alpha=k*\alpha

    两边傅里叶变换:
    y^=k^α^\hat {y'}=\hat k \odot \hat \alpha

    论文中,利用转置消除共轭的步骤没有提及。

    所有侯选块的检测响应可以通过向量的傅里叶变换和对位乘法计算得到。

    核相关矩阵计算提速

    无论训练还是检测,都需要计算核相关矩阵KK的生成向量kk。除了直接计算每一个核函数,在某些特定的核函数下可以进一步加速。

    多项式核

    κ(x,y)=f(xTy)\kappa(x,y)=f\left( x^Ty\right)

    其中ff为多项式函数。写成矩阵形式:
    K=f(XTY)K=f\left( X^T Y\right)

    ff在矩阵的每个元素上单独进行。根据循环矩阵性质,XTYX^TY也是一个循环矩阵,其生成向量为F1(y^x^)\mathcal F^{-1}(\hat y\odot \hat x^*)。所以核相关矩阵的生成向量为:
    k=f(F1(y^x^))k=f\left( \mathcal F^{-1}(\hat y\odot \hat x^*) \right)

    RBF核

    κ(x,y)=f(xy2)\kappa(x,y)=f(||x-y||^2)
    其中ff是线性函数。简单展开:
    κ(x,y)=f(xy2)=f(x2+y2+2xTy)\kappa(x,y)=f(||x-y||^2)=f(||x||^2+||y||^2+2x^Ty)
    由于XX中的所有xx都通过循环移位获得,故x2||x||^2对于所有xx是常数,同理y2||y||^2也是。所以核相关矩阵的生成向量为:
    k=f(x2+y2+F1(y^x^))k=f\left( ||x||^2 + ||y||^2+\mathcal F^{-1}(\hat y\odot \hat x^*) \right)

    其他核

    有一些核函数,虽然能保证KK是循环矩阵,但无法直接拆解出其特征值,快速得到生成向量。比如Hellinger核:ixiyi\sum_i\sqrt{x_iy_i},Intersection核:imin(xi,yi)\sum_i\min(x_i,y_i)

    多通道

    在多通道情况下(例如使用了HOG特征),生成向量xx变成M×LM\times L,其中MM是样本像素数,LL是特征维度。在上述所有计算中,需要更改的只有向量的内积:
    xTy=l(xl)Tylx^Ty=\sum_l(x^l)^Ty^l

    注:非常感谢GX1415926535和大家的帮助,发现原文一处错误。(21)式中不应有转置,应为:
    f(z)=Kzαf(z)=K^z\alpha

    展开全文
  • 目标跟踪入门

    万次阅读 多人点赞 2019-01-02 22:17:28
    1.视觉目标跟踪基本流程与框架 视觉目标(单目标)跟踪任务就是在给定某视频序列初始帧的目标大小与位置的情况下,预测后续帧中该目标的大小与位置。 输入初始化目标框,在下一帧中产生众多候选框(Motion ...

    1.视觉目标跟踪基本流程与框架

     视觉目标(单目标)跟踪任务就是在给定某视频序列初始帧的目标大小与位置的情况下,预测后续帧中该目标的大小与位置。

     输入初始化目标框,在下一帧中产生众多候选框(Motion Model),提取这些候选框的特征(Feature Extractor),然后对这些候选框评分(Observation Model),最后在这些评分中找一个得分最高的候选框作为预测的目标(Prediction A),或者对多个预测值进行融合(Ensemble)得到更优的预测目标。

    根据如上的框架,我们可以把目标跟踪划分为5项主要的研究内容. (1)运动模型:如何产生众多的候选样本。(2)特征提取:利用何种特征表示目标。(3)观测模型:如何为众多候选样本进行评分。(4)模型更新:如何更新观测模型使其适应目标的变化。(5)集成方法:如何融合多个决策获得一个更优的决策结果。下面分别简要介绍这5项研究内容。

    运动模型(Motion Model):生成候选样本的速度与质量直接决定了跟踪系统表现的优劣。常用的有两种方法:粒子滤波(Particle Filter)和滑动窗口(Sliding Window)。粒子滤波是一种序贯贝叶斯推断方法,通过递归的方式推断目标的隐含状态。而滑动窗口是一种穷举搜索方法,它列出目标附近的所有可能的样本作为候选样本。

    特征提取(Feature Extractor): 鉴别性的特征表示是目标跟踪的关键之一。常用的特征被分为两种类型:手工设计的特征(Hand-crafted feature)和深度特征(Deep feature)。常用的手工设计的特征有灰度特征(Gray),方向梯度直方图(HOG),哈尔特征(Haar-like),尺度不变特征(SIFT)等。与人为设计的特征不同,深度特征是通过大量的训练样本学习出来的特征,它比手工设计的特征更具有鉴别性。因此,利用深度特征的跟踪方法通常很轻松就能获得一个不错的效果。

    观测模型(Observation Model):大多数的跟踪方法主要集中在这一块的设计上。根据不同的思路,观测模型可分为两类:生成式模型(Generative Model)和判别式模型(Discriminative Model). 生成式模型通常寻找与目标模板最相似的候选作为跟踪结果,这一过程可以视为模板匹配。常用的理论方法包括:子空间,稀疏表示,字典学习等。而判别式模型通过训练一个分类器去区分目标与背景,选择置信度最高的候选样本作为预测结果。判别式方法已经成为目标跟踪中的主流方法,因为有大量的机器学习方法可以利用。常用的理论方法包括:逻辑回归,岭回归,支持向量机,多示例学习,相关滤波等。

    模型更新(Model Update): 模型更新主要是更新观测模型,以适应目标表观的变化,防止跟踪过程发生漂移。模型更新没有一个统一的标准,通常认为目标的表观连续变化,所以常常会每一帧都更新一次模型。但也有人认为目标过去的表观对跟踪很重要,连续更新可能会丢失过去的表观信息,引入过多的噪音,因此利用长短期更新相结合的方式来解决这一问题。

    集成方法(Ensemble Method): 集成方法有利于提高模型的预测精度,也常常被视为一种提高跟踪准确率的有效手段。可以把集成方法笼统的划分为两类:在多个预测结果中选一个最好的,或是利用所有的预测加权平均。

    2.视觉目标跟踪面临的挑战

    视觉运动目标跟踪是一个极具挑战性的任务,因为对于运动目标而言,其运动的场景非常复杂并且经常发生变化,或是目标本身也会不断变化。那么如何在复杂场景中识别并跟踪不断变化的目标就成为一个挑战性的任务。如下图我们列出了目标跟踪中几个主要的挑战因素:

    其中遮挡(Occlusion)是目标跟踪中最常见的挑战因素之一,遮挡又分为部分遮挡(Partial Occlusion)和完全遮挡(Full Occlusion)。解决部分遮挡通常有两种思路:(1)利用检测机制判断目标是否被遮挡,从而决定是否更新模板,保证模板对遮挡的鲁棒性。(2)把目标分成多个块,利用没有被遮挡的块进行有效的跟踪。对于目标被完全遮挡的情况,当前也并没有有效的方法能够完全解决。

    形变(Deformation)也是目标跟踪中的一大难题,目标表观的不断变化,通常导致跟踪发生漂移(Drift)。解决漂移问题常用的方法是更新目标的表观模型,使其适应表观的变化,那么模型更新方法则成为了关键。什么时候更新,更新的频率多大是模型更新需要关注的问题。

    背景杂斑(Background Clutter)指得是要跟踪的目标周围有非常相似的目标对跟踪造成了干扰。解决这类问题常用的手段是利用目标的运动信息,预测运动的大致轨迹,防止跟踪器跟踪到相似的其他目标上,或是利用目标周围的大量样本框对分类器进行更新训练,提高分类器对背景与目标的辨别能力。

    尺度变换(Scale Variation)是目标在运动过程中的由远及近或由近及远而产生的尺度大小变化的现象。预测目标框的大小也是目标跟踪中的一项挑战,如何又快又准确的预测出目标的尺度变化系数直接影响了跟踪的准确率。通常的做法有:在运动模型产生候选样本的时候,生成大量尺度大小不一的候选框,或是在多个不同尺度目标上进行目标跟踪,产生多个预测结果,选择其中最优的作为最后的预测目标。

            当然,除了上述几个常见的挑战外,还有一些其他的挑战性因素:光照(illumination),低分辨率(Low Resolution),运动模糊(Motion Blur),快速运动(Fast Motion),超出视野(Out of View),旋转(Rotation)等。所有的这些挑战因数共同决定了目标跟踪是一项极为复杂的任务。

    3.视觉目标跟踪方法

            视觉目标跟踪方法根据观测模型是生成式模型或判别式模型可以被分为生成式方法(Generative Method)和判别式方法(Discriminative Method)。前几年最火的生成式跟踪方法大概是稀疏编码(Sparse Coding)了, 而近来判别式跟踪方法逐渐占据了主流地位,以相关滤波(Correlation Filter)和深度学习(Deep Learning)为代表的判别式方法也取得了令人满意的效果。下面我们分别简要概括这几种方法的大体思想和其中的一些具体的跟踪方法。

    稀疏表示(Sparse Representation):给定一组过完备字典,将输入信号用这组过完备字典线性表示,对线性表示的系数做一个稀疏性的约束(即使得系数向量的分量尽可能多的为0),那么这一过程就称为稀疏表示。基于稀疏表示的目标跟踪方法则将跟踪问题转化为稀疏逼近问题来求解。如稀疏跟踪的开山之作L1Tracker, 认为候选样本可以被稀疏的表示通过目标模板和琐碎模板,而一个好的候选样本应该拥有更稀疏的系数向量。稀疏性可通过解决一个L1正则化的最小二乘优化问题获得,最后将与目标模板拥有最小重构误差的候选样本作为跟踪结果。L1Tracker中利用琐碎模板处理遮挡,利用对稀疏系数的非负约束解决背景杂斑问题。随后在L1Tracker基础上的改进则有很多,比较有代表性的有ALSA,L1APG等。

    相关滤波(Correlation Filter):相关滤波源于信号处理领域,相关性用于表示两个信号之间的相似程度,通常用卷积表示相关操作。那么基于相关滤波的跟踪方法的基本思想就是,寻找一个滤波模板,让下一帧的图像与我们的滤波模板做卷积操作,响应最大的区域则是预测的目标。根据这一思想先后提出了大量的基于相关滤波的方法,如最早的平方误差最小输出和(MOSSE)利用的就是最朴素的相关滤波思想的跟踪方法。随后基于MOSSE有了很多相关的改进,如引入核方法(Kernel Method)的CSK,KCF等都取得了很好的效果,特别是利用循环矩阵计算的KCF,跟踪速度惊人。在KCF的基础上又发展了一系列的方法用于处理各种挑战。如:DSST可以处理尺度变化,基于分块的(Reliable Patches)相关滤波方法可处理遮挡等。但是所有上述的基于相关滤波的方法都受到边界效应(Boundary Effect)的影响。为了克服这个问题SRDCF应运而生,SRDCF利用空间正则化惩罚了相关滤波系数获得了可与深度学习跟踪方法相比的结果。

    深度学习(CNN-Based):因为深度特征对目标拥有强大的表示能力,深度学习在计算机视觉的其他领域,如:检测,人脸识别中已经展现出巨大的潜力。但早前两年,深度学习在目标跟踪领域的应用并不顺利,因为目标跟踪任务的特殊性,只有初始帧的图片数据可以利用,因此缺乏大量的数据供神经网络学习。只到研究人员把在分类图像数据集上训练的卷积神经网络迁移到目标跟踪中来,基于深度学习的目标跟踪方法才得到充分的发展。如:CNN-SVM利用在ImageNet分类数据集上训练的卷积神经网络提取目标的特征,再利用传统的SVM方法做跟踪。与CNN-SVM提取最后一层的深度特征不同的是,FCN利用了目标的两个卷积层的特征构造了可以选择特征图的网络,这种方法比只利用最后的全连接层的CNN-SVM效果有些许的提升。随后HCF, HDT等方法则更加充分的利用了卷积神经网络各层的卷积特征,这些方法在相关滤波的基础上结合多层次卷积特征进一步的提升了跟踪效果。然而,跟踪任务与分类任务始终是不同的,分类任务关心的是区分类间差异,忽视类内的区别。目标跟踪任务关心的则是区分特定目标与背景,抑制同类目标。两个任务有着本质的区别,因此在分类数据集上预训练的网络可能并不完全适用于目标跟踪任务。于是,Nam设计了一个专门在跟踪视频序列上训练的多域(Multi-Domain)卷积神经网络(MDNet),结果取得了VOT2015比赛的第一名。但是MDNet在标准集上进行训练多少有一点过拟合的嫌疑,于是VOT2016比赛中禁止在标准跟踪数据集上进行训练。2016年SRDCF的作者继续发力,也利用了卷积神经网络提取目标特征然后结合相关滤波提出了C-COT的跟踪方法取得了VOT2016的冠军。

    4.视觉目标跟踪最新进展

            目标跟踪最近几年发展迅速,以基于相关滤波(Correlation Filter)和卷积神经网络(CNN)的跟踪方法已经占据了目标跟踪的大半江山。如下图给出的2014-2017年以来表现排名靠前的一些跟踪方法。

    可以看到前三名的方法不是基于相关滤波的方法就是基于卷积神经网络的方法,或是两者结合的方法。比如ECCV2016的C-COT就是在相关滤波的基础上结合卷积神经网络的杰作。下图给出这些方法在标准跟踪数据集OTB2013上的跟踪结果

    可以看到基于卷积神经网络的方法取得了惊人的突破。预计未来两年相关滤波和卷积神经网络将仍然会是目标跟踪领域的主角。

    展开全文
  • DIY一个基于树莓派和Python的无人机视觉跟踪系统

    万次阅读 多人点赞 2017-02-02 21:26:15
    DIY一个基于树莓派和Python的无人机视觉跟踪系统 无人机通过图传将航拍到的图像存储并实时传送回地面站几乎已经是标配。如果想来点高级的——在无人机上直接处理拍摄的图像并实现自动控制要怎么实现呢?其实视觉...

     

    DIY一个基于树莓派和Python的无人机视觉跟踪系统

    无人机通过图传将航拍到的图像存储并实时传送回地面站几乎已经是标配。如果想来点高级的——在无人机上直接处理拍摄的图像并实现自动控制要怎么实现呢?其实视觉跟踪已经在一些高端的消费级无人机上有了应用,不过玩现成的永远没有自己动手来劲;)。前段时间DIY了一个无人机三轴云台的视觉跟踪系统,除去云台花了¥370,本文将设计思路与实验效果分享出来。

    一、基本配置

    1.1 硬件

    • 计算平台:树莓派3 (¥219.00)
    • 摄像头:USB网络摄像头(¥108.00)
    • 云台:参考上一篇博文FY650的组装
    • JoyStick摇杆:用于测试和干预云台(¥8.00)
    • Arduino UNO开发板:用于JoyStick输出信号的采集与AD转换并与树莓派串口通信(¥35.00)

    1.2 软件

    • 编程语言:Python
    • 集成开发环境1:Eclipse,在windows平台上的视觉算法编程调试
    • 集成开发环境2:Geany,在Linux平台上的算法与云台联调

    1.3 准备知识

    前面的几篇博文分别介绍了这个系统用到的基本知识:

    二、设计步骤

    2.1 云台调试

    (1) 搭建一个用JoyStick控制云台转动的系统

    因为树莓派GPIO没有模拟输入口,因此JoyStick接Arduino完成输入模拟信号的AD转换,并将转换后的信号通过串口发送给树莓派。通过这个系统结合示波器,搞清楚了所用云台转动控制的原理和控制信号特征。云台调试阶段系统连接图如下所示。最终通过树莓派的GPIO控制云台俯仰和水平转动。一开始想用Gopro作为视频采集设备,但查了很多资料也尝试了各种方法发现暂时没法实现(如果有的话请留言告诉我:),因此换了个便宜的网络摄像头。

    Gopro可以通过wifi将图像实时传给手机或pad,就是不能传给树莓派。

    (2) 编写云台控制算法

    根据上一步得到的云台控制信号特征,编写云台控制算法。输入是目标中心与图像中心的偏移量△x,△y,输出为云台俯仰、水平的控制变量dx,dy。

    是的,摄像头外壳是纸糊的-_-。

    2.2 算法调试

    (1) 在windows平台上写跟踪算法

    USB摄像头接上电脑用Eclipse写跟踪算法,输出偏差量等参数调试。

    (2) 拷贝算法到树莓派调试

    因为树莓派有多个GPIO可连云台,因此云台跟踪控制必须要在树莓派上调试。Python多平台部署的优点在这就体现出来了,直接将算法拷贝到树莓派即可运行调试。调试过程稍有点复杂,一开始的效果不好,耐心调,耐心改算法,效果也就慢慢出来了。

     

    动起来的效果我们来看看下面的内容。

    三、跟踪演示

    室内跟踪效果

     


    跟踪效果截图:

    目前云台和摄像头已经装上650无人机,航拍时的效果还有待实验。欢迎留言或邮件iracer@163.com讨论:)

    转载请注明出处(本文更新链接):http://blog.csdn.net/iracer/article/details/54837636


    新书终于面市啦,《机器学习原理与编程实战》连接原理与实战:

    https://blog.csdn.net/iracer/article/details/116051674?spm=1001.2014.3001.5501

    展开全文
  • 视频跟踪

    千次阅读 2019-08-17 18:02:32
    视频跟踪

    🎯视频跟踪数据集
      👉 视频跟踪数据集指标分析

    👬孪生网络-Siamese Network-单目标视频跟踪
      👉 SiamFC:利用全卷积孪生网络进行视频跟踪
      👉 SiamRPN:利用区域建议孪生网络进行视频跟踪
      👉 DaSiamRPN:用于视觉跟踪的干扰意识的孪生网络
      👉 SiamRPN++: 基于深度网络的孪生视觉跟踪的进化
      👉 SiamMask: 快速在线目标跟踪与分割的统一方法
      👉 SiamFT:通过完全卷积孪生网络进行的RGB红外融合跟踪方法

    👨‍👨‍👦‍👦多目标视频跟踪方法-多目标视频跟踪
    ⭕❤最新更新❤
      👉 [Multi-object Tracking via End-to-end Tracklet Searching and Ranking:多目标跟踪的评分网络]

    🔊孪生网络PPT资源-Siamese Network
    [基于孪生网络的单目标视频跟踪方法.ppt]
    ❗❗此PPT为本人制作,请不要商用。如需免费下载可在评论中留言。❗❗

    展开全文
  • 目标跟踪

    千次阅读 2019-11-27 19:54:52
    本篇是基于单目标跟踪的论述 目标跟踪概述 1.1 定义: 1,单目标,即在给定的视频中只跟踪一个目标 2,在第一帧中会通过矩形的bounding box将目标给出。给定后,使用tracker找出每一帧的目标。 3,短期 ...
  • OpenCV 实时对象跟踪(质心跟踪

    千次阅读 2020-02-23 17:09:56
    本文章先介绍对象跟踪过程,考虑对象跟踪的特点决定使用:质心跟踪算法,然后会一步一步说明质心跟踪算法的实现;最后是如何用python代码实现。 实验效果如下: 对象跟踪过程 进行一组初始的对象检测(如:边界...
  • 人脸跟踪:简单跟踪

    千次阅读 2018-03-23 21:59:16
    一、概述 目标跟踪是计算机视觉领域的一个重要分支。研究的人很多,近几年也出现了很多很多的算法。大家看看淋漓满目的paper就知道了。但在这里,我们也聚焦下比较简单的算法,看看它的优势在哪里。毕竟有时候简单...
  • 光栅跟踪 概念:一种利用类似于电视光栅扫描技术,结合阈值检测而实现的边缘跟踪方法。 举例如下: 光栅跟踪的具体步骤 (1)确定一个比较高的阈值d,把高于该阈值的像素作 为对像素。称该阈值为“检测阈值”...
  • 无人驾驶轨迹跟踪之纯轨迹跟踪(Pure Pursuit)

    万次阅读 多人点赞 2019-03-21 14:22:48
    无人驾驶轨迹跟踪之纯轨迹跟踪(Pure Pursuit)简要车辆简化模型车辆跟踪模型pytho实现纯轨迹跟踪算法 简要 对于无人车来说,规划好的路径通常由一系列路径点构成,这些点包含空间位置信息、姿态信息、速度、加速度...
  • 摘要:本文详细介绍如何利用深度学习中的YOLO及SORT算法实现车辆、行人等多目标的实时检测和跟踪,并利用PyQt5设计了清新简约的系统UI界面,在界面中既可选择自己的视频、图片文件进行检测跟踪,也可以通过电脑自带...
  • 车辆跟踪检测

    千次阅读 2020-10-05 20:03:53
    第三个窗口是汽车跟踪,将汽车跟踪效果显示。 第四个窗口是画线,将用户画线后的区域分为两个区间,通过检测区间后,显示跟踪效果。 下面对这个GUI的操作做介绍: 操作一:”打开视频” 我们可以看到第一个...
  • opencv目标跟踪概述和人脸跟踪

    千次阅读 2018-07-03 16:04:39
    这里说的目标跟踪不是多目标跟踪,往往是需要人工或程序给定初始目标位置。 资源及跟踪算法介绍 目前看到的比较好的opencv目标跟踪算法资源在这里:...
  • 图像处理之目标跟踪(一)之卡尔曼kalman滤波跟踪(主要为知识梳理)(转载) 内容不是一篇文章的转载而是几篇内容的综合梳理. 主要来源: EmbeddedApp 运动目标跟踪(一)--搜索算法预测模型之KF,EKF,UKF...
  • 目标跟踪:目标跟踪数据集

    千次阅读 2018-11-24 16:55:48
    单目标跟踪OTB和VOT http://cvlab.hanyang.ac.kr/tracker_benchmark/datasets.html
  • 我想问一下,现在目标跟踪跟踪框的大小怎么改变,我在做kcf,groundtruth_rect里面的东西还需要变化吗,怎么变化
  • 目标跟踪简介

    千次阅读 2019-07-13 10:04:15
    文章目录目标跟踪简介3.1 引言3.2 目标跟踪算法分类3.2.1 生成式算法(1)核方法(2)粒子滤波方法(3)卡尔曼滤波方法(4)稀疏表示方法3.2.2 判别式方法(1)相关滤波方法(2)深度学习方法3.3单摄像机多目标跟踪...
  • 目标跟踪算法

    千次阅读 2019-10-31 16:52:28
    目标跟踪算法的跟踪 一、目标跟踪算法简介 1.1 主要任务 1.1.1 Online Visual Tracker BenchMark 1.1.2 VOT 1.2 难点与挑战 目标遮挡、目标消失、运动模糊、目标和环境的剧烈变化、目标的高速运动、相机的抖动...
  • SORT 多目标跟踪算法笔记

    万次阅读 多人点赞 2019-04-21 15:20:46
    sort 是一种简单的在线实时多目标跟踪算法。文章要点为: 以 IoU 作为前后帧间目标关系度量指标; 利用卡尔曼滤波器预测当前位置; 通过匈牙利算法关联检测框到目标; 应用试探期甄别虚检; 使用 Faster R-...
  • 文章目录单目标跟踪知乎综述 单目标跟踪知乎综述 基于孪生网络的跟踪算法汇总
  • 轨迹跟踪

    千次阅读 2019-12-05 20:09:05
    基于纯几何算法或者汽车运动学的轨迹跟踪算法,楼主所看到过的有三种:persuit,单点预瞄,stanley 三者存在相识之处,一般都是忽略车辆动力学。 persuit : 根据几何可知: 车辆转向集合图形如下: 若后...
  • 人脸跟踪:sort多目标跟踪

    千次阅读 2018-08-22 21:53:49
    多目标跟踪中SORT算法的理解 在跟踪之前,对所有目标已经完成检测,实现了特征建模过程。  1. 第一帧进来时,以检测到的目标初始化并创建新的跟踪器,标注id。  2. 后面帧进来时,先到卡尔曼滤波器中得到由前面帧...
  • Visual Tracker Benchmark v1.0全过程配置方法,测试跟踪序列OTB50/OTB100前言:最近在实习公司做long-time tracking算法.主要目的是在实时的前提下,解决长时跟踪中遇到的out of view,occlusion,fast motion等问题...
  • FairMOT实时多目标跟踪

    千次阅读 热门讨论 2020-10-24 08:47:26
    本文介绍如何在FairMOT源码基础上实现摄像头实时多目标跟踪
  • 对已经被git跟踪的文件放弃跟踪

    千次阅读 2018-08-06 17:27:27
    为了将这些不需要被git跟踪但是已经被git跟踪的文件取消掉git的跟踪,可以通过如下的方式解决 第一步, git rm -r -n --cached 文件或目录 说明: 只是为了列出你需要取消跟踪的文件,可以查看列表,检查下...
  • 目标检测跟踪算法综述

    千次阅读 2019-07-09 16:19:22
    运动目标跟踪是视频监控系统中不可缺少的环节。在特定的场景中,有一些经典的算法可以实现比较好的目标跟踪效果。本文介绍了一般的目标跟踪算法,对几个常用的算法进行对比,并详细介绍了粒子滤波算法和基于轮廓的...
  • 边界跟踪算法之内边界跟踪

    千次阅读 2018-11-29 20:31:43
    **首先要说的是,边界跟踪算法是在区域已经分出(图像已经是二值图或已经标注的图),但边界却是未知的。 如何获取一个目标的边界信息呢?我将自己学习经验分享给大家。 ** 算法描述如下: 内边界跟踪 第一步: 从...
  • 目标跟踪综述

    千次阅读 2020-02-09 18:22:20
    文章目录目标跟踪入门基础研究算法现有目标跟踪方法简介基于生成式模型的方法基于判别式模型的方法基于深度学习的方法适用于目标跟踪的深度学习模型深度判别式模型深度生成式模型其他深度学习模型基于深度学习的目标...
  • KCF跟踪算法(1):KCF跟踪demo

    万次阅读 热门讨论 2018-08-06 09:52:47
    最近在看跟踪算法,看了下比较久远的meanshift、Lk光流算法等,感觉效果和速度都不是很满意。直到我看了KCF跟踪算法,这个算法速度快,效果好,具有很强的鲁棒性,思路清晰。此外作者在主页上给出了matlab和c的代码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 944,069
精华内容 377,627
关键字:

跟踪