UNet 、3D-UNet 、VNet 区别

UNet 、3D-UNet 、VNet 区别

医学图像的几个常用模型,简单总结一下。

三个model的代码在我的Github上,可以参考一下:https://github.com/VickyLLY/unet_and_vnet

一、UNet

在这里插入图片描述

创新点:

U型结构,下采样,上采样;短接通道(skip-connection)

二、3D-UNet

技术分享图片

2D结构的U-Net是基本一样,唯一不同:2D操作换成了3D

好处:三维图像就不需要单独输入每个切片进行训练,而是可以采取图片整张作为输入到模型中

详细解读可以看:3D U-Net论文解析

三、VNet

在这里插入图片描述

Vnet是针对3D图像提出来模型。

创新:

1、引入残差,水平向的残差连接采用element-wise;

2、卷积层代替上采样和下采样的池化层。

ment-wise;

2、卷积层代替上采样和下采样的池化层。

详细Vnet和Unet对比:Unet和Vnet

  • 30
    点赞
  • 164
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
05-30
以下是一个简单的 3D Unet 模型的代码示例: ```python import tensorflow as tf from tensorflow.keras.layers import Input, Conv3D, MaxPooling3D, Dropout, concatenate, UpSampling3D def unet_3d(input_size=(128, 128, 128, 1)): inputs = Input(input_size) # 左边部分 conv1 = Conv3D(32, 3, activation='relu', padding='same', kernel_initializer='he_normal')(inputs) conv1 = Conv3D(32, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv1) pool1 = MaxPooling3D(pool_size=(2, 2, 2))(conv1) conv2 = Conv3D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(pool1) conv2 = Conv3D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv2) pool2 = MaxPooling3D(pool_size=(2, 2, 2))(conv2) conv3 = Conv3D(128, 3, activation='relu', padding='same', kernel_initializer='he_normal')(pool2) conv3 = Conv3D(128, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv3) pool3 = MaxPooling3D(pool_size=(2, 2, 2))(conv3) conv4 = Conv3D(256, 3, activation='relu', padding='same', kernel_initializer='he_normal')(pool3) conv4 = Conv3D(256, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv4) drop4 = Dropout(0.5)(conv4) pool4 = MaxPooling3D(pool_size=(2, 2, 2))(drop4) # 右边部分 conv5 = Conv3D(512, 3, activation='relu', padding='same', kernel_initializer='he_normal')(pool4) conv5 = Conv3D(512, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv5) drop5 = Dropout(0.5)(conv5) up6 = Conv3D(256, 2, activation='relu', padding='same', kernel_initializer='he_normal')(UpSampling3D(size=(2, 2, 2))(drop5)) merge6 = concatenate([drop4, up6], axis=4) conv6 = Conv3D(256, 3, activation='relu', padding='same', kernel_initializer='he_normal')(merge6) conv6 = Conv3D(256, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv6) up7 = Conv3D(128, 2, activation='relu', padding='same', kernel_initializer='he_normal')(UpSampling3D(size=(2, 2, 2))(conv6)) merge7 = concatenate([conv3, up7], axis=4) conv7 = Conv3D(128, 3, activation='relu', padding='same', kernel_initializer='he_normal')(merge7) conv7 = Conv3D(128, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv7) up8 = Conv3D(64, 2, activation='relu', padding='same', kernel_initializer='he_normal')(UpSampling3D(size=(2, 2, 2))(conv7)) merge8 = concatenate([conv2, up8], axis=4) conv8 = Conv3D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(merge8) conv8 = Conv3D(64, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv8) up9 = Conv3D(32, 2, activation='relu', padding='same', kernel_initializer='he_normal')(UpSampling3D(size=(2, 2, 2))(conv8)) merge9 = concatenate([conv1, up9], axis=4) conv9 = Conv3D(32, 3, activation='relu', padding='same', kernel_initializer='he_normal')(merge9) conv9 = Conv3D(32, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv9) conv9 = Conv3D(2, 3, activation='relu', padding='same', kernel_initializer='he_normal')(conv9) # 输出 outputs = Conv3D(1, 1, activation='sigmoid')(conv9) model = tf.keras.Model(inputs=inputs, outputs=outputs) return model ``` 这是一个常见的 3D Unet 模型,与 2D Unet 模型类似,包括左边的下采样部分和右边的上采样部分。不同的是,在 3D Unet 中,我们使用了 3D 卷积层和 3D 池化层来逐渐减小特征图的大小,在上采样部分,我们使用了 3D 反卷积层和跳跃连接来逐渐增大特征图的大小,并将下采样部分相应的特征图与上采样部分的特征图进行拼接。最后,我们使用一个 3D 卷积层将 2 个通道的特征图转换为 1 个通道的输出。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值