U-Net经典语义分割网络解读之系列二

深度学习的图像分割是一个有监督问题,需要ground truth作为训练的标签,网络损失函数一般是用dice 系数,简单讲就是分割结果与ground truth像素重合个数与总面积的比值。

医学图像分割框架

医学图像分割主要有两种框架,一个是基于CNN的,另一个就是基于FCN的。这里都是通过网络来进行语义分割。

那么什么是语义分割?可不是汉字分割句意,在图像处理中有自己的定义。

图像语义分割的意思就是机器自动分割并识别出图像中的内容,比如给出一个人骑摩托车的照片,机器判断后应当能够生成右侧图,红色标注为人,绿色是车(黑色表示 back ground)。

基于CNN的框架

这个想法也很简单,就是对图像的每一个像素点进行分类,在每一个像素点上取一个patch,当做一幅图像,输入神经网络进行训练,举个例子:

这是一个二分类问题,把图像中所有label为0的点作为负样本,所有label为1的点作为正样本。

这种网络显然有两个缺点:

1. 冗余太大,由于每个像素点都需要取一个patch,那么相邻的两个像素点的patch相似度是非常高的,这就导致了非常多的冗余,导致网络训练很慢。

2. 感受野和定位精度不可兼得,当感受野选取比较大的时候,后面对应的pooling层的降维倍数就会增大,这样就会导致定位精度降低,但是如果感受野比较小,那么分类精度就会降低。也就是Encoder-Decoder结构在感受野大小和边界分割精度两方面很难达到兼顾。

基于FCN框架

蓝白框表示feature map。蓝色箭头表示3*3卷积,用于特征提取,灰色箭头表示skip-connection,用于特征融合,红色箭头表示池化pooling,用于降低维度,绿色箭头表示上采样,用于恢复维度,青色箭头表示1*1卷积,用于输出结果。

Upsampling上采样场采用的是1、FCN用的反卷积,2、插值

skip-connection融合底层特征的位置信息和深层特征的语义信息。torch.cat([low_layer_features, deep_layer_features], dim=1)

需要注意的是 FCN深层信息和浅层信息时像素相加,Unet是拼接,叠操作。

个人理解在相加的方式下,feature map 的维度没有变化,但每个维度都包含了更多特征,对于普通的分类任务这种不需要从 feature map 复原到原始分辨率的任务来说,这是一个高效的选择;而拼接则保留了更多的维度/位置 信息,这使得后面的 layer 可以在浅层特征与深层特征自由选择,这对语义分割任务来说更有优势。

 

 

可以看出来,就是一个全卷积神经网络,输入和输出都是图像,没有全连接层。较浅的高分辨率层用来解决像素定位的问题,较深的层用来解决像素分类的问题。

Encoder负责特征提取。

FCN的decoder相对简单,只用了一个deconvolution操作,FCN完全对称。第二个区别是skip connection,FCN用的是加操作(summation),Unethical用的是叠操作(concatenation)。都是编码解码结构。

输入是一幅图,输出是目标的分割结果。继续简化就是,一幅图,编码,或者说降采样,然后解码,也就是升采样,然后输出一个分割结果。根据结果和真实分割的差异,反向传播来训练这个分割网络。

 

最精彩的就是这三部分:

下采样 上采样 skip connection

至于为什么采用先降采样再升采样,得到的是同样大小的图。降采样可以增加对输入图像的一些小扰动的鲁棒性,比如图像平移、旋转等,减少过拟合的风险,降低运算量和增加感受野的大小。升采样的最大的作用其实就是把抽象的特征再还原编码到原图的尺寸,最终得到分割结果。

对于特征提取阶段,浅层结构可以抓取一些简单特征,比如边界,颜色,深层结构因为感受野大了,而且经过的卷及操作多了,就能抓取到一些抽象特征。

一些细节

图像增强操作?

作者做了 平移、旋转、形变、灰度处理,尤其是随机形变起到了重要作用。
使用随机位移矢量在粗糙的3×3网格上生成平滑变形。位移矢量是从标准差为10的高斯分布中采样的。然后使用双三次方插值计算每个像素位移。contracting path最后的dropout也起到了数据增强的作用。

权重计算?

 

在这里插入图片描述

ωc:Ω→R是用来平衡 某一类 频率的权重图
d1:Ω→R表示到背景的某个像素点到最近细胞边界的距离
d2:Ω→R表示到背景的某个像素点到第二近的细胞边界的距离
设置ω0=10,σ≈5个像素

距离越远,基本上权值都是一样的,接近于wc,相反,边界上的像素点的权重就很大,容易区分相邻细胞且相同细胞的边界。

使用高斯分布初始化权重,标准差为在这里插入图片描述,其中N表示一个神经元的输入节点是的数量,如,对于一个3x3的卷积,前一层有64个feature channel,那么N=9∗64=576。

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值