当前位置:   article > 正文

UNet++:巧妙改进之力在语义分割领域的绽放_unet++模型改进

unet++模型改进

今天想和大家分享的是:UNet++,UNet++是对UNet网络架构进行改进的一个版本。本文基于《UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation》论文,将深入探讨UNet++的改进思路和模型架构,逐步解析其对UNet模型的优化之处。通过对UNet++关键概念和技术细节的解释,希望能够帮助大家更好地理解这一创新模型,并为相关领域的研究和实践提供有益的启发。

论文题目:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation;

论文链接: http://arxiv.org/abs/1912.05074;

在正式介绍UNet++之前,我想先询问大家,第一次听到这个网络名称时是否和我一样感到好奇:为什么它被称为"UNet++"呢?名称的前半部分很好理解,指的是在UNet模型结构基础上进行的改进,但后面为什么是两个“+”呢?是因为作者认为一个“+”无法展示出该模型的提升程度,必须用两个“+”来凸显,还是因为实际上已经有另一个模型叫做"UNet+"呢?通过阅读本文,你将会找到答案。

简介

UNet++是由美国亚利桑那州立大学(Arizona State University,ASU)团队开发的语义分割项目,会议论文《UNet++: A Nested U-Net Architecture for Medical Image Segmentation》于2018年发布在《DLMIA》(Deep Learning for Medical Image Analysis)顶会上,期刊论文《UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation》于2020年发布在《IEEE医学成像期刊》(Institute of Electrical and Electronics Engineers Transactions on Medical Imaging,IEEE TMI)国际期刊,其第一作者为我们国人周纵苇,博士就读于亚利桑那州立大学念生物信息学,主要研究方向是计算机视觉,应用的领域大多在医学影像,目前在约翰·霍普金斯大学任职。

"编码器-解码器"结构优势

                                                                FCN网络架构

来源:Fully Convolutional Networks for Semantic Segmentation

在UNet++诞生前,计算机视觉领域有两大知名图像分割网络,全卷积网络(FCN)是其中之一,另一个为当时炙手可热的UNet分割网络,这两个网络模型在架构上都采用了”编码器-解码器(encoder-decoder)“结构(其实FCN的解码器只采用了一层的deconvolution的操作),这种结构此后广泛用于语义及实例分割模型中,它的成功很大程度上归功于”跳跃连接“这一设置,它将来自解码器子网的深层的、语义的、全局层面的特征图与来自编码器子网的浅层的、低级的、局部层面的特征图相结合,该方式已被证明可以有效提升分割图像中小尺度目标的细节效果,即便在复杂背景上也是如此。

                                                                UNet网络架构

来源:U-Net: Convolutional Networks for Biomedical Image Segmentation

模型改进

结构入手

众所周知,UNet++是在UNet基础上进行的改进,UNet此前已经以精简的网络结构,较快的推理速度以及优秀的性能立足于图像分割领域,因此从什么角度入手改进UNet,以及如何改进UNet是当时每个研究团队所面临的首要问题。在经过深思熟虑后,作者决定从模型结构的角度入手,对UNet网络结构进行简化、简化再简化,最终得到只保留分割网络的”上采样“、”下采样“及”跳跃连接“部分的拓扑结构

                                                        分割网络的拓扑结构

来源:研习U-Net - 知乎

是否网络越深越好

在面对拓扑结构思考良久后,作者发出这样的疑问:这个结构难道一点问题没有嘛?它的结构深度是怎样确定的?为什么UNet要进行4次降采样后才进行上采样,为什么是4次?模型结构是越深越好嘛?面对这一连串问题,首先要搞清楚一个核心问题,到底模型结构是否是越深越好,针对这一问题,作者采用消融研究的方式去获得答案。

消融实验

消融实验(Ablation Study)是指为了评估一个模型中各个组成部分的重要性而进行的一类实验。在消融实验中,研究人员会逐步地移除模型的某些组件或特征,然后观察模型性能的变化,这有助于确定哪些组件对模型的性能起着关键作用,确定每个组件对模型整体性能的贡献程度如何。此次研究对网络层数进行调整,以调查不同深度Unet的性能指标。

下图为不同深度的U-Nets。图中的每个节点代表一个卷积块,向下箭头表示向下采样,向上箭头表示上采样,点箭头表示跳过连接。

                                                        不同深度下的UNets

来源:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

采用3个相对较小的数据集,即细胞(Cell)、EM(Electron Microscopy)和脑肿瘤(Brain Tumor)对不同深度的UNets及进行测试,采用交并比(IoU)当作比较指标(mean±s.d. %),“DS”表示深度监督训练。

从表中结果可知,对于细胞和脑肿瘤分割,较浅的网络(UNet L3)优于深度UNet,而对于 EM 数据集,较深的UNets始终优于较浅的UNets,但性能提升只是微乎其微的。实验结果表明了两个关键点:

· 不是UNets网络结构越深,分割结构就越优;

· 不同种类数据集,最优深度结构是不同的。

                                        不同深度下UNets的消融实验结果

来源:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

集成网络结构

由于不同种类数据集的最优深度结构是不同的,其最直接的解决方式就是针对不同的数据集,训练不同深度的模型,并且依据模型的测试指标,选取最优深度结构,但有个问题,这样做未免也太费事了,大大浪费了性能计算与时间成本,那就没有其他方式解决了嘛?不,一定还有其他方式,其实从消融实验我们就可初窥门径,不同深度的模型,就是从不同深度的层开始进行上采样,那我们是不对不同深度的编码器层都进行上采样,抓取不同层次的特征,将浅层特征和深层特征尽可能都提取起来,做一个利用不同深度的集成网络结构模型,就可以解决该问题了。

按照上述思路,对不同深度的编码器层都进行上采样,并进行相应的跳跃连接,我们可以得到下图的网络结构,该结构有两个重要特征:

· 将各个深度的特征都利用上,让网络自行去学习不同深度特征的重要性;

· 该网络共享一个特征提取器,无需训练大量不同深度结构的网络模型,从而节省性能计算及时间成本;

                                                        集成网络结构

来源:研习U-Net - 知乎

看似该网络结构已经完美解决了”最优深度“这个问题,但仔细观察上图,你会发现一个致命缺陷,在反向传播的过程中,它是无法通过红色区域,这些地方是断开的,不会有梯度经过,也就是说它是无法被有效训练的。

UNet+

既然上述网络有缺陷,于是作者采用了另一种”短连接“的方式对UNet进行改进,并在改进的基础上引入了深度监督操作,形成了一个新的网络结构,作者对其命名为”UNet+“,此时也揭晓了文章开头的疑问,原来真的有UNet+存在。

                                                        UNet+网络架构

来源:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

UNet+网络结构同样对编码器中每一层都进行上采样操作,同样共享一个特征提取器,但在跳跃连接方面摒弃了UNet网络的长连接方式,进而全部采用短连接的方式进行连接。虽然UNet+解决了不能有效训练的问题,但作者依然对其产生了疑问,这个网络结构就没有改进的余地了嘛?且摒弃的UNet长连接没有优势嘛?长连接的优点是什么?其实长连接的作用是联系了输入图像的很多信息,有助于还原降采样所带来的信息损失,在一定程度上,它和残差的操作非常类似。为此作者决定引入长连接,对跳跃连接部分再次进行改进,采用了”密集连接“的策略。

UNet++

密集连接方法就是不仅采用短链接方式,还在网络中加入长连接方式,最终形成了UNet++架构。基于密集连接,模型发生如下改变:

· 解码器中的每个节点不仅会显示最终的聚合特征图,还会显示中间聚合特征图和来自编码器的原始相同比例的特征图;

· 解码器节点中的聚合层不仅可以学习编码器中相同比例特征图,还可以学习输入图像的原始特征;

· UNet++的参数量从UNet的7.8M增加至9.0M。

                                                        UNet++网络架构

来源:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

分割结果比较

UNet++已粉墨登场,接下来就该测试下它比UNet网络提升多少了,由于UNet++的参数量有所提升,避免有人发出模型效果好是由于参数量增加的原因,作者决定采用强行增加了UNet的参数量,增加其中每个层的卷积核数量,将参数量增至9.13M,使UNet变宽为Wide-UNet,并将Wide-UNet一同进行6种不同的生物医学图像分割测试,来证明UNet++并不是无脑增加参数量。其实作者也认为这样增加参数有点敷衍,应该能找到更好的对比方法,尽管这样有所不足,但依然具备一定的回击力度。

                                                各模型的医学影像语义分割结果

来源:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

观察医学影像分割结果图可以发现,UNet++的分割结果都要更接近真实标注图,其IoU丨Dice数值也是最佳,由于UNet++与Wide-UNet的参数量相当,因此从侧面也说明,UNet++相较于UNet的提升不单单只是因为参数量的提升,同时也来源于模型结构的改进。

花费如此大篇幅,从介绍作者如何结构入手到作者发出怎样疑问再到如何不断改进最后到对比展示各模型分割结果,终于是把UNet++呈现到大家眼前,这时各位会不会以为这就结束了?不!作者不仅对模型结构做出了改进,还加快了模型推理阶段的速度。

加速推理

深度监督

                                                        引入深度监督操作

来源:研习U-Net - 知乎

深度监督(deep supervision):是一种在深度神经网络的某些中间隐藏层添加辅助分类器的技巧,这些辅助分类器作为网络分支对主干网络进行监督。作者对UNet++引入深度监督,具体的实现操作是在图中X0,1,X0,2,X0,3,X0,4后面加一个1x1的卷积核,相当于去监督每个Level,或者每个分支的UNet++输出,然后,我们定义了一个混合分割损失,该损失由每个语义尺度的像素交叉熵损失和Dice系数损失组成。混合损失可以利用两个损失函数提供的优势:平滑梯度和类不平衡的处理。在数学上,混合损失定义为:

其公式中,C 是在给定数据集中观察到的类数,yn,c ∈ Y,pn,c ∈ P表示该批次中c类和n个像素的目标标签和预测概率,N表示一个批次内的像素数。

剪枝

为什么要在各个Level子网络中引入深度监督,因为深度监督可以进行”剪枝“。针对剪枝,作者提出了这样三个疑问:为什么UNet++可以被剪枝?如何剪枝?好处在哪里?

                                                        UNet++ L1~L4结构

来源:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

每个剪完剩下的子网络根据它们的深度命名为UNet++ L1,L2,L3,L4,后面会简称为L1~L4

为什么可以剪枝

先来看看为什么可以剪枝,关注下图被剪掉的这部分,你会发现,在训练阶段,因为既有前向传播,又有反向传播,此时被剪掉的部分是负责其他部分做权重更新的,而在测试阶段,由于输入图像只进行前向传播,去掉这部分,分割结果依然可以输出,因此在模型结构上UNet++是可以进行剪枝的。

在引入深度监督后,UNet++的每个子网络(L1~L4)都可以进行图像的单独输出,输出的其实都已经是图像的分割结果了,只是分割效果不同,如果小的子网络(L1~L4)的输出结果已经足够好了,那我们可以随意的剪掉多余部分,换句话讲,如果L1的输出结果足够好,我们可以将其余部分全部剪掉,剪完以后的分割网络会变得非常的小。

                                                                UNet++模拟剪枝

来源:研习U-Net - 知乎

如何剪枝

如何剪枝?剪多少合适?作者采用L1~L4网络在验证集上的表现情况进行确认,所谓验证集就是一开始从训练集中分出来的数据,用来监测训练过程用的。

看下L1~L4的网络参数量,其中L1只有0.1M,而L4有9M,相差8.9M,如果理论上L1的结果是令人满意的,那么模型可以被剪掉的参数达到98.8%,不过根据测试的4个数据集(Cell Nuclei(细胞核)、Colon Polyp(大肠息肉)、Liver(肝脏)、Lung Nodule(肺结节)),L1的效果要差很多,毕竟太浅了,但是其中有3个数据集(Cell Nuclei(细胞核)、Liver(肝脏)、Lung Nodule(肺结节))显示L2的结果与L4已经非常接近,也就是说对于这3个数据集,在测试阶段,我们不需要用9M的网络,用L2的网络就足够了,而L2的参数量只有0.5M。

                                                L1~L4在4个数据集上的分割表现

来源:研习U-Net - 知乎

通过消融实验,我们知道网络不是越深越好,但在网络具体多深合适问题上,依据验证集结果会发现,网络的深度和数据集的难度是有关系的,在4个数据集中,Colon Polyp分割是最难的,观察纵坐标,其余3个数据集的mIoU值都较高,唯独Colon Polyp分割只有在30左右,因此可以得到这样的结论:

· 数据集的复杂程度与网络深度呈现一定的正相关关系。对于较难的数据集,网络越深,分割结果是不断上升。

· 对于大多数比较简单的分割问题,其实并不需要非常深、非常大的网络,小一些的网络就能达到不错的精度,采用小网络模型可以大大节省训练时长与硬件性能。

推理速度

在推理速度方面,采用单张显存12G的TITAN X (Pascal)显卡进行测试,图中横坐标代表L1~L4网络在测试阶段分割一万张图像花费的时间,可以发现不同的模型大小,测试所需时间相差很多。比较L2和L4的所用时间,相差三倍之多,而在推理精度上二者基本相同,也就是说实际应用中如果L2得到的效果和L4相近,就可以用L2替代L4进行推理,不仅大幅度减少推理时间,模型内存还可以节省18倍。

                                                        L1~L4的推理耗时

来源:研习U-Net - 知乎

结果

在介绍了UNet++是如何改进的,是如何进行剪枝后,终于要将UNet++拉出来与其他模型“battle“一下了,分别从语义分割结果及实例分割结果进行呈现。

语义分割结果

比较了UNet、Wide-UNet、UNet+和UNet++网络模型在6个分割任务上的IoU(Intersection over Union)结果,发现Wide-UNet的表现始终优于UNet,这一改进可以归因于Wide-UNet拥有更多的参数。

在没有深度监督的情况下,UNet++在这6个分割任务中都展现出了显著的IoU增益。

通过引入深度监督和平均投票机制,进一步改善了UNet++的性能。具体来说,神经元结构和肺结节分割从深度监督中获益最多,因为它们在电子显微镜和CT切片中以不同的尺度出现,而其他数据集的分割结果在应用深度监督后提升较少。

                                                        各网络模型分割精度

来源:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

为了深入研究UNet++在语义分割领域的可扩展性,作者将VGG19、ResNet-152和DenseNet-201等主干架构转换为UNet模型,并添加了解码器子网络,然后利用重新设计的UNet++密集连接替代了普通跳跃连接。在训练阶段,他们使用了包括EM、细胞、细胞核、脑肿瘤和肝脏等分割数据集。

通过进行20次实验,研究结果明确表明,在所有应用了不同主干架构的情况下,UNet++始终优于UNet和UNet+,这证实了UNet++是对UNet的有效扩展,且与主干架构无关。

                                                        更改主干网络的测试结果

来源:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

实例分割结果

实例分割包括分割和区分所有对象实例。我们使用Mask-RCNN作为实例分割的基线模型。Mask-RCNN利用特征金字塔网络(FPN)作为主干,我们修改Mask-RCNN,将FPN的普通跳跃连接替换为重新设计的UNet++ 跳跃连接。我们将此模型称为Mask-RCNN++。在我们的实验中, 我们使用resnet101作为Mask-RCNN 的主干。

选择Nuclei数据集进行测试,数据集中的图像存在多个原子核实例,每个实例都以不同颜色进行注释,被标记为不同的对象,因此该数据集既适用于语义分割又适用于实例分割。实例分割结果中Mask-RCNN++ 的表现优于Mask-RCNN,IoU提高1.82 (93.28% 到 95.10%),Dice系数提高了3.45 (87.91% 到 91.36%),在此基础上,还训练了UNet 和 UNet++ 模型,用于使用 resnet101 主干进行语义分割,对比分割精度结果,Mask-RCNN模型比语义分割模型具有更高的分割性能,并且,正如预期的那样,UNet++ 在语义分割方面优于 UNet。

                                                        语义分割及实例分割结果

注:Dice系数评价指标是一种用于衡量图像分割准确度的指标,常用于评估分割模型的性能。它计算预测结果和真实标签之间的相似度,其计算公式为2 * (预测区域与真实区域的交集面积) / (预测区域的面积 + 真实区域的面积)。Dice评价指标的取值范围在0到1之间,1表示完美匹配,0表示完全不匹配。)

来源:UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

贡献

通过对UNet++网络模型进行深入剖析,我们可以总结出以下几个显著的贡献:

· UNet++引入了不同深度的UNet内嵌集成,从而提升了对不同尺寸对象的分割性能,这是相较于固定深度的UNet的一项改进;

· UNet++重新设计了跳跃连接,在解码器中实现了灵活的特征融合,打破了UNet中仅能融合相同比例特征图的限制性跳跃连接模式;

· 提出了一种修剪经过训练的UNet++模型的方案,旨在在保持性能的同时提高推理速度;

· 证明了UNet++在多个骨干编码器上的可扩展性,并成功将其应用于各种医学成像模式,包括CT、MRI和电子显微镜图像。

写在最后

UNet++在语义分割领域的突出表现确实让人叹为观止,虽然是在UNet架构基础上进行改进,但其设计精妙之处仍让人折服。除了感叹UNet++的巧妙扩展外,我更加敬佩作者的科研态度和探索精神。作者以深入浅出的方式向大家展示了他是如何对UNet提出疑问,并一步步解决问题的过程。这种发现问题与解决问题同等重要的态度着实令人钦佩。通过UNet++的诞生历程,作者向我们传达了一个重要信息:精妙的设计不仅需要天马行空的想象力,更需要严谨的逻辑推理作为支撑。作者用实际行动告诉我们,科研中的"idea"隐藏在我们不经意间的疑问中,关键在于抓住并解决这些疑问,从而为所在领域做出贡献。这种科研精神和探索精神,值得我们借鉴和敬仰。

参考资料

【1】UNet++: Redesigning Skip Connections to Exploit Multiscale Features in Image Segmentation

【2】 http://arxiv.org/abs/1912.05074

【3】Fully Convolutional Networks for Semantic Segmentation

【4】U-Net: Convolutional Networks for Biomedical Image Segmentation

【5】研习U-Net - 知乎

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/626165
推荐阅读
  

闽ICP备14008679号