问题标签 [spatial-transformer-network]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
125 浏览

machine-learning - 空间变压器网络中的投资回报率裁剪

TL;DR:Spatial Transformer Network 的 RoI 裁剪方法如何工作?

在阅读 PyTorch Spatial Transformer Network 教程时,我看到该网络使用了一种我以前从未见过的特殊 RoI 池化,称为 RoI 裁剪。
阅读文档F.affine_gridF.grid_sample没有解释太多那里发生的事情,所以我尝试阅读网络的论文以希望理解以及有关 Faster RCNN的一些博客文章详细说明了图片方法,但仍然没有帮助。
我觉得每个来源都有不同的细节,无法了解那里到底发生了什么,就像我了解正常的 RoI 池和对齐方法一样好。

现在,这是我脑海中的大图:
1. 像往常一样,将建议的 RoI 坐标映射到特征图空间。
2. 将坐标归一化到 [-1, 1] 的范围内(我猜这是为了下面的仿射变换)。
3. 计算(使用下图中的方法)变换值。
4. 现在,我假设我们将转换应用于 RoI 像素?5. 最后,我假设我们对最终坐标进行插值(即双线性插值)。

有人可以简单解释一下 RoI 裁剪方法的整个过程吗?我觉得我可能错过了什么。

在此处输入图像描述

0 投票
1 回答
32 浏览

conv-neural-network - 空间变换网络如何学习适当地变换图像?

看完这篇文章,我有点理解网络是如何转换图像的;但是,我无法了解它实际上是如何学习哪个方向有助于后续分类步骤的。

几乎在帖子和PyTorch 的 STN 教程的结尾,它们展示了 STN 如何旋转和转换图像以获得更好的分类性能。

它仅基于训练集吗?比如,如果大多数图像倾向于具有特定的方向,比如说旋转了 20 度,那么网络会学习旋转未旋转的图像吗?

0 投票
2 回答
59 浏览

tensorflow - 创建空间变压器网络时无错误

卷积层的输出特征图是(Batch, Height, Width, Channels)。当我们在 tensorflow 中初始化 CNN 时,我们得到 None 值来代替 Batch。我正在尝试在自定义层中实现空间变换器网络,因此需要将层矢量化为卷积层批量大小。当我尝试初始化网络时,空间转换器层给出了无法使用 None 值执行操作的错误。

我的代码如下所示

上述代码的错误:

0 投票
0 回答
29 浏览

spatial-transformer-network - 空间变压器网络中的采样/插值

我对STN缺乏了解。因此,首先计算一个变换(例如仿射)(定位网络)。之后,我们将输入网格(仅坐标)转换为目标网格(坐标)(采样网格)。现在插值/采样方法在做什么?我完全理解转换后整数值将是十进制的。它是否为目标网格中的每个点提供输入网格中邻域值的值(例如通过加权平均值)?那是对的吗?我对定位网络和采样网格的理解是否正确?在此处输入图像描述

0 投票
0 回答
81 浏览

python - Keras 试图将 Spatial Transformer 插入 VGG16 网络

我正在尝试将空间变压器网络插入 Keras 中预制的 VGG16 模型中。这是我的代码:

背景:VGG16 模型的默认输入大小为 224x224。我正在使用的 VGG16 的来源可以在https://keras.io/api/applications/vgg/找到。我将使用来自https://github.com/fastai/imagenette的 Imagenette 数据。

我正在尝试做的事情:制作一个由 1 个定位层和 1 个双线性插值层组成的空间变压器网络模块。我正在尝试将这些层插入到输入和 conv 1-1 之间的 VGG16 模型中。插入后,我将冻结所有其他权重,仅使用 Imagenette 数据训练插入的模块。

我得到的错误:

我究竟做错了什么?

0 投票
0 回答
31 浏览

python - 如何在 Keras 中为 2 个图像实现空间变换器网络?

我正在编写一个用于深度估计的连体网络。这意味着 2 个输入 RGB 图像(左和右),用于视差图生成的自动编码器,然后是用于将视差图与输入图像一起转换的空间变换器网络。

该变换的输出是一个新图像,然后用于最小化该特定图像与输入图像之间的重建误差。

有没有办法在 Tensorflow / Keras 中实现这一点?问题是自动编码器只是简单的层集,但是空间变换器呢?

这是更好地可视化问题的架构。

连体建筑

0 投票
0 回答
34 浏览

python - 使用 PyTorch grid_sample 从右图和逆深度重建左图

我正在实现本文中的基本架构: PyTorch 中的https://arxiv.org/pdf/1705.08260.pdf

它由自动编码器和空间转换器组成。自编码器的输出与右图像一起被馈送到 ST 或可以说是双线性采样器,并且该双线性插值的输出用于计算左图像与其自身之间的 L1 损失。

但是有一个问题,我真的不认为这段代码会做我想做的事。PyTorch中grid_sample函数的官方文档是指网格必须在-1和1范围内,但网格本身的最大值大于1。如果这段代码是正确的,那么我应该重写网格归一化的行?

我的第一个想法是像这样重写它:(grid / torch.max(grid) - 0.5) * 2所以值介于 -1 和 1 之间,那么我应该删除 padding_mode 参数,因为没有值超出范围。

如果这是正确的,那么让我知道,这样我就可以确定这是正确的道路。