1.U-Net介绍
U-Net的提出是为了解决医疗图像中的问题。
1.1 网络结构
UNet网络是Encoder-Decoder的结构。 左边为Encoder,进行卷积与池化来减低维度;右边为Decoder,进行卷积与上采样来提升维度。
- 蓝色箭头:卷积操作,卷积核=3x3,padding=0,步长=1,使用ReLU激活函数
- 红色箭头:最大池化,卷积核=2x2
- 灰色箭头:复制与拼接
- 绿色箭头:转置卷积,卷积核=2x2,也就是两倍上采样
- 墨绿色箭头:卷积操作,卷积核=1x1,卷积核个数=分类个数,步长=1,
1.2. Encoder
Encoder部分的执行过程如图所示,可以分为四层,每层包含两个卷积层,而且卷积核的个数在倍增。
经过卷积层,图像的高宽会减少2;经过池化层,图像的高宽会减少一半。
1.3. Decoder
在Decoder部分会进行卷积与转置卷积(上采样),流程如图所示。可以分为四层,每层包含两个卷积层,而且卷积核的个数在倍减。经过卷积层,图像的高宽会减少2;
层与层之间使用转置卷积进行上采样,转置卷积会让图像的高宽放大两倍,而通道数减半。
经过转置卷积后,会从Encoder部分的对应层中的中心截取与上采样后的图像大小相同的部分,并且与上采样后的图像进行拼接,使得通道数翻倍,但图像的高宽没有发生改变。
最后会使用1x1的卷积核进行卷积操作,卷积核个数=分类个数。
注意,最后输出的图像大小与输入的图像大小是不一样的,这是因为卷积操作会使得图像缩小。如图所示,输出的图像只是黄色框。
1.4 改进
- 在原始的UNet中,输出的图像大小会小于输入的图像,这是因为进行卷积操作时padding=0,会导致图像缩小,因此现在的技术会在进行卷积时进行padding来保证输出图像不会缩小。
- 对于高分辨率的图像,一次性全部输入到模型时不合理,因此需要切分。在切分过程中,会让相邻的区域有一定的重叠(overlap),来保证边缘区域的效果。
- 对于位于两个物体之间的背景区域给予更高的权重,这样在热力图中就更加明显。