精华内容
下载资源
问答
  • 2021-06-20 19:28:44

    先展示效果:使用的视频源自MOT20数据集
    人物独立展示:就是把单个人从视频里抠出来,把它的行踪组成实时的一个新的视频进行单独播放,类似于下图这样的
    在这里插入图片描述

    首先,我们需要从Github上下载别人写好的多目标跟踪代码,可以选择PaddleDetection、FairMOT、JDE等等

    从下载好的main.py代码里可以找到如下部分

     if outputs is not None:
     	for output in outputs:
     		cv2.rectangle(frame, (output[0], output[1]), (output[2], output[3]), (0,0,255), 2)
    	   	cv2.putText(frame, str(output[-1]), (output[0], output[1]), font, 1.2, (255, 255, 255), 2)
    

    检测,追踪是建立在把传入的视频或摄像头画面转化成一帧一帧的图片,单帧传入,并进行检测,追踪。这段代码中的outputs就是指一帧图片,这里面包含了图片里所有人的坐标信息,而output就是指这张图片里的一个人(注:output[-1]是每个人的id)。
    cv2.rectangle是给图片每个人加上矩形框,cv2.putText是给每个人加上id

     while True:
         success, frame = cap.read()
         if not success:
             break
         outputs = deepsort.update(frame) #调用deepsort.py对frame一帧图片进行解析
    

    首先读取一帧图片,frame是图片本身,success是指这张图片是否被读取到,值为true或false,当切实的读取到一张图片后,我们的目标检测代码deepsort.py会把这张图里所有人检测到并标记出每个人的坐标信息,这一点可以再在deepsort.py中看出

     for track in self.tracker.tracks:
     	if not track.is_confirmed() or track.time_since_update > 1:
        	continue
        box = track.to_tlbr()
        x1,y1,x2,y2 = box
        track_id = track.track_id
        outputs.append(np.array([x1,y1,x2,y2,track_id], dtype=np.int))#outputs里有每个人的坐标信息 
    

    指定单个id(单个人)的方法:

     if outputs is not None:
     	for output in outputs:
        	if args.ID == output[-1]: #当args.ID的值不是-1(默认值),而是我们输入的一个值时。即我们指定只有ID为args.ID的人才能被添加矩形框
            	cv2.rectangle(frame, (output[0], output[1]), (output[2], output[3]), (0,0,255), 2)
                cv2.putText(frame, str(output[-1]), (output[0], output[1]), font, 1.2, (255, 255, 255), 2)
                break #跳出循环,不再循环当前这一帧的其他人
           	elif args.ID == -1: #当args.ID是默认值-1时,是对图片里的所有人加框,加id
                cv2.rectangle(frame, (output[0], output[1]), (output[2], output[3]), (0, 0, 255), 2)
                cv2.putText(frame, str(output[-1]), (output[0], output[1]), font, 1.2, (255, 255, 255), 2)
    

    实现人物独立展示的方法:
    在上面我们已经知道单个id(单个人)的捕捉,也知道单个id的坐标信息储存在哪里,我们只需要使用“python的图片裁剪(图片按四个点坐标剪裁)”(这一部分内容直接在csdn上搜索就有)并把这部分代码添加到代码里,
    再使用如下的保存图片代码,也添加到指定位置

    cv2.imwrite("./frame/" + str(number).zfill(5) + '.jpg',frame) 
    """
    frame是图片,./frame/是图片的保存路径,指定文件夹,
    str(number).zfill(5)是图片的名字,这里采用顺序00001,00002...
    .jpg是图片格式
    """
    

    就可以达到把每个人单独裁剪出来并保存到一个文件夹里,最后在前端(建议使用pyqt写前端ui)从该文件夹里逐张读取图片播放,或将图片连接成视频,直接读取播放
    将图片连接生成视频的代码:

    import cv2
    import os
    
    img_root = 'D:/sucai/mot_images/0/'#这里写你的图片文件夹路径,最后一个文件夹要有斜杠
    fps = 10    #保存视频的FPS,可以适当调整
    size=(1920,1080) # 你的图片尺寸
    fourcc = cv2.VideoWriter_fourcc(*'XVID')
    videoWriter =cv2.VideoWriter('D:/sucai/mot_images/videos/test0.avi',fourcc,fps,size) # size是保存图片的尺寸
    data = os.listdir(img_root)
    for i in data:
        print(i)
        frame = cv2.imread(img_root+i)
        videoWriter.write(frame)
    videoWriter.release()
    
    更多相关内容
  • 资源名:基于matlab卡尔曼滤波的运动目标(人体)识别追踪程序源码+图片集+毕业论文_运动目标跟踪_卡尔曼滤波_人体识别_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正百分百成功...
  • 很多使用都会感叹“用VS Code 写代码是真好用、真爽。”它是一款当下流行、十分出色的ide开发工具。VS Code不仅仅是代码的编写,也可以一键式运行 Debug 。VS Code界面美观大方,功能强劲实用,是免费开源的现代...

    VS Code

    在前端开发中,有一个非常好用的工具——Visual Studio Code,简称VS code。很多人使用后都会感叹“用VS Code 写代码是真好用、真爽。”

    f17dceec83929847955ce54bc01dab83.png

    它是一款当下流行、十分出色的ide开发工具。VS Code不仅仅是代码的编写,也可以一键式运行 Debug 。

    VS Code界面美观大方,功能强劲实用,是免费开源的现代化轻量级代码编辑器。

    支持语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比 Diff、GIT 等特性,并针对网页开发和云端应用开发做了优化。

    软件跨平台支持 Win、Mac 以及 Linux,运行流畅,可谓是微软的良心之作……

    VS vode特点

    l 开源,免费

    l 自定义配置

    l 集成git

    l 智能提示强大

    35624ecdefca103fea569972365184b9.png

    l 支持各种文件格式(html/jade/css/less/sass/xml)

    l 调试功能强大

    l 各种方便的快捷键

    l 强大的插件扩展

    对前端实在是太友好了!


    VS code 可以做什么?

    • 编写 markdown
    • 管理git项目

    VS Code集成了项目版本管理,可以非常方便的几步操作完成代码的比对和提交,不需要命令或借助其他工具。

    • 画流程图
    • 编写python大多数同学写python选择 pycharm,但他们经常会遇到很多问题,比如 pycharm 运行配置,虚拟环境等,这些问题往往让新手搞得晕头转向。VS Code相对来说更加容易些。

    如此优秀的VS Code,只有真实体验过才会知道它有多优秀。


    快速体验

    上代码森林云端在线编程学习平台即可立即体验。

    代码森林是一个云端学习编程技术的平台。可实时在线编码、实时在线保存代码、可快速掌握各种编程环境、IDE以及各种IT技术。

    VS Code+Python

    57d24c4a6d78b6dbd254840dcbcbc983.png

    VS Code是一个相当优秀的IDE,用来开发python再好不过。代码森林的VS Code实训镜像已经为您安装好python的环境。必备的基础插件也已经安装到位。

    只需要上网站就可以开始体验!

    可以省去很多环境配置等时间、免去很多不方便 。

    Python入门开发【VS Code开发工具WEB】使用教程如下

    1.选择带有实训上机的课程进行在线上机;如图

    7533b562f8ab7222ce992d94780be1a4.png

    2.选择课程目录带有实训上机的任务;进入实训界面,如图

    bdf496d333dc2c2b560a2af73c41979c.png

    3.选择或者打开我们的工作目录,然后新建一个py文件

    80afd8a0cb197cd6f6d13551069b8a47.png

    4.进行简单的python编码,如图

    1cf399297bf203b66d24b0df0c96410e.png

    5.点击右上角三角形的图标,运行测试

    d3bb17aaca5ede77bf3e976a13f0507b.png

    6.保存我们的代码到代码森林,方便下次继续进行编程(a,b,c三步曲),如图

    a.点击第一步和第二步保存我们的代码后会弹出我们的提示框

    f90270242b94a80c3a962a53dc5873dc.png

    选择总是/是

    40ea9e9b1b9baa66a699f720527ad670.png

    b.填写本次代码变更内容,方便后期版本跟踪,如第一次编写代码

    c0d20fdc99b82a473b1210c5f7a526b4.png

    c.选择第三步》推送,提交到代码仓库

    ​​

    c77fcf75249947a5fd0229c370ac53a7.png

    一次编程学习就可以完美结束啦!

    另外大家平时收藏的教程都可以上代码森林实战上机操作哦!!

    l 期待大家多多关注代码森林,希望我们一同成长和进步!

    展开全文
  • 博文:基于python的行人与车辆检测和跟踪实现(HOG+SVM/HAAR) 链接:https://blog.csdn.net/qq_38523834/article/details/89619697 文件里面我提到的视频,cars.xml文件和myhaar.xml文件。需要的Python库在...
  • 目标跟踪算法综述

    万次阅读 2021-11-30 13:49:15
    前言: 目标跟踪是计算机视觉领域研究的一个热点问题,其利用视频或图像序列的上下文信息,对目标的外观和运动信息进行建模,从而对目标运动状态进行预测并标定目标的位置。目标跟踪算法从构建模型的角度可以分为生成...

    前言:   目标跟踪是计算机视觉领域研究的一个热点问题,其利用视频或图像序列的上下文信息,对目标的外观和运动信息进行建模,从而对目标运动状态进行预测并标定目标的位置。目标跟踪算法从构建模型的角度可以分为生成式(generative)模型和判别式(discrimination)模型两类;从跟踪目标数量可分为单目标跟踪和多目标跟踪。目标跟踪融合了图像处理、机器学习、最优化等多个领域的理论和算法,是完成更高层级的图像理解( 如目标行为识别) 任务的前提和基础。

    目标跟踪的基本任务是在一段视频序列中给定目标的初始位置,在后续每一帧中对目标进行持续的跟踪定位,在此过程中不会提供关于目标的颜色、形状、大小等先验条件,即跟踪算法只有通过在第一帧中对目标进行学习才能进行跟踪。一般来说,跟踪过程中的技术难点主要包括以下几个方面:

            ① 遮挡与消失

            ② 形态变化

            ③ 运动模糊

            ④ 复杂背景

            ⑤ 准确性与实时性

    1 传统的目标跟踪方法

    传统的目标跟踪算法是目标跟踪领域出现最早的算法,虽然在如今看来,这些算法存在一定局限性,但我们不能忽视它们为目标跟踪领域蓬勃发展奠定的基础。其中的经典算法包括光流法、卡尔曼滤波、粒子滤波、均值漂移等。

    1.1 光流法:

    光流(optical flow)的概念于1950 年由 Gibson 首先提出,是目标、场景或摄像机在连续两帧图像间运动时造成的目标的运动。是空间运动物体在观察成像平面上的像素运动的瞬时速度,利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。一般而言,光流是由于场景中前景目标本身的移动、相机的运动,或者两者的共同运动所产生的。其计算方法可以分为三类:

            (1)基于区域或者基于特征的匹配方法;

            (2)基于频域的方法;

            (3)基于梯度的方法;

    简单来说,光流是空间运动物体在观测成像平面上的像素运动的“瞬时速度”。光流的研究是利用图像序列中的像素强度数据的时域变化和相关性来确定各自像素位置的“运动”。研究光流场的目的就是为了从图片序列中近似得到不能直接得到的运动场。

    注:运动场,其实就是物体在三维真实世界中的运动;光流场,是运动场在二维图像平面上的投影。

    光流法的前提假设:

            (1)相邻帧之间的亮度恒定;

            (2)相邻视频帧的取帧时间连续,或者,相邻帧之间物体的运动比较“微小”;

            (3)保持空间一致性;即,同一子图像的像素点具有相同的运动

    光流法用于目标检测的原理:给图像中的每个像素点赋予一个速度矢量,这样就形成了一个运动矢量场。在某一特定时刻,图像上的点与三维物体上的点一一对应,这种对应关系可以通过投影来计算得到。根据各个像素点的速度矢量特征,可以对图像进行动态分析。如果图像中没有运动目标,则光流矢量在整个图像区域是连续变化的。当图像中有运动物体时,目标和背景存在着相对运动。运动物体所形成的速度矢量必然和背景的速度矢量有所不同,如此便可以计算出运动物体的位置。需要提醒的是,利用光流法进行运动物体检测时,计算量较大,无法保证实时性和实用性。

    光流法用于目标跟踪的原理:

            (1)对一个连续的视频帧序列进行处理;

            (2)针对每一个视频序列,利用一定的目标检测方法,检测可能出现的前景目标;

            (3)如果某一帧出现了前景目标,找到其具有代表性的关键特征点(可以随机产生,也可以利用角点来做特征点);

            (4)对之后的任意两个相邻视频帧而言,寻找上一帧中出现的关键特征点在当前帧中的最佳位置,从而得到前景目标在当前帧中的位置坐标;

            (5)如此迭代进行,便可实现目标的跟踪;

    1.2 卡尔曼滤波

    卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,卡尔曼滤波器到底是干嘛的?我们来看下wiki上的解释:卡尔曼滤波的一个典型实例是从一组有限的,包含噪声的,对物体位置的观察序列(可能有偏差)预测出物体的位置的坐标及速度。例如,对于雷达来说,人们感兴趣的是其能够跟踪目标。但目标的位置、速度、加速度的测量值往往在任何时候都有噪声。卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置的估计(预测),也可以是对过去位置的估计(插值或平滑)。

            什么是卡尔曼滤波?

            ① 你可以在任何含有不确定信息的动态系统中使用卡尔曼滤波,对系统下一步的走向做出有根据的预测,即使伴随着各种干扰,卡尔曼滤波总是能指出真实发生的情况。 在连续变化的系统中使用卡尔曼滤波是非常理想的,它具有占用内存小的优点(除了前一个状态量外,不需要保留其它历史数据),并且速度很快,很适合应用于实时问题和嵌入式系统。

            ② 卡尔曼滤波器是一种高效的递归滤波器,它能够从一系列的不完全及包含噪声的测量中,估计动态系统的状态。

            ③ 对于一个线性系统,卡尔曼滤波器能够从不精确的预测状态和观测状态中,估算出高精度的系统状态,并且估计过程只需要保留最近一次的估算结果,具有速度快、资源需求低的特点。

            ④ 其滤波过程为:根据当前状态和系统方程估算下一状态 获取下一状态的观测结果 使用当前卡尔曼增益加权平均更新估计值 更新卡尔曼增益。整个过程迭代执行。

            ⑤ 更新估计值时预测值和观测值所占权重由其不确定性决定,基本卡尔曼滤波器擅长处理正态分布的误差。

    1.3 粒子滤波

            为什么要使用粒子滤波呀?首先。卡尔曼滤波有一个很大的前提,那就是: a:系统噪声必须是符合高斯分布(也就是正态分布)。b:必须是线性系统。

    粒子滤波(PFParticle Filter)是以贝叶斯推理和重要性采样为基本框架。

    贝叶斯推理就是类似于卡尔曼滤波的过程。而卡尔曼滤波是线性高斯模型,对于非线性非高斯模型,就采用蒙特卡洛方法(Monte Carlo method,即以某时间出现的频率来指代该事件的概率)。(粒子滤波从一定程度上,属于卡尔曼滤波的拓展)

    重要性采样就是根据对粒子的信任程度添加不同的权重,对于信任度高的粒子,添加大一点的权重,否则就添加小一点的权重,根据权重的分布形式,可以得到与目标的相似程度。

    粒子滤波的思想基于蒙特卡洛思想,利用粒子集来表示概率,可以用在任何形式的状态空间模型上 。1998年,Andrew 和 Michael 成功将粒子滤波应用在目标跟踪领域。在初始化阶段提取目标特征,在搜索阶段按均匀分布或高斯分布的方式在整个图像搜索区域内进行粒子采样,然后分别计算采样粒子与目标的相似度,相似度最高的位置即为预测的目标位置。后续帧的搜索会依据前一帧中预测的目标位置做重要性重采样。传统的粒子滤波跟踪算法仅采用图像的颜色直方图对图像建模,计算量会随着粒子数量的增加而增加,并且当目标颜色与背景相似时,往往会跟踪失败。

            具体过程:

    粒子滤波的核心思想就是基于奖励惩罚机制(强化学习)的优化首先,根据状态转移方程,对于每个粒子的位置进行更新。但这个更新只是基于航迹推算(dead reckon)得到的,我们要融合绝对定位与相对定位,绝对定位的信息并没有融合进去。根据状态转移方程得到的新状态到底行不行?能有多大的概率?这还取决于绝对定位的结果也就是输出方程。

    把状态转移方程得到的结果代入输出方程,得到一个输出,这个输出是估计值,而根据绝对定位的观测,这个值对应的观测值也是可以测量得到的,现在这两个值之间有个差额,很明显,这个差额越小,刚才的到的状态越可信,这个差额越大,状态越不可信。

    把这个差额指标作为评估函数(像GA,pso等优化算法里的evaluation function),来修正各个状态的估计概率。简单地说就是,一开始在整个地图上均匀分配一大波粒子(当然有改进的预处理算法,可以事先往正确点靠,减少计算量),每个粒子都可以算出一个估计值,然后再得到一个实际的观测值,将与观测值相差较小的粒子留下来。(具体留多少个粒子需要根据你系统模型,现在也有自适应的算法,可以自己改变留下来的粒子数目),这样每个粒子都有一个和观测值的差值,然后再进行下一次同样方法的更新(这个过程叫做重采样),最后我们就会留下可信度非常高的粒子。这一般就是最后的正确值。

            粒子滤波的应用

    粒子滤波技术在非线性、非高斯系统表现出来的优越性,决定了它的应用范围非常广泛。另外,粒子滤波器的多模态处理能力,也是它应用广泛的原因之一。国际上,粒子滤波已被应用于各个领域。在经济学领域,它被应用在经济数据预测;在军事领域已经被应用于雷达跟踪空中飞行物,空对空、空对地的被动式跟踪;在交通管制领域它被应用在对车或人视频监控;它还用于机器人的全局定位。

            粒子滤波的缺点

    虽然粒子滤波算法可以作为解决SLAM问题的有效手段,但是该算法仍然存在着一些问题。其中最主要的问题是需要用大量的样本数量才能很好地近似系统的后验概率密度。机器人面临的环境越复杂,描述后验概率分布所需要的样本数量就越多,算法的复杂度就越高。因此,能够有效地减少样本数量的自适应采样策略是该算法的重点。另外,重采样阶段会造成样本有效性和多样性的损失,导致样本贫化现象。如何保持粒子的有效性和多样性,克服样本贫化,也是该算法研究重点。

    1.4 均值漂移mean-shift

    Mean shift算法是Fukunaga于1975年提出的,其基本思想是利用概率密度的梯度爬升来寻找局部最优。到1995年,YizongCheng针对离x越近的采样点对x周围的统计特性越有效,定义了一族核函数,并根据所有样本点的重要性不同,设定了一个权重系数,扩大了Mean Shift的使用范围。

    meanshift算法的原理很简单。假设你有一堆点集,还有一个小的窗口,这个窗口可能是圆形的,现在你可能要移动这个窗口到点集密度最大的区域当中。如下图:

    最开始的窗口是蓝色圆环的区域,命名为C1。蓝色圆环的圆心用一个蓝色的矩形标注,命名为C1_o。而窗口中所有点的点集构成的质心在蓝色圆形点C1_r处,显然圆环的形心和质心并不重合。所以,移动蓝色的窗口,使得形心与之前得到的质心重合。在新移动后的圆环的区域当中再次寻找圆环当中所包围点集的质心,然后再次移动,通常情况下,形心和质心是不重合的。不断执行上面的移动过程,直到形心和质心大致重合结束。 这样,最后圆形的窗口会落到像素分布最大的地方,也就是图中的绿色圈,命名为C2。

    meanshift算法除了应用在视频追踪当中,在聚类,平滑等等各种涉及到数据以及非监督学习的场合当中均有重要应用,是一个应用广泛的算法。图像是一个矩阵信息,如何在一个视频当中使用meanshift算法来追踪一个运动的物体呢? 大致流程如下:

            1.首先在图像上选定一个目标区域

            2.计算选定区域的直方图分布,一般是HSV色彩空间的直方图。

            3.对下一帧图像b同样计算直方图分布。

            4.计算图像b当中与选定区域直方图分布最为相似的区域,使用meanshift算法将选定区域沿着最为相似的部分进行移动,直到找到最相似的区域,便完成了在图像b中的目标追踪。

            5.重复3到4的过程,就完成整个视频目标追踪。

    通常情况下我们使用直方图反向投影得到的图像和第一帧目标对象的起始位置,当目标对象的移动会反映到直方图反向投影图中,meanshift 算法就把我们的窗口移动到反向投影图像中灰度密度最大的区域了。

            直方图反向投影的流程是:

    假设我们有一张100x100的输入图像,有一张10x10的模板图像,查找的过程是这样的:

            1.从输入图像的左上角(0,0)开始,切割一块(0,0)至(10,10)的临时图像;

            2.生成临时图像的直方图;

            3.用临时图像的直方图和模板图像的直方图对比,对比结果记为c;

            4.直方图对比结果c,就是结果图像(0,0)处的像素值;

            5.切割输入图像从(0,1)至(10,11)的临时图像,对比直方图,并记录到结果图像;

            6.重复1~5步直到输入图像的右下角,就形成了直方图的反向投影。

            Mean shift视频追踪实现

    在OpenCV中实现Mean shift的API是:cv.meanShift(probImage, window, criteria)

    参数:probImage: ROI区域,即目标的直方图的反向投影

    window: 初始搜索窗口,就是定义ROI的rect

    criteria: 确定窗口搜索停止的准则,主要有迭代次数达到设置的最大值,窗口中心的漂移值大于某个设定的限值等。

            实现Mean shift的主要流程是:

            1.读取视频文件:cv.videoCapture()

            2.感兴趣区域设置:获取第一帧图像,并设置目标区域,即感兴趣区域

            3.计算直方图:计算感兴趣区域的HSV直方图,并进行归一化

            4.目标追踪:设置窗口搜索停止条件,直方图反向投影,进行目标追踪,并在目标位置绘制矩形框。

    由于均值漂移计算速度快,且对目标形变和遮挡有一定鲁棒性,均值漂移算法受到广泛重视。但提取的颜色直方图特征对目标的描述能力有限,缺乏空间信息,故均值漂移算法仅能在目标与背景能够在颜色上区分开时使用,有较大局限性。

    1.5 稀疏编码

    稀疏表示是智能信息处理的重要工具,目前在图像分类、人脸识别、图像的超分辨重建等方面得到广泛的应用。由于基于稀疏表示的目标观测模型对环境的变化具有一定的鲁棒性,因此,通常用稀疏表示解决复杂场景下的目标跟踪问题。稀疏表示应用于目标跟踪时,将跟踪问题的求解转化为在模板空间中寻求一个稀疏近似解。

    稀疏表示是获取、表示和压缩高维信号的重要工具, 其基本思想是:给定一个足够大的基集(也称作超完备字典),对于一个待编码信号,从基集中尽可能少地选择基向量线性重建待编码信号,同时使重构误差尽可能 小。在跟踪问题中,可以利用稀疏表示对干扰的不敏感特性建立目标观测模型。

    1.6 字典学习

    字典学习包括稀疏编码和字典更新两个阶段,先更新迭代稀疏系数矩阵,然后在迭代字典矩阵和 稀疏系数矩阵时更新字典,以得到符合优化目的的字典,对数量巨大的数据集进行降维,从中得到最能表现样本的特征,达到运算量最小的目的.目前较成熟的字典学习算法有正交匹配追踪(orthogonal matching pursuit, OMP)算法、最优方向法(method of directions, MOD)算法等.利用构建图像特征集合字典对目标特征信息进行分析对比,可解决目标长期静止时的跟踪问题,并利用实时更新目标模板,最大限度保证模板实时表征目标的各种特性。

    2 基于相关滤波的目标跟踪方法

    基于相关滤波(Correlation Filter )的目标跟踪算法是目标跟踪领域的一大研究热点,为目标跟踪领域带来重大变革。相关滤波源于信号处理领域,相关表示两信号相似性的高低,两信号越接近,相关响应越高。相关滤波跟踪算法就是通过建立一个相关滤波器,来寻找响应值最高的目标位置。2010 年, Bolme等人率先将相关滤波与目标跟踪相结合,提出了 MOSSE 跟踪算法,以其高速的跟踪速度和良好的跟踪性能,极大的促进了目标跟踪领域的发展,下面简要介绍目标跟踪领域发展过程中具有代表性的几种跟踪算法。

    2.1 误差最小平方和滤波器

    将信号处理领域的相关操作引入到目标跟踪领域,即可将跟踪问题描述为寻找视频序列中与初始目标最相似的区域,即计算滤波器 h 与输入图像 f 的相关性,得到响应图 g。计算过程如下图所示。

    为了减少计算量,加快运算速度,引入傅里叶变换,在一张图像上训练得到的滤波器可以精准拟合该图像,但在跟踪时,目标外观会由于快速运动、尺度变化、遮挡等因素发生改变,之前训练得到的滤波器应用于新图像时,往往不能适应目标的变化,导致跟踪失败。因此,滤波器需要能够随着视频序列的进行而自适应的更新。

    2.2 核相关滤波跟踪算法

    2014 年,Henriques 等人提出核相关滤波跟踪算法(Kernelized CorrelationFilters,KCF),对基于灰度特征的 CSK 算法做出改进,引入核函数、循环矩阵、HOG 特征,进一步提高了算法的跟踪性能。下面将对 KCF 跟踪算法的重要环节加以介绍。

            (1)构建训练样本集

    跟踪算法的一大难点在于样本数量过少,传统跟踪算法通常在目标位置周围随机采样获得样本,或者通过对目标做旋转、缩放获得样本。然而这两种方式获得的样本数量十分有限并且冗余度高,无法充分学习到目标信息,会导致跟踪器在后续跟踪时出现较大偏差,影响跟踪性能。

    KCF 跟踪算法创造性的引入循环矩阵,一方面通过目标样本的循环移位操作获得大量训练样本,另一方面,将目标特征的频域空间与岭回归相结合,实现目标特征的快速学习与检测。

            (2)训练分类器

    KCF 框架中训练目标分类器实际上是一个岭回归问题 ,也叫正则化最小二乘问题。目标是通过训练样本集找到最优分类函数,使得样本的预测值与样本真实值之间的平方误差最小,得到的损失目标函数,通过最小二乘法可以获得使上式损失函数最小的最优解。

    对于线性回归问题,可以通过上述步骤计算得到,大大提高计算速度。但在大多数情况下,需要解决的是非线性问题,由此 KCF 算法引入核函数的思想,将训练样本映射到高维空间,使其转化为线性可分问题,那么在高维空间内可以使用岭回归来寻找一个分类器。

            (3)目标快速检测

    在检测阶段,通常会逐个计算候选区域的响应值,选择其中响应值最高的样本作为目标。在 KCF 框架中,预测区域及其循环移位构成了候选样本集,由此可以得到候选样本集的响应值。

    响应值最大说明当前候选样本最接近训练样本,其对应位置即预测的目标位置。此外可以通过离散傅里叶变换对角化,提高计算效率。

            (4)模型更新

    为了使分类器对目标保持较高的辨别力,以应对跟踪过程中出现的各种干扰情况,需要及时更新算法模型,KCF 框架沿用了 MOSSE 的更新策略,在每一帧中更新外观模型与分类器参数,以提高算法的鲁棒性。

    3 基于深度学习的目标跟踪方法

    深度学习作为近年来的热门技术手段,在众多领域都能看到它的身影。深度学习凭借优异的特征建模能力在目标跟踪领域也取得了广泛应用。基于深度学习的目标跟踪大致可分为两类,一类是采用卷积神经网络提取目标特征,然后与其他跟踪方式进行融合来实现目标跟踪。另一类是训练出端到端的神经网络模型,目标跟踪的所有步骤均由神经网络来实现。下面将简要介绍神经网络的基本结构,典型的卷积神经网络模型,孪生神经网络工作原理,以及几种代表性的深度学习跟踪算法。

    3.1 神经网络

    神经网络是受生物神经系统启发而产生的一种数学模型,作为人工智能的底层模型,,神经网络有着许多复杂应用。一个基础的神经网络如下图所示:

    神经网络由输入层、隐藏层、输出层三部分组成,相邻层之间相互连接。其中,输入层负责数据输入,输出层负责数据输出,隐藏层负责一系列的数学运算,目的是为了更好地线性划分不同类型的数据,隐藏层的层数决定了神经网络的深度。

    神经网络中一个非常重要的概念是激活函数,它决定了某个神经元是否被激活,这个神经元接受到的信息是否有用。没有激活函数的神经网络就是一个线性回归模型,无论网络包含多少层,它的输出都是输入的线性组合。而激活函数引入了非线性变换,使得神经网络可以应用到非线性模型中,能够处理更复杂的任务。常用的激活函数有 sigmoid 函数、tanh 函数、ReLU 函数。

    3.2 卷积神经网络

    卷积神经网络(Convolutional Neural Network, CNN)是一种前馈神经网络,最早由 LeCun 提出并应用于手写字体识别上。由于 CNN 不需要预先处理图像,可以直接将原始图像输入到网络中,操作更简洁,因而得到广泛应用,经典的网络结构层出不穷。卷积神经网络包含卷积层、池化层、全连接层以及输出层。一个典型的卷积神经网络结构如下图所示。

    其中,卷积层是 CNN 中最核心的部分,主要功能是特征提取,底层网络能够提取如边缘、轮廓等低级特征,深层网络能够从低级特征中提取更复杂的特征。对二维图像做卷积操作,类似于滑动窗口对图像滤波,因此也把卷积核称为滤波器(filter)。卷积核的选择决定了特征图的质量,图像经由不同的卷积核处理能够得到不同的特征图。卷积核的数量越多,提取到的特征图也越多,但相应的计算复杂度增加,若卷积核的数量太少,则无法提取出输入图像的有效特征。使用卷积核提取图像特征的过程如下图所示。

    池化层,也称降采样层,由卷积层得到的特征图通常维度过高,因此在卷积层后连接一个池化层,用于降低特征维度。池化层的操作方式与卷积层基本相同,常用的池化方式有最大池化和平均池化,如下图所示。最大池化即取滑动窗口所对应区域的最大值作为池化输出,平均池化即取滑动窗口所对应区域的平均值作为池化输出。池化操作不仅可以降低特征维度,减少计算量,而且具备特征不变性,能够保留原始图像中最重要的特征。

    全连接层通常位于卷积神经网络的尾部,与传统的神经网络连接方式一致,主要负责将所有局部特征连接成全局特征,并将输出值传送给分类器。全连接层连接所有特征的方式是将卷积输出的二维特征图转化成一维向量,然后再乘一个权重,权重矩阵是固定的,且应与由特征图生成的一维向量大小一致,这就要求网络输入层图像必须固定尺寸,才能保证传送到全连接层的特征图的大小与全连接层的权重矩阵相匹配。最后将得到的图像特征通过 sigmoid 函数或其他类型的函数映射到输出层,完成分类任务。

    3.3 孪生神经网络

    孪生神经网络是一种包含两个或多个相同子结构的神经网络架构,各子网络共享权重。孪生神经网络的目标是通过多层卷积获取特征图后,比较两个对象的相似程度,在人脸认证、手写字体识别等任务中常被使用。其网络结构如下图所示,两个输入分别进入两个神经网络,将输入映射到新的空间,形成输入在新空间中的表示,通过损失的计算,评价两个输入的相似度。

    此外,该网络的特点是可以充分利用有限的数据进行训练,这一点对目标跟踪来说至关重要,因为在跟踪时能够提供的训练数据与目标检测相比较少。

    若子网络之间不共享权重,则称为伪孪生神经网络。对于伪孪生神经网络,其子网络的结构可以相同,也可不同。与孪生神经网络不同,伪孪生神经网络适用于处理两个输入有一定差别的情况,如验证标题与正文内容是否一致、文字描述与图片内容是否相符等。要根据具体应用进行网络结构的选择。

    3.4 典型的深度学习跟踪算法

    目前,完全基于卷积神经网络的目标跟踪主要有两种方式,一种是采用“离线训练+在线微调”的模式;另一种方式是不采用离线训练,而是通过构建更简洁的卷积神经网络达到在线跟踪的要求。以下选择代表性算法做简要介绍。

            (1)MDNet

    要提升 CNN 在目标跟踪中的表现能力,需要大量训练数据,大多跟踪算法解决训练数据不足的策略是使用辅助的非跟踪数据进行预训练,以获取对目标特征的通用表示,但这一策略与跟踪任务本身存在一定偏离。MDNet 创造性地提出多域网络(Multi-Domain Network),利用跟踪序列进行预训练,在线跟踪时将网络结构微调,MDNet 结构如下图所示。

    MDNet 网络为多域结构,采用来自 VGG-M 的卷积层提取特征,采用全连接层进行分类,这里的分类为二分类,即只区分前景与背景。采用多域结构是为了适应不同的跟踪序列,每个序列都对应一个单独的域,每个域内都有一个针对它的二分类层(fc6)进行分类,该层也称为特定域层。在 fc6 之前的所有层为共享层,会将序列进行共享。这样就实现了通过共享层学习目标的通用特征表达,通过特定域层解决不同序列分类目标不一致的问题。

    MDNet 通过离线训练得到卷积层参数,在线跟踪时,卷积层参数不变,根据第一帧样本新建一个 fc6 层,在跟踪过程中在线微调 fc4-fc6 的参数,以适应目标变化。同时通过难例挖掘重点关注背景中难以划分的样本,减轻跟踪漂移问题,增强网络判别能力。

    MDNet 获得了 VOT2015 竞赛的冠军,但由于跟踪过程中计算量较大,且在线更新全连接层参数耗时,使得 MDNet 即使在 GPU 上也只能达到 1fps,仍有进一步提升的空间。

            (2)FCNT

    大多数基于深度学习的跟踪算法都是先在海量数据上预训练,再传递到跟踪问题上,这些方法在评价基准上能达到 90%以上的精度,但这纯粹是利用了CNN 强大的特征表示能力。Wang 等人提出了基于全卷积网络的目标跟踪算法FCNT,通过分析各个层特征对跟踪的影响,更加合理的选择特征以减少计算量,提升跟踪性能,其跟踪框架如下图所示。

    FCNT 基于 VGG-Net 网络结构,做出了如下贡献:第一,分析了不同层次特征的特点,发现底层特征提供更多的细节信息,可以更好地区分外观相似的目标,而高层特征包含更多语义信息,对区分不同类别鲁棒性更强;第二,发现对目标来说,并非所有特征都对跟踪有用,可能会存在噪声特征,因此提出一种特征选择机制,去除噪声特征,使跟踪更精确。

     在跟踪过程中,对于输入的视频帧,首先利用 VGG-Net 提取 Conv4-3 及Conv5-3 的特征,然后将筛选出的特征分别传送给区分目标与相似背景的 SNet以及捕捉目标类别信息的 GNet。SNet 及 GNet 分别生成两个响应图独立执行目标定位,最终目标位置由检测器进行判定。FCNT 的跟踪精度达到了 85.6%,但跟踪速度仍然达不到实时性要求,仅有 3fps。

            另:一般来说,相比于光流法、KalmanMean shift等传统算法,相关滤波类算法跟踪速度更快,深度学习类方法精度高;具有多特征融合以及深度特征的追踪器在跟踪精度方面的效果更好;使用强大的分类器是实现良好跟踪的基础;尺度的自适应以及模型的更新机制也影响着跟踪的精度。

    附:        ① 生成式模型方法

    生成式模型方法,通过对目标模板进行建模,在当前帧寻找与模型最相似的区域作为目标预测位置。生成模型方法包括卡尔曼滤波 、粒子滤波、mean-shift 、PCA、稀疏编码 、字典学习等。基于生成式模型方法的目标跟踪算法着眼于对目标本身的刻画,忽略背景信息,在目标自身变化剧烈或者被遮挡时易产生漂移。

            ②判别式模型方法

    判别式模型方法,是以当前帧的目标区域为正样本,背景区域为负样本,通过正负样本训练分类器,把训练好的分类器用在下一帧中寻找最优区域,最优区域就是预测区域。与生成模型方法相比,判别模型方法利用背景信息训练分类器,使得分类器具有更强的辨别能力,能够更好区分前景和后景,所以判别模型方法普遍要比生成模型方法好 ,跟踪表现鲁棒性更强,逐渐在目标跟踪领域占主流地位,大部分基于深度学习的目标跟踪算法也归属于判别式模型。其中经典的判别模型方法有TLD(Tracking-learning-detection)和 Struck。

    展开全文
  • 目标跟踪技术及其数据集

    千次阅读 2020-10-27 20:28:39
    目前,目标跟踪作为计算机视觉中的一个重要的研究课题,在民用和军事等很多方向有着广泛的应用前景,主要包括...现有的目标跟踪算法主要两大类:生成式方法和判别式方法,现在大部分SOTA的跟踪算法都是tracking-by

    目前,目标跟踪作为计算机视觉中的一个重要的研究课题,在民用和军事等很多方向有着广泛的应用前景,主要包括自动驾驶、精准制导、视频监控等,而在这些领域寻求一定的精度和速度以及鲁棒性指标具有重要的工程意义。现在主要研究的目标跟踪算法一般是在给定一个视频序列的第一帧中目标位置的基础上,对后续帧中的原始目标进行跟踪。由于目标抖动、局部遮挡、背景光照变化、形状改变、快速运动等原因,在该领域仍然具有很大的挑战。
    现有的目标跟踪算法主要有两大类:生成式方法和判别式方法,现在大部分SOTA的跟踪算法都是tracking-by-detection,也就是判别式方法。生成式方法主要是在初始帧中对给定的目标区域进行建模,在后续帧中搜索与模型最相似的部分即为预测的目标位置。比较著名的有卡尔曼滤波、粒子滤波和mean-shift等算法,此类方法的跟踪准确率较低。判别式方法则是将目标跟踪问题看作每帧中的目标检测任务,使用跟踪目标的图像特征训练一个分类器,将图像中的目标区域作为正样本,背景区域作为负样本,在后续帧中使用训练好的分类器寻找最优解。并且在跟踪过程中不断地使用每帧中的跟踪结果对分类器进行更新,其中比较著名的有现在被广泛使用的相关滤波方法和一些基于深度学习的目标跟踪算法。

    一.目标跟踪中的关键问题

    1. 跟踪样本较少
      目标跟踪与其他的一些计算机视觉任务不同之处在于目标跟踪中所跟踪的目标在每个视频序列中都是不同的,并且每个视频中所提供的内容只有第一帧的图像和所跟踪目标的初始位置。对于一般的目标检测任务来说,往往需要大量的数据来进行预训练,这对于目标跟踪来说是较为困难的。
      针对这个问题,现阶段已经有很多算法提出了很好的解决方案。比如KCF算法中使用循环矩阵来获取更多的训练样本来对分类器进行训练。MDNet将网络分为共享层和domain-specific层,将每个视频序列当成一个独立的domain进行训练,每个domain层具有一个独立的二分类层,用于区分前景和和背景。
    2. 跟踪目标在跟踪过程中变化较大
      目标跟踪任务都是在一个连续的视频序列中跟踪第一帧中选定的目标,但是在视频序列中跟踪目标的状态以及背景可能会发生很大的变化,主要有外观变形,光照变化,快速运动和运动模糊,背景相似干扰等,这就对目标跟踪任务造成了很大的困难。
      针对这些问题,部分基于相关滤波的算法使用每帧中的跟踪结果在线训练一个分类器,每帧跟踪结束后都使用这个结果对分类器进行更新。部分基于深度学习的跟踪算法使用预训练过的卷积神经网络提取跟踪目标的特征作为模板和后续帧中的特征进行互相关计算,并使用后续帧中的结果对模板进行更新。
    3. 模板漂移问题
      由于跟踪过程中需要使用新的跟踪结果对之前的分类器或模板进行在线更新,如果在跟踪过程中发生了一些目标遮挡等情况,就会产生模板漂移的问题,导致无法在后续过程中继续对目标进行跟踪。
      针对这个问题,主要有两种解决思路。第一种是通过某种方式对跟踪结果的置信度进行判断,只有当跟踪结果为高置信度的情况时才进行更新。第二种方式就是学习一个稳定的长时目标分类器,当判断目标丢失时,重新在整张图片中搜索目标的位置。

    二.目标跟踪常用数据集

    1. OTB数据集
      地址:http://cvlab.hanyang.ac.kr/tracker_benchmark/index.html
      由吴毅老师的论文中提出的数据集组成,主要有OTB50和OTB100两个数据集,其中OTB100包含了OTB50中的50个视频序列。整个OTB数据集中包括了100个视频序列和总共102个跟踪目标(其中两个视频序列中包含了两个跟踪目标),并且提供了标注的ground-truth文件和用来进行算法效果测试和对比的matlab代码,下面是这两篇论文。
       Wu, Y.; Lim, J.; Yang, M.-H. Online object tracking: A benchmark. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Portland, OR, USA, 23–28 June 2013; pp. 2411–2418.
       Wu, Y.; Lim, J.; Yang, M.-H. Object tracking benchmark. IEEE Trans. Pattern Anal. Mach. Intell. 2015, 37, 1834–1848.
      这两篇论文里面对比了一些之前发表过的tracker算法,并进行了一些详细的分类。OTB可以算是目标跟踪领域的第一个比较权威的数据集,在这之前的一些目标跟踪算法主要都是使用的一些自己录制的视频序列来进行算法效果的验证,大家也不知道这个算法是否在其他场景也能够适用。这个数据集的提出很大地促进了目标跟踪领域算法的发展,给所有的研究者提供了一个可以对自己算法进行检验和对比的平台。
      在这里插入图片描述
    2. VOT数据集
      地址:https://www.votchallenge.net/index.html
      VOT是现在使用比较多的一个数据集,从VOT2013开始每年都会更新,现在已经更新到VOT2020了。VOT数据集的跟踪难度比OTB要高很多,提供了很多小目标和非刚体运动等较复杂情况下的跟踪场景,从VOT2018开始,还提供了专门用来评估长时跟踪算法的数据集。并且OTB中标注跟踪目标只使用了传统垂直形式的矩形边框作为目标的ground-truth,而在近几年的VOT数据集中使用了跟踪目标的最小外接矩形作为目标的ground-truth,在最新的数据集中还提供了跟踪目标的mask作为ground-truth以供一些将目标跟踪和目标分割相结合的算法来进行评估。
      在这里插入图片描述
    3. UAV123数据集
      地址:https://cemse.kaust.edu.sa/ivul/uav123
      UAV123是2016年ECCV上提出的一个目标跟踪数据集,该数据集全部由无人机在空中拍摄,背景较为干净,视角变化较大,总共约14G,包含了123个视频序列,超过11万帧图片。此外还提供了低帧率10fps版本的视频序列以供测试使用。官方主页还提供了一些其他算法的运行结果。下面是这篇论文。
      Mueller M, Smith N, Ghanem B. A benchmark and simulator for uav tracking[C]//European conference on computer vision. Springer, Cham, 2016: 445-461.
      在这里插入图片描述
    4. LaSOT数据集
      地址:http://vision.cs.stonybrook.edu/~lasot/
      LaSOT是一个长时目标跟踪的大型数据集,总共包含了1550个视频序列和超过380万帧图片,每个视频序列平均长度超过2500帧(83秒),最长的视频序列超过10000帧,总共分为85个类别,每个类别超过10个视频序列。并且每帧中的目标都是经过人工标注的,更重要的是它考虑了视觉外观和自然语言的联系,不仅提供了跟踪目标的bounding box,还增加了丰富的语言注释。下面是两篇论文。
       Fan H, Lin L, Yang F, et al. Lasot: A high-quality benchmark for large-scale single object tracking[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2019: 5374-5383.
       Fan H, Bai H, Lin L, et al. LaSOT: A High-quality Large-scale Single Object Tracking Benchmark[J]. International Journal of Computer Vision, 2020: 1-23.
      在这里插入图片描述

    三.跟踪算法在这里插入图片描述

    (图片来源:https://github.com/foolwood/benchmark_results)
    上图中是一些SOTA的目标跟踪算法,主要分为两个分支,基于深度学习的跟踪算法(左侧)和基于相关滤波的跟踪算法(右侧)。

    其中基于深度学习的跟踪算法中有一个比较重要的分支—基于孪生网络的目标跟踪算法,最早由Luca Bertinetto等人在2016年的ECCV会议上发表,主要思想是通过一对相同结构的神经网络用来作为特征提取器,其中一个用来提取初始帧中给定目标的特征,另一个用来提取跟踪过程中搜索区域的特征,然后通过利用对所提取的特征进行一些相关性的计算,来确定目标的位置,这个算法后来作为一个baseline延伸出了很多改进的跟踪算法(论文主页地址:http://www.robots.ox.ac.uk/~luca/siamese-fc.html)。

    基于相关滤波的目标跟踪算法最早由João F. Henriques等人在2015年的TPAMI会议上发表,主要思想是根据跟踪过程中的当前帧以及之前帧的信息训练一个分类器,计算新输入帧的相关性,得到置信图中得分最高的区域(点)就是预测的跟踪结果。分类器的优化函数使用脊回归函数,引入核技巧以及循环矩阵将参数训练问题简化,使用循环矩阵获得更多的训练样本数量。这篇论文的提出为目标跟踪任务提出了一个全新的研究方向,促进了该领域的发展。论文主页地址:http://www.robots.ox.ac.uk/~joao/circulant/index.html)。
    https://github.com/foolwood/benchmark_results,这个github中包含了目标跟踪方向大部分比较知名的和发表在顶会上的论文和项目地址,代码基本都是开源的。

    想了解更多关于我们金翅创客实验室的内容,请关注微信公众号:金翅创客。在这里插入图片描述

    在这里插入图片描述原创声明:本文内容均为本人原创作品。请任何和个人、组织,在经过本人授权后,方可转载。

    展开全文
  • 多目标跟踪处理的对象是视频,从视频的第一帧到最后一帧,里边多个目标在不断运动。多目标跟 踪的目的就是将每个目标和其他目标进行区分开来,具体方法是给每个目标分配一个 ID,并记录他们的轨迹。 刚开始接触,...
  • 机器视觉——目标跟踪

    千次阅读 2022-03-02 21:39:28
    随着研究人员不断地深入研究,视觉目标跟踪在近十几年里了突破性的进展,使得视觉跟踪算法不仅仅局限于传统的机器学习方法,更是结合了近些年人工智能热潮—深度学习(神经网络)和相关滤波器等方法,并取得了鲁棒...
  • 目标跟踪

    千次阅读 2019-11-27 19:54:52
    本篇是基于单目标跟踪的论述 目标跟踪概述 1.1 定义: 1,单目标,即在给定的视频中只跟踪一个目标 2,在第一帧中会通过矩形的bounding box将目标给出。给定,使用tracker找... 1.2 目标跟踪面临的挑战:...
  • 7、安装 ros连接opencv 桥梁包 cv_bridge Packag 转换 ros图片格式 与 opencv图片格式 http://wiki.ros.org/cv_bridge rbx1_vision/nodes/cv_bridge.demo.py 展示了怎样使用 cv_bridge cv_bridge.demo.py #...
  • 目标跟踪领域研究(二)跟踪算法

    千次阅读 2020-07-27 18:49:07
    暂时没找到原图链接,为了先发出来,无耻的先标原创,有人知道请告诉我改一下。
  • 多目标跟踪算法SORT

    千次阅读 2021-04-16 10:09:16
    目标跟踪简介三. 卡尔曼滤波器3.1 什么是卡尔曼滤波器3.2 具体计算过程3.3 换个角度看四. 匈牙利算法五. SORT 一. 目标检测简介 给定一张图像,找出我们需要的类别位置,并给定一个检测框,检测框一般包含位置坐标...
  • 又如,在雷达中,人们感兴趣的是跟踪目标,但目标的位置、速度、加速度的测量值往往在任何时候都噪声。卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。这个估计可以是对当前...
  • 视觉目标跟踪

    千次阅读 2020-08-30 19:19:57
    视觉目标跟踪(Visual Object Tracking)是计算机视觉领域的一个重要问题。尽管近年来受到了广泛研究,目标跟踪问题由于本身的高难度、高质量数据的稀少,研究热度比目标检测、语义分割等基本视觉任务略低一些。深度...
  • 目标跟踪综述

    千次阅读 2021-01-26 07:00:00
    点击上方“3D视觉工坊”,选择“星标”干货第一时间送达01目标跟踪简介目标跟踪是计算机视觉领域的一个重要问题,目前广泛应用在体育赛事转播、安防监控和无人机、无人车、机器人等领域。下面是一...
  • ARFoundation之路-图像跟踪

    万次阅读 热门讨论 2019-07-20 09:45:20
      图像跟踪技术,是指通过图像处理技术对摄像头中拍摄到的2D图像进行定位,并对其姿态进行跟踪的技术。图像跟踪技术的基础是图像识别,图像识别是指识别和检测出数字图像或视频中对象或特征的技术,图像识别技术是...
  • 机器视觉 OpenCV—python目标跟踪(光流)

    万次阅读 多人点赞 2018-12-05 16:59:11
    一、运动检测 1.1 检测思路 ...这次实现一般的运动物体检测,关于实现视频目标跟踪的方法很多,当跟踪所有移动目标时,帧之间的差异会变的有用;当跟踪视频中移动的手时,基于皮肤颜色的均值...
  • 摘要:本文详细介绍如何利用深度学习中的YOLO及SORT算法实现车辆、行人等多目标的实时检测和跟踪,并利用PyQt5设计了清新简约的系统UI界面,在界面中既可选择自己的视频、图片文件进行检测跟踪,也可以通过电脑自带...
  • 目标跟踪算法分类

    千次阅读 2019-01-17 15:33:01
    上一篇文章写了:跟踪颜色块,自我感觉优化的空间很大,转载他人文章学习一下。 运动目标跟踪主流算法大致分类 主要基于两种思路: a)不依赖于先验知识,直接从图像序列中检测到运动目标,并进行目标识别,最终...
  • 目标跟踪(6)OpenCV 人员计数器

    千次阅读 2022-03-08 14:28:46
    在本教程中,您将学习如何使用 OpenCV 和 Python 构建人员计数器。使用 OpenCV,我们将实时计算进或出百货商店的人数。 在今天博客文章的第一部分,我们将讨论如何利用两者来创建更准确的人员计数器。...与目标跟踪
  • 一、DeepSort介绍 论文地址: ...参考文章: DeepSort讲解 ...虽然SORT是一个非常简单、有效、实用的多目标跟踪算法,但仅仅通过IOU来匹配虽然速度很快,相应的ID Switch次数也多; DeepSORT在原有基础上,通
  • 文章标题:《Learning the Model Update ...单目标跟踪方法主要两种范式:一种是用 Siamese 深度神经网络,一种是 tracking-by-detection。 Siamese 的方法从当前帧提取被跟踪物体的特征,作为模板(template),在
  • ◆◆◆蒙版跟踪蒙版跟踪,就是通过记录画面上蒙版区域的变化,生成蒙版路径 Mask Path的关键帧。常用于完成合成中的遮挡关系,或者局部添加动态效果,以及实现人物的换脸特效。蒙版跟踪要使用蒙版跟踪器,需要先创建...
  • 需要的可以使用cv2.VideoCapture(0)捕获电脑摄像头。本节就用马老师的视频来跟踪人体姿态。 1. 导入工具包 # 安装opencv pip install opencv-contrib-python # 安装mediapipe pip install mediapipe # pip ...
  • 目标跟踪算法研究综述

    万次阅读 多人点赞 2018-05-31 12:45:38
    入坑也算有些日子了,一直在看论文并没有对目标跟踪的研究进展和算法一个系统性的了解。是时候好好整理一下了,希望能对后面的研究有所帮助吧!内容中来自经典论文和博客部分,如侵权请提醒删除。(小白一颗,...
  • 摘要 基于暹罗网络(siamese network)的跟踪器的做法是:对匹配模板和搜索区域各自做卷积,把得到的特征做互相关(cross-correlation)。然而这类跟踪器与最先进的算法相比仍然存在差距,不能发挥深层网络提取的...
  • 多目标跟踪算法

    千次阅读 多人点赞 2020-02-09 15:37:45
    文章目录多目标跟踪算法一、多目标跟踪算法分类二、基于目标检测的多目标跟踪2.1 基于轨迹预测的目标跟踪算法2.2 基于目标特征建模 多目标跟踪算法 一、多目标跟踪算法分类 DBT(Detection Based Tracking)(如上图...
  • 首先来一个跟踪算法的大杂烩:VOT2016 Trackers repository以下是转载内容----------------------------------------------------作者:YaqiLYU链接:https://www.zhihu.com/question/26493945/answer/156025576来源...
  • 分享 | 无监督视觉目标跟踪

    千次阅读 2021-11-22 18:52:08
    谈谈最近在CVPR2021和ICCV2021上看到的几篇无监督单目标跟踪算法。
  • 视觉单目标跟踪任务概述

    千次阅读 2020-11-14 20:59:54
    目标跟踪的主要难点 单目标跟踪的基本流程 单目标跟踪的分类 1.经典目标跟踪方法(2010年以前) 2.相关滤波(Correlation Filter,CF) 3.基于深度学习的跟踪方法(Deep Learning,DL) (1) 基于预训练深度特征的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 65,901
精华内容 26,360
关键字:

后面有人跟踪的图片