pytorch 图像padding+特征图插值F.interpolate

本文介绍了在深度学习中,如何使用`torch.nn.functional.pad`进行图像填充,详细阐述了不同填充模式的作用,并通过实例展示了如何处理图像分块不足的情况。同时,探讨了`F.interpolate`函数用于图像插值的方法,包括 bilinear 插值模式和 align_corners 参数的影响。这些技术在深度学习模型中用于调整输入尺寸和保持比例的关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

padding函数的模式

torch.nn.functional.pad(input, pad, mode='constant/reflect/replicate')
或者:
torch.nn.functional.pad(input, pad, mode='constant', value=0)# 默认常值0填充

现在只有pad部分需要比较高的注意力,给出以下使用解释:

p3d = (1, 2, 3, 4, 5, 6)
# p3d = (左边填充数, 右边填充数, 上边填充数, 下边填充数, 前边填充数,后边填充数)

p2d = (1, 2, 3, 4)
# p2d = (左边填充数, 右边填充数, 上边填充数, 下边填充数)

常用的padding方法,对于图像分块不够的情况下padding(分别在图像的右侧和下侧进行填充)

import torch.nn as nn
import torch.nn.functional as F


if pad_input:
    # to pad the last 3 dimensions,
    # (W_left, W_right, H_top,H_bottom, C_front, C_back)
    x = F.pad(x, (0, self.patch_size[1] - W % self.patch_size[1],
                  0, self.patch_size[0] - H % self.patch_size[0],
                  0, 0))

插值(对tensor的后两个维度扩展)

TORCH.NN.FUNCTIONAL.INTERPOLATE

score_map = F.interpolate(dist_list.unsqueeze(1), size=x.size(2), mode='bilinear',
                                  align_corners=False).squeeze().numpy()

align_corners(默认False)

    import torch.nn.functional as F
    import torch

    a = torch.arange(4, dtype=torch.float32).reshape(1, 1, 2, 2)
    b = F.interpolate(a, size=(4, 4), mode='bilinear',align_corners=False)# b = F.interpolate(a, size=(4, 4), mode='nearest')
tensor([[[[0., 1.],
          [2., 3.]]]])
tensor([[[[0.0000, 0.2500, 0.7500, 1.0000],
          [0.5000, 0.7500, 1.2500, 1.5000],
          [1.5000, 1.7500, 2.2500, 2.5000],
          [2.0000, 2.2500, 2.7500, 3.0000]]]])    
    import torch.nn.functional as F
    import torch

    a = torch.arange(4, dtype=torch.float32).reshape(1, 1, 2, 2)
    b = F.interpolate(a, size=(4, 4), mode='bilinear',align_corners=True)
tensor([[[[0., 1.],
          [2., 3.]]]])
tensor([[[[0.0000, 0.3333, 0.6667, 1.0000],
          [0.6667, 1.0000, 1.3333, 1.6667],
          [1.3333, 1.6667, 2.0000, 2.3333],
          [2.0000, 2.3333, 2.6667, 3.0000]]]])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值