【YOLOv8改进[注意力]】YOLOv8添加DAT(Vision Transformer with Deformable Attention)助力涨点

目录

[一 DAT](#一 DAT)

[二 YOLOv8添加DAT助力涨点](#二 YOLOv8添加DAT助力涨点)

[1 总体修改](#1 总体修改)

[2 配置文件](#2 配置文件)

[3 训练](#3 训练)

其他


一 DAT

官方论文地址https://openaccess.thecvf.com/content/CVPR2022/papers/Xia_Vision_Transformer_With_Deformable_Attention_CVPR_2022_paper.pdf

Transformers 最近在各种视觉任务上表现出色。这个大的,有时甚至是全局的,感受野赋予了Transformer模型比它们的同行CNN模型具有更高的表示能力。然而,单纯地扩大接受野也会引起一些问题。一方面,在ViT中使用密集关注会导致过多的内存和计算成本,并且特征可能受到超出兴趣区域的不相关部分的影响 。另一方面,PVT或Swin Transformer中采用的稀疏关注是数据不可知的 。为了解决这些问题,++++本文提出了一种新的可变形自注意力模块++++其中自注意力中的键和值对的位置以根据数据需要的方式选择 。这种灵活的方案使自注意力模块能够专注于相关区域并捕获更多信息特征。在此基础上,提出了一种具有可变形注意力的通用backbone模型------ Deformable Attention Transformer,用于图像分类和密集预测任务。通过广泛的试验, 结果表明,模型在综合基准上取得了持续改进的结果。

官方代码地址GitHub - LeapLabTHU/DAT: Repository of Vision Transformer with Deformable Attention (CVPR2022) and DAT++: Spatially Dynamic Vision Transformerwith Deformable Attention

本文提出了一种Deformable Attention Transformer,它是一种新型的分层视觉Transformer,可以同时适应图像分类和密集预测任务,即插即用 。利用可变形的注意力模块,模型能够以数据依赖(关注重要的区域) 的方式学习稀疏注意力模式并建模几何变换,只关注图像的一小部分关键区域,减少计算量。简言之,改善了视觉Transformer的效率和性能。大量的实验证明了模型在竞争基线上的有效性。

上图1为DAT与其他Vision Transformer模型和CNN模型中DCN的比较。

红星和蓝星表示不同的查询,带实线边界的掩码表示查询所涉及的区域。

以数据不可知的方式:

  • (a) ViT对所有查询采用**++++全关注++++**。
  • (b) SwinTransformer采用**++++分割窗注意力++++**。

以数据依赖的方式:

  • (c) DCN为每个查询**++++学习不同的变形点++++**。
  • (d) DAT学习所有查询的**++++共享变形点++++**。

上图2是可变形的注意力机制的描述。

(a)表示可变形注意力的信息流。在左侧部分,一组参考点被均匀放置在特征图上,这些参考点的偏移量从查询通过偏移网络中学习。然后根据变形点从采样特征投影出变形的键和值,如图所示。通过变形点计算相对位置偏差,增强了输出变换特征的多头注意力。为了清晰的展示,上图只展示了4个参考点,实际上在实际实现中还有更多的参考点。

(b)显示了偏移量生成网络的详细结构,标记了每层输入和输出特征图的大小。

上图3是DAT架构。N1到N4是堆叠连续的局部注意和移动窗口/可变形注意块的数量。K和s表示patch embeddings中卷积层的核大小和步长。

下图是COCO验证集上最重要的键的可视化。橙色圆圈表示在多头上传播注意力得分最高的关键点。半径越大得分越高。请注意,右下角的图像显示了一个人挥舞着球拍打网球。

二 YOLOv8添加DAT助力涨点

ultralytics的版本为8.1.47,如下图所示:

1 总体修改

① 添加DAT .py文件

ultralytics/nn/modules目录 下新建DAT .py文件,内容如下所示:

② 修改ultralytics/nn/tasks.py文件

具体的修改内容如下图所示:

  1. ++++对于++++ ++++无参数++++ ++++的注意力机制,++++ ++++到此就完成了全部的修改++++ ++++。++++
  2. ++++对于++++ ++++有参数++++ ++++的注意力机制,还要进行++++ ++++额外的修改++++ ,如下

搜索"parse_model",然后修改其内容,如下所示:

本文的方法需要按照有参数的注意力机制进行修改,但是在yaml文件中不需要传入参数,因为已经设置了自动计算的方式。

2 配置文件

yolov8_ DAT .yaml的内容如下所示:

3 训练

上述修改完毕后,开始训练吧!🌺🌺🌺

训练示例如下:

bash 复制代码
yolo task=detect mode=train model=cfg/models/v8/yolov8_DAT.yaml data=cfg/datasets/coco128.yaml epochs=300 batch=16 device=cpu project=yolov8

先关注 + 点赞 + 评论,然后私信我要DAT .py 文件和yolov8_ DAT .yaml 文件吧****!****

其他

1 报错💔💔💔

ModuleNotFoundError: No module named 'einops'

解决方法 💚 💚 💚

bash 复制代码
pip --default-timeout=100 install einops -i https://pypi.tuna.tsinghua.edu.cn/simple

问题解决啦!!!🌺🌺🌺

2 报错💔💔💔

ModuleNotFoundError: No module named 'timm'

解决方法💚 💚 💚

bash 复制代码
pip --default-timeout=100 install timm -i https://pypi.tuna.tsinghua.edu.cn/simple

问题解决啦!!!🌺🌺🌺

到此,本文分享的内容就结束啦!遇见便是缘,感恩遇见!!!💛 💙 💜 ❤️ 💚

相关推荐
Hylan_J1 小时前
【VSCode】MicroPython环境配置
ide·vscode·python·编辑器
莫忘初心丶1 小时前
在 Ubuntu 22 上使用 Gunicorn 启动 Flask 应用程序
python·ubuntu·flask·gunicorn
牧歌悠悠3 小时前
【深度学习】Unet的基础介绍
人工智能·深度学习·u-net
坚毅不拔的柠檬柠檬3 小时前
AI革命下的多元生态:DeepSeek、ChatGPT、XAI、文心一言与通义千问的行业渗透与场景重构
人工智能·chatgpt·文心一言
坚毅不拔的柠檬柠檬3 小时前
2025:人工智能重构人类文明的新纪元
人工智能·重构
jixunwulian4 小时前
DeepSeek赋能AI边缘计算网关,开启智能新时代!
人工智能·边缘计算
Archie_IT4 小时前
DeepSeek R1/V3满血版——在线体验与API调用
人工智能·深度学习·ai·自然语言处理
失败尽常态5234 小时前
用Python实现Excel数据同步到飞书文档
python·excel·飞书
2501_904447744 小时前
OPPO发布新型折叠屏手机 起售价8999
python·智能手机·django·virtualenv·pygame
青龙小码农4 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx