目录一、前言二、为什么需要 STN一传统 CNN 的局限性二目标位置变化问题三数据增强的局限1、增加训练成本2、无法覆盖所有情况三、STN 的核心思想四、STN 整体结构五、Localization Network 详解一什么是 Localization Network二工作原理三仿射变换矩阵六、Grid Generator 详解一什么是 Grid Generator二工作过程三作用七、Sampler 详解一什么是 Sampler二为什么需要插值三双线性插值八、STN 工作流程分析九、STN 能学习哪些变换一平移变换二旋转变换三缩放变换四仿射变换十、STN 的优势一自动学习空间变换二增强模型鲁棒性三可嵌入任意网络四端到端训练十一、PyTorch 实现 STN十二、STN 与注意力机制的关系一SE注意力二CBAM空间注意力三STN十三、STN 的应用场景一OCR文字识别二人脸识别三目标检测四医学影像五自动驾驶十四、STN 的不足一只能学习较简单变换二增加训练难度三逐渐被Transformer替代十五、STN 对深度学习发展的意义十六、总结在计算机视觉任务中我们经常会遇到这样的问题同一个目标在不同图片中可能存在平移Translation旋转Rotation缩放Scaling透视变换Perspective Transformation例如在手写数字识别任务中数字“8”可能出现在图片中央也可能偏左偏右。在人脸识别任务中同一个人的照片可能存在侧脸倾斜放大缩小对于传统卷积神经网络CNN来说这些变化都会影响模型识别效果。虽然卷积神经网络具有一定的平移不变性Translation Invariance但面对较大的几何变换时其性能仍然会明显下降。为了解决这一问题Google DeepMind 团队于 2015 年提出了Spatial Transformer Network简称STN论文名称Spatial Transformer NetworksSTN 的核心思想非常简单让神经网络自动学习如何调整输入图片的位置和形状从而更加容易识别目标。因此STN 被认为是深度学习领域最早的空间注意力Spatial Attention模型之一。二、为什么需要 STN一传统 CNN 的局限性传统卷积网络输入图片 ↓ 卷积 ↓ 池化 ↓ 分类默认假设目标位置基本固定。然而现实情况并非如此。二目标位置变化问题例如数字识别任务数字 5可能出现左上角 右下角 旋转30° 放大2倍此时即便是同一个数字。神经网络也需要重新学习。三数据增强的局限传统解决方案数据增强。例如旋转 翻转 裁剪 缩放虽然有效。但存在两个问题1、增加训练成本需要生成大量样本。2、无法覆盖所有情况现实中的变换无限多。数据增强无法完全解决。三、STN 的核心思想STN 提出一个全新的思路不要人为调整图片。而是让网络自己学习如何调整例如原始图片倾斜数字经过 STN自动旋正然后再送入分类网络。整个过程Input ↓ STN ↓ Feature Map ↓ CNN ↓ OutputSTN 相当于自动图像校正器四、STN 整体结构STN 主要由三个部分组成Localization Network ↓ Grid Generator ↓ Sampler即1、定位网络2、网格生成器3、采样器五、Localization Network 详解一什么是 Localization NetworkLocalization Network定位网络。作用预测图像应该如何变换。输入Feature Map输出变换参数 θ二工作原理通常采用CNN FC结构。例如Image ↓ Conv ↓ Conv ↓ FC ↓ θ输出仿射变换矩阵。三仿射变换矩阵二维空间通常采用2 × 3矩阵。形式[a11 a12 tx] [a21 a22 ty]其中tx水平平移ty垂直平移同时还可以表示旋转缩放错切六、Grid Generator 详解一什么是 Grid Generator得到变换参数后。需要计算输出图像对应输入图像哪里这项工作由Grid Generator 完成。二工作过程首先生成标准坐标网格例如(-1,-1) (0,0) (1,1)然后利用 θ 进行变换。得到新的采样位置。三作用本质上Grid Generator 完成坐标映射工作。七、Sampler 详解一什么是 SamplerSampler采样器。作用根据 Grid Generator 计算出的坐标。从原图中取值。二为什么需要插值变换后坐标通常不是整数。例如(15.3 , 26.8)无法直接取像素。因此需要插值计算。三双线性插值STN 默认采用Bilinear Interpolation即双线性插值。优点平滑可微分支持反向传播八、STN 工作流程分析完整流程Input Image ↓ Localization Network ↓ Transformation Parameter ↓ Grid Generator ↓ Sampling Grid ↓ Sampler ↓ Transformed Feature ↓ CNN ↓ Prediction整个过程完全自动学习。无需人工干预。九、STN 能学习哪些变换一平移变换例如向左移动 向右移动二旋转变换例如30° 45° 90°三缩放变换例如放大 缩小四仿射变换例如旋转 平移 缩放 错切同时进行。十、STN 的优势一自动学习空间变换传统方法人工设计STN自动学习二增强模型鲁棒性面对旋转平移尺度变化表现更加稳定。三可嵌入任意网络可以插入LeNetAlexNetVGGResNet等各种模型。四端到端训练无需额外标注。直接反向传播。十一、PyTorch 实现 STNPyTorch 官方提供了 STN 支持。核心代码如下import torch import torch.nn.functional as F theta torch.tensor([ [[1,0,0], [0,1,0]] ], dtypetorch.float) feature_map torch.randn( 1,3,28,28 ) grid F.affine_grid( theta, feature_map.size() ) output F.grid_sample( feature_map, grid ) print(output.shape)其中F.affine_grid()负责Grid Generator。而F.grid_sample()负责Sampler。这两个函数基本实现了 STN 的核心功能。十二、STN 与注意力机制的关系很多同学会疑惑STN 算不算 Attention答案是算。但属于Spatial Attention空间注意力。一SE注意力关注哪个通道重要属于Channel Attention。二CBAM空间注意力关注哪里重要属于Spatial Attention。三STN更进一步不仅关注哪里重要。还能够主动移动和调整目标位置因此STN 是更早期、更经典的空间注意力模型。十三、STN 的应用场景一OCR文字识别自动校正倾斜文字弯曲文字二人脸识别自动对齐眼睛鼻子嘴巴位置。三目标检测提高目标定位精度。四医学影像自动聚焦病灶区域。五自动驾驶增强车辆行人交通标志识别能力。十四、STN 的不足一只能学习较简单变换主要针对平移旋转缩放复杂形变效果有限。二增加训练难度额外引入Localization Network。三逐渐被Transformer替代近年来ViTDETRSwin Transformer发展迅速。部分场景已经不再依赖 STN。十五、STN 对深度学习发展的意义STN 的最大贡献首次让神经网络具备自动空间校正能力其思想深刻影响了Attention机制Vision TransformerDeformable ConvDETR等后续研究。很多现代视觉模型本质上都在解决让模型关注正确位置的问题。而 STN 正是这一思想的重要起点。十六、总结Spatial Transformer NetworkSTN是深度学习视觉领域的重要里程碑模型也是最经典的空间注意力机制之一。本文重点掌握了1、STN 提出的背景2、传统 CNN 的局限性3、STN 核心思想4、Localization Network 原理5、Grid Generator 原理6、Sampler 原理7、PyTorch 实现方式8、STN 与 Attention 的关系9、STN 的应用场景10、STN 的优势与不足。可以将 STN 理解为“让神经网络拥有自动调整图片位置和形状能力的空间注意力模块。”虽然如今 Transformer 系列模型更加流行但 STN 在深度学习发展史上具有重要意义。掌握 STN不仅有助于理解空间注意力机制也为学习 Deformable Attention、Vision Transformer、DETR 等先进视觉模型打下坚实基础。
掌握空间注意力 STN 模型结构——让神经网络学会自动“看准位置”
发布时间:2026/6/11 7:29:07
目录一、前言二、为什么需要 STN一传统 CNN 的局限性二目标位置变化问题三数据增强的局限1、增加训练成本2、无法覆盖所有情况三、STN 的核心思想四、STN 整体结构五、Localization Network 详解一什么是 Localization Network二工作原理三仿射变换矩阵六、Grid Generator 详解一什么是 Grid Generator二工作过程三作用七、Sampler 详解一什么是 Sampler二为什么需要插值三双线性插值八、STN 工作流程分析九、STN 能学习哪些变换一平移变换二旋转变换三缩放变换四仿射变换十、STN 的优势一自动学习空间变换二增强模型鲁棒性三可嵌入任意网络四端到端训练十一、PyTorch 实现 STN十二、STN 与注意力机制的关系一SE注意力二CBAM空间注意力三STN十三、STN 的应用场景一OCR文字识别二人脸识别三目标检测四医学影像五自动驾驶十四、STN 的不足一只能学习较简单变换二增加训练难度三逐渐被Transformer替代十五、STN 对深度学习发展的意义十六、总结在计算机视觉任务中我们经常会遇到这样的问题同一个目标在不同图片中可能存在平移Translation旋转Rotation缩放Scaling透视变换Perspective Transformation例如在手写数字识别任务中数字“8”可能出现在图片中央也可能偏左偏右。在人脸识别任务中同一个人的照片可能存在侧脸倾斜放大缩小对于传统卷积神经网络CNN来说这些变化都会影响模型识别效果。虽然卷积神经网络具有一定的平移不变性Translation Invariance但面对较大的几何变换时其性能仍然会明显下降。为了解决这一问题Google DeepMind 团队于 2015 年提出了Spatial Transformer Network简称STN论文名称Spatial Transformer NetworksSTN 的核心思想非常简单让神经网络自动学习如何调整输入图片的位置和形状从而更加容易识别目标。因此STN 被认为是深度学习领域最早的空间注意力Spatial Attention模型之一。二、为什么需要 STN一传统 CNN 的局限性传统卷积网络输入图片 ↓ 卷积 ↓ 池化 ↓ 分类默认假设目标位置基本固定。然而现实情况并非如此。二目标位置变化问题例如数字识别任务数字 5可能出现左上角 右下角 旋转30° 放大2倍此时即便是同一个数字。神经网络也需要重新学习。三数据增强的局限传统解决方案数据增强。例如旋转 翻转 裁剪 缩放虽然有效。但存在两个问题1、增加训练成本需要生成大量样本。2、无法覆盖所有情况现实中的变换无限多。数据增强无法完全解决。三、STN 的核心思想STN 提出一个全新的思路不要人为调整图片。而是让网络自己学习如何调整例如原始图片倾斜数字经过 STN自动旋正然后再送入分类网络。整个过程Input ↓ STN ↓ Feature Map ↓ CNN ↓ OutputSTN 相当于自动图像校正器四、STN 整体结构STN 主要由三个部分组成Localization Network ↓ Grid Generator ↓ Sampler即1、定位网络2、网格生成器3、采样器五、Localization Network 详解一什么是 Localization NetworkLocalization Network定位网络。作用预测图像应该如何变换。输入Feature Map输出变换参数 θ二工作原理通常采用CNN FC结构。例如Image ↓ Conv ↓ Conv ↓ FC ↓ θ输出仿射变换矩阵。三仿射变换矩阵二维空间通常采用2 × 3矩阵。形式[a11 a12 tx] [a21 a22 ty]其中tx水平平移ty垂直平移同时还可以表示旋转缩放错切六、Grid Generator 详解一什么是 Grid Generator得到变换参数后。需要计算输出图像对应输入图像哪里这项工作由Grid Generator 完成。二工作过程首先生成标准坐标网格例如(-1,-1) (0,0) (1,1)然后利用 θ 进行变换。得到新的采样位置。三作用本质上Grid Generator 完成坐标映射工作。七、Sampler 详解一什么是 SamplerSampler采样器。作用根据 Grid Generator 计算出的坐标。从原图中取值。二为什么需要插值变换后坐标通常不是整数。例如(15.3 , 26.8)无法直接取像素。因此需要插值计算。三双线性插值STN 默认采用Bilinear Interpolation即双线性插值。优点平滑可微分支持反向传播八、STN 工作流程分析完整流程Input Image ↓ Localization Network ↓ Transformation Parameter ↓ Grid Generator ↓ Sampling Grid ↓ Sampler ↓ Transformed Feature ↓ CNN ↓ Prediction整个过程完全自动学习。无需人工干预。九、STN 能学习哪些变换一平移变换例如向左移动 向右移动二旋转变换例如30° 45° 90°三缩放变换例如放大 缩小四仿射变换例如旋转 平移 缩放 错切同时进行。十、STN 的优势一自动学习空间变换传统方法人工设计STN自动学习二增强模型鲁棒性面对旋转平移尺度变化表现更加稳定。三可嵌入任意网络可以插入LeNetAlexNetVGGResNet等各种模型。四端到端训练无需额外标注。直接反向传播。十一、PyTorch 实现 STNPyTorch 官方提供了 STN 支持。核心代码如下import torch import torch.nn.functional as F theta torch.tensor([ [[1,0,0], [0,1,0]] ], dtypetorch.float) feature_map torch.randn( 1,3,28,28 ) grid F.affine_grid( theta, feature_map.size() ) output F.grid_sample( feature_map, grid ) print(output.shape)其中F.affine_grid()负责Grid Generator。而F.grid_sample()负责Sampler。这两个函数基本实现了 STN 的核心功能。十二、STN 与注意力机制的关系很多同学会疑惑STN 算不算 Attention答案是算。但属于Spatial Attention空间注意力。一SE注意力关注哪个通道重要属于Channel Attention。二CBAM空间注意力关注哪里重要属于Spatial Attention。三STN更进一步不仅关注哪里重要。还能够主动移动和调整目标位置因此STN 是更早期、更经典的空间注意力模型。十三、STN 的应用场景一OCR文字识别自动校正倾斜文字弯曲文字二人脸识别自动对齐眼睛鼻子嘴巴位置。三目标检测提高目标定位精度。四医学影像自动聚焦病灶区域。五自动驾驶增强车辆行人交通标志识别能力。十四、STN 的不足一只能学习较简单变换主要针对平移旋转缩放复杂形变效果有限。二增加训练难度额外引入Localization Network。三逐渐被Transformer替代近年来ViTDETRSwin Transformer发展迅速。部分场景已经不再依赖 STN。十五、STN 对深度学习发展的意义STN 的最大贡献首次让神经网络具备自动空间校正能力其思想深刻影响了Attention机制Vision TransformerDeformable ConvDETR等后续研究。很多现代视觉模型本质上都在解决让模型关注正确位置的问题。而 STN 正是这一思想的重要起点。十六、总结Spatial Transformer NetworkSTN是深度学习视觉领域的重要里程碑模型也是最经典的空间注意力机制之一。本文重点掌握了1、STN 提出的背景2、传统 CNN 的局限性3、STN 核心思想4、Localization Network 原理5、Grid Generator 原理6、Sampler 原理7、PyTorch 实现方式8、STN 与 Attention 的关系9、STN 的应用场景10、STN 的优势与不足。可以将 STN 理解为“让神经网络拥有自动调整图片位置和形状能力的空间注意力模块。”虽然如今 Transformer 系列模型更加流行但 STN 在深度学习发展史上具有重要意义。掌握 STN不仅有助于理解空间注意力机制也为学习 Deformable Attention、Vision Transformer、DETR 等先进视觉模型打下坚实基础。