Unet演化系列大整理:
- Unet是学习语义分割不可缺少的一个网络。它的对称美和简洁一直能够震撼人心。
主要摘要和前人工作:
- 作者发现,要进行分割任务需要很多的标注好的图片,然而标注图片是一个费时费力的过程。他提出了一个strong use of data augmentation方法能够更好的利用现有的数据。这个网络更主要是用在医疗图像分割方面。
- 作者说道了一个sliding-window模型。这个模型通过形成patch(其实就是通过不同大小的卷积核吧,当做滑动窗口)来对每一类像素进行预测。然而,这个方法会使得计算速度非常慢,而且由于不同的patch有重叠,就会出现很多冗余的计算。在定位精度和内容理解方面,大patch和小patch有冲突。大的patch需要经常使用maxpool,使得定位的精度降低。然而小的patch看到的内容比较少,虽然定位精度比较高。现在多尺度的卷积层能够进行融合,就像FCN一样。所以,网络层应该是有可能兼顾定位精度和内容理解的。
- Unet是从FCN更改而来的。主要是通过正常的类似于VGG的收缩网络,让每个层的feature map变小,之后再不断通过上采样代替pooling操作(论文里面是这么说)Unet内容并不是很多,主要是要注意网络结构的改进以及接下来的创新点。
网络结构详解:

- 最小的feature map大小是32 x 32.蓝色的表示不同通道数的feature map,通道数在上面,feature map大小在左侧标注出来。之后各种箭头代表不同的处理方法。这个网络并没有经过padding,feature map的大小是通过严格计算的。
- 压feature map的被作者叫做encode,还原图像的上采样过程叫做decode过程。这个网络并没有全连接层,只有卷积层。在encode部分,作者遵循了之前卷积网络的结构,就是不断用两个3 x 3卷积核进行卷积,之后用ReLU和2 x 2的pooling层(stride = 2)来降低feature map的大小。每一次downsample都会让响应feature map的channel数增大一些。
- 在decode部分,作者用2 x 2的反卷积之后马上降低feature map一半的channel数目。为了和之前encode的feature map拼接起来。拼接之后用1 x 1的卷积核对通道数进行处理就可以了。网络一共有23个卷积层。
网络训练:
- 用了大图片,小batch进行训练。这样能够减少显存使用。
- 损失函数主要用的是交叉熵损失,用的是softmax,pk(x)=exp(ak(x))/(∑k′=1Kexp(ak′(x)))p_{k}(\mathbf{x})=\exp \left(a_{k}(\mathbf{x})\right) /\left(\sum_{k^{\prime}=1}^{K} \exp \left(a_{k^{\prime}}(\mathbf{x})\right)\right)pk(x)=exp(ak(x))/(∑k′=1Kexp(ak′(x)))
- 在进行损失函数的计算的时候,他们的公式是这样的。前景是细胞的区域,背景是边界的像素。一堆都是细胞的区域
- E=∑x∈Ωw(x)log(pℓ(x)(x))E=\sum_{\mathbf{x} \in \Omega} w(\mathbf{x}) \log \left(p_{\ell(\mathbf{x})}(\mathbf{x})\right)E=∑x∈Ωw(x)log(pℓ(x)(x)) 其中w(x)=wc(x)+w0⋅exp(−(d1(x)+d2(x))22σ2)w(\mathbf{x})=w_{c}(\mathbf{x})+w_{0} \cdot \exp \left(-\frac{\left(d_{1}(\mathbf{x})+d_{2}(\mathbf{x})\right)^{2}}{2 \sigma^{2}}\right)w(x)=wc(x)+w0⋅exp(−2σ2(d1(x)+d2(x</

最低0.47元/天 解锁文章
4万+

被折叠的 条评论
为什么被折叠?



