计算机视觉 day94 DDH - YOLOv5:基于双IoU感知解耦头改进的YOLOv5,用于对象检测

news2024/11/28 2:51:57

DDH - YOLOv5:基于双IoU感知解耦头改进的YOLOv5,用于对象检测

  • I. Introduction
  • II. Related work
    • Prediction head 预测头
  • III. Methodology
    • 3.1 Decoupled Head
    • 3.2 Double IoU‑aware
    • 3.3 Training
    • 3.4 Inference
  • IV. Experiments
    • 4.1 与YOLOv5等检测头对PASCAL VOC2007测试进行比较
    • 4.2 与COCO2017验证集上的可变形DETR进行比较
    • 4.3 与COCO2017验证集上的YOLOF进行比较
    • 4.4 与COCO2017测试开发集上的YOLOv4的比较
  • V. Conclusion

YOLOv5头部的分类任务和回归任务的共同分支会对训练过程造成伤害,分类得分与定位精度的相关性较低。我们提出了一种双iou感知解耦头(DDH),并将其应用于YOLOv5。改进后的模型命名为DDH-YOLOv5,在不显著增加FLOPS和参数的情况下,显著提高了模型的定位精度。在PASCAL VOC2007数据集上的大量实验表明,DDH-YOLOv5具有良好的性能。与YOLOv5相比,本文提出的DDH-YOLOv5m和DDH-YOLOv5l的平均精度(AP)分别提高了2.4%和1.3%。

I. Introduction

由于YOLO系列的主干和特征金字塔(不断进化),它们的检测头保持耦合,如图1所示。image-20230521105143030YOLO检测头的结构。a) YOLO检测头使用来自颈部的特征映射。b)分类任务、回归任务和对象任务共用一个分支

然而,在耦合头中,分类和定位是两个不同的任务,但它们具有几乎相同的参数。

image-20230521105311677基于解耦头,我们将空间敏感热图如图2所示。第一列为原始图像,第二列为空间敏感的热图,用于分类,第三列为定位。越暖和,颜色越好。

这种基本任务在空间维度上的错位极大地限制了探测头的性能。换句话说,如果检测器试图从同一个空间点/锚推断分类分数和回归结果,它总是会得到一个不完美的权衡结果。

另一方面,分类子网络和定位子网络由独立的目标函数训练,彼此之间不存在关联。因此,在单级检测器中,分类分数与定位精度的相关性较低,严重影响了模型的定位精度。IoUaware retavanet也证明了这种低相关性会影响检测器的性能。

为了解决上述问题,本文基于YOLOv5提出了一种改进的模型DDH-YOLOv5。与YOLO检测头相比,双iou感知解耦头采用解耦头解决分类和定位任务之间的冲突,包括分类分支和回归分支。同时,回归分支中增加了一条感知ioU的路径,增强了检测结果中分类分数与定位精度之间的相关性。与YOLOv5相比,改进的DDH-YOLOv5具有更好的定位精度和更快的收敛速度。

II. Related work

Prediction head 预测头

在DyHead中,提出了一个检测头,用于在单个框架中实现尺度感知、空间感知和任务感知的注意。

在YOLOX中,将YOLO检测头替换为一个精简解耦头,它是分类分支和回归分支之前的1 × 1 Conv层,以降低通道维数。

YOLOF还应用了分类和回归分支,并为回归头部的每个锚点添加了隐式的对象性预测(没有直接监督)。

在Double-Head R-CNN中,提出了一种新的检测头,该检测头采用全连接头进行分类,并采用卷积头进行边界盒回归。

本文将YOLO检测头替换为双Iou感知解耦头(Double IoU-aware uncoupling head, DDH),提高了模型的定位精度和收敛速度。

III. Methodology

image-20230521141209535如图3所示,DDH-YOLOv5的基线和neck与YOLOv5相同,但DDH-YOLOv5采用了双欠条感知解耦头(Double IoU-aware decoupling Head, DDH)作为预测头,提高了目标检测性能。

3.1 Decoupled Head

image-20230521142026826我们将图1中的YOLO检测头替换为图4中的双iou感知解耦头(Double IoU-aware decoupling head, DDH)。image-20230521142118183由图5可以看出,用双iou感知解耦头代替解耦头具有更快的收敛速度和更好的性能。实验证明,双iou感知解耦头结构的设计能够解决分类和回归任务之间的冲突,加快模型的收敛速度。

3.2 Double IoU‑aware

在介绍部分,我们提到了在单级检测器上分类分数和定位精度之间的相关性很低。在推理过程中,这种低相关性会以两种方式损害模型的平均精度(AP)。

首先,对检测项进行标准非最大抑制(standard non - maximum suppression, NMS)时,对所有检测项进行分类评分。分类分数最高的检测会抑制重叠度高于人工设置阈值的其他检测。因此,分类分数低但IoU高的检测会被分类分数高但IoU低的检测所抑制。其次,在计算平均精度(AP)时,根据分类分数对检测进行排序;分类分数低而欠条数高的检测,定位精度较高,但等级较低。

YOLOv5在计算Obj路径的二进制交叉熵损失(binary cross-entropy loss, BCE)时,将CIoU的最小值设置为0,这极大地限制了分类分数与定位精度之间的相关性。

3.3 Training

image-20230521142702545

IoU-aware loss (LI)采用二元交叉熵损失(BCE),只计算正例损失,如(1)所示。IoUi表示每个检测框的预测IoU,̂IoUi是(2)所示回归的正bi与对应的地真盒bi之间计算的目标IoU。是否计算LI相对于IoUi的梯度将影响模型的性能。由于在训练过程中计算了LI对IoÛi的梯度,因此可以将IoUaware路径的梯度反向传播到回归路径。这减少了预测IoU (IoUi)和目标IoU(̂IoUi)之间的差距,并使预测IoU与目标IoU更相关。

DDH-YOLOv5中,总损失如式(3)所示,Lo和Lc分别为YOLOv5的物性损失和YOLOv5的分类损失,Wc和Wo分别为Lo和Lc的权重系数,Lr为YOLOv5的回归损失,WI为LI的权重系数,Wr为Lr和LI共有的权重系数。

3.4 Inference

在推理过程中,如(4)所示,将分类分数Clsi乘以对象度分数Obji,并预测IoU IoUi作为每个被检测框的最终检测置信度Sdet。image-20230521142813529

IV. Experiments

4.1 与YOLOv5等检测头对PASCAL VOC2007测试进行比较

image-20230521142849638上标†表示采用了TPH-YOLOv5[32]中的变压器预测头。上标‡表明使用了YOLOX[8]中的解耦头,其宽度系数与YOLOX相同。我们所有的训练和测试都使用512 × 512分辨率的PASCAL VOC2007数据集,并且训练时间表是“2倍”。

image-20230521143116578训练时总损失值和mAP值。这两个模型都应用了解耦头和双iou感知。Total loss和mAP用PASCAL VOC2007测量,NMS IoU阈值为0.6

4.2 与COCO2017验证集上的可变形DETR进行比较

image-20230521142917332顶部部分显示变形DETR[33]的结果。我们在640×640分辨率上训练和测试dhh - yolov5m,训练时间表是“1x”(12 epoch)和“3x”(36 epoch)

4.3 与COCO2017验证集上的YOLOF进行比较

image-20230521142941399

顶部显示了YOLOF[3]的结果。YOLOF采用ResNet-50作为骨干,带有R101或X101后缀的模型表示使用ResNet-101或RetNeXt-101-64× 4d作为骨干。我们在640×640分辨率上训练和测试dhh - yolov5,训练时间表是“1x”(12 epoch)

4.4 与COCO2017测试开发集上的YOLOv4的比较

image-20230521143021959上面的部分显示了YOLOv4的结果。在608×608分辨率下对模型进行训练和测试,将模型转换为FP16半精度后测量推理时间,在2080Ti上测量FPS

V. Conclusion

本文针对YOLOv5检测头存在的问题,提出了一种基于YOLOv5的改进模型DDH-YOLOv5,包括解耦头以解决分类和定位任务之间的冲突,以及双iou感知路径以增强检测结果中分类分数和定位精度之间的相关性。在MS COCO2017数据集和PASCAL VOC2007数据集上的大量实验表明,双iou感知解耦头(Double IoU-aware 解耦头,DDH)能够显著提高模型性能,并且收敛速度更快。我们希望这份报告能够帮助开发人员和研究人员更好地体验单级物体检测器。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Netty实战(五)

ByteBuf—Netty的数据容器 一、什么是ByteBuf二、 ByteBuf 的 API三、ByteBuf 类——Netty 的数据容器3.1 ByteBuf如何工作?3.2 ByteBuf 的使用模式3.2.1 堆缓冲区3.2.2 直接缓冲区3.2.3 复合缓冲区 四、字节级操作4.1 随机访问索引4.2 顺序访问索引4.3 可丢弃字节4…

使用Docker部署Jenkins

Jenkins是一款开源的持续集成(DI)工具,广泛用于项目开发,能提供自动构建,测试,部署等功能。 文章目录 1、安装2、配置镜像加速3、登录初始化Jenkins4、配置Jenkins 1、安装 接下来使用Docker部署Jenkins&a…

【腾讯云 Finops Crane集训营】关于Crane的认识和体验总结

一、Crane 是什么 Crane 是一个基于 FinOps 的云资源分析与成本优化平台。它的愿景是在保证客户应用运行质量的前提下实现极致的降本。Crane 是 FinOps 基金会认证的云优化方案。 Crane基于Docker和Kubernetes技术,支持常见的容器化应用场景,如部署多个…

分布式项目 09.服务器之间的通信和三个工具类

项目的结构:1.通过Nginx首先把访问首页的请求发送到前端web服务器,2.web服务器会根据请求的url中的一些细节,来把相关的请求发送到相关的服务器中,3.相关的服务器会处理业务,并且返回结果到web服务器中,最后…

Godot引擎 4.0 文档 - 循序渐进教程 - 节点和场景

本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面: Nodes and Scenes — Godot Engine (stable) documentation in English 节点和场景 在Godot 关键概念概述中,我们看到 Godot 游戏是一棵场景树&#xff0…

算法训练-二分查找

这里写目录标题 34. 在排序数组中查找元素的第一个和最后一个位置162. 寻找峰值153. 寻找旋转排序数组中的最小值33. 搜索旋转排序数组 34. 在排序数组中查找元素的第一个和最后一个位置 题目链接 vector<int> searchRange(vector<int>& nums, int target) {i…

集合 集合

目录 ArraryList 引用基本类型 案例1&#xff1a;定义一个集合添加学生姓名年龄 案例2&#xff1a;查看是否存在这个id 案例3&#xff1a;手机 案例4&#xff1a;学生管理系统&#xff08;不完整&#xff09; Collection collection遍历方式 迭代遍历&#xff08;不依赖…

深度学习用于医学预后-第二课第四周13-15节-使用生存数的非线性风险评估模型

使用生存数的非线性风险评估模型 在这堂课中&#xff0c;你将学习关于生存树的知识。你将学习如何将患者的变量纳入考虑&#xff0c;比较不同患者的风险。 你将看到生存树与二叉决策树相似&#xff0c;可以让你构建模型来捕捉患者数据中的非线性关系。 在这堂课中&#xff0…

分布式运用之rsync远程同步

1.rsync的相关知识 1.1 rsync简介 rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09;是一个开源的快速备份工具&#xff0c;可以在不同主机之间镜像同步整个目录树&#xff0c;支持增量备份&#xff0c;并保持链接和权限&#xff0c;且采用优化的同步算法&#…

怎么使用树莓派总要了解一点它的软硬件吧。什么模块有什么用,需要什么准备才能安全的看到树莓派的开机界面

Raspberry Pi(中文名为“树莓派”,简写为 RPi&#xff0c;(或者 RasPi / RPI)只有信用卡大小的微型电脑&#xff0c;其系统基于 Linux。随着 Windows 10 IoT 的发布&#xff0c;我们也将可以用上运行 Windows IoT 的树莓派。别看其外表“娇小”&#xff0c;内“心”却很强大&am…

Doxygen 源码分析: SymbolMap类

2023-05-21 10:59:35 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz 文章目录 1. Doxygen 版本2. SymbolMap 类概要3. 添加符号: SymbolMap<T>::add()4. 删除符号: SymbolMap<T>::remove()5. 符号查找: SymbolMap<T>::find()6. 哪里用了…

1.golang的介绍、环境安装和编译器安装

一、Go的介绍 Go语言其实是Golanguage的简称&#xff0c;Go&#xff08;又称 Golang&#xff09;是 Google 的 Robert Griesemer&#xff0c;Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译并发型语言。Go 语言语法与 C 相近&#xff0c;但功能上有&#xff1a;内存安全…

Doxygen 源码分析: Definition类

2023-05-21 13:05:28 ChrisZZ imzhuofoxmailcom Hompage https://github.com/zchrissirhcz Blog https://blog.csdn.net/baiyu33 文章目录 1. Doxygen 版本2. Definition 类和它的8个子类3. Definition 类的 Private 成员4. Definition 类的 Public 成员4.1 特殊成员函数4.2 获…

(学习日记)AD学习 #1

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

Linux基本操作指令2

目录 指令1&#xff1a;rmdir指令&#xff1a; 指令2&#xff1a;rm命令&#xff1a; 指令3&#xff1a;man指令&#xff1a; 指令4&#xff1a;cp指令&#xff1a; 指令5&#xff1a;mv指令&#xff1a;类似于Windows的剪贴 指令6&#xff1a;cat指令 指令7&#xff1a;…

QT5.15.0使用gcc-arm-8.2-2018.08-x86_64-arm-linux-gnueabihf交叉编译的问题总结

目录 一、交叉编译 二、操作中踩过的坑 1、环境变量未生效 2、交叉编译QT代码操作 3、烧录时报错缺少xcb问题 4、小白的细小错误 三、--platform命令 3、1 -platform linuxfb 详细文档请点击此处 我的文档在原文档的基础上添加了非常详细的提醒&#xff0c;可以少走弯路…

软件性能测试过程详解与案例剖析

软件性能测试是软件开发过程中至关重要的一环&#xff0c;它能够帮助我们确保软件在不同负载和使用情况下的表现。在软件性能测试中&#xff0c;我们通常会关注软件的响应时间、吞吐量、并发用户数等指标&#xff0c;以评估软件性能。 软件性能测试过程主要分为以下几个步骤&am…

leetcode:322. 零钱兑换(暴力dfs,记忆化dfs,动态规划(朴素+优化),bfs+贪心)

记录常规的完全背包问题模型 1.暴力dfs2.优化dfs&#xff0c;记忆化dfs3.动态规划4.bfs 1.由于每件物品可以无限取&#xff0c;那么可以发现这是一个完全背包问题模型。 1.暴力dfs 最后要求的是&#xff1a;n种硬币&#xff0c;凑成总金额为amount。每种硬币无限取&#xff0…

Java8 教你一行代码搞定:如何计算map中value值

大家好&#xff0c;我是三叔&#xff0c;很高兴这期又和大家见面了&#xff0c;一个奋斗在互联网的打工人。 这期给大家讲一下在Java编程中&#xff0c;如何使用Java8对map的值进行计算&#xff0c;在实际开发中&#xff0c;也是经常遇到统计map中的value值之和。 Map是一种常…

Web安全:文件上传漏洞测试.

Web安全&#xff1a;文件上传漏洞测试. 现在大多的网站和Web应用系统都会有上传功能&#xff08;比如&#xff1a;文档&#xff0c;图片&#xff0c;头像&#xff0c;视频上传等.&#xff09;&#xff0c;而程序员在开发文件上传功能时&#xff0c;没有对代码做严格校验上传文…