Ultralytics YOLO27: 加入候补名单。
获取 YOLO 许可
返回 Ultralytics 术语表

Deformable Attention

可变形注意力让每个查询关注参考位置周围少量经过学习的采样点,而非特征图中的所有位置。

可变形注意力是一种用于计算机视觉的注意力机制:每个查询只关注参考位置周围固定数量的采样点,而不是特征图上的所有位置。查询本身会预测这些点相对于参考位置的偏移量,以及每个点的权重,因此计算成本随查询和采样点数量增长,而不随图像分辨率增长。SenseTime、中国科学技术大学和香港中文大学的 Xizhou Zhu、Jifeng Dai 等人提出了这项技术,并发表了论文 Deformable DETR,该论文入选 ICLR 2021 口头报告。它解决了原始 DETR 检测Transformer的两个缺点:完整注意力将其限制在低分辨率特征上,而训练需要 500 个轮次。Deformable DETR 所需轮次减少了 10 倍,并且对小目标的检测效果更好。

可变形注意力的工作原理#

这一思路扩展自可变形卷积,Dai 也参与了该技术的开发;可变形卷积会学习卷积核采样点的偏移量。对于具有参考点的每个查询,每个注意力头都会对查询特征应用两个线性层:一个预测 K 个采样偏移量,另一个预测 K 个注意力权重,并通过 softmax 进行归一化。由于偏移量可能是小数,因此会使用双线性插值读取每个偏移点上的值特征,随后注意力头返回这些特征的加权和。论文使用 8 个头和 K = 4 个采样点,因此每个查询在每张特征图上读取 32 个位置,而标准自注意力会为每个像素计算分数。下面用几行 PyTorch 代码即可实现单头、单尺度版本:

import torch
import torch.nn.functional as F

torch.manual_seed(0)
dim, n_points, n_queries = 32, 4, 100
value = torch.randn(1, dim, 64, 64)  # a 64x64 feature map: 4,096 positions
query = torch.randn(n_queries, dim)
ref = torch.rand(n_queries, 2) * 2 - 1  # reference points in grid_sample's [-1, 1] coordinates

# Each query predicts where to look (offsets) and how much each sample counts (weights)
to_offsets, to_weights = torch.nn.Linear(dim, n_points * 2), torch.nn.Linear(dim, n_points)
offsets = 0.1 * to_offsets(query).view(n_queries, n_points, 2)
weights = to_weights(query).softmax(dim=-1)

# Bilinearly sample the value map at reference + offset, then take the weighted sum
grid = (ref[:, None] + offsets)[None]  # (1, n_queries, n_points, 2)
sampled = F.grid_sample(value, grid, align_corners=False)[0]  # (dim, n_queries, n_points)
out = (sampled * weights).sum(dim=-1).T  # (n_queries, dim)
print(f"Output {tuple(out.shape)} from {n_queries * n_points} samples, not {n_queries * 64 * 64:,} dense scores")

它会打印 Output (100, 32) from 400 samples, not 409,600 dense scores:100 个查询中的每个查询都会读取 4,096 个位置中的 4 个。训练会调整偏移量层和权重层,使采样点逐渐移向有助于完成任务的图像区域。

多尺度可变形注意力#

对象的大小差异很大,因此 Deformable DETR 会同时在多张特征图上采样点。对于 L 个层级,每个注意力头都会在每个层级上选取 K 个点,并对全部 L × K 个点的权重统一归一化,从而一步混合细粒度与粗粒度特征,并在其编码器中取代了特征金字塔网络(FPN)。编码器会将其用作自注意力,把每个层级的每个像素都作为查询;解码器则会将其用作交叉注意力,让对象查询关注图像特征。

RT-DETR是百度推出、可在 Ultralytics 软件包中使用的实时检测 Transformer,它将多尺度可变形注意力用作六个解码器层中的交叉注意力:300 个对象查询中的每一个都会在步幅为 8、16 和 32 的特征图上,通过 8 个头分别采样 4 个点,总计 96 个位置;而对于 640 像素图像,这些特征图上的完整交叉注意力需要为 8,400 个位置计算分数。

应用场景#

  • 目标检测:包括 DINO 和 RT-DETR 在内的 Deformable DETR 后续模型,在解码器中保留了可变形交叉注意力,使它们能够读取小目标所需的高分辨率特征。
  • 自动驾驶汽车:BEVFormer 会将多个车载摄像头的图像投影到鸟瞰视角网格中,每个网格单元都会在能够看到该单元的摄像头视图中采样可变形点。
  • 全景分割:Mask2Former 会先使用可变形注意力构建多尺度像素特征,然后再预测掩码。
  • 滑动窗口注意力:关注由位置决定的固定邻域,对每个输入都相同。
  • 稀疏注意力:为预先选定的固定词元位置对计算分数。
  • Flash attention:通过在 GPU 片上内存中分块处理,加速常规密集注意力计算,结果与标准注意力相同。
  • 视觉 Transformer(ViT)注意力:比较每个图像块与其他所有图像块,因此计算成本随图像块数量的平方增长。

探索解决方案

体育领域的计算机视觉

体育领域的计算机视觉

了解 Ultralytics YOLO 如何通过球员和球追踪、表现分析、教练洞察及运动员康复,推动体育视觉技术的发展。
了解详情
航空影像计算机视觉

航空影像计算机视觉

使用 Ultralytics YOLO 将无人机和航空影像转化为农业、水产养殖、保护工作和地理空间分析的实时洞察。
了解详情
航空航天中的计算机视觉

航空航天中的计算机视觉

使用 Ultralytics YOLO 将计算机视觉应用于航空航天领域,包括飞机检查、跑道 FOD 检测、机场地面作业和复合材料缺陷检测。
了解详情
安防领域的计算机视觉

安防领域的计算机视觉

使用 Ultralytics YOLO 模型守护每个场所。视觉 AI 可用于周界监控、威胁检测、车牌识别和工作场所安全。
了解详情
机器人领域的计算机视觉

机器人领域的计算机视觉

使用 Ultralytics YOLO 模型提升智能机器的能力。机器人领域的视觉 AI 可用于自主导航、感知、目标跟踪和实时控制。
了解详情
物流中的计算机视觉

物流中的计算机视觉

借助 Ultralytics YOLO 模型优化物流流程。视觉 AI 可用于包裹检查、分拣、车辆跟踪和仓库安全实时监控。
了解详情
零售中的计算机视觉

零售中的计算机视觉

借助 Ultralytics YOLO 模型重新构想零售。视觉 AI 可用于库存跟踪、货架监控、排队管理和更深入的客户洞察。
了解详情
医疗领域的计算机视觉

医疗领域的计算机视觉

借助 Ultralytics YOLO 模型构建医疗解决方案。医疗领域的视觉 AI 可加快医学影像处理、优化诊断并监测患者。
了解详情
制造业中的计算机视觉

制造业中的计算机视觉

利用 Ultralytics YOLO 模型优化制造流程。视觉 AI 可用于质量控制、缺陷检测、个人防护装备合规检查和装配线自动化。
了解详情
汽车领域的计算机视觉

汽车领域的计算机视觉

利用 Ultralytics YOLO 模型在汽车领域应用计算机视觉。视觉 AI 可提升道路安全、驾驶辅助和车辆自动化水平,让道路更智能。
了解详情
农业中的计算机视觉

农业中的计算机视觉

借助 Ultralytics YOLO 模型,将视觉 AI 引入智慧农业。为作物监测、牲畜追踪和精准农业提供支持,从而提高产量并实现更智能的生产。
了解详情

让我们携手构建 AI 的未来!

开启你的旅程,迎接机器学习的未来