参考文献:图像分割的U-Net系列方法
MultiResUnet概述
改进Unet
1. MultiResUNet
== MultiResUNet : Rethinking the U-Net Architecture for Multimodal Biomedical Image Segmentation==
代码:https://github.com/nibtehaz/MultiResUNet
MultiResUNet[8]提出了一个MutiRes模块与UNet结合。MutiRes模块如下图所示,是一个残差连接的扩展,在该模块中三个3x3的卷积结果拼接起来作为一个组合的特征图,再与输入特征图经过1x1卷积得到的结果相加。
5x5=两个3x3,P=0,S=1,7x7=3个3x3,所以变成下图(颜色感觉画错了:应该是绿和粉色颠倒一下,否则把拼接立起来)
组合的特征图再与输入特征图经过**1x1(减少参数)**卷积得到的结果相加。
该网络除了MultiRes模块以外,还提出了一个残差路径(ResPath), 使编码器的特征在与解码器中的对应特征拼接之前,先进行了一些额外的卷积操作,如下图所示。作者认为编码器中的特征由于卷积层数较浅,是低层次的特征,而解码器中对应的特征由于卷积层更深,是较高层次的特征,二者在语义上有较大差距,推测不宜直接将二者进行拼接。因此,使用额外的ResPath使二者在拼接前具有一致的深度,在ResPath1, 2, 3, 4中分别使用4,3,2,1个卷积层。
注意:原论文中,在虚线残差结构的主分支上,第一个1x1卷积层的步距是2,第二个3x3卷积层步距是1。
但在pytorch官方实现过程中是第一个1x1卷积层的步距是1,第二个3x3卷积层步距是2,
这么做的好处是能够在top1上提升大概0.5%的准确率。
可参考Resnet v1.5 https://ngc.nvidia.com/catalog/model-scripts/nvidia:resnet_50_v1_5_for_pytorch
————————————————
版权声明:本文为CSDN博主「小馨馨的小翟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43215597/article/details/123757602
所以整体结构为
2.FusionNet
FusionNet: A deep fully residual convolutional neural network for image segmentation in connectomics
优点:引入了基于求和的跳跃连接,允许更深入的网络结构以实现更精确的分割
代码:https://github.com/GunhoChoi/FusionNet-Pytorch/blob/master/Basic_blocks.py.
- FusionNet 没有尺寸上的变化,严格按照2倍缩小2倍扩大。
- 中间的内部块不一样。U-Net用的卷积,FusionNet用的“汉堡”,两个卷积中间夹一个残差块。
其中残差块为三个卷积+一个短跳
下图为UNet和FusionNet的区别:其中FusionNet采用的是 短跳+长跳的组合
- 特征融合方式不一样。U-Net用的concat拼接,通道数翻倍,FusionNet用的sum,逐像素求和。
3.R2U-Net
Recurrent Residual Convolutional Neural Network based on U-Net (R2U-Net) for Medical Image Segmentation
代码:https://github.com/LeeJunHyun/Image_Segmentation
R2U-Net全称叫做Recurrent Residual CNN-based U-Net[9]。该方法将残差连接和循环卷积结合起来,用于替换U-Net中原来的子模块,如下图所示。
其中环形箭头表示循环连接。下图表示了几种不同的子模块内部结构图,(a)是常规的U-Net中使用的方法,(b)是在(a)的基础上循环使用包含激活函数的卷积层,(c)是使用残差连接的方式,(d)是该文章提出的结合(b)和(c)的循环残差卷积模块。