TPH-YOLOv5:基于Transformer预测头的改进YOLOv5,用于无人机捕获场景的目标检测

本文主要是介绍TPH-YOLOv5:基于Transformer预测头的改进YOLOv5,用于无人机捕获场景的目标检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要

        提出了TPH-YOLOv5。在YOLOv5的基础上,增加了一个预测头来检测不同尺度的目标。然后用Transformer Prediction Heads(TPH)代替原有的预测头,探索自注意机制的预测潜力。还集成了卷积块注意力模型(CBAM),用来发现密集对象场景中的注意力区域。为了实现所提出的TPH-YOLOv 5的更多改进,提供了一些有用的策略,如数据增强,多尺度测试,多模型集成和使用额外的分类器设计了跨层非对称Transformer(CA-Trans)来代替额外的预测头,同时保持该预测头的知识。该算法通过引入稀疏局部注意(SLA)模型,有效地捕获了附加头与其他头之间的非对称信息,丰富了其他头的特征。

        为了进一步提高TPH-YOLOv5的性能,在训练过程中采用了数据增强,这促进了对图像中对象的剧烈尺寸变化的适应性。在推理过程中加入了多尺度测试和多模型集成策略,使检测结果更有说服力。此外,通过可视化的故障情况下,提出的架构有很好的本地化能力,但具有较差分类能力,特别是在一些类似的类别,如“三轮车”和“遮阳篷三轮车”。为了解决这个问题,提供了一个自我训练的分类器(ResNet18),使用从训练数据中裁剪的图像块作为分类训练集。

创新点

        ·增加了一个预测头来处理对象的大规模方差。

        ·将Transformer Prediction Heads(TPH)集成到YOLOv5中,可以在高密度场景中准确定位对象。

        ·将CBAM集成到YOLOv5中,它可以帮助网络在具有大区域覆盖的图像中找到感兴趣的区域。

        ·使用自训练的分类器提高了对易混淆类别的分类能力。

TPH-YOLOv5

(1)Overview of YOLOv5

        YOLOv5有四种不同的型号,包括YOLOv5s,YOLOv5m,YOLOv5l和YOLOv5x。一般来说,YOLOv5分别使用CSPDarknet 53的架构,其中SPP层作为主干,PANet作为Neck和YOLO检测头。为了进一步优化整个体系结构,提供了最著名和最方便的一级探测器,选择它作为基线。

        当使用VisDrone2021数据集使用数据增强策略(Mosaic和MixUp)训练模型时,发现YOLOv5x的结果远远优于YOLOv5s,YOLOv5m和YOLOv5l,AP值的差距差距超过1.5%。尽管YOLOv5x模型的训练计算成本比其他三种模型都要高,但仍然选择使用YOLOv5x来追求最佳的检测性能。此外,根据无人机拍摄图像的特点,调整常用的光度失真和几何失真参数。

(2)TPH-YOLOv5

        TPH-YOLOv5的框架如图3所示。对原始YOLOv5进行了修改,使其专门用于VisDrone2021数据集。

Prediction head for tiny objects

        预测微小物体的头。增加了一个预测头用于微小物体检测。与其他三种预测头相结合,四头结构可以缓解剧烈的对象尺度变化带来的负面影响。如图3所示,添加的预测头(头1号)是从低级别、高分辨率的特征图中生成的,对微小物体更敏感。增加一个额外的检测头后,虽然计算量和内存开销增加,但微小目标检测的性能得到了很大的提高。

Transformer encoder block

        Transformer编码器块。用Transformer编码器块替换了原始版本YOLOv5中的一些卷积块和CSP瓶颈块。其结构如图4所示。与CSPDarknet53中的原始瓶颈块相比,Transformer编码器块可以捕获全局信息和丰富的上下文信息。每个Transformer编码器包含两个子层。第一子层是多头注意层,第二子层(MLP)是全连接层。在每个子层之间使用剩余连接。Transformer编码器块提高了捕获不同本地信息的能力。它还可以利用自我注意机制探索特征表征潜力。

        基于YOLOv5,只在头部分应用Transformer编码器块,形成Transformer Prediction Head(TPH)和主干的末端。因为网络末端的要素地图分辨率较低。在低分辨率特征地图上应用TPH可以减少昂贵的计算和存储开销。此外,当扩大输入图像的分辨率,有选择地删除一些TPH块在早期层,使训练过程可用。

Convolutional block attention module (CBAM):

        卷积块注意模块(CBAM)。CBAM是一个简单但有效的注意模块。它是一个轻量级的模块,可以集成到大多数著名的CNN架构中,并且可以以端到端的方式进行训练。CBAM在给定特征图的情况下,沿着通道和空间两个独立的维度顺序地推断注意力图,然后将注意力图与输入特征图相乘以执行自适应特征细化。CBAM模块的结构如图5所示。

        在无人机捕获的图像上,大面积的覆盖区域往往包含着易混淆的地理要素。利用CBAM提取注意区域,帮助TPH-YOLOv5抵抗混淆信息,将注意力集中到有用的目标对象上。

Ms-testing and model ensemble:

        Ms检验和模型集成。本文从模型集成的不同角度训练了五种不同的模型。在推理阶段,首先对单个模型执行ms-检验策略。ms-testing的实现细节有以下三步。

        1)将测试图像缩放至1.3倍。

        2)分别将图像缩小1倍、0.83倍和0.67倍。

        3)水平翻转图像。

        最后,将6幅不同尺度的图像输入到TPH-YOLOv5中,并利用NMS对预测结果进行融合。在不同的模型上,执行相同的ms检验操作,并通过WBF融合最后的五个预测,以获得最终结果。

Self-trained classifier:

        自我训练的分类器。使用TPH-YOLOv5对VisDrone 2021数据集进行训练后,对test-dev数据集进行测试,并通过可视化故障案例对测试结果进行分析,得出TPH-YOLOv5具有较好的定位能力,但分类能力较差的结论。进一步研究了混淆矩阵,并观察到一些硬类别(如三轮车和遮阳三轮车)的精度很低。因此,提出了一个额外的自训练分类器。首先,构建了TPH-YOLOv5,并使用TPH-YOLOv5对VisDrone 2021数据集进行了训练,然后对test-dev数据集进行了测试,通过可视化失败案例对测试结果进行了分析,得出了TPH-YOLOv 5具有良好的定位能力但分类能力较差的结论。

这篇关于TPH-YOLOv5:基于Transformer预测头的改进YOLOv5,用于无人机捕获场景的目标检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126696

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

Python调用另一个py文件并传递参数常见的方法及其应用场景

《Python调用另一个py文件并传递参数常见的方法及其应用场景》:本文主要介绍在Python中调用另一个py文件并传递参数的几种常见方法,包括使用import语句、exec函数、subproce... 目录前言1. 使用import语句1.1 基本用法1.2 导入特定函数1.3 处理文件路径2. 使用ex

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

SpringBoot使用Apache Tika检测敏感信息

《SpringBoot使用ApacheTika检测敏感信息》ApacheTika是一个功能强大的内容分析工具,它能够从多种文件格式中提取文本、元数据以及其他结构化信息,下面我们来看看如何使用Ap... 目录Tika 主要特性1. 多格式支持2. 自动文件类型检测3. 文本和元数据提取4. 支持 OCR(光学

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2