《一种改进的YOLOv5用于无人机捕获场景中的目标检测》论文笔记

       无人机图像处理中的目标检测逐渐成为近年来的研究热点。一般目标检测算法在应用于无人机场景时往往会显著下降。这是因为无人机图像是从高空拍摄的,分辨率高,小物体比例很大。为了在满足轻量化特性的同时提高无人机目标检测的精度,我们对YOLOv5s模型进行了修改。针对小目标检测问题,增加了预测头,以更好地保留小目标特征信息。还集成了CBAM注意力模块,以更好地在密集场景中找到注意力区域。原有的IOU-NMS在后处理中被NWD-NMS取代,以减轻IOU对小物体的敏感性。实验表明,我们的方法在数据集Visdrone-2020上具有良好的性能,并且mAP比原来有明显的改进。

------CBAM注意力模块、IOU-NMS、NWD-NMS(对于小物体的检测)

       随着无人机技术的发展,无人机的应用场景不断扩大,引起了研究人员的极大关注。无人机能够在对人类相对危险的环境中执行任务,并且可以快速轻松地部署。它们在现代战斗中发挥着极其重要的作用,在民用应用中具有更广阔的视野。[16]无人机可用于完成战场侦察监视、损害评估,也可用于灾害监视、交通巡逻和安全监控。由于无人机任务的特殊性,无人机图像的处理相对困难。因此,无人机的计算机视觉逐渐成为研究的热点之一。

       目标检测作为一项经典任务,已成为无人机图像处理中具有挑战性的主流。目标检测可以定位和识别视频或图像中的对象,帮助我们在特定应用场景中进行分析并做出适当的决策。

       但是,由于无人机图像是从高空捕获的,因此它们与COCO [1]或ImageNet [2]数据集上的图像有很大不同。由于无人机捕获的图像分辨率高,小物体比例高,通用目标检测方法在无人机图像数据集上表现不佳。以 VisDrone-2020 数据集为例,该数据集中的边界框大部分尺寸小于 50*50 像素,小物体占多数。这使得目标检测算法的检测精度大大降低,无法充分利用。

------目标检测算法的检测精度大大降低.

       虽然也有算法部署来提高小物体检测的精度,但在检测精度和速度之间仍然难以很好地平衡。由于其出色的性能和速度,YOLO [15] 已成为无人机平台上经常使用的优越网络。以YOLOv5s为例,原始模型在VisDrone-66数据集上的检测速度可以达到2020 FPS,但平均精度仅为12.7%。[3] YOLOv5 系列中其他三个功能更强大的模型在一定程度上提高了准确性,但模型大小和推理时间显着增加。尽管YOLOv11使用的镶嵌数据增强[5]可以有效解决模型训练中最具挑战性的小物体问题,但其在VisDrone-2020数据集上的精度并不令人满意。

       因此,针对数据集VisDrone-5中的小目标检测问题,我们改进了YOLOv2020s模型,通过以下三大改进:1.在骨干网络中的C4模块中增加了一个CBAM [3]注意力模块;2.增加预测头P2,用于小物体检测;3. 使用NWD-NMS [5]在后处理过程中过滤边界框。最后,我们得到的改进模型与原来的YOLOv5s模型相比,检测准确率有显著提高,mAP从32.9%提高到40.7%。与其他方法相比,我们的方法提高了每种物体的检测精度,特别是对于人和电机等小物体。

       本节概述了拟议研究工作的相关工作,包括以下两个主要方面:无人机图像中的小物体检测和目标检测。

A. 小物体检测

       在目标检测算法开发的早期阶段,为了保证检测的精度,大多数数据集由突出的物体组成。近年来,越来越多的学者关注小目标检测,并提出了有效的解决方案。目前主流的小目标检测方法主要分为多尺度特征学习、数据增强和基于GAN的检测。

       多尺度特征学习结合了深层语义信息和浅层表征信息,便于小目标的特征提取,提高了小目标检测的性能。在深度神经网络中,由于特征信息的丢失,很难在深度特征图中检测小物体。浅层特征图的感受野较小,但可以获得更多的空间和详细的特征信息。因此,Liu等人[6]提出了一种单点探测器(SSD)来从特征图生成不同尺度的预测,使用浅层特征来检测小物体,使用深层特征来检测较大的物体。为了获得更好的特征融合效果,Lin等人[7]提出了一种特征金字塔网络(FPN),该网络引入自上而下的网络结构,通过融合相邻层的特征来实现特征增强。随后,许多学者基于FPN进行了许多改进,这些改进显着提高了检测精度。虽然多尺度特征融合可以有效提高小目标检测的性能,但也增加了额外的计算工作量,并且难以避免特征融合过程中干扰噪声的影响,这使得基于多尺度特征的小目标检测性能难以进一步提高。

       数据增强策略目前在目标检测领域具有广泛的应用。数据增强的目的是增加数据集的多样性并扩大数据集的大小,从而提高深度学习的性能。针对小天体样本在训练数据集中占比相对较少的情况,Kisantal等人[8]提出了一种复制增强方法,通过复制粘贴来增加小天体的训练样本数量,而Chen等人[9]对图像进行缩放和拼接,以增加中小型物体的数量和质量,以解决小天体数量少、小天体少的问题。其中包含的信息。虽然数据增强策略在一定程度上解决了信息量小的问题,但计算复杂度的增加和对不同对象进行优化的需求使算法设计具有挑战性。

       生成对抗网络(GAN)可以将低分辨率小物体的特征映射到等效于高分辨率物体的特征。Li等人[10]提出了一种用于小物体检测的感知GAN模型,该模型通过生成器将感知到的小物体的较差表示转换为类似于大物体的超分辨率表示来欺骗鉴别器。同时,判别器与生成器竞争识别生成的表示,生成器生成的小物体表示必须有利于检测。GAN无需特殊结构设计即可提高检测性能,但难以训练。

------文献综述(所参考的前人的研究)

B. 无人机图像中的目标检测

       无人机航拍图像通常具有背景复杂、物体小、视野大的特点,使用一般场景数据集进行训练任务很难取得满意的结果。考虑到无人机图像数据集的缺乏,近年来学者们逐渐开始开发一系列无人机视觉数据集。

       DroneVehicle数据集主要面向车辆检测和车辆计数,包含涵盖白天和黑夜时间段以及物体遮挡和尺度变化的RGB图像和红外图像。DOTA数据集由来自多个传感器和平台的不同分辨率的航空图像组成,包含不同比例,方向和形状的对象。VisDrone 2020 数据集由无人机获取,包含 10 多个视频和 000,2 多个不同天气和照明条件下的静止图像,并提供场景可见性、对象类别和遮挡等重要属性。每张图像包含大量检测到的物体,总共包含6万个标记框,物体与大量小物体之间存在重叠,使其成为一个非常具有挑战性的数据集。

注意力模块     

       注意力机制的目的是使模型能够获得要关注的目标区域,并在该部分上赋予更多权重,这意味着突出显示重要特征并抑制不相关的特征。

       Woo等人[4]提出的卷积块注意力模块(CBAM)是一个简单有效的前馈卷积神经网络注意力模块。如图2所示,CBAM从输入特征图推断出通道和空间两个独立维度的注意力图,并将注意力图与输入特征图相乘,进行自适应特征细化。CBAM通过将信道信息聚焦的特征表示与空间信息聚焦的位置信息混合提取信息特征,有效地帮助信息在网络中流动。CBAM是一种轻量级的通用模块,可以集成到任何骨干网络中以提高性能。

       CBAM是一种混合域注意力机制,图3说明了信道注意力模块和空间注意力模块的具体计算过程。对于信道注意力模块,给定输入特征图,得到两个不同的空间语义描述算子,并在全局平均池化和全局最大池化运算后通过共享感知器。将两个通道注意力特征向量相加以融合。最后,在激活函数后得到通道注意力向量。对于空间注意力模块,给定输入特征图,沿通道维度进行全局平均池化和全局最大池化运算,分别得到两个不同的通道特征描述算子,将两者拼接在一起,用卷积核7*7进行卷积运算。最后,得到激活函数后的空间注意力向量。

作为即插即用的注意力模块,CBAM可以轻松插入YOLOv5型号。在本文中,我们选择将CBAM添加到C3模块中。C3模块是从原来的瓶颈CSP模块改造而来的,该模块包含三个标准卷积层和几个瓶颈模块,该模块作为学习残差特征的主模块。引入注意力机制的 YOLOv5 的骨干结构如图 4 所示。

预测头 P2

       由于 Visdrone 2020 数据集包含许多极小的物体,且 YOLOv5 的下采样乘数较大,因此更深的特征图很难学习小物体的特征信息。如图4所示,原始网络结构具有P3、P4和P5预测头的分辨率低,缺乏低级特征表示,使得原始模型难以学习小物体的特征。因此,我们增加了一个用于小目标检测的预测头P2,它与原有的三个预测头相结合,以减轻目标尺度变化的负面影响。P2预测头的特征信息仅下采样<>次,分辨率更高,特征图信息更完整,对小目标检测更有利。虽然添加额外的预测头后计算工作量增加,导致推理检测速度下降,但小目标检测的性能有所提高。

NWD-NMS

       在目标检测的预测阶段,输出许多候选框,其中许多重叠的预测边界框围绕同一对象,因此我们需要通过非极大抑制(NMS)来抑制冗余预测边界框。IOU 在原始 YOLOv5 模型中直接用作度量。首先,根据其置信水平对所有预测框进行排名,并选择置信水平最高的预测框,并删除所有其他IOU高于预定义阈值的框,即抑制非最大置信边界框。此过程以递归方式执行,直到没有一对边界框太相似。

       但是,IOU 对小对象的敏感性可能导致许多预测框的 IOU 值低于预定义的阈值,从而导致误报预测。如图 5 所示,每个网格表示一个像素,框 A 表示真实边界框,框 B 和 C 表示分别偏离 <> 像素和 <> 个像素的预测边界框。可以看出,对于正常大小的物体,微小的位置变化对IOU的影响并不大。但是,当物体尺寸非常小时,较小的位置偏差会导致IOU显着降低。因此,基于IOU的NMS对于小物体检测并不理想。

       IOU的本质是计算两个样本集的相似性,因此wang等人[5]建议使用Wasserstein距离来测量边界框的相似性,而不是IOU。首先,将边界框建模为二维高斯分布,然后使用提出的归一化瓦瑟斯坦距离(NWD)来度量导出的高斯分布的相似性。与IOU相比,NWD在检测小物体时对不同尺度不敏感,同时能够测量非重叠或相互包含的边界框之间的相似性。因此,对于小物体检测,NWD的性能远高于IOU。

       因此,我们将原YOLOv5s模型中的IOU-NMS改为NWD-NMS,可以有效过滤小目标的预测框,提高小目标检测的性能。

------论文所提出来的模型,以及模型之中各个概念、公式等等的理解。

消融实验

       我们选择Visdrone-2020数据集作为实验数据集,研究无人机视觉中的目标检测问题。根据无人机图像的特点,我们对YOLOv5s模型进行了三点改进:(1)增加CBAM模块,(2)增加P2预测头,(3)采用NWD-NMS。我们通过精度、召回率和mAP对改进的模型进行综合评估。

       我们修改后的方法运行时环境:CPU 是 Intel i7 11800H,GPU 是 Nvidia RTX3080,操作系统是 Windows。本文采用改进的YOLOv5s网络结构进行训练,初始学习率设置为0.01,批量大小设置为16,学习周期数设置为300。

       如表I所示,为了验证三种改进方法的有效性,我们使用消融实验进行测试。实验是通过将每个模块分别添加到原始模型中并依次验证每个模块的影响来进行的。实验结果表明,每种改进方法对原始模型都有一定的改进效果。首先是增加了CBAM注意力模块,与原始模型相比,mAP略有改善,推理速度略有提高。然后是最有效的P2预测头,由于P2预测头保留了更丰富的小物体特征信息,并且可以很好地检测无人机图像中的小物体,因此它大大提高了mAP。虽然增加检测头增加了额外的计算工作量,但它也很好地提高了小物体的检测性能。NWD-NMS的改进也在一定程度上提高了mAP,采用<>种改进方法得到的最终模型与原始模型相比,mAP有了很大的改进。

       实际场景中的检测效果如图6所示。图6a显示了原始YOLOv5s模型的检测结果,可以看出图像中存在明显的遗漏和误检,例如左上角的卡车被误检为汽车,左下角左侧区域中的小物体未被检测到。如图6b所示,在我们改进的模型的检测结果中,一些原本误检的物体被纠正,许多以前未检测到的低清晰度小物体被检测出来。可以看出,我们改进的方法在实际检测中仍然非常有效。

       在表II中,我们将我们的方法与其他方法进行了比较。我们选择了委员会提交的几种基线算法与我们的方法进行比较,毫无疑问,我们修改后的方法比委员会提交的结果具有更好的AP。仔细比较每个类别的AP,我们可以发现几乎每个类别的AP都有所提高。特别是对人、汽车、电机等小物体的检测精度。得到了很大的改进。这表明我们的方法在小目标检测问题中起着重要作用。还可以注意到,对于遮阳篷三轮车、公共汽车等数量较少的物体,我们做得不够好。这也是我们的缺点,如果这个问题解决了,我们的精度将进一步提高。

总结

       本文分析了当前无人机捕捉场景中目标检测算法存在的问题,针对无人机图像中高分辨率、小目标占比大的特点,对YOLOv5s模型进行了三点改进。最终的实验结果表明,我们改进的模型比原来的模型更适用于Visdrone-2020数据集,并且每个模块都能很好地提高该数据集的目标检测精度。与其他方法相比,我们的方法在性能方面也更胜一筹,特别是在小物体检测方面。此外,这项研究还有一些局限性。首先,通过实验对比可以发现,虽然我们的方法对于小物体检测的精度有所提高,但对于一些标签数量较少的类别,如遮阳篷三轮车和公共汽车,我们的精度改进并不令人满意。此外,我们的方法仅在 Visdrone-2020 数据集上进行了验证,这有一些局限性。未来将考虑在更多无人机场景中的适用性。

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

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

相关文章

浅谈机器学习--聚类

还不了解机器学习&#xff1f;来看&#xff01; 目录 一.聚类 二.k均值聚类算法(k-means) 1.k均值聚类算法的流程 二.k均值算法的改进 1.二分k-means算法 2.k-means算法 3.k-medoids算法 4.Mini Batch k-means算法 三.DBSCAN算法 1.​编辑-邻域 2.核心点和边界点 …

关于TextureRender适配的解决方案

当我们用摄像机渲染出一个图片&#xff0c;显示在UI的时候&#xff0c;会发现&#xff0c;你如果自适配&#xff0c;那么就会拉伸图片&#xff0c;导致人物或者场景变形。 我最近就遇到了这个事&#xff0c;这里我给出几种问题和解决方案&#xff1a; 1 &#xff1a;当我们想…

NSSCTF Round#11 --- 密码个人赛 wp

文章目录ez_encMyMessageMyGameez_signinez_facez_enc 题目&#xff1a; ABAABBBAABABAABBABABAABBABAAAABBABABABAAABAAABBAABBBBABBABBABBABABABAABBAABBABAAABBAABBBABABABAAAABBAAABABAABABBABBBABBAAABBBAABABAABBAAAABBBAAAABAABBBAABBABABAABABAAAAABBBBABAABBBBAAAAB…

开心档之开发入门网-C++ 变量类型

C 变量类型 目录 C 变量类型 C 中的变量定义 C 中的变量声明 实例 实例 C 中的左值&#xff08;Lvalues&#xff09;和右值&#xff08;Rvalues&#xff09; 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有指定的类型&#xff0c;类型决定了变量存储的大小…

Java多线程:线程组

线程组 可以把线程归属到某一个线程组中&#xff0c;线程组中可以有线程对象&#xff0c;也可以有线程组&#xff0c;组中还可以有线程&#xff0c;这样的组织结构有点类似于树的形式&#xff0c;如图所示&#xff1a; 线程组的作用是&#xff1a;可以批量管理线程或线程组对象…

电脑清理怎么做?5个方法帮你解决电脑空间不足的问题!

案例&#xff1a;电脑清理怎么做&#xff1f; 【求一个电脑清理的好方法&#xff01;电脑垃圾文件太多了又不敢随意删除&#xff0c;怕误删重要的文件&#xff01;哪位友友可以帮我出出主意呀&#xff1f;到底应该怎么清理电脑呢&#xff1f;】 电脑使用的时间长了都会慢慢变…

(链表)合并两个排序的链表

文章目录前言&#xff1a;问题描述&#xff1a;解题思路&#xff1a;代码实现&#xff1a;总结&#xff1a;前言&#xff1a; 此篇是针对链表的经典练习。 问题描述&#xff1a; 输入两个递增的链表&#xff0c;单个链表的长度为n&#xff0c;合并这两个链表并使新链表中的节…

用队列实现栈和用栈实现队列

目录用队列实现栈创建栈实现入栈实现出栈判空取栈顶元素释放用栈实现队列创建队列入队出队返回队列开头的元素判空释放前面我们实现了栈和队列&#xff0c;其实栈和队列之间是可以相互实现的 下面我们来看一下 用 队列实现栈 和 用栈实现队列 用队列实现栈 使用两个队列实现一…

Windows创建用户,添加到管理员组,添加到远程桌面组、RDP

原因&目的 在获得反弹shell后无法得到明文密码&#xff0c;无法远程桌面登录 在目标机器创建新的账号&#xff0c;且为管理员账号&#xff0c;可以远程桌面登录 cmd /c net user gesila 123 /add cmd /c net localgroup Administrators gesila /add cmd /c net localgro…

优思学院 | 质量工程师的职责有哪些?

质量工程师&#xff0c;是一位肩负着质量管理、质量控制和质量改进使命的职业人员。他们身负使命&#xff0c;不断探究、发现、改进&#xff0c;为企业打造出更加卓越、可靠的产品和服务。 在大多数企业中&#xff0c;质量工程师是一个非常重要的职位&#xff0c;他们的职责在…

智能立体车库plc以太网无线应用

一、项目背景 此项目为平面移动类智能停车库&#xff0c;是以传感器网络为支撑的物联网智能停车管理系统。比较于传统的停车场模式&#xff0c;智能立体车库不仅占地少&#xff0c;空间利用率高&#xff0c;智能化程度高&#xff0c;采用集约化系统化的车位管理、收费管理&…

Vue3 集成Element3、Vue-router、Vuex实战

第一步&#xff1a;使用Vite快速搭建Vue 3项目 基础操作总结&#xff1a; npm init vite-app 项目名称cd 项目名称npm installnpm run dev 温馨提示&#xff1a;如果还是Vue 2 环境请参考&#xff1a;Vue 2 升级Vue3 &#xff0c;并且使用vsCode 搭建Vue3 开发环境 Vue 3 …

ARM uboot 启动 Linux 内核

一、编译厂商提供的 uboot 此处&#xff0c;我使用的是九鼎提供的 uboot &#xff1a; 二、烧录 uboot 到 SD 卡 进入 uboot 的 sd_fusing 目录&#xff0c;执行命令烧写 uboot &#xff1a; ./sd_fusing.sh /dev/sdb。 三、将 SD 卡插入开发板&#xff0c;进入 uboot 按任意…

操作系统-内存管理

一、总论 1.1 硬件术语 ​ 为了不让读者懵逼&#xff08;主要是我自己也懵逼&#xff09;&#xff0c;所以特地整理一下在后面会用到术语。 ​ 我们电脑上有个东西叫做内存&#xff0c;他的大小比较小&#xff0c;像我的电脑就是 16 GB 的。它是由 ROM 和 RAM 组成的&#x…

RK3588平台开发系列讲解(同步与互斥篇)信号量介绍

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、信号量介绍二、信号量API1、结构体2、API三、函数调用流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢上一章我们看了自旋锁的原理,本章我们一起学习下信号量的用法。 一、信号量介绍 和自旋锁一样,…

渗透测试综合实验(迂回渗透,入侵企业内网并将其控制为僵尸网络)

第1节 实验概述 1.1 实验背景概述 本实验为模拟真实企业环境搭建的漏洞靶场&#xff0c;通过网络入侵Web服务器&#xff0c;拿到控制权限后发现有内网网段&#xff0c;建立隧道做内网穿透&#xff0c;接着进一步扫描内网主机&#xff0c;并进行漏洞利用&#xff0c;最终通过域…

java登录页面验证码的生成以及展示

1、代码示例 后端返回前端一个字节数组。 2、gif图面展示 网页中一张图片可以这样显示&#xff1a; <img src“http://www.jwzzsw.com/images/log.gif”/>也可以这样显示&#xff1a; <img src“data:image/gif;base64,R0lGODlhAgACAIAAAP///wAAACwAAAAAAgACAAACAo…

聚会Party

前言 加油 原文 聚会常用会话 ❶ He spun his partner quickly. 他令他的舞伴快速旋转起来。 ❷ She danced without music. 她跳了没有伴乐的舞蹈。 ❸ The attendants of the ball are very polite. 舞会的服务员非常有礼貌。 ❶ Happy birthday to you! 祝你生日快乐!…

Linux--高级IO--poll--0326

1. poll #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout); poll只负责等。 参数介绍 fds 是一个结构体类型的地址&#xff0c;相比于select中的fd_set类型,pollfd结构体可以内部封装一些遍历&#xff0c;解决需要关系那些文件描述符&#…

ES6新特性保姆级别教程【建议收藏】

文章目录1、ECMAScript 6 简介1.1、ECMAScript 和 JavaScript 的关系1.2、ES6 与 ECMAScript 2015 的关系1.3、ECMAScript 的历史2、let 和 const 命令2.1、let 命令2.1.1、基本用法2.1.2、不存在变量提升2.1.3、不允许重复声明2.1.4、暂时性死区2.2、const 命令2.2.1、基本用法…