torch.nn.functional.interpolate
的主要用途是对图像或特征图进行上采样或下采样操作。一些常见的用途包括:
- 图像尺寸调整: 当需要将图像调整到特定大小以适应模型输入时,可以使用插值函数进行图像尺寸调整。
- 特征图尺寸调整: 在卷积神经网络中,有时需要对特征图进行上采样或下采样,以便与不同大小的输入进行处理,或者进行特征图的尺寸匹配。
- 数据增强: 在训练深度学习模型时,有时会对训练数据进行数据增强,如随机裁剪、随机缩放等,而插值操作可以用于生成变换后的图像。
- 超分辨率重建: 在图像处理中,有时需要将低分辨率图像重建为高分辨率图像,插值操作可以用于这种重建过程中。
以下为官方文档翻译:
python
torch.nn.functional.interpolate(input, size=None, scale_factor=None, mode='nearest', align_corners=None, recompute_scale_factor=None, antialias=False)[SOURCE]
- 功能是对输入进行上采样/下采样。
- 张量插值到给定大小
size
或给定比例因子scale_factor
。 - 插值算法由
mode
决定。 - 当前支持时间、空间和体积采样,即期望的输入为 3-D、4-D 或 5-D。(3-5 维)
- 输入维度以如下形式解释:mini-batch x channels x [可选深度] x [可选高度] x 宽度。
- 用于调整大小的模式有:nearest、linear(仅3D)、bilinear、bicubic(仅4D)、trilinear(仅5D)、area、nearest-exact。
参数解释
- input(Tensor) - 输入张量
- size(int 或 Tuple[int]或Tuple[int, int]或Tuple[int, int, int]) 输出空间大小。
- scale_factor(float或Tuple[float]) - 空间大小的乘数。如果 scale_factor 是一个元组,其长度必须与空间维度的数量相匹配;input.dim() - 2。
- mode(str) - 用于上采样的算法:'nearest' | 'linear' | 'bilinear' | 'bicubic' | 'trilinear' | 'area' | 'nearest-exact'。默认值:'nearest'
- align_corners(bool,可选) - 几何上,我们将输入和输出的像素视为方块而不是点。如果设置为True,则输入和输出张量通过它们角点像素的中心点对齐,保留角点像素的值。如果设置为False,则输入和输出张量通过它们角点像素的角点对齐,并且插值使用边缘值填充超出边界值的值,使得该操作在 scale_factor 保持不变时独立于输入大小。这仅在 mode 为'linear'、'bilinear'、'bicubic'或'trilinear'时生效。默认值:False
- recompute_scale_factor(bool,可选) - 重新计算用于插值计算的scale_factor。如果 recompute_scale_factor 为True,则必须传递 scale_factor,并且scale_factor用于计算输出大小。计算的输出大小将用于推断插值的新比例。请注意,当
- scale_factor 是浮点数时,由于四舍五入和精度问题,它可能与重新计算的scale_factor不同。如果 recompute_scale_factor 为False,则将直接使用 size 或 scale_factor 进行插值。默认值:None。
- antialias(bool,可选) - 应用抗锯齿标志。默认值:False。与align_corners=False一起使用抗锯齿选项,插值结果将与Pillow对于缩小操作的结果匹配。支持的模式:'bilinear'、'bicubic'。
返回类型
张量
官方文档:https://pytorch.org/docs/stable/generated/torch.nn.functional.interpolate.html