基于U-net的医学影像分割 / pytorch实现

本文介绍了基于PyTorch实现U-net模型进行医学影像分割的过程,包括实验环境、模型结构、数据处理和训练结果。通过对比不同资源,分析未达到最佳效果的原因,并分享了实验中的挑战与收获。
摘要由CSDN通过智能技术生成

一、简介

U-net是一种基于CNN神经网络的图像分割模型,模型主要包括两个部分:对图片的特征提取与上采样。模型的巧妙之处在于在上采样时,会将上采样结果与特征提取中对应通道的特征进行拼接,然后接着进行卷积运算。这样能更多地利用原图片的特征信息。网络结构图与大写字母U非常类似,因此称为U-net,模型结构图如下。

 

 

二、U-net实现

由于数图课程的作业要求,作为一个初学者,近期学习并实现了U-net模型,现将过程做一个简单的回顾,希望能给有需要的初学者一点小小的帮助。

1、实验环境

本次实验环境如下:Ubuntu 16.04,python 3.6,cuda 9.0,pytorch

数据集:数据使用ISBI Challenge 2012的数据(已存放在GitHub中)

2、U-net模型

import torch
from torch import nn

# 卷积层代码块,进行两次卷积晕眩
class DoubleConv(nn.Module):
    def __init__(self, in_ch, out_ch):
        super(DoubleConv, self).__init__()
        self.conv = nn.Sequential(
            nn.Conv2d(in_ch, out_ch, 3, padding=1),
            nn.BatchNorm2d(out_ch),
            nn.ReLU(inplace=True),
            nn.Conv2d(out_ch, out_ch, 3, padding=1),
            nn.BatchNorm2d(out_ch),
            nn.ReLU(inplace=True)
        )

    def forward(self, input):
        return self.conv(input)

# 模型实现,可参照模型图
class Unet(nn.Module):
    def __init__(self,in_ch,out_ch):
        super(Unet, self).__init__()

        self.conv1 = DoubleConv(in_ch, 64)
        self.pool1 = nn.MaxPool2d(2)
        self.conv2 = DoubleConv(64, 128)
        self.pool2 = nn.MaxPool2d(2)
        self.conv3 = DoubleConv(128, 256)
        self.pool3 = nn.MaxPool2d(2)
        self.conv4 = DoubleConv(256, 512)
        self.pool4 = nn.MaxPool2d(2)
        self.conv5 = DoubleConv(512, 1024)
        self.up6 = nn.ConvTranspose2d(1024, 512, 2, stride=2)
        self.conv6 = DoubleConv(1024, 512)
        self.up7 = nn.ConvTranspose
  • 10
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 46
    评论
我在GitHub上找到了一个基于PyTorch实现的视网膜血管分割代码项目,该项目包括数据预处理、模型训练、模型测试和可视化等功能。这个项目的地址是https://github.com/lee-zq/VesselSeg-Pytorch。作者对代码进行了重构和简化,并添加了注释,力求让任何一个入门者都能看懂。如果你在使用过程中遇到bug或者有任何问题,你可以提issue,作者会尽快进行调试和更新代码。此外,作者也计划复现一些经典和SOTA的视网膜血管分割模型。其中,该项目使用了U-net网络结构,这是一种专门针对医学影像分割设计的网络结构,具有很好的效果。U-net网络结构包括Encode部分和Decoder部分,通过下采样和上采样的过程,将输入图像逐步转化为高层的语义信息,并恢复为原始图像的尺寸,同时利用跳跃连接将不同层级的特征加入到Decoder中,以获得更好的分割结果。 #### 引用[.reference_title] - *1* *2* [视网膜血管分割代码(Pytorch实现)](https://blog.csdn.net/cos_lee/article/details/114075762)[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] - *3* [Pytorch实现U-net视网膜血管分割](https://blog.csdn.net/lwf1881/article/details/121885451)[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 ]
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值