基于YOLOv5与DeepSORT的运动小目标检测与跟踪方法研究 基于YOLOv5与DeepSORT的运动小目标检测与跟踪方法研究技术说明本文围绕运动小目标检测与跟踪进行计算机视觉工程复盘重点整理YOLOv5检测网络、CSP与FPNPAN特征融合、模型训练、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架构的DETRDetection Transformer等为目标检测领域注入了新的活力。基于深度学习的目标检测算法在近年来取得了长足的发展从初期的探索与突破到里程碑式的算法诞生再到单阶段检测算法的兴起和后续发展与创新这一过程见证了计算机视觉领域的不断进步和深度学习技术的广泛应用2.4 常见的目标追踪算法SORT算法是不是难度特别大的一种算法同时SORT这个算法所具有非常强大的实用性同时也是一个强大的多目标跟踪算法。该算法主要利用卡尔曼滤波来预测目标物体在未来帧中的位置并通过交并比作为度量指标来建立目标间的关联实现多目标的追踪。SORT算法的核心在于它的高效性和实时性。通过结合卡尔曼滤波和IOU实现了对多个目标的稳定追踪。这个算法不需要复杂的图像特征提取和匹配过程因此计算量相对较小非常适合于实时性要求高的应用场景。在SORT算法中卡尔曼滤波被用于预测目标物体在下一帧中的位置。卡尔曼滤波是一种基于递归算法的数据处理算法它利用前一帧的估计值和当前帧的测量值来更新目标的位置和速度信息。根据目标在上一帧的状态以及系统的动态模型预测目标在当前帧的状态。利用当前帧的测量值如目标在图像中的位置来更新预测的状态得到更准确的估计值。在获得目标在当前帧的预测位置后SORT算法使用IOU作为度量指标来建立目标间的关联。IOU是指两个目标区域的交集面积与并集面积之比。通过计算预测位置与检测位置之间的IOU值可以判断它们是否属于同一个目标。具体来说如果两个位置的IOU值大于某个阈值如0.5则认为它们属于同一个目标并进行关联。优点是实时性强由于算法计算量小能够满足实时性要求高的应用场景。简单易实现算法不需要复杂的图像特征提取和匹配过程实现起来相对简单。缺点是依赖检测精度算法的性能受到目标检测算法精度的影响如果检测算法出现漏检或误检将会影响追踪效果。鲁棒性不足在目标运动不稳定或出现遮挡等复杂情况下算法的鲁棒性可能会下降。第3章 一阶段目标检测算法YOLO算法3.1 YOLO算法YOLO算法它其实是一种实时地目标的检测的系统它在目标检测领域的速度和效率使其成为热门选择。科学家在2015提出了单个的神经网络的目标检测算科学家把这个算法称之为YOLOYou Only Look OnceUnified Real-Time Object Detection在2017年CVPR上Joseph Redmon和Ali Farhad发表了YOLO 2YOLO 2大大改善了检测的精度和速度。图3-1 卷积层YOLO做end-to-end目标检测的方法如下就用一个全晓CNN模型搞定。看看下面图示管中窥豹。它是一个蓬勃发展的单一框架。图3-2 目标检测3.2 YOLOx在之前的时代中R-CNN系列的算法它们在目标的检测的领域非常都强大。R-CNN 系列具有很高的检测精度但由于其网络结构是两阶段特性其检测速度无法与实时读数相匹配因此受到了批评。为了解决这个问题有必要构建一个更快的目标检测器。有一个算法它检测速度快每秒能处理45张照片运行速度很快由于它的速度和使用的特殊方法作者将其命名为YOLO而他在CVPR2016上发表的结果引起了不寻常的反响。图3-3 目标区域在二零一七年啊两位超级厉害的大佬Joseph Redmon和Ali Farhadi他们觉得YOLOv1这个算法已经挺不错了但还是有点小瑕疵特别是在找东西的速度召回率和准确度定位精度上。于是他们动手改进了一番推出了YOLOv2这个版本。这个YOLOv2简直就是目标检测界的火箭快得飞起比很多其他同类算法都要迅速得多。而且它超级灵活不管你给它什么大小的照片它都能轻松应对同时在检测东西的准确度和速度之间找到了一个完美的平衡点。简直就是既快又准超级实用的。其整体结构如下图3-4 预测过程图3-5 改进过程当一个格子里面有很多不同种类的东西时YOLOv1有时候会分不清不能把它们都检测出来。但是YOLOv2想了个好办法来解决这个问题。它把YOLOv1里面的两个重要部分一个叫FC层另一个叫最后一个Pooling层都给拿走了。这样一来YOLOv2最后画出来的图画就是卷积层的输出就变得更清晰、更详细了。所以现在就算格子里面有很多不同的东西YOLOv2也能看得更清楚把它们都检测出来了。2018年Redmon在YOLOv2的基础上进行了改良。YOLOv3比起YOLOv2在里面的主要部分做了更大的改变。它用了一个叫做“残差网络”的好点子把YOLOv2里用的darknet-19升级成了更厉害的darknet-53。这就像是我们换了一个更强大的相机镜头可以看得更远、更清楚。图3-6 整体结构这些卷积层的设计旨在提取图像中的特征信息。在Darknet-53中每个卷积层之后都会紧接着一个批量归一化层和一个Leaky ReLU激活函数。Leaky ReLU它在负值区域引入了一个小的斜率从而避免了ReLU在输入为负时导致的神经元“死亡”问题。这样的设计使得网络能够学习到更多的特征尤其是在处理一些复杂问题时能够更好地保持特征的多样性。由于Darknet-53网络中共包含了53个这样的DBL单元因此得名Darknet-53。这样的设计不仅提高了网络的性能还使得网络结构更加紧凑和高效。下图所示图3-7 卷积单元DBLDarknet Basic Layer是YOLOv3中一个基础且核心的卷积单元它由三个关键部分组成首先是一个卷积层负责提取图像中的特征信息紧接着是一个批量归一化层它的作用是规范化卷积层的输出加快训练速度并提高模型稳定性最后是一个Leaky ReLU激活函数它为负值输入提供了一个非零的梯度增强了网络的非线性能力。为了更有效地检测图像中不同大小的目标YOLOv3采用了一种多尺度预测的策略。具体而言它预先设定了三种不同尺寸的Anchors锚框每种Anchors都代表了可能的目标框的宽高比和尺寸。更为巧妙的是这三种Anchors各自又进一步细分为三种不同的尺度以覆盖更广范围内的目标大小。因此总共形成了9种不同的Anchors这些Anchors共同构成了一个丰富的候选框集合使得YOLOv3能够更加灵活地应对各种尺寸的目标检测任务。在训练过程中YOLOv3会基于COCO这类大型数据集进行优化其中就包括了对这9种Anchors尺寸的选择和调整。通过学习COCO数据集中目标的统计信息YOLOv3能够自动调整这些Anchors的尺寸使它们更加贴近实际目标的大小分布这样做了之后可以显著的提高了我们所要的目标的检测的准确性和和目标检测的效率。如下图红色框所示图3-8 基本单元如下表所示对两阶段网络进行了测试。我们发现YOLOv3这一个算法可以达到与当前我们比较可以的比较先进的检测器的同样的水平。2020年YOLO系列的作者他们将研究命名为YOLOv4。3.3 YOLOv5YOLOv5是一种对象检测架构。Yolov5的官方他们发布了几个版本的目标的检测网络。这四个模型的结构相同主要区别在于乘法模型的深度和宽度参数如下图所示。图3-9 目标检测网络YOLOv5是YOLO系列中的一个新版本就像是YOLOv3和YOLOv4的升级版一样。它是一种非常高效的目标检测算法能在一次检测中就找出图像中的所有目标而且它的速度和准确度都比之前的版本有了很大提升。那么YOLOv5是怎么做到这些的呢。让我们用高中的知识来了解一下它的主要改进点。首先在输入端YOLOv5为了让模型在训练时能更好地学习做了几个巧妙的改进。它使用了“Mosaic数据增强”技术就像是把多张图片拼在一起训练这样可以让模型看到更多样化的场景从而提高训练速度和精度。同时它还提出了自适应锚框计算和自适应图片缩放的方法让模型能更灵活地适应不同大小和形状的目标。接下来是基准网络这部分就像是模型的“大脑”负责提取图像中的关键特征。YOLOv5融合了一些其他检测算法的好点子这些都能帮助模型更好地理解和分析图像。然后是Neck网络它位于基准网络和最终的输出层之间就像是一个“桥梁”连接着两者的信息。YOLOv5在这里加入了FPNPAN结构这个结构能进一步提升特征的多样性和鲁棒性让模型在检测目标时更加准确和稳定。Head输出层它用GIOU_Loss代替了之前的损失函数这样可以更准确地评估预测框和目标框之间的差异从而提高检测精度。同时它还使用了DIOU_nms来筛选预测框让最终的检测结果更加可靠。整个YOLOv5网络的输入图像大小是608x608像素模型会先对输入图像进行预处理比如缩放和归一化然后才能送入网络中进行检测。通过这些巧妙的改进YOLOv5在目标检测领域展现出了非常出色的性能。YOLOv5基础组件CBL-CBL模块由ConvBNLeaky_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的最大池化方式来看数据就像是我们用不同大小的放大镜来看同一样东西这样可以看到更多的细节。然后把这些看到的不同细节结合起来得到更全面的信息这个过程叫做多尺度特征融合。图3-10 检测过程在目标检测算法里当我们处理不同的数据集时会遇到一个问题每个数据集里的目标大小都不一样所以我们需要为它们设定一些特定长宽比的“锚点框来帮助模型更好地预测目标位置。想象一下在YOLOv3和YOLOv4里如果你想要训练一个新的数据集你得先运行一个特别的程序去找出最适合这个数据集的锚点框。但在YOLOv5里这个麻烦的过程被简化了。它聪明地把这个功能直接放在了代码里每次你开始训练一个新数据集时它就会自动地帮你找到最合适的锚点框。如果你不想用这个功能也很简单只要在训练的时候加上一个特别的指令--noautoanchor就可以了。再来说说图片缩放的问题。我们都知道为了让模型能更好地处理图片我们通常会把它们缩小到一个固定的尺寸。但是如果直接缩放很多图片的边缘就会多出一些黑色的部分这些黑色其实对模型来说是没用的还会让模型处理起来更慢。所以YOLOv5想出了一个好办法它会在缩放图片的时候尽量只加一点点黑色的边让图片看起来更紧凑这样模型就能更快地处理它们了。最后我们来聊聊Focus结构。这是一个很神奇的结构它就像是给图片做了一个特别的“裁剪”和“拼接”。比如你有一张608x608像素的图片Focus结构会先把它变成几个小块然后再重新拼在一起变成一个新的样子。接着这个新的图片会通过一个“卷积层”就像是用一个特殊的滤镜过滤了一下最后变成了304x304像素但是包含了更多有用的信息。这样模型就能更容易地从图片里找到目标了。图3-12 映射过程图3-11 切片操作CSP结构在YOLO的网络结构图中它借鉴了CSPNet同时在主干网络中写出了CSP结构。然而在YOLOv5中YOLOv5有俩钟CSp的结构图现在YOLOv5s为例图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网络都变得更加“明亮”能够捕捉到更多有用的信息。图3-13 采样过程想象一下我们有一个超级大的图片大小是608x608像素就像一张超大的海报。这张海报被送进了一个叫做“CSP模块”的机器里经过处理它变成了一个小一点的图片大小变成了76x76像素就像是把大海报缩小了一样。然后这个小图片又被缩小了两次最后变成了只有19x19像素的小方块就像是把小图片再次缩小成了邮票大小。接下来这个小方块被送到了一个叫做“FPN”的神奇结构里。在这个结构里有三个不同大小的小图片19x19、38x38、76x76被放在一起它们被调整成了相同的大小然后两两叠加在一起就像是把几张透明的纸叠在一起看一样。特别的是FPN还能把最小的19x19图片“变大”到76x76这样它就能更好地看到图片里的各种大小的东西了也让这个处理过程变得更聪明、更稳定。然后这些图片又被送到了一个叫做“PAN结构”的地方。在这个地方两个相同大小的图片会被“加在一起”不过不是普通的加法而是像拼图一样把对应位置上的信息都合起来。不过YOLOv5和YOLOv4用的是另一种方法它们像是把两张纸粘在一起一样把信息合并了。经过两次这样的操作那个76x76的图片又被变回了19x19的大小但这次它变得更厉害了能更准确地找到图片里的目标位置。最后我们来说说怎么决定哪些位置是我们要找的目标哪些是不要的。这就像是在玩一个找宝藏的游戏我们要根据一些规则来判断哪些地方可能有宝藏正样本哪些地方肯定没有负样本还有些地方可能是模糊的我们暂时不确定忽略样本。YOLOv5用了一个很聪明的方法它看每个位置上的“锚点”anchor和真实目标框gt_bbox的形状像不像还考虑了周围的位置这样就能更准确地找到宝藏了。图3-14 匹配过程Yolov5延用了Yolov3和Yolov4的多尺度融合检测方法。IoU即为交并比用于度量目标检测中预测框与真实框的重叠程度。假定所有的Box来自相同的物体通过考虑非极大结果充分考虑了目标的信息提出了如下的非极大权重Non-Maximum Weighting图3-15 权重YOLOv5客观效果展示与分析图3-16 分析结果图3-17 分析结果YOLOv5算法是一种很特别的同时也是一种很厉害的目标检测的算法它就像是一个快速又准确的“找东西”机器。这个算法在YOLOv4的基础上变得更加强大了因为它加入了很多新的想法让它的速度和准确度都提升了很多。首先在输入图片的时候YOLOv5用了一个叫做Mosaic的特殊方法来增强图片这样可以让模型看到更多样化的东西学习得更好。然后它还会自动地调整“锚点框”的大小和形状这些锚点框就像是帮助模型找到目标的“小钩子”让它们更容易被找到。接下来在处理图片的时候YOLOv5用了一个叫做Focus的特殊结构它可以把图片分成小块然后重新组合让重要的信息更加突出。同时它还用了CSP结构来加强图片的特征让模型更容易理解图片里的内容。在把图片的特征传递给模型的不同部分时YOLOv5用了SPP和FPNPAN的结构。这些结构就像是桥梁把图片的特征从一部分传递到另一部分让模型能够更全面地理解图片。最后在输出结果的时候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工作流程如下图4-1 工作流程4.2 deepsort算法流程因为sort算法还是精确度不够高的追踪算法当一个物体被另一个物体出现在前面锁造成了遮挡在这种情况下容易失去所属于自己的独一无二的ID。然deepsort算法在sort算法的基础之上不断地发展发展出了俩个不同的新的技术俩个技术之中其中之一是级联匹配另一个技术是新轨迹的确认。Tracks分为确认态和不确认态 工作流程如下图图4-2 工作流程4.3 目标追踪整体代码图4-3 相关代码下面是目标追踪的重要代码其中包含了deepsort的代码ckpt.t7为权重图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图5-1 cmd下载Labelimg图5-2 打开labeling图5-3 更改标注格式出现labelimg的界面之后我们把标注的格式更改成我们所需要的YOLO模式点击Change Save Dir指定我们标注好的数据集所存放的目的文件夹标注好的结果会保存在这个文件夹之中。图5-4 选择保存结果的文件夹点击Open Dir打开我们所要使用进行标注的图片的文件夹然后点击Create RectBox进行标注图5-5 点击开始标签football这是我们的标签标注好之后的数据就是我们模型训练所需要的数据集图5-6 保存的标注结果5.2 环境搭建需要安装Anaconda图5-7 anaconda安装界面1图5-8 ancaonda安装界面2使用conda创建环境conda create -n text python3.8图5-9 创建环境1图5-10 创建环境2图5-11 安装过程图5-12 安装结束环境创建完成5.3 yolov5deepsort使用我们把yolov5的源码下载下来然后进行解压我们可以看到里面有很多的文件夹和文件我们把requirements.txt的文件打开里面有我们安装环境所需要的数据包和依赖包。图5-13 yolov5文件在文件夹中打开cmd进入创建的环境运行pip install -r requirements.txt安装所需要库图5-14 打开cmd图5-15 yolov5代码库在train把标注好的数据集路径放入图5-16 标注路径图5-17 数据集图5-18 训练参数训练好的模型放在图5-19 训练好的模型在detect中验证自己训练好的模型图5-20 deepsort代码库图5-21 deepsort训练参数验证好的结果放在detect中图5-22 训练经过再Deepsort源码下载讲yolov5放入目标检测工程图5-23 deepsort代码文件更改参数路径实现目标跟踪图5-24 deepsort代码库改变路径使用训练好的模型图5-25 改变路径在终端中输入下方命令Pythontrack.py--sourcesniqlmtz.mp4--save-vid--yolo_weightsyolov5weqxcz/wjenz/yolov5s.pt生成的结果保存在下方所示路径图5-26 视频结果路径5.4 实验结果数据与分析随着我们实验的进行我们通过实验得到了以下数据它们反映着各项指标。图5-27 Labels图5-28 labels_correlogram:图5-29 result.csv:图5-30 result.csv:模型训练完之后接下来就是对所训练的模型进行验证我们要进行俩个方面的对模型的验证。1对视频的运动小目标的跟踪情况2对图像小目标的跟踪的情况对视频的运动小目标的跟踪情况我们对一段八秒的视频进行实验下图是实验结果图5-31 视频实验结果1图5-32 视频实验结果2结果对视频的跟踪情况良好并未出现误检等情况对视频跟踪的精确度高。分析但是实验过程之中还是会先所跟踪足球出现被遮挡的情况导致模型出现漏检的情况这是因为模型的训练的次数还不够多模型训练的精度还不够高所导致的。接下来是对图片进行实验我们首先在2000张的图片之中随机抽取100张图片进行实验实验的结果所示图5-33 图片实验结果1图5-34 实验结果2图5-35 实验结果3图5-36 实验结果4经过我们的实验我们所训练的模型对图片的跟踪精确度高目标检测的速度也很快但是还是会出现误检与漏检的情况。我们将阈值设置为0.65当实验得分低于0.65时为误检当实验得分高于或等于0.65时为成功检测下面是检测结果表格总数漏检误检检测成功1002692检测成功率为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.致 谢在此次设计中首先要感谢我的指导老师因为在我做毕业设计的过程当中他负责任的指导和建议使我的毕业设计进展十分地顺利指导老师每时每刻的督促使我不敢有丝毫的怠慢他一直给予我悉心的教导和莫大的支持在此我向指导老师致以深深的谢意时间飞逝它就像温暖的微风一半从你我指尖划过不留一丝痕迹。大学的回忆留在了我清风微佛的林荫小路落在了炎炎烈日的球场之上。我要感谢我的舍友和我的同学他们跟我走过了一段让人难以忘怀的时光因为他们的存在让这段如湖水一般平静的生活泛起了涟漪。最后我还要感谢一个叫面包的人在我陷入困惑黑暗虚无的时候面包像月亮一样出现在我的世界中在黑暗之中为我指引前进的方向给予我走下去的力量。在此由衷地感谢每一个陪伴我欣赏我激励我的每一个人。感谢几年来传授我知识的老师们更要感谢我的家人对我学业上的支持和鼓励对给过我帮助的所有同学和各位指导老师再次表示由衷的感谢

本月热点