当前位置: 首页 > news >正文

论文笔记:YOLOv8-QSD 自动驾驶场景小目标检测算法

摘要

YOLOv8-QSD网络是一种新型的无锚点驾驶场景检测网络,建立在YOLOv8的基础上,在保证检测精度的同时保持效率。该网络的骨干网采用结构重参数化技术来转换基于多样化分支块 (DBB) 的模型。

为了准确检测小目标,它集成了不同尺度的特征,并在骨干之后实现了基于双向特征金字塔网络(BiFPN)的特征金字塔。

此外,还提出了一个动态头部(DyHead),包含了尺度感知、空间感知和任务感知的注意力机制,以进一步优化特征提取和分类过程。为了解决驾驶场景中远程检测(商业车辆需要更大的视野)的挑战,该文引入新的查询模型(Q-block)和管道结构以解决长距离检测挑战。

测试结果表明,该算法在大规模小目标检测数据集(SODA-A)上的性能无论在速度还是准确率上都优于YOLOv8。 准确率达64.5%,计算量降低7.1 GFLOPs。

YOLOv8与YOLOv8-QSD网络图对比

4c23fc3e67344a03a3426439a4b89a30.png

962713333ac9472786c0a7e6e2b68682.png

算法

难点 

由于小对象的像素尺寸较小,想要从小目标中提取准确、全面的特征尤为重要。在复杂环境中,从重叠对象中提取特征要求更高,往往导致跨算法的小目标检测精度降低。

目标检测中对于小物体的检测精度较低以及计算量较大的问题。

QueryDet

为解决 级联特征金字塔检测中检测小物体的困难 提出了QueryDet

最常见和最有效的方法包括使用高分辨率的图像或特征图。然而,这两种方法都有很高的计算成本,这与图像和特征图的大小成比例,特别是在一个结构化的特征金字塔中。

neck缺陷

原始的YOLOv8网络采用PAFPN作为neck网络,通过双向聚合来自底部和顶部路径的特征来融合低级别和高级别信息,从而有效地缩短了信息路径。然而,在像素级别的分辨率下,直接将p3层与目标层进行融合并不能充分满足定位信息的要求,并且直接融合p2层会显著增加参数数量。

解决方法

YOLOv8-QSD利用DBB骨干进行鲁棒特征提取,在检测颈部细化特征金字塔结构,集成Q-block和Dy-head模块,T替换损失函数,提高整体目标检测能力

neck

以大规模特征图为重点,引入了Bi-PAN-FPN 的思想,以改进YOLOv8的特征融合方法。这一改进增强了模型检测小物体的能力,提高了多尺度特征融合的可能性和效率,并导致增强了特征工程。YOLOv8特征融合方法的增强无缝集成了浅层和深度信息,在网络特征提取过程中实现了更彻底的信息保存,从而解决了定位不准确和后续检测缺失引起的问题。

(a)FPN. (b) PAN. (c) YOLOv8(PAFPN)(d) YOLOv8-QSD.

6fde0f54d96248bd8269e8afe3edc079.png

在(a)中,FPN构建了一个自上而下的特征金字塔,在不同层次的特征图之间添加横向连接,以更好地利用低层次特征中包含的高频细节,从而形成一个包含多尺度信息的特征金字塔。

在(b)中,金字塔注意网络(PAN)在编码器和解码器之间整合了路径聚合模块,以聚合不同尺度的特征,生成具有多个分辨率的特征图。这种层次特征金字塔结构利用了不同尺度的特征,提高了语义分割的准确性。

在(c)中,YOLOv8结合了SPP和PAN,提高了目标检测的准确性和效率。

在(d)中,是YOLOv8-QSD采用的特征融合方法。对于p2层中的特征,我们首先应用一个带有查询机制的q-block来获得与小目标相关的粗糙特征映射。随后,利用自稀疏融合操作(F-fusion)将特征集成到目标特征层中。该方法改善小目标的的检测速度和精度对齐,同时显著减少了模型的参数计数。同时,串联模式是一种自适应的空间融合操作。使用这种显式查询机制可以检测到类似于p2层的特征,而不需要只依赖于p2层本身。这种实质性的增强显著地提高了模型的准确性,同时保持了其实时性能。

7721b9355cee48f99a1962a9b255773f.png

左边的输入由处理过的细粒度特征图组成,而右边的输入表示通过粗查询获得的关键值的子集。基于粗查询,这些关键值表示得分较高的区域,它们更有可能包含小目标。通过查询模块进行处理后,从细粒度的特征映射中提取这些区域。然后,对这些区域进行了高分辨率的检测,从而提高了检测性能。

PyHead

表示在特征映射的不同层次上执行的动态头部操作。它包含注意机制和动态卷积,用来处理统一对象模型中的尺度意识、空间意识和任务意识。其目的是提高探测器对小物体相关特征的灵敏度。

5c9a8128d6e34f01ac85ccedffa14e92.png

引入了一个动态的Query-aware稀疏注意力机制,以过滤掉不相关的键值对,从而提高了模型的检测能力,特别是对于小目标。(将定位不佳的层重新输入网络,以提高小目标的定位精度)。它补充了各模块中降采样时丢失的信息,确保了在特征提取过程中对上下文信息进行了更全面的保存。

尺度感知注意机制强调动态多尺度融合的语义权重。利用硬s型函数,在保持计算效率的同时引入非线性。线性函数f(·)采用卷积层进行逼近,使模型能够根据语义信息自适应地调整注意力权重。这种注意机制旨在在特征融合过程中实现尺度感知,使模型能够有效地捕获不同尺度下的特征,并在目标检测过程中做出明智的决策。利用语义权值增加了对相关特征的敏感性,并提高了检测性能,特别是对于不同尺度的对象。

DBB

DBB模块利用了两个重要的卷积特性:同质性和可加性。根据同质性原理,

C2f-DBB体系结构是一种将C2f模块与DBB相结合的模型配置。在这个结构中,瓶颈模块中原来的conv操作被替换为DBB。C2f-DBB体系结构的设计目标是保持模型的轻量级,同时提高其对长距离和低像素分辨率的小物体的检测性能。通过将C2f模块和DBB相结合,我们的目标是生成更全面的特征表示,提高模型的通用性,从而在高速公路上商用车的长距离小物体检测方面具有优越的性能。DBB模块增强了模型的通用化性,从而增强了其鲁棒性,同时增加了参数的数量。这种自适应使模型更容易地部署在边缘设备上,从而放大其实时性能,同时轻量化。

将YOLOv8中的C2f模块替换为建议的C2f-DBB模块。通过叠加模块并连续融合每个小模块,产生了一种新的网络结构。这增加了结构的整体深度,以更低的计算成本实现了更高的分辨率,并捕获了更多的上下文信息。

损失函数

下图突出了小物体位移的极端敏感性。

通过结合NWD的分布测量能力和wise-IoU(适合于SOD的IoU)的定位能力,改善了NWD的损失。这种协同改进通过在精确评估目标分布和精确定位小物体之间取得平衡,确保了对小物体的有效目标检测。提高模型对小物体的敏感性,同时减少假阳性预测,最小化不同物体大小之间的敏感性差异

大多数真实的小目标并不严格遵守一个矩形的形状,因此经常包含在边界框内的上下文像素。提出了一种将边界盒建模为二维高斯分布的合适方法,以更准确地描述边界盒内不同像素之间的权重分布。在该模型中,边界框的中心像素的权重最大(焦点损失),像素的重要性随着它们远离中心的移动而降低。这种建模方法有效地降低了小物体对iou的敏感性,增加模型对小物体的敏感度并降低假阳性预测的数量,提高对小目标的检测能力,显著减少网络推理的计算负荷。

87d6d4addf634e36800ff097ce553e63.png

实验

使用两个交通场景下的目标检测的数据集——SODA-D和VisDrone。

其中,SODA-D包含24828张高质量的交通图像,涵盖了九个不同的类别,并且对小物体进行了细致的注释。而VisDrone则是一个专门用于无人机拍摄的图像数据集,包含了10209张静态图像,共有十个不同的物体类别。

这两个数据集都强调了对于小物体的检测能力,并且在不同光照、遮挡等复杂情况下都有一定的挑战性。这些数据集可以被用来评估目标检测算法的性能表现。

YOLOv8-QSD的检测结果及基线方法

5acb5bf8c44a4d37b91a7a155b9a7b1b.png

第一行是YOLOv8-QSD模型进行的检测的结果,第二行是基线方法的结果。(分别是白天和夜晚,长焦与短焦的检测)

8041f3d3f11c4f6ca43d1e6144027ec2.png

表一列出了YOLOv8-QSD与VisDrone数据集上的基线算法之间的检测精度的比较

表二列出了YOLOv8-QSD与SODA数据集上的基线算法之间的检测精度的比较

表三给出了SODA数据集上的其他算法与YOLOv8-QSD之间的比较

可以很好的看出YOLOv8-QSD的优势

1c1dfd645a574803b4a687151238e615.png

总结

创新点

将C2f改为C2f-DBB网络,用于检测驾驶场景中的远处小物体。其是在训练过程中采用多分支结构,在推理过程中采用单分支结构。DBB通过不同尺度和复杂度的分支组合,能够从多个角度和层次学习特征,从而丰富了特征空间。这种多样化的学习能够帮助模型更好地捕捉到输入数据的复杂结构,提高模型的表达能力。

其次,还引入了一个名为Q-block的新模块来优化小物体的BIFPN,并提高了在驾驶场景中检测远处小物体的性能。

提出了DyHead,包含了尺度感知、空间感知和任务感知的注意力机制,以进一步优化特征提取和分类过程。为了解决驾驶场景中远程检测的挑战,该文引入新的Q-block和管道结构以解决长距离检测挑战。最后改善损失函数降低iou对小目标的敏感。

实验结果表明,所提出的YOLOv8-QSD网络优于其他针对远处小目标设计的检测网络,同时实现了显著的轻量级特性。

改进方向

要求更高清晰度的图像才能产生最佳结果,以及在遇到抖动场景时需要增强其鲁棒性。

进一步简化q块结构,并增加显式补偿模块,改善模型对抖动的鲁棒性。

探索当前基于NMS的处理的替代解决方案,例如考虑一种类似于detr的方法来减少后处理阶段的推理损失。

在未来的研究中,仍然需要评估模型的稳定性和鲁棒性,特别是在极端天气条件下,包括雨、雾、弱光和强光。

论文网址:YOLOv8-QSD: An Improved Small Object Detection Algorithm for Autonomous Vehicles Based on YOLOv8 | IEEE Journals & Magazine | IEEE Xplore

补充

主干、颈部和检测头是目标检测的典型网络组件。

YOLO系列和SSD都表现出一定程度的相似性。这种相似性来自于模型中包含的缩放和降采样操作,当特征映射达到一定的深度时,这可能会导致对小物体的响应减弱。探测遥远的小物体是最重要的。虽然目前的YOLOv8模型具有显著的能力,但它在检测遥远的小物体方面的准确性落后于其他类别。像素密度的降低、对比度的降低和较低的信息密度阻碍了涉及遥远物体的场景中精确目标定位。为了解决这一挑战,我们提出了一种基于查询的方法来增强YOLO头模块。同时,我们改进了双向特征金字塔网络(BiFPN)的体系结构,对C2f模块进行了修改,并开发了一个新的框架。

特征金字塔的优势:

1. 可以在不增加计算开销的情况下处理目标识别中的多尺度变化的挑战;

2. 提取的特征生成包含高分辨率特征的多尺度特征表示。

( 论文是从层间特征交互作用和特征金字塔内的层内特征调节的角度,提出了一种层内特征调节机制。这种方法旨在解决现有方法在这一关键方面的局限性。)

相关文章:

论文笔记:YOLOv8-QSD 自动驾驶场景小目标检测算法

摘要 YOLOv8-QSD网络是一种新型的无锚点驾驶场景检测网络,建立在YOLOv8的基础上,在保证检测精度的同时保持效率。该网络的骨干网采用结构重参数化技术来转换基于多样化分支块 (DBB) 的模型。 为了准确检测小目标,它集…...

Vue.js状态管理:Vuex与Pinia的比较

在 Vue.js 生态系统中,状态管理是构建复杂应用时的重要组成部分。Vue.js 提供了两种流行的状态管理库:Vuex 和 Pinia。虽然两者都旨在简化状态管理,但它们在设计哲学、API、性能和易用性方面有所不同。本文将深入探讨 Vuex 和 Pinia 的异同&a…...

OJ题目【栈和队列】

目录 有效的括号 有效的括号【代码】 用队列实现栈 用队列实现栈【代码】 用栈实现队列 用栈实现队列【代码】 设计循环队列 有效的括号 https://leetcode.cn/problems/valid-parentheses/submissions/551394950/ 思路:把左括号放到栈里,取出来栈…...

[shell][git]git将当前分支的HEAD指针重置到最后一次提交的状态

在Git中,git reset --hard HEAD 命令用于将当前分支的HEAD指针重置到最后一次提交的状态,并且会丢弃当前工作目录中的所有更改。这个命令的意思是: git reset:重置命令,用于将HEAD指针移动到指定的状态。--hard&#…...

高翔【自动驾驶与机器人中的SLAM技术】学习笔记(六)卡尔曼滤波器二:图解卡尔曼滤波器;卡尔曼滤波器公式理解;面试答法;

上一篇卡尔曼滤波器一中,从整体上认识了,卡尔曼滤波器整体是在做一件什么事。 知道了,协方差就可以理解为偏差,或者误差。 这一篇主要讲卡尔曼滤波器中的公式,理解公式,就能知道如何实现卡尔曼滤波器。 上一篇:卡尔曼滤波器在做一件什么事,这一篇,卡尔曼滤波器怎么…...

高性能日志系统 日志输出模块逻辑

概述 该模块主要实现了一个日志系统的输出模块,通过多态、工厂模式等设计模式,构建灵活的日志输出架构。 功能:格式化完成的标准日志消息,输出到指定为止拓展:支持同时将日志落地到不同的位置,也就是输出日…...

haproxy基础

目录 1 HAProxy介绍 1.1 版本对比 1.2 HAProxy功能 2 参数介绍与实践 2.1 global参数说明 2.2 真实代码格式实例 2.3 常用全局参数 2.3.1 nbproc -- 开启几个进程 2.3.2 cpu-map(CUP绑定) 2.3.3 nbthread 2 --开启2个线程 3 Proxies配置 3.1 Proxies配置-defaults 3.2 Proxi…...

C++ 面试题常用总结 详解(满足c++ 岗位必备,不定时更新)

📚 本文主要总结了一些常见的C面试题,主要涉及到语法基础、STL标准库、内存相关、类相关和其他辅助技能,掌握这些内容,基本上就满足C的岗位技能(红色标记为重点内容),欢迎大家前来学习指正&…...

LVS实验——部署DR模式集群

目录 一、实验环境 二、配置 1、LVS 2、router 3、client 4、RS 三、配置策略 四、测试 1.Director服务器采用双IP桥接网络,一个是VPP,一个DIP 2.Web服务器采用和DIP相同的网段和Director连接 3.每个Web服务器配置VIP 4.每个web服务器可以出外网…...

pythonUI自动化008::allure测试报告(安装及应用)

allure报告预览 1 下载jdk,配置jdk Path变量: https://www.cnblogs.com/FBGG/p/15103119.html(这里不作阐述,请看该偏文章配置即可) 2 下载allure驱动,配置allure Path变量: 下载allure驱动&a…...

常用的 git 和 linux 命令有哪些?

对于 Git 命令: 1. git init:初始化一个新的 Git 仓库。 2. git clone:克隆一个远程仓库到本地。 3. git add:将文件添加到暂存区。 4. git commit:提交暂存区的更改。 5. git status:查看工作区和暂存…...

MYSQL 删除一个字段前,判断字段是否存在

开发过程中经常需要提交可以重复执行的sql,当设计到需要增加字段时,可以参考如下办法: 1.如果是mysql 版本高于5.7.5 ALTER TABLE table_name DROP COLUMN IF EXISTS column_name; 2.通用方法 写一个存储过程,然后用存储过程取…...

vulnstack-5

环境搭建 靶场虚拟机共用两个,一个外网一个内网,用来练习红队相关内容和方向,主要包括常规信息收集、Web攻防、代码审计、漏洞利用、内网渗透以及域渗透等相关内容学习。 虚拟机密码 win7 sun\heart 123.com sun\Administrator dc123.com # …...

回归预测|基于灰狼优化GWO-Transformer-BiLSTM组合模型的数据回归预测Matlab程序 多特征输入单输出

回归预测|基于灰狼优化GWO-Transformer-LSTM组合模型的数据回归预测Matlab程序 多特征输入单输出 文章目录 前言回归预测|基于灰狼优化GWO-Transformer-BiLSTM组合模型的数据回归预测Matlab程序 多特征输入单输出GWO-Transformer-BiLSTM 一、GWO-Transformer-BiLSTM模型二、实验…...

STM32的USB接口介绍

STM32 USB接口是STM32微控制器系列中集成的一种通信接口,它允许STM32微控制器与外部设备或计算机进行高速的数据传输和通信。以下是STM32 USB接口的简要介绍: 1. 接口类型 STM32的USB接口通常支持USB 2.0标准,部分高端型号可能还支持USB 3.…...

【中等】 猿人学web第一届 第2题 js混淆 动态cookie 1

目录 调试干扰Hook Function 加密参数定位hook Cookie AST 解混淆字符串解密还原解密函数AST 配合解密函数还原字符串 ASCII 编码字符串还原字符串相加花指令(对象)剔除无用代码虚假 if剔除无引用代码剔除无引用的对象数值还原 switch 还原完整的 AST 代码代码注意 还原加密 请…...

ubuntu 22.04 安装 docker(服务器从毛胚到精装)

1、用户操作 阿里云默认是 root 用户,我们一般要自己创建一个用户,然后给该用户 sudo 权限 添加用户 sudo adduser newUserName赋予sudo权限 sudo usermod -aG sudo newUserName删除用户 sudo deluser --remove-home --remove-all-files newUserNam…...

Vue3从零开始——如何巧妙使用setup语法糖、computed函数和watch函数

文章目录 一、setup语法糖二、computed函数2.1 computed的基本用法2.2 computed vs methods2.3 注意事项 三、watch函数3.1 watch的基本用法3.2 immediate和deep选项 四、综合小Demo五、总结 一、setup语法糖 之前我们在编写代码时每次都要编写setup()​ ,默认导出配置&#x…...

【C++】 特殊类设计:从构思到实现,引领设计新潮流

🌈 个人主页:Zfox_ 🔥 系列专栏:C从入门到精通 目录 🚀 前言 一: 🔥 不能被拷贝的类 二: 🔥 只能在堆上创建对象的类 三: 🔥 只能在栈上创建对象的…...

性能调优 18. Tomcat整体架构及其设计精髓分析

1. Tomcat介绍 1.1. 介绍 ‌‌‌  这边使用的是Tomcat9来做说明,本章节先对Tomcat架构和设计有个整体认识。后续章节会对Tomcat性能调优做说明。 ‌‌‌  官方文档介绍 ‌‌‌  https://tomcat.apache.org/tomcat-9.0-doc/index.html1.2. Tomcat概念 ‌‌…...

【C++高阶】:特殊类设计和四种类型转换

✨ 人生如梦,朝露夕花,宛若泡影 🌏 📃个人主页:island1314 🔥个人专栏:C学习 ⛺️ 欢迎关注:👍点赞 👂&am…...

kafka基础概念二

1.Kafka中主题和分区的概念 1.主题Topic 主题-topic在kafka中是一个逻辑的概念,kafka通过topic将消息进行分类。不同的topic会被订阅该topic的消费者消费 但是有一个问题,如果说这个topic中的消息非常非常多,多到需要几T来存,因…...

牛客-热身小游戏

题目链接:热身小游戏 第一种写法:线段树 介绍第二种写法:并查集 对于一些已经查询过的点,我们可以往后跳,进行路径压缩,他们的父亲为下一个点。 a数组记录[ l , r ] 之间的乘积,初始值为1。…...

Python 深度学习调试问题

Python–深度学习解决的常见问题 1.在自己写测试样例的时候,有时候可能将要传入的是input_size,不小心传入为input_dim,这个时候会导致出现问题,自定义的卷积模块或者池化等模块会提示类型问题。 解决的策略是: 1.进行assert i…...

linux恶意请求

nginx访问日志: 162.243.135.29 - - [05/Jan/2024:00:12:07 0800] "GET /autodiscover/autodiscover.json?zdi/Powershell HTTP/1.1" 404 153 "-" "Mozilla/5.0 zgrab/0.x"107.151.182.54 - - [04/Mar/2024:11:30:06 0800] "G…...

Java 反射笔记总结(油管)

Java系列文章目录 IDEA使用指南 Java泛型总结(快速上手详解) Java Lambda表达式总结(快速上手详解) Java Optional容器总结(快速上手图解) Java 自定义注解笔记总结(油管) Jav…...

HTML表格、表单、标签、CSS、选择器

目录 一、HTML表格 二、表单 三、布局标签 四、CSS 五、选择器 一、HTML表格 table:表格 tr:行 td:单元格;rowspan:纵向合并相邻单元格;clospan:横向合并相邻单元格 th:单元格加粗居中 border&…...

【javaWeb技术】·外卖点餐小程序(脚手架学习1·数据库)

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀系统学javaWeb开发_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 【免费】项…...

LVS 实现四层负载均衡项目实战--DR模式

一、环境准备 主机名IP地址router eth0:172.25.254.100 eth1:192.168.0.100 clienteth0:172.25.254.200lvseth1:192.168.0.50web1web2 1、client配置 [rootclient ~]# cat /etc/NetworkManager/system-connections/eth0.nmconne…...

Python与Qt的对应版本

Python与Qt的对应版本并没有严格的一一对应关系,但通常在使用Python与Qt进行开发时,会选择一个兼容性较好的版本组合。Qt的Python绑定库主要是PyQt和PySide,以下是几个常见的搭配: 1. **PyQt5**: - Python 3.5及以上版…...