【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

问题解决啦!!!🌺🌺🌺

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

相关推荐
奔跑中的小象3 小时前
统信UOS + 天数AI卡部署SGLang服务手册
人工智能·uos·sglang·天数智芯
DevSecOps选型指南3 小时前
中国版Mythos,为何是悬镜安全灵脉CodeAI?
人工智能·安全
Shockang4 小时前
LangGraph 状态机实战
人工智能
DLYSB_4 小时前
存储运维实战:基于 Ceph Event 监听与 Python 适配器的分布式存储健康度物理声光响应架构
运维·ceph·python·报警灯
刹那芳华19924 小时前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作4 小时前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门4 小时前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜4 小时前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟4 小时前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦4 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能