一 写在前面
之前没有太了解segmentation任务是怎么做的,重温一下经典的u net结构。
- U-Net: Convolutional Networks for Biomedical Image Segmentation
- https://arxiv.org/abs/1505.04597 (MICCA 2015)
主要解决两个问题:
- 如何实现pixel level的分割任务?
- u-NET网络结构如何设计的?
二 网络结构如何设计
整个网络结构呈现U形状,所以也被称之为U-net.
U-net同样也被认为是经典的encoder-decoder结构,左边不断降低feature map大小提高特征维度的部分是encoder,反之,右边不断提升feature map大小降低特征维度的部分是decoder。
具体来说,
- 左边,例如从568x568x64的特征维度到284x284x128的过程是利用一个3x3的卷积(使得特征维度double,从64到128)和2x2的max pool(stride=2,使得特征大小减半,从568到284)完成的;
- 右边,则主要是通过上采样,concat with左边的特征,以及3x3的卷积完成的,例如从右边的第二层到右边第一层的过程为:先由198x198x128经过3x3卷积得到196x196x64,1) 对其进行2x2上采样得到392x392x64, 2)然后再取左边第一层568x568x64中的392x392x64(左边虚线框的位置)进行concat得到392x392x128(右边蓝白条纹相叠的位置)3)然后对concat得到的392x392x128进行两次3x3卷积,得到388x388x64的特征维度;
二 如何实现分割
其实就是图里的最后一个conv1x1, 用1x1的卷积对388x388x64的特征图进行卷积,得到388x388x2 (U-net本身做的是二分类)