UNet介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UNet介绍相关的知识,希望对你有一定的参考价值。

参考技术A

参考链接1
参考链接2
参考链接3

1.图像分类(image classification)

几个方向的对比:

一个卷积操作有两个输入
(I)3D输入图片(Nin Nin channels)
(ii) k个过滤器组成的一个系列(filters/kernels/feature extractors),每个过滤器的尺寸为(f f channels),f通常为3或5。
卷积操作的输出为一个三维的volume(也称为feature map或者输出),其尺寸为(Nout Nout k)
Nin和Nout的关系如下:

卷积操作可视化如下:

在上图中,输入的尺寸在7 7 3,两个过滤器的尺寸为3 3 3,padding为0,步长为2。因此,输出的volume的尺寸为3 3 2。

另一个重要概念为感知域(receptive field)。它是指输入volume中每个filter所看到的部分。在上图中,3*3的蓝色区域为感知域。感知域也常常被称为context。

目的:减小feature map的尺寸

最大池化中两个重要的超参数(hyper-parameters):filter的尺寸和步长。

最大池化的目的是保留每个区域最重要的信息(具有最大值的像素)并且丢弃不重要的信息。这里的”重要“是指,能最好描述图片内容的信息。

值得注意的是,卷积和池化都能减小图片尺寸,因此他们被称为”下采样(down sampling)“。

如果我们只做下采样,我们只能得到”what“信息,但是损失了”where“信息。为了得到”where"信息,需要对图片进行上采样。
上采样的方法有:bi-linear interpolation, cubic interpolation, nearest neighbor interpolation, unpooling, transposed convolution, etc
转置卷积(transposed convolution)是对图片进行上采样时比较被偏爱的方法。

强烈建议阅读 这篇文章

我自己之前也 总结过 。

UNET结构的介绍性文字:

文中输入推按的尺寸是572 * 572 * 3。这里我们用128 * 128 * 3的图片进行举例。

下图是关于UNET结构的详细介绍:

下面我自己结合参考链接写一些对结构的理解:
先看decoder部分:

2@Conv layers是指应用了两个连续的卷积层;
c1-c5是卷积层的输出,p1-p4是最大池化层的输出;
进行conv2d layer的filter的channel数目增多,从而增加output的channel数目,但是size不变;
进行maxpool事后,channel数目不变,但是size减小了一半;
decoder部分是从128x128x3 到8x8x256。

参考链接
这个UNet的降采样一共经历了4层。浅层可以抓取图像的一些简单的信息,比如边界、颜色等。深藏结构因为感受野大了,且经过的卷积操作变多了,会抓取一些抽象特征。

再看encoder部分:
每一次转置卷积之后,height和weights都加倍,同时depth(channel数目)减半;
c6和u6的size相同;
encoder部分是从8x8x256 到 128x128x3;
灰色箭头表示复制和剪切操作,可以发现,在同一层左边的最后一层要比右边的第一层要大一些,这就导致了:想要利用浅层的feature,就要进行一些剪切,也导致了最终的输出是输入的中心某个区域;
长连接(skip connection)的优点: 参考链接

图像分割UNet系列------Res-UNet详解


    Res-UNet发表于2018年,是UNet非常重要的改进版本之一。当然,Res-UNet同样是应用在医学图像分割领域-----视网膜血管分割。

1、Res-UNet要解决的问题

    作者在文章的简介中就提到了视网膜血管分割任务的主要难点和挑战,这也是Res-UNet重点解决的问题,具体如下所示(直接翻译):

  • 小血管缺失:位于血管末端的小血管有时甚至人眼也难以分辨;
  • 视盘区分割结果不理想:通常视盘区域较亮,对比度相对较低,这增加了视网膜血管分割的难度;
  • 血管拓扑结构难以维系:视网膜血管有类似树状的分叉结构,但当血管太薄而无法检测到时,这样的连续的血管结构就很难保持连接(发生断裂);
  • 光照因素:光照不足或过度曝光,包括相机光源引起的光反射,会降低图像对比度,从而导致视网膜血管边界不清晰。

    综上所述,由于视网膜血管本身成像的限制与成像过程中光源等干扰,都会使视网膜血管的对比度降低,进而造成血管信息丢失或是直接影响血管的拓扑结构。

2、Res-UNet主要网络结构

    从本质上说Res-UNet并不是一个特别难懂的甚至不是特别难以想到的网络结构。在18年之前已经提出了其中经典的Resnet和Attention思想,作者是将这三者做了有机结合。此方法的流程主要所示:

    以上这张图并不能很好地展现Res-UNet的网络结构,详细的网络结构如下图所示:

    注意一点:为了解决眼底图像对比度低的现状,作者在进行模型训练以前对图像进行了对比度有限自适应直方图均衡化(CLAHE)操作,为了增加样本数量进行了patch操作。这两个部分的操作其实是值得我们深入思考的。将在下文中提出自己的观点。

2.1 Attention部分

    Attention部分其实操作也相对简单,主要是通过提取具有圆形感兴趣区域(ROI)和深色背景。然后使用圆形模板ROI mask M作为加权注意,如图2所示黄色箭头。利用这种加权注意机制,使模型只关注目标ROI区域,而忽略了不相关的噪声背景。这个操作实质上就是注意机制是通过将模型的最后一层的特征图与注意掩模相乘来实现的。ROI mask实际上是将图像进行二值化的过程。

2.2 skip连接部分

    根据Resnet的思想将skip连接添加到网络中(见图2的灰色实线部分),此操作增加了网络的深度,根据Resnet中的解释,还可以防止过拟合,提高模型的准确度。

3、引发的思考

3.1 网络结构的思考

    Attention部分祛除了ROI区域以外的噪声影响,但是使用CLAHE增强后并没有去除ROI内部的噪声干扰。但是从文章结果来分析,似乎并没有造成较大的影响。
    skip连接部分充分说明了Resnet的强大,当然网上有太多的解释和分析, 本人不在此处细讲。

3.2 CLAHE增强与patch操作

    CLAHE增强操作必然会增加图像的噪声,当然作者应该进行了滤波操作以保障二值化(ROI)的准确性,也保证网络输入部分图像信号的质量。但是有一个问题值得我们思考,增加噪声就一定会使网络性能变差吗?就算是进行滤波或是其他降噪操作,CLAHE增强带来的噪声是不会完全消失的。噪声是不是还会使网络性能产生较好的性能?我在这一刻想到了反向传播,想到了梯度和激活函数,这是个有趣的点。

    原文中的patch操作是无重叠的,最后再拼在一起。实际上无重叠会造成信息的丢失,尤其是上下文信息的丢失,这在一定程度上会影响血管拓扑结构,这也是一个需要关注的地方。

    总之,以上都是自己的愚见,希望各位大神和朋友们激烈交流和讨论。

以上是关于UNet介绍的主要内容,如果未能解决你的问题,请参考以下文章

Unity模拟弹幕——Unet

UNET图像语义分割入门深度学习

DDPM代码详细解读:Unet结构正向和逆向过程IS和FID测试EMA优化

DDPM代码详细解读:Unet结构正向和逆向过程IS和FID测试EMA优化

python-Unet计算机视觉~舌象舌头图片分割~机器学习

python-Unet计算机视觉~舌象舌头图片分割~机器学习