unet 是15年提出的用于解决医学图像分割问题。unet有两部分组成。左边部分可以看出是特征提取网络,用于提取图像的抽象特征。右边可以看作是特征融合操作。与传统的FCN相比,unet使用是使用特征拼接实现特征的融合。unet 通过特征融合操作,实现了浅层的低分辨率(越底层的信息含有越多的细节信息)和深层的高分辨率信息(深层信息含有更多的抽象特征)的融合,充分了利用了图像的上下文信息,使用对称的U型结构使得特征融合的更加彻底。
上图是unet 的网络结构图。其中蓝色方框代表的是特征图。可以看到,左边部分首先进行两层卷积然后进行下采样来提取特征。右边,通过上采样操作后与相应的左边的特征图进行拼接操作。
from torch import nn
import torch
from torch.nn import functional as Fclass Conv_Block(nn.Module): # 卷积def __init__(self, in_channel, out_channel):super(Conv_Block, self).__init__()self.layer = nn.Sequential(####填充的方式,填充的大小,padding_mode 设置填充的方式 ###这里卷积图片的大小没有发生改变nn.Conv2d(in_channel, out_channel, 3, 1, 1, padding_mode='reflect',