Spatial Transformer Networks 论文详解及代码

Spatial transformer networks

背景

卷积神经网络在多种图像类中的任务表现出色,但有些图像类的任务需要对图像进行几何变换,需要实现一种可微的网络,使能对卷积网络中的特征图或寻常的图像(都是矩阵,没有数学上的区别)进行几何变换。

论文解析

在这里插入图片描述

以U表示输入(特征图或寻常的图像),V表示输出(转换后的特征图或寻常的图像)。三步策略

  1. Localisation Newwork
    一个自定义的回归网络。其输入为U,输出为变换所需要的参数 θ \theta θ。如仿射变换的输出即为6维。

  2. Parameterised Sampling Grid
    在这里插入图片描述

    这一步进行几何变换,不过是对输出坐标进行几何变换,得到输入的坐标;
    以2D的仿射变换为例, x i s , y i s x_i^s, y_i^s xis,yis为输入的网格坐标, x i t , y i t x_i^t, y_i^t xit,yit为变换后的网格坐标;
    这是图像领域常用的方案,是为了避免输出出现空洞和重叠。

  3. Differentiable Image Sampling
    这一步的核心是为了采样(插值)。
    第二步生成的坐标可能不在网格顶点上,需要将这些坐标采样到网格顶点上。
    在这里插入图片描述
    V i c V_i^c Vic为输出的网格中 i i i的幅值,H为网格的高,W为网格的宽, U n m c U_{nm}^c Unmc为输入的幅值。
    这是利用核对网格进行卷积进行采样的同意数学表达,不同的采样方式对应不同的数学公式。且理论上任意的卷积核都可以使用。

代码

github质量较高的代码:实现了 2D的仿射变换,双线性插值。不包含参数回归网络。
https://github.com/kevinzakka/spatial-transformer-network.git

Spatial Transformer Networks (STNs)是一种用于计算机视觉领域的深度学习模型,它允许神经网络在处理图像数据时拥有一定程度的空间变换能力,如旋转、缩放和平移。这种灵活性使得它们能够更好地适应输入空间的变化,常用于图像校正、物体检测等任务。 STN的核心组成部分包括三个部分: 1. **特征提取模块**:通常基于卷积神经网络(CNN),负责提取输入图像的基础特征。 2. **坐标变换模块**:包含两个部分:参数预测网络(Parameter Network)学习如何生成变换参数,以及扭曲层(Grid Generator),根据这些参数调整特征图的位置和大小。 3. **归一化并反卷积**:通过应用学到的变换,将特征图重新调整到原始尺寸,并与原始图像拼接起来,形成增强后的输入。 下面是一个简单的PyTorch实现STN的伪代码示例: ```python import torch import torch.nn as nn class STN(nn.Module): def __init__(self, input_channels, output_channels): super(STN, self).__init__() # 参数预测网络 self.param_net = nn.Sequential( nn.Linear(input_channels, 6), # 预测3个平移参数和3个旋转参数 nn.ReLU(), nn.Linear(6, output_channels * output_channels) ) # 扭曲层 self.grid_generator = GridGenerator(output_channels) def forward(self, x): # 提取特征并扁平化 features = self.feature_extractor(x) params = self.param_net(features) # 根据参数计算新的网格 grid = self.grid_generator(params) # 应用空间变换 transformed_x = F.grid_sample(x, grid) return transformed_x, params # 网格生成器函数省略,实际项目中会自定义 def grid_generator(params): # 实现生成grid的过程 pass ``` 注意,这只是一个简化的例子,实际应用中需要更复杂的网络结构和详细的训练过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值