当前位置: 首页 > 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…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

微信小程序 - 手机震动

一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注&#xff1a;文档 https://developers.weixin.qq…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

PHP 8.5 即将发布:管道操作符、强力调试

前不久&#xff0c;PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5&#xff01;作为 PHP 语言的又一次重要迭代&#xff0c;PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是&#xff0c;借助强大的本地开发环境 ServBay&am…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

第八部分:阶段项目 6:构建 React 前端应用

现在&#xff0c;是时候将你学到的 React 基础知识付诸实践&#xff0c;构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段&#xff0c;你可以先使用模拟数据&#xff0c;或者如果你的后端 API&#xff08;阶段项目 5&#xff09;已经搭建好&#xff0c;可以直接连…...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》

近日&#xff0c;嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》&#xff0c;海云安高敏捷信创白盒&#xff08;SCAP&#xff09;成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天&#xff0c;网络安全已成为企业生存与发展的核心基石&#xff0c;为了解…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示&#xff0c;全球市场规模预计在 2031 年达到 9848 万美元&#xff0c;2025 - 2031 年期间年复合增长率&#xff08;CAGR&#xff09;为 3.7%。在竞争格局上&#xff0c;市场集中度较高&#xff0c;2024 年全球前十强厂商占据约 74.0% 的市场…...