《深度学习图像分割》这本书写写停停,历经三年多,目前在二稿修订中。正式出版之前,计划先在GitHub做逐步的内容和代码开源。
以下为本书第1章节选内容:
相较于目标检测只关注图像中的局部区域,基于深度学习的图像分割则更为精细,它将每一个像素点作为研究对象,并对每个像素赋予一个语义标签。因此,图像分割的一个基本类型称为语义分割(semantic segmentation)。除了语义分割,实例分割(instance segmentation)和全景分割(panoptic segmentation)两种其他重要的分割方式也有广泛的应用。那么,它们之间有什么区别和联系呢?
(1)语义分割的任务是对图像中的每个像素进行分类,并将具有相同类别的像素统一标记为同一个标签。也就是说,它只关注像素属于什么类别,而不关心属于同一类别的不同个体之间的区别。例如,如果图像中有多个人,语义分割的结果是所有人的像素都会被统一标记为“人”这个类别,而不会区分他们是不同的个体。语义分割的重点是整体场景的理解,适用于对场景分类有需求的任务。
(2)实例分割在语义分割的基础上更进一步,不仅对每个像素进行分类,还要区分同一类别中的不同个体。它结合了语义分割和目标检测的特性,既需要对物体进行像素级别的分割,又要标识每个对象的独立性。例如,在一张图像中有多个人,实例分割的结果不仅会标记出“人”这个类别,还会将不同的个体(每个人)单独分割出来,即使他们属于同一类“人”。
(3)全景分割结合了语义分割和实例分割的优势,是最全面的分割任务类型。它不仅能够像实例分割那样区分可数的物体个体(如多个“人”或“车”),还能够像语义分割那样对不可数的背景部分(如天空、草地)进行分类。因此,全景分割旨在提供对整个场景的完整理解,既能区分出不同的实例对象,又能对整个图像中所有像素进行有效的分类,无论这些像素是否属于可数的对象。
可见,实例分割和全景分割都是以语义分割技术为基础的。语义分割、实例分割和全景分割具体如图1-7(b)、(c)和(d)所示。
实例分割和全景分割的基础都是语义分割,因此本书将以语义分割为核心展开讨论。在语义分割发展的早期,为了使深度学习能够处理像素级别的分类任务,研究人员对传统的CNN进行了一些调整,将分类网络中的全连接层去除,取而代之的是全卷积网络(Fully Convolutional Networks, FCN)。这种网络结构能够生成密集的像素级预测,从而为语义分割问题提供了一个有效的解决方案。随着研究的深入,UNet的提出为语义分割奠定了基于“编解码”结构的U形网络的基础。UNet是一种基于CNN的网络结构,主要由三个部分组成:编码器(encoder)、解码器(decoder)和跳跃连接(skip connection)。由于其网络架构呈现出U形,因此被命名为UNet。编码器负责提取图像中的特征,逐层下采样,而解码器则通过逐层上采样逐步恢复图像的空间分辨率。跳跃连接则用于将编码器的低层次特征与解码器对应的高层次特征相结合,以提升分割精度。语义分割迄今为止最重要的两个设计有两个:
(1)U形编解码结构。以UNet为代表的U形结构已经成为语义分割领域的主导模型架构。基于UNet的改进层出不穷,例如应用于3D图像的VNet,以及嵌套式UNet结构的UNet++。这些创新进一步增强了网络对不同任务和场景的适应能力。此外,还有诸如SegNet、RefineNet、HRNet和FastFCN等变体,这些网络在UNet的基础上对编码解码架构进行了优化,进一步提升了分割的精度和效率。
(2)空洞卷积设计。以DeepLab系列为代表的设计引入了空洞卷积(dilated convolutions),使得网络在不增加参数和计算量的情况下扩大感受野,从而更好地捕捉上下文信息。除了DeepLab系列,PSPNet通过金字塔池化模块来进一步增强对多尺度上下文信息的建模能力。这些设计使得语义分割网络在应对复杂场景时表现更加出色。随着模型的基线(baseline)效果不断提升,语义分割任务的主要矛盾也逐渐从下采样损失恢复像素逐渐演变为如何更有效地利用上下文信息。
在近年来的研究中,Transformer结构被引入语义分割领域,这使得基于ViT的语义分割网络设计逐渐流行。传统的CNN虽然具备强大的特征提取能力,但由于其平移不变性和对长距离依赖建模能力的限制,使其在捕捉全局上下文信息时存在一定的局限性。而Transformer擅长处理长距离依赖,能够更好地捕捉序列中的全局信息,因此逐渐受到关注并在图像分割领域得到广泛应用。例如,像SETR(Segmentation Transformer)、TransUNet、SwinUNet、TransAttUNet和LeViT-UNet等模型,结合了Transformer的全局特性和CNN的局部特性,展示了Transformer在语义分割任务中的巨大潜力。这些模型通过引入Transformer架构,大幅提升了网络捕捉全局信息的能力,进一步推动了语义分割技术的发展。
除此之外,大模型等相关概念的兴起也正在对深度学习图像分割领域产生着剧变,正在推动图像分割研究向更智能、更通用的方向发展。随着分割一切模型(Segment Anything Model, SAM)的提出,交互式分割(interactive segmentation)、可提示分割(promptable segmentation)等概念和范式对图像分割的研究产生了深刻的影响,相关图像分割基座模型(foundation models)不断涌现。SAM是一种基于大模型的图像分割技术,旨在通过一个通用模型来解决几乎所有图像分割任务。这种模型不仅能够处理传统的语义分割和实例分割任务,还可以根据用户的输入和提示,对几乎任何类型的图像或对象进行分割。SAM的核心目标是实现“分割一切”,不再局限于某种特定的任务或数据集。未来的分割模型将不仅仅是用于特定的分割任务,而是能够灵活适应多样化的分割需求,甚至可能在跨领域应用中取得显著进展。
本书定位于深度学习图像分割,主要从理论和实战两个方面来进行介绍。全书分为理论和实战两个部分,除第1章作为预备知识和第16章进行全书总结之外,理论部分总共11章(第2-12章),实战部分总共3章(第13-15章)。全书总共16章,各章内容安排如下。
第1章(本章)为预备知识。主要对深度学习、计算机视觉、图像分割等相关概念和知识脉络进行梳理,对全书用到的两个主要工具OpenCV和PyTorch进行简单介绍,并对全书内容安排进行提要。
第2~12章为全书理论部分。其中第2章对传统图像分割算法和OpenCV应用进行介绍;第3章对深度学习图像分割进行总揽,包括语义分割、实例分割和全景分割,对基于深度学习的图像分割任务进行详细阐述;第4~11章为全书理论核心内容,对深度学习图像分割的技术组件、三种代表性的分割网络结构设计、3D图像分割、实例分割、图像分割大模型和非全监督分割等进行详细阐述;第12章则是梳理图像分割领域的经典数据集,为实战部分提供数据基础。
第13~15章为全书实战部分。实战部分则是基于PyTorch进行全流程的深度学习图像分割项目展示。其中第13章主要是对PyTorch图像分割代码框架进行演示,基于PASCAL VOC公开数据集,对图像分割项目的数据流、模型搭建、实验管理、可视化、快速推理和模型部署等模块进行讲解;第14章聚焦于2D的医学图像分割,全面展示2D医学图像分割项目的实战细节;第15章则是切换到3D医学图像分割。
第16章为全书总结。主要对全书内容进行总结以及对深度学习图像分割未来进行展望。
全书内容安排如图1-8所示。
第1章完整版PDF试读地址如下:
https://github.com/luwill/Deep-Learning-Image-Segmentation/blob/master/%E7%AC%AC1%E7%AB%A0%20%E9%A2%84%E5%A4%87%E7%9F%A5%E8%AF%86.pdf
《深度学习图像分割》项目配套GitHub地址:
https://github.com/luwill/Deep-Learning-Image-Segmentation
欢迎各位读者阅读以及对本书提出意见与建议!