Unet 基于TCGA颅脑肿瘤MRI分割(交叉熵损失+多通道输出)

本文档详细介绍了如何运用Unet模型对TCGA颅脑肿瘤MRI数据进行分割,包括数据预处理、网络结构、损失函数、训练过程、预测方法以及IOU计算。同时提供了代码实现和训练日志的可视化。
摘要由CSDN通过智能技术生成

目录

1. 介绍

2. Unet

2.1 unet 代码

2.2 测试网络

3.  dataset 数据加载

4. train 训练

4.1 可视化训练集

4.2 train 代码

4.3 关于损失和预测的部分

4.4 预测部分相关解释

4.5 iou 部分的解释

4.6 log 信息

5. predict 文件

5.1 代码

5.2 代码讲解


1. 介绍

本章内容是利用 Unet 做 TCGA颅脑肿瘤MRI 的分割,因为下载数据的时候,数据的各式不是我们所期望的,所以做了相关的数据预处理工作。

具体的实现可以看这篇博客:Unet 基于TCGA颅脑肿瘤MRI分割(提取有效数据+划分训练集、验证集)icon-default.png?t=N176https://blog.csdn.net/qq_44886601/article/details/129431319?spm=1001.2014.3001.5501

本章是数据集经过提取有效数据并且划分了训练集+测试集之后的工作

如图所示:

data里面存放的是划分好的训练数据 + 测试数据

log 存放训练日志

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是使用传统交叉熵损失函数的Unet分割算法的代码示例: ``` import tensorflow as tf from tensorflow.keras.layers import Conv2D, MaxPooling2D, UpSampling2D, Concatenate from tensorflow.keras import Input, Model from tensorflow.keras.losses import SparseCategoricalCrossentropy def unet(input_shape): inputs = Input(shape=input_shape) # Contracting path c1 = Conv2D(64, 3, activation='relu', padding='same')(inputs) c2 = Conv2D(64, 3, activation='relu', padding='same')(c1) p1 = MaxPooling2D()(c2) c3 = Conv2D(128, 3, activation='relu', padding='same')(p1) c4 = Conv2D(128, 3, activation='relu', padding='same')(c3) p2 = MaxPooling2D()(c4) c5 = Conv2D(256, 3, activation='relu', padding='same')(p2) c6 = Conv2D(256, 3, activation='relu', padding='same')(c5) p3 = MaxPooling2D()(c6) c7 = Conv2D(512, 3, activation='relu', padding='same')(p3) c8 = Conv2D(512, 3, activation='relu', padding='same')(c7) # Expansive path u1 = UpSampling2D()(c8) c9 = Conv2D(256, 3, activation='relu', padding='same')(u1) c10 = Conv2D(256, 3, activation='relu', padding='same')(Concatenate()([c6, c9])) u2 = UpSampling2D()(c10) c11 = Conv2D(128, 3, activation='relu', padding='same')(u2) c12 = Conv2D(128, 3, activation='relu', padding='same')(Concatenate()([c4, c11])) u3 = UpSampling2D()(c12) c13 = Conv2D(64, 3, activation='relu', padding='same')(u3) c14 = Conv2D(64, 3, activation='relu', padding='same')(Concatenate()([c2, c13])) # Output layer outputs = Conv2D(1, 1, activation='sigmoid')(c14) model = Model(inputs=inputs, outputs=outputs) model.compile(optimizer='adam', loss=SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy']) return model ``` 在这个例子中,我们使用了TensorFlow 2.x构建了一个基本的Unet模型,其中包含了多个卷积和池化层的收缩路径,以及多个上采样和卷积层的扩张路径。模型的输出是一个2D的分割图像,通过使用sigmoid激活函数对像素进行二元分类(前景和背景)。此外,我们使用了传统的交叉熵损失函数,以及准确率作为评估指标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喵星人监护人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值