基于YOLOv5与DeepSORT的运动小目标检测与跟踪方法研究

技术说明:本文围绕运动小目标检测与跟踪进行计算机视觉工程复盘,重点整理YOLOv5检测网络、CSP与FPN+PAN特征融合、模型训练、DeepSORT特征匹配与轨迹关联以及检测跟踪效果验证等技术要点。内容用于目标检测、目标跟踪和深度学习方法交流,不涉及监控服务推广或商业宣传。

第1章 绪论

1.1 研究背景及意义

近年来,目标追踪这一个问题,它一直都是计算机视觉领域之中的一个特别重要研究方向之一,许多科学家和学者都对它进行了。

目标追踪技术在现实生活中有着非常之广泛的应用,比如视频监控、交通管制、自动驾驶、等领域。在视频监控方面,目标追踪可以帮助监控人员实时掌握目标的动态变化,及时发现异常情况。在医学影像分析方面,目标追踪可以帮助医生更准确地诊断和治疗疾病。目前,基于深度学习的多目标检测,和基于深度学习的跟踪算法,俩者都是视频监控领域只中特别重要的一项技术,他们可以帮助监控人员及时发现视频监控画面中的多个运动目标,同时还可以准确追踪目标的运动轨迹,为安全管理、交通监管等方面提供有力的技术支持。随着计算机视觉、机器学习、人工智能等技术的迅速发展[2],自动驾驶技术[3]、近年来快速发展的人工智能体系内特别是基于机器学习和深度学习的视觉情景理解算法拥有不错的学习推演能力和极为广泛的应用前景[1]。

同时在实际应用中,目标的检测技术与跟踪的技术俩者都已经被广泛应用于视频监控、自动驾驶、无人机航拍、人脸识别、智能家居等领域。目标检测技术还可以实现保持车辆距离,安全换车道和碰撞预警的目的,这不仅有利于避免重大交通事故,而且对保护人们的生命财产安全也具有十分重要的意义[4]。随着科学技术的高速发展计算机硬件性能得到了不断提升。所以,对于目标的检测技术与跟踪的技术的研究,在这样的一个社会背景之下,具有了特别的意义和特别的应用价值,可以为人们的生活和工作都带来很多意向不到的便利。此次使用YOLOv5这一个YOLO系列的算法的同时,和DeepSORT这一个基于SORT算法的算法结合起来,对运动小目标实现检测的同时实现运动小目标的跟踪。

1.2 国内外研究现状

深度学习的目标追踪在国外研究现状中呈现出蓬勃发展的态势。近年来,随着科学与经济的进步与发展的同时伴随着数据量的大幅增加和计算算力的大幅度的进步,深度学习模型,这一个模型它在目标追踪领域取得了非常重大的突破。同时国内外的研究者和科学家都致力于开发出更高效的算法和和算力更高的硬件,以改进深度学习模型在目标追踪中的性能。

在算法层面,研究者们努力探索新的深度学习架构和训练方法,以提高目标追踪的准确性和鲁棒性。比如:卷积神经网络和循环神经网络模型被应用于目标追踪任务中,通过学习大量数据的特征表示和模式,实现更加高的目标的检测和目标的跟踪的精确度。

同时,国内外的研究者和科学家在研究发展的同时还注重将深度学习与其他视觉任务相结合,比如目标的检测和语义的分割进行结合,以此来进一步提升目标的追踪的效果。此外,随着迁移学习和强化学习等技术的大力发展,深度学习在目标追踪中的应用前景更加广阔。

综上所述,基于深度学习的小目标追踪方法在国外科学家和学者的研究中正处于特别快速的发展的阶段,同时随着技术的不断地发展不断地更新换代,更新版本之后,相信它将在更多领域展现出其强大的潜力和优势,来帮助人们解决许多不同的难题。

在国内,深度学习目标追踪的研究不仅仅局限于对经典算法的改进,更在于对新技术、新方法的探索与创新。国内的研究者和科学家们,他们通过设计更加无比特别复杂的神经网络结构,如残差网络、密集连接网络等,同时他们引进了一种新的机制和先进技术,叫做注意力机制(Attention Mechanism)、生成对抗网络(GANs)等先进技术,特别可以显著提升目标的追踪的准确性和目标的追踪的鲁棒性。在计算机视觉技术飞速发展的背景下,从事深度学习研究[5]的学者逐渐增多国内学者还注重将深度学习的目标追踪技术与其他领域的知识相结合,以实现可以更加精确快速高效,使用更少的资源实现的智能的追踪系统。例如,在自动驾驶领域,目标追踪技术需要与车辆定位、路径规划、环境感知等任务紧密配合,以实现自动驾驶。

随着科学技术的发展还有深度学习目标的追踪技术的不断完善和不断地普及,其产业化进程也在加速推进。国内众多科技企业纷纷布局目标追踪领域,将研究成果转化为实际产品。

这些产品不仅提高了相关行业的智能化水平,还为社会治理、公共安全等方面提供了有力保障。同时,随着市场竞争的加剧,同时我们的国内的企业也在不断加大研发投入的资源和力度,为了推动技术的持续创新和应用的不断拓展。因此,研究者们将深度学习目标追踪与这些领域的技术进行深度融合,推动自动驾驶技术发展。此外,在医疗影像分析、机器人导航等领域,为这些领域的发展提供了有力支持。随着技术的不断创新和广泛应用,相信未来国内学者将在目标追踪领域取得更多突破和成就,为相关行业的发展和社会的进步做出更大贡献。

1.3 研究内容

基于深度学的小目标追踪是一种利用卷积网络实现目标检测和追踪的技术,在计算机视觉领域,目标追踪一直是国内外学者研究的热点之一。基于深度学习的运动小目标跟踪可以广泛运用于交通安全、城市管理、体育赛事、公共安全领域。通过这种算法可以更准确的识别目标,就是为了可以大幅度目标的检测同时大幅度提高追踪的精确度和准确度。本文主要以追踪足球目标检测和追踪为背景,针对当前运动小目标检测算法和追踪算法存在的问题,比如运动的小目标在所要定位的图像中所占的像素较少,导致模型难以捕捉足够的特征信息、目标较小时,这些代码所设定的边界框可能无法非常准确地覆盖我们所需要检测的目标,从而导致误检或漏检、依赖于训练数据的质量和数量和精确度不够等问题,现在首先,通过YOLOv5的目标检测算法,并与基于DeepSORT的目标跟踪算法进行对运动中的足球进行追踪。

本文全篇共七个大章节,具体章节内容如下:

第一章:绪论。阐述了当下社会发展现状,以及目标跟踪对社会发展的意义,并描述了目标跟踪国内外的发展现状。

第二章:目标检测与跟踪算法基础。本章对深度学习进行了一定的概述,并对目标检测与跟踪算法理论进行分析。

第三章:一阶段目标检测算法YOLO算法。本章节介绍了目标检测算法YOLO算法的网络结构以及跟踪流程进行了分析介绍。

第四章:deepsort目标追踪算法。本章节对deepsort目标追踪算法过程以及理论进行了介绍,并明确了其使用方法。

第五章:Labellmg。本章对Labellmg使用进行了介绍,明确了训练所需数据集的标注方法。

第六章:yolov5模型训练。该章节对yolov5的环境搭建以及模型训练进行了明确的讲解。

第七章:总结与展望。对跟踪算法做出总结和对该算法未来的展望。

第2章 目标检测与跟踪算法基础

2.1 深度学习的起源

深度学习技术一直以来都是国内外科学家以及学者在机器学习不断研究的研究方向,在二十世纪五十年代末期,罗森布拉特发现感知机器学习。1958年,这个概念就被科学家们提出来,这个东西是被科学家称为“感知器”的东西,这个东西是由俩层神经元组装成的神经网络。

在2006年,杰弗里和鲁斯兰提出了深度学习这一概念。他们通过一篇文章,发表出了“梯度消失”的解决方案,这个方案是,通过无监督的学习来一层一层的训练算法,再通过有监督的反向的传播算法来进行优化。

当前, 深度学习模型可以分为两大领域,一类是基于 CNN 结构的深度学习模型,另一类是基于 Transformer 的深度学习模型。

2.2 目标跟踪关键技术分析

在现在看来卷积神经网络已经是计算机视觉领域研究的深度学习之中非常重要的一种模型之一。他们通过生物视觉的灵感将其发明出来,他们的目的是通过这个算法模拟人类视觉处理的经过。

基于深度学习的小目标检测算法,这个目标检测算法它使用了卷积神经网络,通过这种学习方式,它可以自主地发现检测和分类目标要的特征。

可以运用卷积神经网络把输入信息转变成更抽象表征,它所展现出来的各方面性能和表现都非常良好,可满足工业界的大部分需求。

每个特征图中的像素值代表了输入图像中某个局部区域的特征响应。卷积层的设计灵感来源于局部感受野的概念,且通过权值共享机制大幅减少了模型参数数量,提高了计算效率。

在一个复杂的图像处理过程中,我们使用了一种叫做“卷积核”的小工具。这个卷积核就像是一个小小的窗口,它有很多个格子,每个格子都有一个自己的“重要程度”或者叫“权重”,还有一个额外的“调整量”叫做偏差。这就像是我们学习中的每个知识点都有一个重要性评分,还有一个额外的加分或减分项。

在图像处理里,我们把图像分成很多小块来看,每一小块就像是一个小的知识单元。卷积核就像是我们的眼睛,它每次只看图像上的一个特定大小的小块,这个小块的大小就是“感受野”。就像我们看黑板时,虽然眼睛能看到整个黑板,但真正专注看清楚的只是一小部分内容。

当卷积核在图像上移动时,它会用自己每个格子的权重去“评估”对应图像小块上的每个像素点,然后把这些评估结果加起来,再加上那个偏差调整量,得到一个新的数值。这个数值就像是我们对这个图像小块的一个“总结”或者“评分”。

这个过程就像是我们在做数学题,每个步骤都有它的权重(重要性),最后我们把这些步骤的结果加起来,再调整一下,就得到了最终答案。在图像处理中,这个最终答案可以帮助我们理解图像中的某些特征,比如边缘、纹理等。

2.3 目标检测概述

目标检测就是把一个图像当中所需要的目标进行定位,同时还要确定它们的类别。但是由于物体都有各种各样的形态和外表,还有很多因素的干扰,比如阳光的照明,其他物体在前面进行的遮挡或者帧率过高等问题,目标检测就成为了一个棘手的问题。

RCNN系列与YOLO系列他们是目标检测的俩大系列,基于区域检测的代表性算法是RCNN,基于区域提取的代表性算法是YOLO。尽管R-CNN在检测精度上取得了显著提升,但其计算复杂度较高,检测速度较慢。YOLO是首个正式的单阶段目标检测器,它将待测图像缩放成统一大小并分割成多个网格,直接在网格上预测目标类别和边界框。YOLO以其极快的检测速度和较好的检测精度赢得了广泛关注。

自YOLO和SSD之后,基于深度学习的目标的检测的算法不断更新换代,迭代发展创新更新版本。例如,YOLO系列算法不断推出新版本(如YOLOv2、YOLOv3、YOLOv4等),通过改进网络结构、优化训练策略等方式进一步提高检测精度和速度。同时,其他新型检测算法也不断涌现,如基于Transformer架构的DETR(Detection Transformer)等,为目标检测领域注入了新的活力。基于深度学习的目标检测算法在近年来取得了长足的发展,从初期的探索与突破到里程碑式的算法诞生,再到单阶段检测算法的兴起和后续发展与创新,这一过程见证了计算机视觉领域的不断进步和深度学习技术的广泛应用

2.4 常见的目标追踪算法

SORT算法是不是难度特别大的一种算法,同时SORT这个算法所具有非常强大的实用性同时也是一个强大的多目标跟踪算法。该算法主要利用卡尔曼滤波来预测目标物体在未来帧中的位置,并通过交并比作为度量指标来建立目标间的关联,实现多目标的追踪。SORT算法的核心在于它的高效性和实时性。通过结合卡尔曼滤波和IOU,实现了对多个目标的稳定追踪。这个算法不需要复杂的图像特征提取和匹配过程,因此计算量相对较小,非常适合于实时性要求高的应用场景。在SORT算法中,卡尔曼滤波被用于预测目标物体在下一帧中的位置。卡尔曼滤波是一种基于递归算法的数据处理算法,它利用前一帧的估计值和当前帧的测量值来更新目标的位置和速度信息。根据目标在上一帧的状态以及系统的动态模型,预测目标在当前帧的状态。

利用当前帧的测量值(如目标在图像中的位置)来更新预测的状态,得到更准确的估计值。在获得目标在当前帧的预测位置后,SORT算法使用IOU作为度量指标来建立目标间的关联。IOU是指两个目标区域的交集面积与并集面积之比。通过计算预测位置与检测位置之间的IOU值,可以判断它们是否属于同一个目标。具体来说,如果两个位置的IOU值大于某个阈值(如0.5),则认为它们属于同一个目标,并进行关联。优点是实时性强:由于算法计算量小,能够满足实时性要求高的应用场景。

简单易实现:算法不需要复杂的图像特征提取和匹配过程,实现起来相对简单。

缺点是依赖检测精度:算法的性能受到目标检测算法精度的影响,如果检测算法出现漏检或误检,将会影响追踪效果。

鲁棒性不足:在目标运动不稳定或出现遮挡等复杂情况下,算法的鲁棒性可能会下降。

第3章 一阶段目标检测算法YOLO算法

3.1 YOLO算法

YOLO算法,它其实是一种实时地目标的检测的系统,它在目标检测领域的速度和效率使其成为热门选择。

科学家在2015提出了单个的神经网络的目标检测算,科学家把这个算法称之为YOLO(You Only Look Once:Unified, Real-Time Object Detection)在2017年CVPR上,Joseph Redmon和Ali Farhad发表了YOLO 2,YOLO 2大大改善了检测的精度和速度。

图1

图3-1 卷积层

YOLO做end-to-end目标检测的方法如下,就用一个全晓CNN模型搞定。看看下面图示,管中窥豹。它是一个蓬勃发展的单一框架。

图2

图3-2 目标检测

3.2 YOLOx

在之前的时代中,R-CNN系列的算法,它们在目标的检测的领域非常都强大。R-CNN 系列具有很高的检测精度,但由于其网络结构是两阶段特性,其检测速度无法与实时读数相匹配,因此受到了批评。为了解决这个问题,有必要构建一个更快的目标检测器。

有一个算法,它检测速度快,每秒能处理45张照片,运行速度很快,由于它的速度和使用的特殊方法,作者将其命名为:YOLO,而他在CVPR2016上发表的结果,引起了不寻常的反响。

图3

图3-3 目标区域

在二零一七年啊,两位超级厉害的大佬,Joseph Redmon和Ali Farhadi,他们觉得YOLOv1这个算法已经挺不错了,但还是有点小瑕疵,特别是在找东西的速度(召回率)和准确度(定位精度)上。于是,他们动手改进了一番,推出了YOLOv2这个版本。

这个YOLOv2,简直就是目标检测界的火箭,快得飞起,比很多其他同类算法都要迅速得多。而且,它超级灵活,不管你给它什么大小的照片,它都能轻松应对,同时在检测东西的准确度和速度之间找到了一个完美的平衡点。简直就是既快又准,超级实用的。其整体结构如下:

图4

图3-4 预测过程

图5

图3-5 改进过程

当一个格子里面有很多不同种类的东西时,YOLOv1有时候会分不清,不能把它们都检测出来。但是,YOLOv2想了个好办法来解决这个问题。

它把YOLOv1里面的两个重要部分,一个叫FC层,另一个叫最后一个Pooling层,都给拿走了。这样一来,YOLOv2最后画出来的图画(就是卷积层的输出)就变得更清晰、更详细了。所以,现在就算格子里面有很多不同的东西,YOLOv2也能看得更清楚,把它们都检测出来了。

2018年,Redmon在YOLOv2的基础上进行了改良。YOLOv3比起YOLOv2,在里面的主要部分做了更大的改变。它用了一个叫做“残差网络”的好点子,把YOLOv2里用的darknet-19升级成了更厉害的darknet-53。这就像是我们换了一个更强大的相机镜头,可以看得更远、更清楚。

图6

图3-6 整体结构

这些卷积层的设计旨在提取图像中的特征信息。在Darknet-53中,每个卷积层之后都会紧接着一个批量归一化层和一个Leaky ReLU激活函数。

Leaky ReLU它在负值区域引入了一个小的斜率,从而避免了ReLU在输入为负时导致的神经元“死亡”问题。这样的设计使得网络能够学习到更多的特征,尤其是在处理一些复杂问题时,能够更好地保持特征的多样性。

由于Darknet-53网络中共包含了53个这样的DBL单元,因此得名Darknet-53。这样的设计不仅提高了网络的性能,还使得网络结构更加紧凑和高效。下图所示:

图7

图3-7 卷积单元

DBL(Darknet Basic Layer)是YOLOv3中一个基础且核心的卷积单元,它由三个关键部分组成:首先是一个卷积层,负责提取图像中的特征信息;紧接着是一个批量归一化层,它的作用是规范化卷积层的输出,加快训练速度并提高模型稳定性;最后是一个Leaky ReLU激活函数,它为负值输入提供了一个非零的梯度,增强了网络的非线性能力。

为了更有效地检测图像中不同大小的目标,YOLOv3采用了一种多尺度预测的策略。具体而言,它预先设定了三种不同尺寸的Anchors(锚框),每种Anchors都代表了可能的目标框的宽高比和尺寸。更为巧妙的是,这三种Anchors各自又进一步细分为三种不同的尺度,以覆盖更广范围内的目标大小。因此,总共形成了9种不同的Anchors,这些Anchors共同构成了一个丰富的候选框集合,使得YOLOv3能够更加灵活地应对各种尺寸的目标检测任务。

在训练过程中,YOLOv3会基于COCO这类大型数据集进行优化,其中就包括了对这9种Anchors尺寸的选择和调整。通过学习COCO数据集中目标的统计信息,YOLOv3能够自动调整这些Anchors的尺寸,使它们更加贴近实际目标的大小分布,这样做了之后可以显著的提高了我们所要的目标的检测的准确性和和目标检测的效率。如下图红色框所示:

图8

图3-8 基本单元

如下表所示,对两阶段网络进行了测试。我们发现,YOLOv3这一个算法可以达到与当前我们比较可以的比较先进的检测器的同样的水平。2020年YOLO系列的作者,他们将研究命名为YOLOv4。

3.3 YOLOv5

YOLOv5是一种对象检测架构。Yolov5的官方他们发布了几个版本的目标的检测网络。这四个模型的结构相同,主要区别在于乘法模型的深度和宽度参数,如下图所示。

图9

图3-9 目标检测网络

YOLOv5是YOLO系列中的一个新版本,就像是YOLOv3和YOLOv4的升级版一样。它是一种非常高效的目标检测算法,能在一次检测中就找出图像中的所有目标,而且它的速度和准确度都比之前的版本有了很大提升。那么,YOLOv5是怎么做到这些的呢。让我们用高中的知识来了解一下它的主要改进点。

首先,在输入端,YOLOv5为了让模型在训练时能更好地学习,做了几个巧妙的改进。它使用了“Mosaic数据增强”技术,就像是把多张图片拼在一起训练,这样可以让模型看到更多样化的场景,从而提高训练速度和精度。同时,它还提出了自适应锚框计算和自适应图片缩放的方法,让模型能更灵活地适应不同大小和形状的目标。

接下来是基准网络,这部分就像是模型的“大脑”,负责提取图像中的关键特征。YOLOv5融合了一些其他检测算法的好点子,这些都能帮助模型更好地理解和分析图像。

然后是Neck网络,它位于基准网络和最终的输出层之间,就像是一个“桥梁”,连接着两者的信息。YOLOv5在这里加入了FPN+PAN结构,这个结构能进一步提升特征的多样性和鲁棒性,让模型在检测目标时更加准确和稳定。

Head输出层,它用GIOU_Loss代替了之前的损失函数,这样可以更准确地评估预测框和目标框之间的差异,从而提高检测精度。同时,它还使用了DIOU_nms来筛选预测框,让最终的检测结果更加可靠。

整个YOLOv5网络的输入图像大小是608x608像素,模型会先对输入图像进行预处理,比如缩放和归一化,然后才能送入网络中进行检测。通过这些巧妙的改进,YOLOv5在目标检测领域展现出了非常出色的性能。YOLOv5基础组件

CBL-CBL模块由Conv+BN+Leaky_relu构成。

es unit它由几个小部分组成,包括一个叫做CBL的模块(你可以想象成是处理数据的一个小工具),还有一些叫做Res unint的模块(像是小积木,可以帮助数据传递信息但不改变太多),还有一些普通的卷积层(用来简化或调整数据的形状),最后还有一个Concate操作(就像是把几个小纸条粘在一起)。

另一个小部分CSP2_X也是借用了CSPNet的思想。它更简单一些,主要由卷积层和几个Res unint模块组成,最后也是用Concate操作把它们粘在一起。这里的X代表Res unint模块的数量,就像是你可以根据需要放多少个小积木一样。

Focus这个结构很特别,它首先会把输入数据的多个“片段”(你可以想象成是把一张照片切成几块)拼在一起(就像是拼图一样),然后把这个大拼图送到CBL模块里进一步处理。这个过程就像是把多张相关的照片拼在一起,然后一起分析它们。

SPP的结构很聪明,它用了不同大小的“筛子”(1×1、5×5、9×9和13×13的最大池化方式)来看数据,就像是我们用不同大小的放大镜来看同一样东西,这样可以看到更多的细节。然后把这些看到的不同细节结合起来,得到更全面的信息,这个过程叫做多尺度特征融合。

图10

图3-10 检测过程

在目标检测算法里,当我们处理不同的数据集时,会遇到一个问题:每个数据集里的目标大小都不一样,所以我们需要为它们设定一些特定长宽比的“锚点框来帮助模型更好地预测目标位置。想象一下,在YOLOv3和YOLOv4里,如果你想要训练一个新的数据集,你得先运行一个特别的程序去找出最适合这个数据集的锚点框。但在YOLOv5里,这个麻烦的过程被简化了。它聪明地把这个功能直接放在了代码里,每次你开始训练一个新数据集时,它就会自动地帮你找到最合适的锚点框。如果你不想用这个功能,也很简单,只要在训练的时候加上一个特别的指令--noautoanchor就可以了。

再来说说图片缩放的问题。我们都知道,为了让模型能更好地处理图片,我们通常会把它们缩小到一个固定的尺寸。但是,如果直接缩放,很多图片的边缘就会多出一些黑色的部分,这些黑色其实对模型来说是没用的,还会让模型处理起来更慢。所以,YOLOv5想出了一个好办法,它会在缩放图片的时候,尽量只加一点点黑色的边,让图片看起来更紧凑,这样模型就能更快地处理它们了。

最后,我们来聊聊Focus结构。这是一个很神奇的结构,它就像是给图片做了一个特别的“裁剪”和“拼接”。比如,你有一张608x608像素的图片,Focus结构会先把它变成几个小块,然后再重新拼在一起,变成一个新的样子。接着,这个新的图片会通过一个“卷积层”,就像是用一个特殊的滤镜过滤了一下,最后变成了304x304像素,但是包含了更多有用的信息。这样,模型就能更容易地从图片里找到目标了。

图11

图3-12 映射过程

图12

图3-11 切片操作

CSP结构,在YOLO的网络结构图中,它借鉴了CSPNet,同时在主干网络中写出了CSP结构。然而在YOLOv5中,YOLOv5有俩钟CSp的结构图,现在YOLOv5s为例:

图13

图3-12 网络结构

在目标检测算法中,Neck网络是非常重要的一部分,它负责将模型从图片中提取的特征进行进一步的处理和融合。YOLOv5的Neck网络特别厉害,因为它在YOLOv4的基础上做了很多改进,用上了FPN(特征金字塔网络)加上PAN(路径聚合网络)的结构,但还不止这些,它还加入了一些新的设计来让模型更强大。

首先,我们来看看YOLOv5是怎么改良这个结构的。在YOLOv4的Neck里,它主要是用了一些普通的卷积操作来处理特征。但是YOLOv5呢,它借鉴了CSPnet的设计思路,创造了一个叫做CSP2的结构。这个CSP2结构就像是给特征加了一个“超级充电器”,能让特征变得更强,更容易被模型理解和利用。

现在,我们来看看YOLOv4和YOLOv5在Neck网络上的具体不同。如果我们把两张图放在一起比较,就可以发现几个明显的区别:

第一个不同点(灰色区域):在YOLOv5里,它用CSP2_1结构替换了YOLOv4中的一部分CBL模块(CBL模块就是卷积层+批归一化层+激活层的组合)。而且,YOLOv5还去掉了YOLOv4中下方的一些CBL模块,这样做可以让网络更加精简,同时保留重要的特征信息。

第二个不同点(绿色区域):YOLOv5不仅仅把Concat操作(就是把不同的特征图合并在一起的操作)之后的CBL模块换成了CSP2_1模块,它还把另一个CBL模块的位置也换了。这样的改动可以让不同层级的特征更好地融合在一起,提高模型的检测能力。

第三个不同点(蓝色区域):在YOLOv5中,它把原本YOLOv4中的某些CBL模块也替换成了CSP2_1模块。这就像是把普通的灯泡换成了更亮的LED灯,让整个Neck网络都变得更加“明亮”,能够捕捉到更多有用的信息。

图14

图3-13 采样过程

想象一下,我们有一个超级大的图片,大小是608x608像素,就像一张超大的海报。这张海报被送进了一个叫做“CSP模块”的机器里,经过处理,它变成了一个小一点的图片,大小变成了76x76像素,就像是把大海报缩小了一样。然后,这个小图片又被缩小了两次,最后变成了只有19x19像素的小方块,就像是把小图片再次缩小成了邮票大小。

接下来,这个小方块被送到了一个叫做“FPN”的神奇结构里。在这个结构里,有三个不同大小的小图片(19x19、38x38、76x76)被放在一起,它们被调整成了相同的大小,然后两两叠加在一起,就像是把几张透明的纸叠在一起看一样。特别的是,FPN还能把最小的19x19图片“变大”到76x76,这样它就能更好地看到图片里的各种大小的东西了,也让这个处理过程变得更聪明、更稳定。

然后,这些图片又被送到了一个叫做“PAN结构”的地方。在这个地方,两个相同大小的图片会被“加在一起”,不过不是普通的加法,而是像拼图一样,把对应位置上的信息都合起来。不过,YOLOv5和YOLOv4用的是另一种方法,它们像是把两张纸粘在一起一样,把信息合并了。经过两次这样的操作,那个76x76的图片又被变回了19x19的大小,但这次它变得更厉害了,能更准确地找到图片里的目标位置。

最后,我们来说说怎么决定哪些位置是我们要找的目标,哪些是不要的。这就像是在玩一个找宝藏的游戏,我们要根据一些规则来判断哪些地方可能有宝藏(正样本),哪些地方肯定没有(负样本),还有些地方可能是模糊的,我们暂时不确定(忽略样本)。YOLOv5用了一个很聪明的方法,它看每个位置上的“锚点”(anchor)和真实目标框(gt_bbox)的形状像不像,还考虑了周围的位置,这样就能更准确地找到宝藏了。

图15

图3-14 匹配过程

Yolov5延用了Yolov3和Yolov4的多尺度融合检测方法。

IoU即为交并比,用于度量目标检测中预测框与真实框的重叠程度。假定所有的Box来自相同的物体,通过考虑非极大结果充分考虑了目标的信息,提出了如下的非极大权重(Non-Maximum Weighting):

图16

图3-15 权重

YOLOv5客观效果展示与分析

图17

图3-16 分析结果

图18

图3-17 分析结果

YOLOv5算法是一种很特别的同时也是一种很厉害的目标检测的算法,它就像是一个快速又准确的“找东西”机器。这个算法在YOLOv4的基础上变得更加强大了,因为它加入了很多新的想法,让它的速度和准确度都提升了很多。

首先,在输入图片的时候,YOLOv5用了一个叫做Mosaic的特殊方法来增强图片,这样可以让模型看到更多样化的东西,学习得更好。然后,它还会自动地调整“锚点框”的大小和形状,这些锚点框就像是帮助模型找到目标的“小钩子”,让它们更容易被找到。

接下来,在处理图片的时候,YOLOv5用了一个叫做Focus的特殊结构,它可以把图片分成小块然后重新组合,让重要的信息更加突出。同时,它还用了CSP结构来加强图片的特征,让模型更容易理解图片里的内容。

在把图片的特征传递给模型的不同部分时,YOLOv5用了SPP和FPN+PAN的结构。这些结构就像是桥梁,把图片的特征从一部分传递到另一部分,让模型能够更全面地理解图片。

最后,在输出结果的时候,YOLOv5用了一个叫做GIOU_Loss的损失函数来评估模型的预测是否准确,还用了DIOU_nms的方法来筛选最好的预测结果。这样,我们就可以得到既准确又可靠的检测结果了

而且,YOLOv5的这些好方法不仅仅可以用在它自己身上,还可以被其他的目标检测算法借鉴和使用,让它们也变得更加强大和高效。

第4章 deepsort目标追踪算法

4.1 deepsort算法基础

DeepSORT是一种很厉害的视觉目标跟踪方法,它巧妙地把深度学习和以前就有的SORT跟踪算法结合在一起了。想象一下,我们有一部摄像机在拍视频,DeepSORT就像是一个聪明的助手,它能帮助我们追踪视频里的每一个重要东西,比如人、车或者其他我们感兴趣的东西。

首先,DeepSORT会用一个特别的“目标检测器”来查看视频的每一帧,找出里面所有的目标。然后,它不仅仅是用简单的样子来记住这些目标,还会用很多不同的特征来详细描述它们,就像是给每个目标都做了详细的笔记。

接下来,DeepSORT会用到SORT算法来跟踪这些目标。但是,它还不满足于此,又加入了一个叫做“Re-ID”的神奇模型。这个模型非常聪明,它能通过比较目标在不同视频帧里的相似度,来确定每个目标的唯一身份,就像是给每个目标都发了一个独一无二的身份证。

DeepSORT之所以这么强大,是因为它不仅能准确地追踪目标,还能在目标被挡住或者形状变化的时候,依然能认出它们。这就像是我们即使看不到朋友的脸,也能通过他们的走路姿势或者衣服认出他们一样。

现在,DeepSORT已经被广泛用在了很多地方,比如跟踪路上的行人、车辆,还有在视频监控里帮助我们发现重要信息。目标追踪步骤通常是:截取原视频的视频帧,在通过目标检测器把刚才截取的视频帧里面所需要的目标进行检测,最后把已经可以检测出来的目标的框图里面的所需要的特征给提取出来,这个特征中包含了很多,比如表观特征和运动特征。

传统sort算法的流程是:Deepsort算法由sort算法作为基础,通过不断的发展,从而发展出来Deepsort,然后sort算法之中的最主要的算法是俩钟我们耳熟能详的算法,卡尔曼滤波算法和匈牙利算法。卡尔曼滤波算法作用是:该算法的作用是用运动变量去预测下一时刻的运动变量。匈牙利算法作用:是解决分配问题分配卡尔曼预测的框和一群检测出来的框,使卡尔曼预测的框和自己最吻合的框进行结合。sort工作流程如下:

图19

图4-1 工作流程

4.2 deepsort算法流程

因为sort算法还是精确度不够高的追踪算法,当一个物体被另一个物体出现在前面锁造成了遮挡,在这种情况下,容易失去所属于自己的独一无二的ID。然deepsort算法在sort算法的基础之上,不断地发展,发展出了俩个不同的新的技术,俩个技术之中其中之一是级联匹配,另一个技术是新轨迹的确认。Tracks分为确认态,和不确认态, 工作流程如下图:

图20

图4-2 工作流程

4.3 目标追踪整体代码

图21

图4-3 相关代码

下面是目标追踪的重要代码,其中包含了deepsort的代码,ckpt.t7为权重:

图22

图4-4 代码库

第5章 yolov5模型训练

5.1 数据集的制作与LabelImg的使用

在训练模型之前,我们要收集或者说,制作我属于我们自己的训练集,制作好自己的训练集之后,就可以在pycharm进行训练,那么接下来我们进行我们自己训练集的 制作方法,制作属于我们自己的训练集,我们需要的工具是一个叫labelimg的工具。

labelimg这一个工具是国立台湾大学的一位,名字为Tzuta Lin主导研发的一个工具,这个工具已经在github上免费开源,是我们制作目标检测数据集的标注软件,它使用方法很简单并且轻量化。首先我们在已有环境下面,进行labelimg这一个工具的安装。在cmd输入以下命令pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

图23

图5-1 cmd下载Labelimg

图24

图5-2 打开labeling

图25

图5-3 更改标注格式

出现labelimg的界面之后我们把标注的格式更改成我们所需要的YOLO模式,点击Change Save Dir指定我们标注好的数据集所存放的目的文件夹,标注好的结果会保存在这个文件夹之中。

图26

图5-4 选择保存结果的文件夹

点击Open Dir打开我们所要使用进行标注的图片的文件夹然后点击Create RectBox进行标注

图27

图5-5 点击开始标签

football这是我们的标签,标注好之后的数据就是我们模型训练所需要的数据集

图28

图5-6 保存的标注结果

5.2 环境搭建

需要安装Anaconda

图29

图5-7 anaconda安装界面1

图30

图5-8 ancaonda安装界面2

使用conda创建环境

conda create -n text python=3.8

图31

图5-9 创建环境1

图32

图5-10 创建环境2

图33

图5-11 安装过程

图34

图5-12 安装结束

环境创建完成

5.3 yolov5+deepsort使用

我们把yolov5的源码下载下来,然后进行解压,我们可以看到里面有很多的文件夹和文件,我们把requirements.txt的文件打开,里面有我们安装环境所需要的数据包和依赖包。

图35

图5-13 yolov5文件

在文件夹中打开cmd,进入创建的环境,运行pip install -r requirements.txt,安装所需要库

图36

图5-14 打开cmd

图37

图5-15 yolov5代码库

在train把标注好的数据集路径放入

图38

图5-16 标注路径

图39

图5-17 数据集

图40

图5-18 训练参数

训练好的模型放在

图41

图5-19 训练好的模型

在detect中验证自己训练好的模型

图42

图5-20 deepsort代码库

图43

图5-21 deepsort训练参数

验证好的结果放在detect中

图44

图5-22 训练经过

再Deepsort源码下载讲yolov5放入目标检测工程

图45

图5-23 deepsort代码文件

更改参数路径,实现目标跟踪

图46

图5-24 deepsort代码库

改变路径,使用训练好的模型

图47

图5-25 改变路径

在终端中输入下方命令:

Pythontrack.py--sourcesniqlmtz.mp4--save-vid--yolo_weightsyolov5weqxcz/wjenz/yolov5s.pt,生成的结果保存在下方所示路径

图48

图5-26 视频结果路径

5.4 实验结果数据与分析

随着我们实验的进行,我们通过实验得到了以下数据,它们反映着各项指标。

图49

图5-27 Labels

图50

图5-28 labels_correlogram:

图51

图5-29 result.csv:

图52

图5-30 result.csv:

模型训练完之后,接下来就是对所训练的模型进行验证,我们要进行俩个方面的,对模型的验证。(1)对视频的运动小目标的跟踪情况(2)对图像小目标的跟踪的情况

对视频的运动小目标的跟踪情况,我们对一段八秒的视频进行实验,下图是实验结果:

图53

图5-31 视频实验结果1

图54

图5-32 视频实验结果2

结果:对视频的跟踪情况良好,并未出现误检等情况,对视频跟踪的精确度高。

分析:但是实验过程之中还是会先所跟踪足球出现被遮挡的情况,导致模型出现漏检的情况,这是因为模型的训练的次数还不够多,模型训练的精度还不够高所导致的。

接下来是对图片进行实验我们首先在2000张的图片之中随机抽取100张图片进行实验,实验的结果所示:

图55

图5-33 图片实验结果1

图56

图5-34 实验结果2

图57

图5-35 实验结果3

图58

图5-36 实验结果4

经过我们的实验,我们所训练的模型对图片的跟踪精确度高,目标检测的速度也很快,但是还是会出现误检与漏检的情况。

我们将阈值设置为0.65,当实验得分低于0.65时为误检,当实验得分高于或等于0.65时为成功检测下面是检测结果表格:

总数 漏检 误检 检测成功
100 2 6 92

检测成功率为92%

分析:出现误检与漏检的情况可能是因为数据集的数据不过多,训练的次数不够大,训练时所所设置的参数比如batch-size等参数设置不够合理等原因导致的。也可能因为所验证的图片分辨率过低,过于模糊导致出现漏检误检的情况。

第6章 总结与展望

目标检测和跟踪技术是计算机视觉领域的热门研究方向,在很多领域具有重要的应用价值。随着近几年深度学习技术的发展,在目标检测领域以卷积神经网络为代表的方法,在多个数据集上均取得了 领先的性能;而在目标跟踪领域,基于深度学习的目标追踪方法也取得了比传统 算法更好的性能,可以解决传统算法无法解决的目标交叉、遮挡、重叠等问题。

随着目标检测的发展,也陆续涌现出了许多新的目标检测模型和思想,例 如陆续出现的一阶段目标检测算法 YOLO v6、v7、v8 等,通过替换新的骨干网 络和脖颈模块,使得目标检测算法的检测效果也越来越好,但同时模型也越来越 复杂,针对当前目标检测领域公认的小目标检测较难以及目标遮挡导致的误检、 漏检等问题,也涌现出来了很多解决方法,例如基于切片辅助推理的 SAHI 算法, 通过对原图进行切片推理来优化小目标识别等。这些方法结合目标检测算法共同 推动了目标检测算法的进一步发展。总的来说,目标检测和跟踪技术在计算机视觉领域具有重要的地位,随着深 度学习技术和硬件的不断发展,这一领域的研究和应用也将越来越广泛和深入

参考文献

刘雪君.基于深度学习的人体行为识别算法研究[D].东北电力大学,2018(08).

郑胤;陈权崎;章毓晋;.深度学习及其在目标和行为识别中的新进展[J].中国图象图形学报,2014(02).

杜丽.面向自动驾驶的场景理解关键技术研究[D].北京邮电大学,2021(01).

尹宏鹏;陈波;柴毅;刘兆栋;.基于视觉的目标检测与跟踪综述[J].自动化学报,2016(10).

柳长源;王琪;毕晓君;.多目标小尺度车辆目标检测方法[J].控制与决策,2021(11).

王子铭.基于深度强化学习的多特征下目标追踪方法研究[D].辽宁师范大学,2022.DOI:10.27212/d.cnki.glnsu.2022.000812.

石驰宇.基于深度学习的多目标追踪算法研究[D].天津理工大学,2021.

林晓林.基于机器学习的小目标检测与追踪的算法研究[D].江南大学,2018.

张刚,郭琦.基于深度学习的目标追踪方法综述[J].长江信息通信,2023,36(10):17-21.

郭凡,卢铉宇,李嘉怡,等.基于深度神经网络的目标跟踪算法综述[J].航空兵器,2024,31(01):1-12.

伍瀚,聂佳浩,张照娓,等.基于深度学习的视觉多目标跟踪研究综述[J].计算机科学,2023,50(04):77-87.

苑玉彬,吴一全,赵朗月,等.基于深度学习的无人机航拍视频多目标检测与跟踪研究进展[J].航空学报,2023,44(18):6-36.

蒲良,张学军.基于深度学习的无人机视觉目标检测与跟踪[J].北京航空航天大学学报,2022,48(05):872-880.

Yu H B, Liu J G, Liu L Q, et al. Intelligent robotics and applications[M]. Berlin, Germany: Springer, 2019.

Lee B, Erdenee E, Jin S, et al. Multi-class multi-object tracking using changing point detection[C].European Conference on Computer Vision. Springer, Cham, 2016: 68-83.

致 谢

在此次设计中,首先要感谢我的指导老师,因为在我做毕业设计的过程当中,他负责任的指导和建议使我的毕业设计进展十分地顺利,指导老师每时每刻的督促使我不敢有丝毫的怠慢,他一直给予我悉心的教导和莫大的支持,在此,我向指导老师致以深深的谢意!

时间飞逝,它就像温暖的微风一半,从你我指尖划过,不留一丝痕迹。大学的回忆,留在了我清风微佛的林荫小路,落在了炎炎烈日的球场之上。我要感谢我的舍友和我的同学他们跟我走过了一段让人难以忘怀的时光,因为他们的存在,让这段如湖水一般平静的生活,泛起了涟漪。最后,我还要感谢一个叫面包的人,在我陷入困惑黑暗虚无的时候,面包像月亮一样出现在我的世界中,在黑暗之中为我指引前进的方向,给予我走下去的力量。在此由衷地感谢每一个陪伴我,欣赏我激励我的每一个人。

感谢几年来传授我知识的老师们,更要感谢我的家人对我学业上的支持和鼓励,对给过我帮助的所有同学和各位指导老师再次表示由衷的感谢!

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐