全卷积神经网络入门:U-Net

全卷积神经网络通常用来实现图像分割的功能,下面以U-net为例来说明其是如何实现的:

上采样:上采样又称之为编码阶段,可以看到整个网络结构并不复杂,这里以二维图像为例,输入图像的维度是572*572,先进行两次3*3*64的卷积,由于未补0,所以每卷积一次,得到的每个feature map的长宽均会减2,紧接着对其进行2*2的池化处理,feature map大小减半,变为284*284*64,接下来和之前步骤类似,不断地做卷积和池化。在不断向下的处理过程中,feature map的层数越来越深,而宽度变得越来越小,可以看到最后一层的feature map 为28*28*1024,倒数第二层的feature为56*56*1024。

下采样:下采样又称之为解码阶段,接下来看右边的操作,绿色向上的箭头表示反卷积,简单说例如2*2的卷积就是每2*2个像素点卷积得到一个像素点,而2*2的反卷积就是1*1的像素点分别有四个权重滤波得到2*2的像素点集合。故我们看左边最下面一层是28*28*1024,经过2*2的反卷积后变为56*56*1024。后面的操作类似,右边会不断的往上做反卷积。

跨层连接:还有一个重要的特征,我们看灰色的箭头,不同的层间会有跨层连接,例如第一层生成的feature map 为568*568*64,这是会截取中的392*392*64与右边上采样得到的392*392*64的feature map拼在一起,从而得到392*392*128的feature map,通常称之为跨层连接,跨层连接的作用就在于优化细节结果,如果将编码后的高维特征直接解码,得到的结果很粗糙,所以将不同阶段的编码的池化层输出结果输入到解码阶段。

输出层:最后的特征层宽、高和输入图象宽高完全相同,可以看到最后图例中给出的最后feature map为2,是因为这个是一个二分类分割问题,所以必须要注意,这里有个设定那就是分类数等于最后输出feature map的层数,这个必须要注意,因为后面的分割损失函数中会用到。

损失函数:最后我们来说下损失函数,对于U-Net每个像素都对应的一个softmax,softmax的定义如下:

p_{k}(x)=exp(a_k(\textbf{x}))/\left ( \sum_{k'=1}^{K}exp(a_{k'(\textbf{x})}) \right )

其中,a_k(\textbf{x})表示分类k、位置\textbf{x}\textbf{x} \in Z^2)处像素点的激活,K表示分类数,p_{k}(\textbf{x})为近似的最大函数。对于有最大激活的k ,p_{k}(\textbf{x}) \approx 1,而对于其他的kp_{k}(\textbf{x}) \approx 0。故每一个像素点的交叉熵可以表示为:

E=\sum_{\textbf{x}}w(\textbf{x})log(p_{l(\textbf{x})}(\textbf{x}))

其中l(\textbf{x})表示每个像素点的真实label,w(\textbf{x})为该像素点的权重,在训练中,可以给一些像素点更高的权重。

还有一个损失函数是Dice coefficient:

Dice coefficient是常见的评价分割效果的方法之一,同样的也可以作为损失函数衡量分割的结果和标签之间的差距。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值