3D Res-UNet和3D V-Net修改输入图片张数

项目场景:

最近修改了两个神经网络模型(3D Res-UNet和3D V-Net):原来输入张量的大小为(1, 1, 16, 512, 512)输出张量的大小也为(1, 1, 16, 512, 512)
改为 输入(1, 2, 5, 512, 512)输出(1, 2, 5, 512, 512)


问题描述

由于3D Res-UNet和3D V-Net都是U-Net网络的变体,所以都会涉及到下采样和上采样的问题。
由于原来是一次输入16张512512大小的图片,16为偶数,所以经过下采样和上采样后能够同样得到16张。在输入和当前阶段的输出做相加操作时也不会因为维度不同而报错。
但是改为一次输出5张512
512大小的图片时,5为奇数,经过下采样后到1而上采样得到的却只能是偶数(2 4 8 16…)回不到5了。

        self.down_conv1 = nn.Sequential(
            nn.Conv3d(16, 32, 2, 2),
            nn.PReLU(32)
        )

        self.down_conv2 = nn.Sequential(
            nn.Conv3d(32, 64, 2, 2),
            nn.PReLU(64)
        )

        self.down_conv3 = nn.Sequential(
            nn.Conv3d(64, 128, 2, 2),
            nn.PReLU(128)
        )

        self.down_conv4 = nn.Sequential(
            nn.Conv3d(128, 256, 3, 1, padding=1),
            nn.PReLU(256)
        )

        self.up_conv2 = nn.Sequential(
            nn.ConvTranspose3d(256, 128, 2, 2),  # 进行转置卷积
            nn.PReLU(128)
        )

        self.up_conv3 = nn.Sequential(
            nn.ConvTranspose3d(128, 64, 2, 2),
            nn.PReLU(64)
        )

        self.up_conv4 = nn.Sequential(
            nn.ConvTranspose3d(64, 32, 2, 2),
            nn.PReLU(32)
        )

解决方案:

只需要将 在下采样和上采样过程中卷积核的大小步长由size=2, stride =2改为size=(1, 2, 2), stride =(1, 2, 2)。这样由于下采样和上采样的过程中对于图片张数的卷积核和步长均为1,无论一次性输出多少的张的图片 网络的下采样和上采样均不会受到影响

        self.down_conv1 = nn.Sequential(
            nn.Conv3d(16, 32, (1, 2, 2), (1, 2, 2)),
            nn.PReLU(32)
        )

        self.down_conv2 = nn.Sequential(
            nn.Conv3d(32, 64, (1, 2, 2), (1, 2, 2)),
            nn.PReLU(64)
        )

        self.down_conv3 = nn.Sequential(
            nn.Conv3d(64, 128, (1, 2, 2), (1, 2, 2)),
            nn.PReLU(128)
        )

        self.down_conv4 = nn.Sequential(
            nn.Conv3d(128, 256, 3, 1, padding=1),
            nn.PReLU(256)
        )

        self.up_conv1 = nn.Sequential(
            nn.ConvTranspose3d(256, 128, (1, 2, 2), (1, 2, 2)),  # 进行转置卷积
            nn.PReLU(128)
        )

        self.up_conv2 = nn.Sequential(
            nn.ConvTranspose3d(128, 64, (1, 2, 2), (1, 2, 2)),
            nn.PReLU(64)
        )

        self.up_conv3 = nn.Sequential(
            nn.ConvTranspose3d(64, 32, (1, 2, 2), (1, 2, 2)),
            nn.PReLU(32)
        )

输出结果

if __name__ == '__main__':
    X = torch.randn(size = (1, 2, 5, 512, 512))
    print("输入数据的大小为:", X.shape)
    net = ResUNet(in_channels=2, out_channels=2, training=True)
    # common.print_network(net)
    output = net(X)
    print("输出结果的大小为:", output.shape)

输出结果

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
引用\[1\]:Li, H., Xiong, P., An, J., Wang, L.: Pyramid attention network for semantic segmentation. arXiv preprint arXiv:1805.10180 (2018) 。 引用\[2\]:原文地址:RAUNet: Residual Attention U-Net for Semantic Segmentation of Cataract Surgical Instruments Abstract 。 引用\[3\]:解码器通过上采样恢复位置细节。然而,上采样会导致边缘模糊和位置细节丢失。现有的一些工作\[8\]采用跳转连接将低级特征与高级特征连接起来,这有助于补充位置细节。但这是一种幼稚的方法。由于底层特征中缺乏语义信息,因此包含了大量无用的背景信息。该信息可能会干扰目标对象的分割。为了解决这个问题,增强注意模块被设计成捕捉高级语义信息并强调目标特征。 。 问题:请提供attention res-unet原文。 回答:很抱歉,我无法提供attention res-unet的原文。但是根据引用\[1\]和引用\[2\]的信息,可以得知Pyramid attention network和RAUNet是两种用于语义分割的模型。Pyramid attention network是一种基于金字塔注意力机制的网络,用于语义分割任务\[1\]。而RAUNet是一种用于白内障手术器械语义分割的残差注意力U-Net模型\[2\]。根据引用\[3\]的描述,注意力模块被设计用于捕捉高级语义信息并强调目标特征,以解决上采样导致的边缘模糊和位置细节丢失的问题。 #### 引用[.reference_title] - *1* *2* *3* [Residual Attention U-Net 论文笔记](https://blog.csdn.net/charles_zhang_/article/details/124209523)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值