CrossFormer: A versatile vision transformer hinging on cross-scale attention
时间: 2025-07-06 09:48:24 浏览: 12
### CrossFormer Vision Transformer Overview
CrossFormer是一种基于跨尺度注意力机制的多功能视觉变换器模型,旨在通过多尺度特征融合提升计算机视觉任务的表现。该架构设计的核心在于引入了跨尺度自注意力(Cross-Scale Self-Attention, CSSA)模块,使得网络能够在不同分辨率下捕捉到丰富的上下文信息。
#### 跨尺度自注意力机制
CSSA允许CrossFormer在同一层内处理来自多个感受野的信息。具体来说,对于给定的一组图像补丁(patch),CSSA会计算它们与其他尺度上的补丁之间的相似度得分,并据此调整权重分配。这种机制有助于捕获更广泛的空间依赖关系,从而提高对复杂场景的理解能力[^1]。
#### 实现细节
在实现方面,CrossFormer采用了分层结构,每一层都由若干个CSSA单元组成。以下是主要的技术特点:
- **多尺度输入表示**:每个多头自注意(Multi-head Self-Attention, MSA)操作前先将输入划分为固定数量的不同尺寸的小窗口(window partition)[^2]。
- **相对位置编码**:采用可学习的位置偏置来建模token间的关系,而不是绝对坐标,这增强了模型泛化能力和效率[^3]。
- **高效降采样策略**:利用卷积神经网络(Convolutional Neural Networks, CNNs)中的池化(pooling)方法作为替代方案,在减少计算量的同时保持足够的表达力[^4]。
```python
class CrossScaleSelfAttention(nn.Module):
def __init__(self, dim, num_heads=8, qkv_bias=False, attn_drop=0., proj_drop=0.):
super().__init__()
self.num_heads = num_heads
head_dim = dim // num_heads
# Define linear layers for queries, keys and values with optional bias term.
self.qkv = nn.Linear(dim, 3 * dim, bias=qkv_bias)
...
def forward(self, x):
B, N, C = x.shape
qkv = self.qkv(x).reshape(B, N, 3, self.num_heads, C // self.num_heads).permute(2, 0, 3, 1, 4)
...
```
阅读全文
相关推荐
















