pytorch进行上采样的种类实例

作者:yangdashi888 时间:2023-11-28 14:02:03 

1、其中再语义分割比较常用的上采样:

其实现方法为:


def upconv2x2(in_channels, out_channels, mode='transpose'):
if mode == 'transpose':
 # 这个上采用需要设置其输入通道,输出通道.其中kernel_size、stride
 # 大小要跟对应下采样设置的值一样大小。这样才可恢复到相同的wh。这里时反卷积操作。
 return nn.ConvTranspose2d(
  in_channels,
  out_channels,
  kernel_size=2,
  stride=2)
else:
 # out_channels is always going to be the same
 # as in_channels
 # 这里不会改变通道数,其中scale_factor是上采用的放大因子,其是相对于当前的
 # 输入大小的倍数
 return nn.Sequential(
  nn.Upsample(mode='bilinear', scale_factor=2, align_corners=True))
 # 这里的代码是在这里设置多一个卷积,这样子就起到了可以修改其输出通道的功能了。
 # 相当于功能跟ConvTranspose2d()差不多,只是上采样的方法不同
 conv1x1((in_channels, out_channels))

def conv1x1(in_channels, out_channels, groups=1):
return nn.Sequential(nn.Conv2d(
 in_channels,
 out_channels,
 kernel_size=1,
 groups=groups,
 stride=1),
nn.BatchNorm2d(out_channels))

另一种上采样的方法是,参考代码:segnet_pytorch:


 # Stage 5
 x51 = F.relu(self.bn51(self.conv51(x4p)))
 x52 = F.relu(self.bn52(self.conv52(x51)))
 x53 = F.relu(self.bn53(self.conv53(x52)))
 #这个id5记录的是池化操作时最大值的index,其要设置参数return_indices为True
 x5p, id5 = F.max_pool2d(x53,kernel_size=2, stride=2,return_indices=True)

# Stage 5d
 #这个是进行最大值上采样的函数,其是根据id5来把值放到什么位置,其它位置没有值的地方
 补0
 x5d = F.max_unpool2d(x5p, id5, kernel_size=2, stride=2)
 x53d = F.relu(self.bn53d(self.conv53d(x5d)))
 x52d = F.relu(self.bn52d(self.conv52d(x53d)))
 x51d = F.relu(self.bn51d(self.conv51d(x52d)))

测试例子:


#测试上采样
m=nn.MaxPool2d((3,3),stride=(1,1),return_indices=True)
upm=nn.MaxUnpool2d((3,3),stride=(1,1))
data4=torch.randn(1,1,3,3)
output5,indices=m(data4)
output6=upm(output5,indices)

print('\ndata4:',data4,
 '\nmaxPool2d',output5,
 '\nindices:',indices,
 '\noutput6:',output6)

其输出为:


data4: tensor([[[[ 2.3151, -1.0391, 0.1074],
  [ 1.9360, 0.2524, 2.3735],
  [-0.1151, 0.4684, -1.8800]]]])
maxPool2d tensor([[[[2.3735]]]])
indices: tensor([[[[5]]]])
output6: tensor([[[[0.0000, 0.0000, 0.0000],
  [0.0000, 0.0000, 2.3735],
  [0.0000, 0.0000, 0.0000]]]])

来源:https://blog.csdn.net/yangdashi888/article/details/87937833

标签:pytorch,上采样,种类
0
投稿

猜你喜欢

  • python如何正确使用yield

    2023-09-29 16:57:05
  • django-利用session机制实现唯一登录的例子

    2022-09-10 23:20:20
  • pip install urllib2不能安装的解决方法

    2022-05-27 12:25:13
  • Java通过数据库表生成实体类详细过程

    2024-01-23 15:39:06
  • Python如何判断字符串是否仅包含数字

    2023-12-23 08:16:04
  • 可编辑下拉框的2种实现方式

    2024-04-22 13:08:08
  • 用ASP+CSS实现随机背景

    2007-09-26 12:33:00
  • 降低锁竞争 减少MySQL用户等待时间

    2011-03-11 18:58:00
  • html网页调用后端python代码的方法实例

    2023-04-20 19:31:51
  • mpvue+vant app搭建微信小程序的方法步骤

    2024-05-29 22:22:42
  • Python+django实现简单的文件上传

    2021-08-15 03:11:25
  • linux服务器下PHPCMS v9 安全配置详解

    2023-11-17 11:51:52
  • 使用HTML5中的canvas进行图形图像.游戏.动画开发时,不需要双缓冲机制

    2010-04-01 12:21:00
  • 基于Python制作短信发送程序

    2022-06-19 16:47:25
  • Golang 中反射的应用实例详解

    2024-02-12 03:12:06
  • Python Unittest自动化单元测试框架详解

    2023-09-13 23:13:56
  • 浅谈Python中的数据类型

    2022-11-29 06:19:22
  • 解决python3中的requests解析中文页面出现乱码问题

    2023-11-22 07:04:55
  • ACCESS转SQL Server2000需要注意的问题

    2007-11-18 15:25:00
  • javascript 函数声明与函数表达式的区别介绍

    2024-04-23 09:08:50
  • asp之家 网络编程 m.aspxhome.com