Pytorch-UNet介绍

2020-06-07  本文已影响0人  WAI_f

简介

UNet网络主要用在医学图像分割任务上,网络的结构特点就是:

模型结构

前面已经介绍了,模型就是一个编码器+解码器,类似U形,并且还使用了skip connection技术,我看到的不少网络都有借鉴这两个结构设计。


Unet网络结构

画图实在太复杂了,直接搬图又显得没有诚意,只能把tensorboard上的graph拿出来。上面的图因为代码设计的原因,很多步骤合并到了一起,另外箭头上很小的数字就是输入输出的tensor的shape,可惜因为有点大没办法直接保存下来。这里面的DoubleConv就是连续做两次卷积,input椭圆形小圈是下采样,可以看到图中一共4个小白圈,对应四次下采样。Up对应的就是反卷积上采样、Skip connection和DoubleConv三个过程。

DoubleConv

DoubleConv做完以后,可以看到上图有两个箭头,一个是把tensor传到下一个卷积层提取特征,另一个是用来和后面反卷积数据concatenate也就是skip connection。

subsampling

下采样就很简单,输入32x256x256,输出32x128x128,channel数没变,feature map长宽减半。
Up部分的结构本来不复杂,但是我参考的代码在实现的时候,为了让反卷积得到的tensor和前面的feature map大小一致,自己实现了padding。随着不断了解pytorch,感觉似乎没有必要这样做,直接在ConvTranspose2d里面设置参数就可以了。这导致Up部分的graph显示的很复杂,所以就没有放。
理论方面我也不怎么在行,写起来挺没感觉的,后面我将介绍一些UNet Pytorch实现以及训练相关的东西,努力!奋斗!

上一篇 下一篇

猜你喜欢

热点阅读