基于YOLOV5和DeepOCSort的实时目标检测跟踪检测系统

项目简介

本项目旨在研究由YOLOV5模型在多目标检测任务重的应用。通过设计YOLOV5模型及DeepOCSORT模型来实现多物体检测、追踪,最终达高实时性、高精度的物件检测、分割、追踪的效果。最后通过AX620A完成嵌入式硬件部署

项目研究背景

近年来,近年来,城市建设在不断提高着道路的复杂程度,对自动驾驶汽车判断当下多变的交通场景提出挑战。应用摄像头搭建环境感知系统可为自动驾驶汽车提供全面、丰富的周边环境信息,解决路况感知缺乏导致的城市交通问题。如何实现准确的道路目标检测是自动驾驶汽车感知环境所要解决的最基础和核心技术问题。

目标检测是一种基于目标几何和统计特征的图像处理技术,用于确定图像视野内的目标所在位置并判断其对应类别。在执行驾驶任务时,通过摄像头捕捉道路场景,并利用车载电脑内的目标检测算法对道路目标进行定位和识别,可为自动驾驶汽车提供充足的路况信息辅助其规划与决策,进而保证行车安全。

目标检测算法的发展大致分为两个阶段:第一阶段为传统的目标检测算法,由人工特征选取与选定分类器相结合的方式实现。其中,图像特征提取通常采用尺度不变特征变换 SIFT、方向梯度直方图 HOG和局部二值模式 LBP三种方法;分类器选定则通常采用支持向量机 SVM与Adaboost算法实现任务分类。然而,传统目标检测算法存在以下缺陷:

(1) 人工选取方式难以获取图像的复杂语义信息,对图像特征的表达能力不足,对不同任务的鲁棒性较差;

(2) 特征提取对噪点和方向敏感,易产生信息描述失真,影响分类的准确率。

第二阶段为基于深度学习的目标检测算法。随着卷积神经网络不断发展,由卷积神经网络提取图像特征的方式实现。相比传统目标检测算法不仅误检和漏检率较低,而且特征表达能力和检测精度更优良。目前,基于深度学习的目标检测方法主要分为两类。一类是两阶段目标检测,将候选框提取与分类任务分次进行,第一阶段使用 RPN网络提取目标潜在候选区域,第二阶段对区域位置校准后进行分类任务得到检测结果。由于检测网络在结构设计上注重高准确率,复杂的结构致使检测速度较慢,其代表算法主要有首次将候选区域与卷积神经网络结合的 R-CNN、在 R-CNN 基础上添加金字塔池化层的SPPNe和在 SPP-Net 基础上以感兴趣池化层代替金字塔池化层的 Fast R-CNN等;另一类是单阶段目标检测,将候选框提取与分类任务以端到端方式同时进行,不使用 RPN 网络,只通过基于边框回归的一阶段提取图像特征。由于检测网络在结构设计上注重检测实时性,简单的结构致使检测精度较低,其代表算法主要有将提取候选区域与特征识别两阶段合二为一的YOLO和在YOLO基础上融入锚框机制的 SSD等。

本文针对道路交通场景下的远处目标识别效果欠佳、目标特征表达不充分及目标定位不准确等目标检测问题,以YOLOv5单阶段网络为基础框架进行改进研究:首先,通过增加小目标检测层,提高网络对远处目标的识别能力;其次,将检测头解耦为分支检测方式,增强检测头对征层信息的表达能力;最后,应用K-means++聚类算法重新调整先验框大小,提高网络对道路目标的定位能力。通过上述网络结构调整与先验框改进,使本文算法能够更好地适用于道路交通场景,获得良好的目标检测效果。

研究内容

  1. 基于DeepOCSORT与YOLOV5的联合部署实现高精度的行人检测追踪方法

DeepOCSORT的优势时利用检测框和跟踪轨迹之间的相似性,在保留高分检测结果的同时,从低分检测结果中去除背景,挖掘真正的物体,从而降低漏检并提高轨迹的连贯性,对比于普通的多目标追踪方法,具有更好的效果, YOLOV5在目标检测算法中具有极大的优势,拥有极高的准确性及是实测检测速度,通过修改DeepOCSORT中的检测器,可以让行人追踪更好的效果。

        2,Decoupled-Head融入YOLOV5网络研究并实现行人检测

通过将检测头解耦会增加运算的复杂度,但经过权衡速度和性能上的得失,使用1个1x1 的卷积先降维,并在分类和回归分支里各使用了2个3x3卷积,最终调整到仅仅增加一点点参数。但可以大大提高了收敛速度,且对于性能AP降低非常少,构建YOLOV8检测网络完成对于行人检测算法模型的构建,然后通过数据集训练自己的YOLO网络来实现行人检测。

        3,实现AX620A嵌入式平台的算法移植

爱芯派的核心芯片是来自「爱芯元智」的 AX620A,这是一款高算力,高能效比,低功耗的AI SoC芯片,芯片集成了四核 Cortex A7 @ 1Ghz CPU,拥有3.6TOPs@INT8 的高算力NPU,支持4K@30fps的ISP,以及支持 H.264、H.265 编码的 VPU,拥有大算力和优异画质处理能力的 AX620A 可以实现更多的 AI 功能,带来最优的 AI 体验!功耗低于 1W,支持低功耗、低待机功耗以及快速唤醒的特性,让 AX620A 也可以轻松应对电池类产品,所以在AX620A中部署可以更加节省资源,降低部署成本

研究目标

  1. 结合物体检测追踪任务特性,提出利用DeepOCSORT结合YOLOV5模型完成对于目标检测分割任务的方法。
  2. 提出基于paddlepaddle框架的AX620A嵌入式硬件部署方法,完成对于嵌入式硬件部署加速,通过剪枝模型,完成高性能部署。

项目创新特色概述

  1. 首次将DeepOCSORT与YOLOV5联合部署用于物体分割追踪任务,以高性能模型组合完成检测任务,降低计算成本,实现高实时性高精度检测。
  2. 提出基于paddlepaddle框架的AX620A嵌入式硬件部署方法,完成对于嵌入式硬件部署加速,通过剪枝模型,完成高性能部署,且使得网络更加具有迁移性,降低计算成本。

项目研究技术路线

针对基于物体检测任务的数据集收集、清理、标注及评估,得到较好的训练数据集、完成YOLOV5模型结构的研究及构建、基于DeepOCSORT与YOLOV5的联合部署实现高精度的物体检测追踪方法实施、以及使用提出基于AX620A的嵌入式硬件部署方法。

(1)  YOLOV5模型结构的研究及构建

YOLOv5 包含四种不同大小的模型,相较于 YOLOv3、YOLO4,有更好的便携性,可以根据需求移植到不同设备上;改进了特征提取网络,使得提取速度和提取能力都有所提升,不仅保证了精度还提高了速度,被应用于各个领域。为提升运行速度,YOLOv7 对特征提取网络进行了优化,舍去了大量特征信息。相比于新一代的 YOLOv7 算法,YOLOv5算法在特征提取网络中保留了更多的特征并多次优化算法细节,这导致了 YOLOv5 在处理复杂问题时更具鲁棒性和稳定,Yolov5的网络架构如图4.1所示:

图 4.1 YOLOV5网络原理图

Backbone 是主干网络,用于提取图像特征,供后续网络层使用。v6.0 版本之前的 YOLOv5 在主干网络中使用了 Focus 结构,而且提出了两种 CSP 结构。下面具体介绍 Focus 模块和 CSP 模块。的数量扩大到 c,扩大了特征并增加了特征多样性。单个可变形卷积层进行的偏移操作会舍弃原始位置的特征,造成信息的缺失。此外,可变形卷积改变了采样位置,导致卷积操作前后特征图的像素点无法对应匹配,即位置信息的缺失。为了解决上述问题,借鉴了残差网络的思路,将模块的输入与第二个可变形卷积层的输出 concat 往短路上靠,利用输入的原始特征对输出特征进行补全,从而防止训练过程中的梯度消失,又对特征进行补充和重复利用。拼接得到的特征图随后送入 3×3 卷积,将两种不同层次的特征进行融合。图像输入主干网络之前,先由 Focus 模块对其进行切片操作,将高分辨率图像拆分成多个低分辨率图像。如图 4.2 所示,以一个 4×4×3 的输入图像为例,对其进行间隔采样,并将采样结果在通道维度拼接,可将通道扩充为原来的 4 倍,生成 2×2×12 的特征图,随后网络在新的特征图上进行卷积操作。

图4.2 VGG 网络模型图

将尺度为 608×608×3 的图像输入 YOLOv5s 中,经过 Focus 层进行切片操作后变成了 304×304×12 的特征图,然后输入 32 通道的卷积层进行卷积操作,最终得到 304×304×32 大小的特征图。利用 Focus 切片操作将图像的平面信息转换到通道维度,能在确保图像信息无损的前提下实现二倍下采样操作,有利于提升网络速度

且将 SPPF 模块置于主干网络的最后。 

由于网络优化时存在梯度重复计算的问题,导致推理过程计算量过大。为了解决这个问题,早在 YOLOv4 中就借鉴 CSPNet[60]的思想,提出了 CSP 模块。研究表明,引入 CSP 模块有利于增强网络的学习能力,能在减少计算量的同时保证准确率,而且还能降低内存消耗。YOLOv4 与 YOLOv5 的主干网络都使用了 CSP 结构,不同之处在于 YOLOv5设计了两种 CSP 模块,结构如图 3.3 所示,其中 CSP1_X 用于主干网络,而CSP2_X 则应用于 Neck 网络。CSP1_X 先将特征图按通道拆分为两部分,一部分进行常规卷积操作,另一部分利用残差网络的思想构建残差组件,最后将这两部分合并得到新的特征图。这种设计可以避免重复计算梯度值,提高模型推理速度。而且带有残差组件的 CSP 结构,在反向传播过程中可以增强梯度值,当主干网络的层数较深时,可以缓解梯度消失的问题,增强网络的特征提取能力。而CSP2_X 用卷积层代替了残差组件,用于将输入的特征图分为两部分,分别计算后再融合,能保留更多图像信息。YOLOv5 模型 v6.0 版本的主干网络与之前版本有所不同,主要表现在以下几方面:

(1)为了便于模型部署,将 Focus 模块换成了 6×6 的卷积层。

(2)使用 C3 模块代替 CSP 模块,而且将主干网络的最后一个 C3 模块引入了残差组件。C3 顾名思义即包含 3 个标准卷积层和若干个 Bottleneck 层的模块。

(3)为了提高速度,减少了主干网络 P3 层中 C3 模块的重复次数。

(4)使用 SPPF 模块代替 SPP 模块,而且将 SPPF 模块置于主干网络的最后。

(2) 基于YOLOv5与DeepOCSORT联合部署实现高精度的物体检测追踪方法

本项目中车辆追踪部分采用YOLOv5替换DeepOCSORT的检测器,,YOLOv5是基于YOLOv3进行优化的模型,通过更改Label assign方式使用TAL算法来进行正负样本分配,进一步克服了分类和定位的错位,且在分类器部分,使用二进制交叉熵,如公式(4.4)所示:

 

保证所有的正样本Anchor都在GT周围,且还可以更具不同层的特性对不同层的正样本的阈值进行微调。且将RepVGG替换了普通的resnet可以融合resnet和VGG的优点融合,拥有VGG网络小卷积带来的运算速度,且通过单路架构,可以减少resnet消耗的显存占用,在推理阶段RepVGG也可以简化ONNX输出,可以简化网络结构。

在DeepOCSORT中,相较于普通的多目标检测追踪算法只保留高分检测框,保留了每个检测框,并将其分类为了高分检测框和低分检测框,我们首先将高分检测框与检测轨迹相关联,存在一些无法匹配的轨迹,因为通常图像存在一些遮挡、运动模糊和大小更改的情况,将低分数检测框和这些不匹配的轨迹联系起来,来恢复低分数检测框中对象并同时过滤掉背景。在分离这些高分数与低分数的检测框时利用卡尔曼滤波器KT预测T中的每个轨迹的新位置,并进行匹配,如公式(4.5)所示。 

第一次匹配,在高分检测框和所有轨迹T之间进行,计算检测框和轨迹预测框之间进行IOU计算,然后完成相似度匹配,如果IOU小于0.2,将拒绝匹配,将未匹配的检测结果保存在 并将为匹配的轨迹保存在 ,第二次匹配在低分检测框与第一次剩余的轨迹 之间进行,将未匹配的轨迹保存进 并删除所有未匹配的低置信度的检测框。最后将第一次关联中未匹配的高置信度的 初始化为新轨迹,然后再每一单独帧的输出为当前帧中的轨迹T的边检和标识框。可以极大的提高MOT的性能。

(3) 基于通过paddlepaddle框架完成AX620A的嵌入式平台移植

不同于大部分深度学习框架,PaddlePaddle(下文简称PP)在深度神经网络定义和描述时,去掉计算图的概念,代之以Program的形式动态描述计算过程。这种程序化的计算描述方式,兼具网络结构修改的灵活性和模型搭建的便捷性,极大地提高了框架对模型的表达能力的同时也保证了高性能,同时在神经网络计算中,矩阵维度足够大,才能最大化对计算资源的利用,充分发挥GPU或是其他异构计算设备的计算能力,从而加速运算。在PP的设计中,通过对序列进行排序,然后沿时间步维度切取出多个Batch并行计算,PP对序列模型没有增加计算量,也无需用户处理填充/去填充相关的细节,从而提升变长序列场景的计算效率。而且重要的是PP还针对特殊场景研发内建(Built-in)并行能力。通过不断地累计本地梯度,并同步最有代表性的少量梯度,在保证模型收敛的前提下可以将通信量减小为原始通信量的1%以下,大大降低了网络通信负载。在带宽压缩到1Gb/s的情况下,通用的多机多卡并行训练方法在吞吐方面已经趋近于0,而基于稀疏通信的并行训练方法依然可以保持较高的吞吐。且在PP框架是国内唯一功能完备的端到端开源的深度学习平台,集深度学习训练和预测框架、模型库、工具组件、服务平台为一体,其间距灵活和效率的开发机制、工业级应用效果的模型、超大规模并行深度学习能力,推理引擎一体化设计及系统化的服务支持等等优势,且口罩识别过程中我们也需要使用到CV方面的模型库。

PaddleDetection物体检测统一框架,覆盖主流的检测算法,即具备高精度模型、也具备高速推理模型,包含Faster-RCNN (支持FPN), Mask-RCNN ( 支持FPN), Cascade-RCNN, RetinaNet, Yolo v3, SSD算法并提供一系列的预训练模型,具有工业化、模块化、高性能的优势。结合飞桨核心框架的高速推理引擎,训练到部署无缝衔接;提供模块化设计,模型网络结构和数据数据处理均可定制;基于高效的核心框架,训练速度和显存占用上有一定的优势,例如,YOLO v5训练速度相比同类框架快1.6倍。此外,本次除了统一检测框架,还发布一系列预训练模型,例如基于改进版的ResNet的检测模型,不增加计算量的情况下,精度普遍提高约1%左右。从而能够更高效的去部署网络,以更低的门槛去实施。

项目目标:

(1) 提出基于YOLOV5优化检测分割算法;

(2) 提出基于YOLOV5与DeepOCSORT架构的目标检测追踪算法;

(3) 提出基于paddlepaddle的嵌入式平台AX620A的部署方法

(4) 实现高实时性准确的物体检测追踪算法;

运行效果图:

https://www.bilibili.com/video/BV15x4y167yp/?spm_id_from=333.999.0.0

项目链接:https://pan.baidu.com/s/1rKbUqVVVZev0m9zmUC6QdQ

提取码可私信博主

项目文件进入文件track.py路径之后,输入命令 python track.py --source test2.mp4 即可运行

电脑有GPU 运行效果更好,若没有,运行效果可能不会很流畅

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/581465.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】fork函数详解and写时拷贝再理解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …

茶叶直播间电商运营带货方案营销计划书

【干货资料持续更新,建议先关注,以防走丢】 茶叶直播间电商运营带货方案营销计划书 部分资料预览 资料部分是网络整理,仅供学习参考。 PPT可编辑(完整资料包含以下内容) 目录 直播带货方案细化 1. 直播筹划 - 目标…

基于SSM+Jsp+Mysql的汽车租赁系统的设计与实现

开发语言:Java框架:ssm技术:JSPJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包…

OpenHarmony实战开发-如何实现单一手势

点击手势(TapGesture) TapGesture(value?:{count?:number; fingers?:number})点击手势支持单次点击和多次点击,拥有两个可选参数: count:声明该点击手势识别的连续点击次数。默认值为1,若设置小于1的非…

poi-tl自定义渲染策略学习

文章目录 实现逻辑参考代码注意点 实现逻辑 自定义渲染策略实现逻辑: 找到模板中的表格标签render方法接收java中对应模板表格标签的所有list数据执行自定义渲染逻辑 参考代码 word模板如下: 实体类: Data public class GksxRowData {/…

结构体枚举、联合、位段

枚举 枚举顾名思义就是一一列举。 把可能的取值一一列举。 比如我们现实生活中: 一周的星期一到星期日是有限的7天,可以一一列举。 性别有:男、女、保密,也可以一一列举。 月份有12个月,也可以一一列举 这里就可以使…

Shader for Quest 2: 自定义shader在Unity Editor中可以使用,但是在Quest 2中却不可以

GameObject segment GameObject.Find("DisplayArea_" i); MeshRenderer renderer segment.GetComponent<MeshRenderer>(); Material mat new Material(Shader.Find("Custom/MyShader")); mat.mainTexture option.Image360;上面这份代码&#x…

低代码开发之腾讯云微搭工具

低代码开发之腾讯云微搭工具 微搭简介诞生缘由开发模式如何创建组件模块介绍实例讲解url传参级联联动使用事件其他方法调用数据源方法 callDataSource触发流程 callProcess 引入外部css/js代码编辑器的使用Handler 方法使用介绍Style 用法示例LifeCycle 生命周期介绍 数据模型方…

【1471】java项目进度管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 项目进度管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

测试必备 | 测试工程师必知的Linux命令有哪些?

在日常的测试工作中&#xff0c;涉及到测试环境搭建及通过查看日志来定位相关问题时经常会用到Linux&#xff0c;在测试工程师的面试中也经常会有笔试或面试的题目来考查测试人员对Linux的熟悉程度&#xff0c;这里分享下测试工程师需知的 Linux 命令有哪些。 Linux 作为一种常…

【 书生·浦语大模型实战营】作业(四):XTuner 微调 LLM:1.8B、多模态、Agent

【 书生浦语大模型实战营】作业&#xff08;五&#xff09;&#xff1a;LMDeploy 量化部署 &#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系…

模块四:前缀和——DP35 【模板】二维前缀和

文章目录 题目描述算法原理解法一&#xff1a;暴力模拟&#xff08;时间复杂度为O(n*m*q)&#xff09;解法二&#xff1a;二维前缀和&#xff08;时间复杂度为O(m*n)O(q)) 代码实现解法二&#xff1a;前缀和&#xff08;C)Java 题目描述 题目链接&#xff1a;DP35 【模板】二维…

微信第三方开放平台,实现代公众号保留排版样式和图片发布文章

大家好&#xff0c;我是小悟 要想实现代公众号发布文章的功能&#xff0c;就得接入富文本编辑器&#xff0c;市面上富文本编辑器有很多&#xff0c;轻量的、重量的都有。 从开发者的角度&#xff0c;自然把轻量作为第一选择&#xff0c;因为好对接&#xff0c;怎么方便怎么来…

基于 SpringCloud 的在线交易平台乐优商城的设计与实现(六)

目录 第六章 系统测试 6.1 功能性测试 6.1.1 商家后台功能测试 6.1.2 前台功能测试 6.2 非功能性测试 6.3 本章小结 结束语 参考文献 前面内容请移步 基于 SpringCloud 的在线交易平台乐优商城的设计与实现&#xff08;五&#xff09; 相关免费源码资源 乐优商城…

2024年【制冷与空调设备运行操作】最新解析及制冷与空调设备运行操作免费试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 制冷与空调设备运行操作最新解析是安全生产模拟考试一点通生成的&#xff0c;制冷与空调设备运行操作证模拟考试题库是根据制冷与空调设备运行操作最新版教材汇编出制冷与空调设备运行操作仿真模拟考试。2024年【制冷…

不只有 Spring,这四款Java 基础开发框架同样值得关注!

Java 开发不只有 Spring &#xff0c;今天给大家推荐几个同样优秀的 Java 基础开发框架&#xff0c;为日常项目开发提供更多的选择。答应我&#xff0c;请不要再叫我 Spring 小子了&#xff0c;​好吗&#xff1f; 项目概览&#xff1a; Guice&#xff1a;轻量级依赖注入框架 …

构建本地大语言模型知识库问答系统

MaxKB 2024 年 4 月 12 日&#xff0c;1Panel 开源项目组正式对外介绍了其官方出品的开源子项目 ——MaxKB&#xff08;github.com/1Panel-dev/MaxKB&#xff09;。MaxKB 是一款基于 LLM&#xff08;Large Language Model&#xff09;大语言模型的知识库问答系统。MaxKB 的产品…

Intelij Idea Push失败,出现git Authentication failed(验证失败)

目录 1、出现问题的原因 2、解决之法 1、出现问题的原因 能出现这种问题&#xff0c;最主要的原因是链接对上了&#xff0c;但用户验证失败了&#xff0c;即登录失败。 因为服务器转移或者换了git项目链接&#xff0c;导致你忘记了用户名密码&#xff0c;随意输入之后&…

P44,45 属性预处理,执行后游戏效果回调,附录指定区域内修改变量

这节课主要是怎么对Attribute进行在进行到游戏角色前先进行处理,以及游戏效果如何回调 AuraAttributeSet.h // Fill out your copyright notice in the Description page of Project Settings.#pragma once#include "CoreMinimal.h" #include "AttributeSet.h&…

如何禁用WordPress的自动更新(包括主题、插件和核心文件)

这几天发现我的一个网站突然打不开了&#xff0c;提示“此站点遇到了致命错误”,如图&#xff1a; 这个网站一直都是正常运行的&#xff0c;最近也没有过什么更新&#xff0c;按理说不应该会出现问题&#xff0c;我担心可能是主机方面做了什么调整导致&#xff0c;所以联系了Ho…