Tan_pytorch_segmentation/pytorch_segmentation/PV_Model/改进.py

75 lines
3.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
多头自注意力:
多尺度窗口: 考虑使用多尺度窗口或重叠窗口以捕捉更多样的空间依赖性。
动态窗口大小: 实现基于输入分辨率或特征图特征的动态窗口大小。
位置编码:
可学习的绝对位置编码: 除了相对位置编码,还可以加入绝对位置编码来编码全局位置信息。
旋转位置编码RoPE: 使用旋转位置编码RoPE更好地捕捉自注意力机制中的相对位置。
注意力机制:
跨窗口注意力: 实现跨窗口的注意力机制以实现不同窗口之间的信息流动。
全局上下文块: 集成全局上下文块以捕捉超越局部窗口的长距离依赖。
效率改进:
线性注意力: 使用线性注意力机制例如Performer、Linformer将自注意力的二次复杂度降低到线性复杂度。
内存高效注意力: 实现内存高效的注意力机制例如Reformer以更高效地处理大型特征图。
特征聚合:
特征金字塔网络FPN: 使用FPN从不同层次聚合多尺度特征以增强网络的表示能力。
注意力增强卷积网络: 将卷积操作与注意力机制相结合,以利用两者的优势。
好的,我将详细介绍局部分支和全局分支的结构。
### 局部分支 (ImprovedLocalAttention)
**结构概述:**
1. **多尺度卷积操作**
- 使用了三种不同大小的卷积核1x1、3x3 和 5x5。
- 这些卷积核用于提取不同尺度的特征,从而捕捉局部区域的多层次信息。
2. **批归一化**
- 在卷积操作之后,使用 Batch Normalization 对特征图进行标准化。
- 这样可以加速训练并稳定模型性能。
3. **Squeeze-and-Excitation (SE) 模块**
- SE 模块首先通过全局池化对输入特征图进行降维。
- 然后通过两个全连接层生成每个通道的权重。
- 最后通过 Sigmoid 激活函数生成的权重重新作用到输入特征图上,增强重要特征,抑制不重要特征。
**工作原理:**
局部分支通过不同尺度的卷积核捕捉细粒度的局部特征,然后通过 SE 模块增强这些特征。这个模块特别适用于捕捉图像中的局部细节信息。
### 全局分支 (MultiHeadGlobalAttention)
**结构概述:**
1. **多头自注意力机制**
- 使用多头注意力机制,将输入特征图分成多个头,每个头独立进行注意力计算。
- 通过一个 1x1 卷积生成查询Q、键K和值V向量。
2. **相对位置编码**
- 如果启用了相对位置编码,模型会使用相对位置偏置来调整注意力得分。
- 这增强了模型对空间位置的感知能力,使得注意力机制能够更好地捕捉全局信息。
3. **注意力计算**
- 计算查询和键的点积,并乘以缩放因子。
- 应用 softmax 函数计算注意力权重,并将这些权重应用于值向量。
4. **特征映射**
- 通过一个 1x1 卷积层将多头注意力的输出映射回输入的维度。
**工作原理:**
全局分支通过多头自注意力机制捕捉长程依赖关系和全局信息,结合相对位置编码可以增强对不同位置的特征感知能力。这个模块特别适用于捕捉图像中的全局模式和长程依赖关系。
### 总结
- **局部分支 (ImprovedLocalAttention)** 通过多尺度卷积和 SE 模块捕捉并增强局部细节特征。
- **全局分支 (MultiHeadGlobalAttention)** 使用多头自注意力机制和相对位置编码捕捉全局信息和长程依赖关系。
结合这两个分支的 `GlobalLocalAttention` 模块可以同时获取图像中的细节信息和全局模式,从而提升模型的表达能力。
"""