《Unet》论文阅读与

题外话


上篇对FCN的论文解读提到,FCN的训练依赖大量数据,而且仍存在分割结果不精细的弱点。今天要说的Unet就是受到FCN启发针对医学图像作语义分割,且能够利用少许的数据学习到一个对边缘提取十分鲁棒的模型,在生物医学图像分割领域有很大做用。据我了解,Unet是如今不少公司的魔改对话,在移动/嵌入式端的,也已经有把Unet作到了实时的例子。html


网络架构


这就是整个网络的结构,大致分为收缩和扩张路径来组成。由于形似一个字母U,得名Unet。收缩路径仍然是利用传统卷积神经网络的卷积池化组件,其中通过一次下采样以后,channels变为原来的2倍。扩张路径由2 * 2的反卷积,反卷机的输出通道为原来通道数的一半,再与原来的feature map(裁剪以后)串联,获得和原来同样多的通道数的feature map,再通过2个尺寸为3 * 3的卷积和ReLU的做用。裁剪特征图是必要的,由于在卷积的过程当中会有边界像素的丢失。在最后一层经过卷积核大小为1 * 1的卷积做用获得想要的目标种类。在Unet中一共有23个卷积层。可是这个网络须要谨慎的选择输入图片的尺寸,以保证全部的Max Pooling操做做用于长宽为偶数的feature map。git


Trick 1github

对于尺寸较大的图像:Overlap-tile strategy

因为网络没有全链接层,而且只使用每一个卷积的有效部分,因此只有分割图像彻底包含在输入图像中能够得到完整的上下文像素。而这个策略容许经过重叠区块无缝分割任意大的图像,为了预测图像边界区域中的像素,经过镜像的输入图像来外推丢失的上下文。这种平铺策略对于将网络应用于大图像很重要,不然分辨率将受到GPU内存的限制。能够把这个问题理解为要对超级大的图像中的小目标进行检测,那么一个可行的策略就是把原图分红不少patch,再对每一个patch分别检测,最后把结果组合在一块儿。微信


Trick 2网络


数据集可用数据量较少:数据加强

可用的训练数据很是少,经过对可用的训练图像应用弹性变形来进行数据加强。这容许网络学习到这种变形的不变性,而不须要在注释的图像语料库中看到这些变换。这在生物医学分割中尤为重要,由于变形是组织中最多见的变化,而且能够有效的模仿真实的变形。Dosovitskiy等人已经证实在无监督表征学习的范围内学习不变性的数据增长的价值,经过在一个3*3的粗糙网格中使用一个随机位移向量产生一个平滑的变形,位移量从高斯分布中取样,高斯分布有10个像素的标准差,每一个像素的偏移值经过bicubic interpolation来得到。

Trick 3架构

相同物体间的间隔不容易分割出来:加权损失

不少细胞分割任务中的一大挑战是分离同一类接触体,本文采用加权损失,其中接触单元之间的分离背景标签在损失函数中得到大的权重。以此方法提高对于相互接触的相同物体之间缝隙的分割效果。
函数


代码实现学习

caffe版本Unet: https://github.com/warden3344/unetspa

keras版本Unet: https://github.com/zhixuhao/unet.net

个人实现: https://github.com/BBuf/Keras-Semantic-Segmentation

本文分享自微信公众号 - GiantPandaCV(BBuf233)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索