Unet深度学习网络

2015年《U-Net: Convolutional Networks for Biomedical Image Segmentation》


先对图片进行卷积和池化,在Unet论文中是池化4次,比方说一开始的图片是224x224的,那么就会变成112x112,56x56,28x28,14x14四个不同尺寸的特征。然后我们对14x14的特征图做上采样或者反卷积,得到28x28的特征图,这个28x28的特征图与之前的28x28的特征图进行通道的拼接concat,然后再对拼接之后的特征图做卷积和上采样,得到56x56的特征图,再与之前的56x56的特征拼接,卷积,再上采样,经过四次上采样可以得到一个与输入图像尺寸相同的224x224的预测结果。

其实整体来看,这个也是一个Encoder-Decoder的结构。

Unet网络非常的简单,前半部分就是特征提取,后半部分是上采样。

Encoder:左半部分,由2个3x3的卷积层(RELU)+1个2x2的maxpooling层组成一个下采样的模块;
Decoder:右半部分,由1个上采样的卷积层(去卷积层)+特征拼接concat+2个3x3的卷积层(ReLU)反复构成;

Unet相比更早提出的FCN网络,使用拼接来作为特征图的融合方式。
FCN是通过特征图对应像素值的相加来融合特征的;
U-net通过通道数的拼接,这样可以形成更厚的特征,当然这样会更佳消耗显存;

Unet的好处我感觉是:
1、网络层越深得到的特征图,有着更大的视野域,浅层卷积关注纹理特征(低级特征),深层网络关注本质的那种特征(高级特征),所以深层浅层特征都是有格子的意义的;
2、另外一点是通过反卷积得到的更大的尺寸的特征图的边缘,是缺少信息的,毕竟每一次下采样提炼特征的同时,也必然会损失一些边缘特征,而失去的特征并不能从上采样中找回,因此通过特征的拼接,来实现边缘特征的一个找回。

自己写的pytorch代码
https://zhuanlan.zhihu.com/p/313283141
 

你可能感兴趣的:(神经网络,深度学习,网络,计算机视觉)