社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

《深度学习图像分割》第4章:基于编解码结构的分割网络

机器学习实验室 • 5 天前 • 15 次点击  

《深度学习图像分割》这本书写写停停,历经三年多,目前在二稿修订中。正式出版之前,计划先在GitHub做逐步的内容和代码开源。

以下为本书第4章节选内容:

编解码网络结构是深度学习图像分割中的经典设计和主流架构,广泛应用于各类场景的分割任务中。本章将以全卷积网络和U-Net结构为基础,深入剖析各种编解码网络结构的变体,包括SegNet、RefineNet、Attention U-Net、Residual U-Net和U-Net++等。由于编解码网络在特征提取和逐像素预测方面表现优异,在众多应用场景中展现了强大的分割性能,是当下深度学习图像分割的最流行的模型结构。基于编解码结构的分割网络在医学影像分割领域得到广泛应用,所以本章也会重点介绍用于医学图像分割的nnU-Net模型。

4.1 早期结构设计与FCN

在全卷积网络(Fully Convolutional Networks, FCN)介入到语义分割任务之前,早期研究对于图像像素密集预测问题仍然围绕着对分类网络的适应性修改来进行,这些修改并未对语义分割带来革命性的变化。FCN将分类网络中的全连接层全部替代为卷积层,首次实现了端到端的逐像素预测。

FCN的提出有效解决了早期网络结构在密集预测任务中普遍存在的两大缺陷。FCN于2015年在论文Fully Convolutional Networks for Semantic Segmentation中首次提出,其核心思想是用卷积层替换传统分类网络中的全连接层,将原本用于输出单一类别标签的全连接层转变为生成语义热图(heatmap)的卷积层输出,并结合上采样技术实现逐像素的密集预测。

如图4-1所示,传统分类网络的流程中,通常包含多个卷积层用于特征提取,然后通过几层全连接层将特征转化为类别概率。具体来说,在五层卷积层之后连接三层全连接层,最终输出的是一个包含类别信息的概率分布。FCN的创新之处在于:在这一流程的基础上,将最后的全连接层替换为卷积层。这样一来,网络的输出变为一个与输入图像相对应的语义热图,而不是单一的分类标签。为了实现像素级的分割,FCN进一步引入上采样(up-sampling)技术,将卷积层输出的低分辨率热图逐步还原到与输入图像相同的分辨率。这种方法不仅保留了卷积网络提取的空间特征信息,同时保证了输出结果的密集性,即每个像素点都被赋予了具体的语义标签。FCN的这种端到端的逐像素预测方式,突破了早期密集预测网络的局限,为语义分割任务奠定了基础,并为后续的分割网络设计提供了重要的参考。

图4-1 FCN的密集输出原理

...

4.2 U-Net与编解码结构

FCN虽然做出了开创性的工作,FCN-8s相较于此前的SOTA分割表现,已经取得了巨大的优势。但它在细节处理上仍显粗糙,难以准确捕捉图像中的细微特征。特别是,FCN未充分考虑像素间的上下文(context)关系,因此在处理复杂边缘和细节时仍显力不从心。所以FCN更像是一项抛砖引玉式的工作,但真正的奠基性工作是U-Net,U-Net是U形网络结构最经典和最主要的代表网络,因其网络结构是一个U形而得名,这类编解码的结构也因而被称之为U形结构。提出U-Net的论文为U-Net: Convolutional Networks for Biomedical Image Segmentation,与FCN提出时间相差了两个月,其结构设计在FCN基础上做了进一步的改进,设计初衷主要是用于医学图像的分割。截至到本书定稿,U-Net在谷歌学术上的引用次数已达接近10万次,堪称深度学习图像分割领域的里程碑式的工作。

在医学图像领域,具体到更加细分的医学图像识别任务时,大量的带有高质量标注的图像数据十分难得,在此之前的通常做法是采用滑动窗口卷积(类似于图像分块)的方式来进行图像局部预测,这么做的好处是可以做图像像素做到一定程度定位,其次就是滑窗分块能够使得训练样本量增多。但缺点也很明显,一个是滑窗操作非常耗时,推理的时候效率低下,其次就是不能兼顾定位精度和像素上下文信息的利用率。U-Net在FCN的基础上,完整地给出了U形的编解码结构,如图4-4所示。

U-Net结构包括编码器下采样、解码器上采样和同层跳跃连接三个组成部分。编码器由4组卷积、ReLU激活和最大池化构成,每一组均有两次3×3的卷积,每个卷积层后面都有一次ReLU激活函数,然后再进行一次步长为2的2×2最大池化进行下采样,如第一组操作输入图像大小为572×572,两轮3×3的卷积之后的特征图大小为568×568,再经过2×2最大池化后的输出尺寸为284×284。解码器由4组2×2转置卷积、3×3卷积构成和一个ReLU激活函数构成,在最后的输出层又补充了一个1×1卷积。最后是同层跳跃连接,这也是U-Net的特色操作之一,指的是将下采样时每一层的输出裁剪后连接到同层的上采样层做融合。每一次下采样都会有一个跳跃连接与对应的上采样进行融合,这种不同尺度的特征融合对上采样恢复像素大有帮助,具体来说就是高层(浅层)下采样倍数小,特征图具备更加细致的图特征,低层(深层)下采样倍数大,信息经过大量浓缩,空间损失大,但有助于目标区域(分类)判断,当高层和低层的特征进行融合时,分割效果往往会非常好。从某种程度上讲,这种跳跃连接也可以视为一种深度监督。

...

4.3 U-Net的各种变体网络

4.4 医学图像分割与nn-UNet


《深度学习图像分割》项目配套GitHub地址:

https://github.com/luwill/Deep-Learning-Image-Segmentation

欢迎各位读者阅读以及对本书提出意见与建议!


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/176332
 
15 次点击