好久没有阅读最新的分割模型文章了,今天将分享Unet的改进模型UNet+++,通过理解该模型思想,在VNet3D基础上做了同样的复现,但是有些细节稍稍不同。
1、VNet模型
大家看过我之前的文章,肯定对VNet模型已经非常熟悉了,该结构出自2016年发表的一篇论文《V-Net:Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation》,关于该网络具体的细节可以阅读原文,我这里就不多说了。
2、全尺度跳跃连接模块
2020年4月份出来的一篇论文《UNet 3+: A Full-Scale Connected UNet for Medical Image Segmentation》中,作者在Unet和Unet++(NestedUnet)模型结构的基础上做了一些改进,作者说到由于Unet的跳跃连接直接将解码网络的输出拼接到编码网络的输入,特征尺度跨度太大,对最后的图像分割影响很大,而Unet++虽然在Unet的基础上改变了跳跃连接的方式,但是其跳跃连接方式不是全局尺度跳跃连接的,而且网络参数非常大,而作者提出的全局尺度跳跃连接是将低维特征和高维特征进行充分拼接融合,例如下面这个图所示。
我将详细的讲解一下这个模块思想:例如编码网络中的Xd3的构成就有5个部分拼接组成,第一个是解码网络中的最后一层Xe5通过4倍上采样恢复到跟Xe3一样图像大小,再经过一个卷积层得到64通道的特征图,第二个是解码网络的Xd4通过2倍上采样恢复到跟Xe3一样图像大小,再经过一个卷积层得到64通道的特征图,第三个是解码网络中的Xe3直接通过一个卷积层得到64通道的特征图,第四个是解码网络中的Xe2通过2x2的最大池化层,采样到Xe3一样图像大小,再经过一个卷积层得到64通道的特征图,第五个是解码网络中的Xe1通过两个2x2的最大池化层,采样到Xe3一样图像大小,再经过一个卷积层得到64通道的特征图,最后将这五个输出结果拼接,然后再经过一个卷积层和BatchNormalization层得到Xd3。而编码网络中的Xd4的构成也是5个部分拼接组成的,第一个是解码网络中的最后一层Xe5通过2倍上采样恢复到跟Xe4一样图像大小,再经过一个卷积层得到64通道的特征图,第二个是解码网络的Xd4通直接通过一个卷积层得到64通道的特征图,第三个是解码网络中的Xe3通过2x2的最大池化层,采样到Xe4一样图像大小,再经过一个卷积层得到64通道的特征图,第四个是解码网络中的Xe2通过两个2x2的最大池化层,采样到Xe4一样图像大小,再经过一个卷积层得到64通道的特征图,第五个是解码网络中的Xe1通过三个2x2的最大池化层,采样到Xe4一样图像大小,再经过一个卷积层得到64通道的特征图,最后将这五个输出结果拼接,然后再经过一个卷积层和BatchNormalization层得到Xd4结果,其他编码网络中的模块依次类推计算。
3、VNet3D+++网络
论文中Unet+++网络结构如下第三个图所示。
我在VNet3D的基础上复现了VNet3D+++,结构类似Unet+++,但是其中解码网络和编码网络的特征图通道数设置的不一样,复现的时候保持了解码网络和编码网络的特征图通道数个数一一对应,与论文中的比编码网络的特征通道数都是320是不一样的。
了大家更好的学习,我把VNet3d+++网络代码分享到github上:
https://github.com/junqiangchen/VNetFamily
如果大家觉得这个项目还不错,希望大家给个Star并Fork,可以让更多的人学习。如果碰到任何问题,随时留言,我会尽量去回答的。