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

【论文笔记】DKTNet: Dual-Key Transformer Network for small object detection

引用格式】:Xu S, Gu J, Hua Y, et al. Dktnet: dual-key transformer network for small object detection[J]. Neurocomputing, 2023, 525: 29-41.

网址https://cczuyiliu.github.io/pdf/DKTNet%20Dual-Key%20Transformer%20Network%20for%20small%20object%20detection.pdf

目录

一、研究背景及意义

二、解决方案

1 创新点

1.1 双键机制

1.2 通道注意力机制

1.3 卷积运算替代全连接层

2 网络架构

2.1 双键机制

2.2 卷积计算QKV

3 Loss损失

3.1 区域建议网络损失

3.2 RoI池化层损失

三、实验结果及结论

1 消融实验

2 结论


一、研究背景及意义

    在计算机视觉领域,目标检测是一项核心任务,广泛应用于自动驾驶、智能监控、增强现实等实际场景。随着深度学习技术的快速发展,诸如Faster R-CNN、YOLO和SSD等目标检测方法取得了显著的进展。然而,小目标检测依然是一个极具挑战性的课题,特别是在复杂场景中,如遮挡、视角远近、背景相似等问题,导致传统的目标检测模型难以在低分辨率的小目标上取得良好的表现。

    为了解决这些问题,文中提出了一种新的Transformer网络架构——DKTNet(双键Transformer网络),专门用于提升复杂场景下的小目标检测性能。通过双键策略和通道注意力机制,提高了模型对小目标的敏感程度,解决了传统检测方法中由于小目标分辨率低、特征模糊导致的漏检和错检问题;同时通过卷积操作取代传统Transformer中的全连接层,减低了模型的复杂度,使得模型高效运行,拥有更好的实用性和可拓展性,适合在资源有限的实际环境中部署。

二、解决方案

1 创新点

1.1 双键机制

      提出了一种新的双键策略,通过同时沿着Query(Q)和Value(V)计算两个Keys(K1和K2),而不是传统的单键连接方法。这种双键整合方法提高了Q和V之间的关联性,使得特征提取更加精准。

1.2 通道注意力机制

     采用通道注意力机制替代传统的空间注意力机制。该方法通过关注特征图中的重要通道,增强了对关键特征的关注,并抑制了不相关或混淆的特征。

1.3 卷积运算替代全连接层

     引入了2D卷积和1D卷积运算,取代了传统Transformer中的全连接层,保持了局部上下文信息,同时降低了计算复杂度。

2 网络架构

    文中提出了一种名为DKTNet(Dual-Key Transformer Network)的双键变压器网络,专为复杂背景中的小物体检测任务设计。该网络的核心思想是通过双键策略和通道注意力机制来增强特征提取的能力,从而提高小物体检测的精度和鲁棒性。

    DKTNet以Faster R-CNN为基础,并结合了ResNet50和特征金字塔网络(FPN)作为主干网络来提取多尺度的特征图。然后,提出的双键变压器模块进一步对这些特征进行处理,以提升目标特征的辨识能力。具体地说,双键策略通过同时计算两条特征流的Key值,增强了Query(Q)和Value(V)之间的相关性。整个网络架构中还采用了卷积运算替代传统的全连接运算,以保持局部上下文信息,同时降低了计算复杂度。

2.1 双键机制

    传统的Transformer通过计算一个Key来关联Query(Q)和Value(V),而DKTNet提出了双键机制,分别沿着Q和V流计算两个Keys(K1和K2),然后将这两个Keys进行整合,以提高Q和V之间的相关性。

     双键机制通过结合不同的特征流,捕捉到更多维度的信息,增强特征表达能力,特别是针对小物体的特征细节,解决了复杂场景中小物体容易被背景干扰的问题。

    不同于常见的空间注意力机制,DKTNet采用通道注意力机制来处理特征图。它通过识别并增强特征图中的重要通道,抑制那些混淆的通道。

    在小物体检测中,重要特征通道的有效提取尤为重要,通道注意力机制帮助提高了对小物体特征的辨识度,使得网络能够更有效地关注到关键信息,忽略干扰。

2.2 卷积计算QKV

    传统Transformer通常采用全连接层来处理Q、K和V,而DKTNet则使用了2D卷积来捕捉局部细节,随后使用1D卷积进一步简化计算。

    2D卷积能够更好地保留图像特征的局部上下文信息,而1D卷积则大幅降低了网络的参数量和计算开销,同时保持较高的检测性能。该设计使得DKTNet在保证性能的前提下,提高了运算效率,适合资源受限的场景。

3 Loss损失

    DKTNet网络的损失函数主要基于Faster R-CNN的设计,结合了区域建议网络(RPN)和ROI池化层(RoIAlign)的输出,最终使用了两种损失函数来优化网络的分类和回归任务。这两种损失分别是分类损失(Classification Loss)和边界框回归损失(Bounding Box Regression Loss)。总损失是区域建议网络损失、RoI池化层损失两个部分的加和,用于共同优化DKTNet的目标检测性能。

  • LRPN是用于RPN(区域建议网络)的损失
  • LRoI是用于目标检测和边界框调整的损失。

3.1 区域建议网络损失

    RPN负责生成可能包含目标的候选区域,并初步调整目标的边界框。RPN损失包含两部分:

  1. 分类损失

    用于衡量RPN生成的候选框是否属于目标区域,使用二元交叉熵损失(binary cross-entropy loss)来计算。公式如下:

  • p_{i}是第i个候选框被预测为目标区域的概率
  • p_{i}^{*}是真实标签

      2.边界框回归损失

      边界框损失Lreg用于回归预测的目标边界框与真实边界框之间的差异,使用平滑L1损失计算:

  • t_{i}是RPN预测的边界框参数
  • t_{i}^{*}是真实的边界框参数

    最终,RPN损失定义为分类损失和回归损失的加权和:

3.2 RoI池化层损失

    RoI池化层将来自RPN的候选区域进一步处理,用于分类和边界框回归。RoI损失同样包含分类损失(Classification Loss)和边界框回归损失(Bounding Box Regression Loss),公式如下:

  • u:当前候选框对应的真实类别标签
  • p:Softmax分类器输出属于类别u的概率
  • t^{u}:表示真实边界框位置
  • v:表示预测的边界框位置
  • λ:当[u ≥ 1]时,λ为1,否则为0

三、实验结果及结论

  • 测试数据集:一般目标检测基准数据集PASCAL VOC 2007、安全帽佩戴数据集GDUT、SHW1和SHW2,均取自真实的建筑场景,并且大部分目标安全帽在图像中都占据较小区域。
  • 硬件配置:Intel(R) Core(TM) i7-6800K CPU @ 3.40GHz; NVIDIA TITAN-XP GPU(12GB显存)
  • 训练配置:Batch Size为2,训练20轮;使用SGD优化器,动量值设置为0.9,用于加速梯度下降并抑制局部波动,权重衰减值为5 × 10^-4,用于防止过拟合并保持模型的鲁棒性;初始学习率设置为5 × 10^-3,每三轮衰减一次,衰减因子为0.33
  • 评估指标:精确率、召回率、AP平均精度、大目标的mAP(大于96×96像素)、中等大小目标的mAP(32×32到96×96像素之间)和小目标的mAP(小于32×32像素)

与Faster-Rcnn相比,大型目标得到了4-14%的提升,中型目标得到了7-15%的提升,小型目标得到了14-25%的提升

文中提出的方法,基本都可以实现最优或者次优的精度

1 消融实验

STL是指Swin Transformer Layer,它是一种基于Swin Transformer的模块,能够通过滑动窗口的方式处理图像的局部信息,同时有效聚合全局上下文信息,更适合小目标检测。

目标检测基准数据集PASCAL VOC 2007实验

第二、三行对比,证明了双键结构提高了性能

第三、四行对比,第四行对特征图进行了转置,以计算通道维度而非空间维度的全局自我注意力,效果有了一定提升

Conv1D和Conv2D参数数和FLOPS分别为56.16M、45.39M和167.38G、285.18G

从第二列和第三列使用双键可以减少背景对检测目标的干扰,从而提高检测精度。

第三列和第四列可以看出,使用通道式注意力捕捉特征的效果明显优于空间式注意力。

第四、五和六列可以看出,卷积代替全连接可以使效果进一步提升

2 结论

文中提出的DKTNet(Dual-Key Transformer Network)的双键变压器网络,专门针对复杂背景中的小目标检测任务进行优化。通过引入双键机制、通道注意力机制,以及采用卷积替代全连接计算,DKTNet在多个数据集上展示了优越的检测性能,尤其在小目标检测中表现出色。

  • 双键机制增强了特征流中Q和V的关联性,提高了特征提取能力,特别是在复杂背景下的小目标检测中表现出色。
  • 通道注意力机制有效选择和增强了关键特征通道,抑制了干扰特征,使模型能够更精确地识别小物目标。
  • 通过引入1D卷积,DKTNet降低了计算复杂度,在保持高精度的前提下提升了计算效率,适合在实际应用场景中部署。

相关文章:

【论文笔记】DKTNet: Dual-Key Transformer Network for small object detection

【引用格式】:Xu S, Gu J, Hua Y, et al. Dktnet: dual-key transformer network for small object detection[J]. Neurocomputing, 2023, 525: 29-41. 【网址】:https://cczuyiliu.github.io/pdf/DKTNet%20Dual-Key%20Transformer%20Network%20for%20s…...

设计模式之适配器模式(Adapter)

一、适配器模式介绍 适配器模式(adapter pattern )的原始定义是:将类的接口转换为客户期望的另一个接口, 适配器可以让不兼容的两个类一起协同工作。 适配器模式是用来做适配,它将不兼容的接口转换为可兼容的接口,让原本由于接口…...

[git] github管理项目之环境依赖管理

导出依赖到 requirements.txt pip install pipreqs pipreqs . --encodingutf8 --force但是直接使用pip安装不了torch,需要添加源!! pip install -r requirements.txt -f https://download.pytorch.org/whl/torch_stable.html想到一个麻烦的…...

【STM32 Blue Pill编程实例】-SD卡文件读写(SPI接口)

SD卡文件读写(SPI接口) 文章目录 SD卡文件读写(SPI接口)1、SD卡模块介绍2、硬件准备与接线3、模块配置3.1 SPI接口配置3.2 SPI接口的片选信号引脚配置3.3 FATFS配置4、代码实现在本文中,我们将介绍如何将 microSD 卡与 STM32 Blue Pill 连接,并在STM32CubeIDE中对SD卡进行…...

为什么需要软件测试?

软件测试 软件测试是评估和验证计算机程序或系统是否按预期运行的过程。 它涉及执行程序或系统以识别预期结果和实际结果之间的任何错误或差距。 目标是确保软件满足指定的要求,没有缺陷,并在不同场景中可靠地工作。 为什么需要软件测试?…...

成为超人:普通人如何白手起家,富一代和富二代的根本区别是什么?

成为超人:普通人如何白手起家,富一代和富二代的根本区别是什么? 我的问题是事业就讲 10 年装逼学习法失效① 光说不练,还是太懒真正的勤奋,解决温饱后,只专注赚钱这件事 ② 信念飘摇,随波流转万…...

Java 集合 Collection常考面试题

理解集合体系图 collection中 list 是有序的,set 是无序的 什么是迭代器 主要遍历 Collection 集合中的元素,所有实现了 Collection 的集合类都有一个iterator()方法,可以返回一个 iterator 的迭代器。 ArrayList 和 Vector 的区别? ArrayList 可以存放 null,底层是由数…...

C++继承与菱形继承(一文了解全部继承相关基础知识和面试点!)

目的减少重复代码冗余 Class 子类(派生类) : 继承方式 父类(基类) 继承方式共有三种:公共、保护、私有 父类的私有成员private无论哪种继承方式都不可以被子类使用 保护protected权限的内容在类内是可以访问,但是在…...

谷歌DeepMind 德米斯·哈萨比斯 因蛋白质预测AI荣获诺贝尔化学奖

2024年诺贝尔化学奖的一半授予了谷歌DeepMind的联合创始人兼首席执行官德米斯哈萨比斯和公司总监约翰M朱姆珀,以表彰他们在利用人工智能预测蛋白质结构方面的研究成果。另一半奖项则授予华盛顿大学生物化学教授大卫贝克,以表彰他在计算蛋白质设计领域的贡…...

内网笔记大全

内网笔记大全 1、基础命令 Windows 1、net user #查看用户 2、net view #查看在线主机 3、systeminfo #查看操作系统的基本配置 4、ipconfig /all #详细显示当前网络配置信息和网卡信息 5、net localgroup #查看本地组信息 6、net localgroup administrators #查看管理员组 7、…...

peft.LoraConfig()参数说明

LoraConfig()介绍 LoraConfig()是peft库中的一个配置类,用于设置大模型微调方法LoRA(Low-Rank Adaptation)的相关参数。PEFT 库为各种参数高效的微调方法(如 LoRA)提供了封装,以减少微调大模型时的计算资源…...

串口(UART)的FPGA设计(接收与发送模块)

目录 串口基础知识 一、什么是串口?有哪些特点? 二、常见的串口通信协议有哪些?他们有什么区别?...

JSON 格式化工具:快速便捷地格式化和查看 JSON 数据

JSON 格式化工具:快速便捷地格式化和查看 JSON 数据 为什么需要 JSON 格式化工具? 在日常开发和调试中,JSON 是非常常见的数据交换格式。无论是前端与后端的接口调用,还是数据存储和处理,JSON 格式都扮演着重要角色。…...

【星汇极客】STM32 HAL库各种模块开发之1.8TFT屏幕

前言 本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三等。 暑假的时候参加了太多的比赛&#…...

Excel中使用SQL语句的四种方法

总结在 Excel 中使用 SQL 语句的四种方法,各种方法都有各自的适用场景,可以选择自己熟悉的或喜欢方式。本文以在 Excel 中操作 MS SQL 数据库的数据为例进行说明。MS SQL 的数据如下,使用微软 SQLExpress 版本。 方法 1: Excel 现…...

目标检测中的损失函数

损失函数是用来衡量模型与数据的匹配程度的,也是模型权重更新的基础。计算损失产生模型权重的梯度,随后通过反向传播算法,模型权重得以更新进而更好地适应数据。一般情况下,目标损失函数包含两部分损失,一个是目标框分…...

list库实现

list库实现的要点&#xff1a; 构建list类时&#xff0c;需要同时构建struct Node来存储节点信息&#xff0c;list类中只存储哨兵位节点信息&#xff0c;迭代器类需要template<T,Ptr,Ref>来构建const和非const迭代器&#xff0c;迭代器中也是存储节点信息。反向迭代器也…...

MFC工控项目实例二十三模拟量输入设置界面

承接专栏《MFC工控项目实例二十二主界面计数背景颜色改变》 1、在SenSet.h文件中添加代码 #include "BtnST.h" #include "ShadeButtonST.h"/ // SenSet dialogclass SenSet : public CDialog { // Construction public:SenSet(CWnd* pParent NULL); //…...

排序算法总结(三)希尔排序

访问www.tomcoding.com网站&#xff0c;学习Oracle内部数据结构&#xff0c;详细文档说明&#xff0c;下载Oracle的exp/imp&#xff0c;DUL&#xff0c;logminer&#xff0c;ASM工具的源代码&#xff0c;学习高技术含量的内容。 如果你在网上搜一下希尔排序&#xff0c;都会告…...

如何迁移 Linux 服务器 第一部分 - 系统准备

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 在许多情况下&#xff0c;您可能需要将数据和操作需求从一个服务器迁移到另一个服务器。您可能需要在新的数据中心实施解决方案&a…...

网络IO模型都有哪些

“网络IO模型有BIO、NIO、AIO ” “他们分别代表什么&#xff0c;有什么区别吗&#xff1f; BIO&#xff1a;同步阻塞IO。 NIO&#xff1a;同步非阻塞IO。 AIO&#xff1a;异步非阻塞IO。 “BIO为什么是同步阻塞IO&#xff0c;他阻塞的是谁跟谁之间的关联&#xff1f;”。 首先…...

数据结构: 数组在算法中的应用

数组是计算机科学中的一种基础数据结构&#xff0c;它在算法中有着广泛的应用&#xff0c;其关键要素是索引与索引对应的值。 请注意&#xff0c;这些代码示例需要适当的辅助函数&#xff08;如 swap &#xff09;和主函数来运行。此外&#xff0c;一些算法&#xff08;如KMP算…...

js快速转换时间(时间戳转换成年月日时分秒)

1&#xff1a;js转换 1728270833000 转换为 2024-10-07 11:13:53 var date new Date(1728270833000); // 参数需要毫秒数&#xff0c;所以这里将秒数乘于 1000 Y date.getFullYear() -; M (date.getMonth()1 < 10 ? 0(date.getMonth()1) : date.getMonth()1) -; D…...

LeetCode15.三数之和

题目链接&#xff1a;15. 三数之和 - 力扣&#xff08;LeetCode&#xff09; 1.常规解法&#xff08;会超时&#xff09; 由于这道题需要排除相同的三元组&#xff0c;则可以先将目标数组从小到大排序&#xff0c;再遍历数组找到每个符合条件的三元组&#xff0c;若结果中不包…...

SpringBoot3.3 优雅启停定时任务

定时任务是非常常见的功能,在一个复杂的应用程序中,如何优雅地管理这些定时任务的启动与停止尤为重要。 Spring Boot 提供了强大的任务调度支持,通过@Scheduled注解可以轻松地创建定时任务,并且可以通过配置来灵活地管理这些任务的执行环境。在本文中,我们将深入探讨如何…...

数据结构之二叉搜索树(key模型与key_value模型)

二叉搜索树&#xff08;key模型与key_value模型&#xff09; 1. ⼆叉搜索树的概念2. ⼆叉搜索树的性能分析3. ⼆叉搜索树的插⼊4. ⼆叉搜索树的查找5. ⼆叉搜索树的删除6. ⼆叉搜索树的实现代码7. ⼆叉搜索树key和key/value使⽤场景7.1 key搜索场景&#xff1a;7.2 key/value搜…...

图说几何学2300年重大错误:附着在直线z上的直线段必是z的一部分

黄小宁 用泡沫塑料和油漆制成的铅球与真正的铅球&#xff0c;两者有不同的内部形状。同样&#xff0c;数学有长度相同但内部形状不同的伪≌直线段。 几何学有史2300年来一直认定附着在直线z上的直线段一定是z的一部分。其实这是2300年肉眼直观错觉——百年病态集论的症结。 …...

汽车网关(GW)技术分析

一、引言 在现代汽车电子系统中&#xff0c;汽车网关&#xff08;Gateway&#xff0c;简称 GW&#xff09;扮演着至关重要的角色。随着汽车电子技术的不断发展&#xff0c;汽车内部的电子控制单元&#xff08;Electronic Control Unit&#xff0c;简称 ECU&#xff09;数量不断…...

Telnet命令详解:安装、用法及应用场景解析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…...

C++之LIST模拟实现(代码纯享版)

目录 文章目录 前言 一、代码 总结 前言 本文主要展示了模拟List的代码实现 一、代码 #pragma once #include<iostream> #include<assert.h> using namespace std; namespace zlh {template<class T>struct list_node{T _data;list_node<T>* _next;l…...

做素材网站存储/网络营销的主要内容包括

一、聚集索引与辅助索引 在数据库中&#xff0c;B树的高度一般都在2~4层&#xff0c;这也就是说查找某一个键值的行记录时最多只需要2到4次IO&#xff0c;这倒不错。因为当前一般的机械硬盘每秒至少可以做100次IO&#xff0c;2~4次的IO意味着查询时间只需要0.02~0.04秒。 数据库…...

网站建设装修/网店营销策划方案范文

一、高级程序员 如果你是一个刚刚创业的公司&#xff0c;公司没有专职产品经理和项目经理&#xff0c;你就是公司的产品经理&#xff0c;你如果对你现在的开发员能力不满&#xff0c;那么你只需要的是一个高级程序员。 你定义功能、你做计划推进和管理&#xff0c;他可以带1-2个…...

湖南现在有什么网站做农副产品/宁波的网络营销服务公司

2019独角兽企业重金招聘Python工程师标准>>> 关联更新 update A,B SET A.c1B.c1,A.c2B.c2 where A.idB.id and ...update A inner join B on A.idB.id set A.c1B.c1,A.c2B.c2 where...关联查询 交叉连接(cross join),内连接(inner join),外连接(left join,right joi…...

江苏建设工程信息网官网/seo关键词优化软件手机

题目描述 Baidu 的服务器上使用的不是北京时间&#xff0c;而是 Baidu 时间。 Baidu 时间的时分秒与北京时间相同&#xff0c;但是日期与北京时间不同&#xff0c;是用一个正整数表示从 2000 年 1 月 1 日 起的第几天。 现在就请大家设计一个程序将北京时间转换为百度时间。…...

wordpress怎样做单页网站/泰安seo推广

引言 在上一小节中&#xff0c;我们介绍了SVM的对偶形式&#xff0c;该形式也可以使用二次规划的方式来求解。 这个对偶形式告诉我们SVM背后的一些集合意义&#xff0c;再者&#xff0c;有了这个对偶问题&#xff0c;我们要求解的难度和转换的高维空间的维度好像没有关系。 …...

企业为什么要培训/一个网站可以优化多少关键词

少一点重复&#xff0c;多一点精彩...