查看全课大纲(第 66 / 93 节)
- 1.计算机视觉概述
- 2.计算机视觉应用场景
- 3.困难与挑战
- 4.开源库介绍
- 5.图像显示与存储
- 6.CLAHE
- 7.腐蚀膨胀与开闭运算
- 8.滤波与边缘填充
- 9.各种滤波
- 10.图像金字塔
- 11.傅里叶变换
- 12.短时傅里叶变换与小波变换
- 13.颜色特征与颜色直方图
- 14.几何特征_边缘
- 15.几何特征-角点与斑点
- 16.局部特征-SIFT特征描述子
- 17.局部特征-SURF特征描述子
- 18.局部特征-ORB特征描述子
- 19.其他特征描述子
- 20.传统图像分割技术
- 21.GraphCut
- 22.GrabCut
- 23.人脸检测的传统方法
- 24.行人检测的传统方法HOG+SVM
- 25.行人检测DPM
- 26.人工神经网络的架构
- 27.目标函数与梯度下降
- 28.误差反向传播
- 29.可手算的神经网络
- 30.改进目标函数与克服梯度消散
- 31.神经网络之传统神经网络与深度网络的差异
- 32.各种梯度下降算法
- 33.如何选择合适的梯度下降算法
- 34.避免过适应
- 35.CNN的架构
- 36.CNN的误差反向传播_卷积层
- 37.CNN的误差反向传播_池化层
- 38.分类所用的数据集
- 39.Alexnet详解
- 40.VGG详解
- 41.GoogLeNet_v1
- 42.BatchNormalization
- 43.GoogLeNet_v3v4
- 44.ResNet
- 45.ResNeXt
- 46.CNN设计准则
- 47.图像检索与推土机距离
- 48.基于颜色相似性
- 49.基于形状相似性
- 50.基于纹理相似性
- 51.基于局部特征相似性
- 52.DL的二值哈希编码
- 53.高维空间中检索KDTree
- 54.高维空间中检索LSH
- 55.目标识别任务综述
- 56.RCNN
- 57.SPP-Net
- 58.Fast R-CNN
- 59.Faster R-CNN
- 60.R-CNN系列模型回顾
- 61.R-FCN的设计思路
- 62.R-FCN的实现
- 63.YOLOv1
- 64.YOLOv2_9000
- 65.YOLOv3
- 66.图像分割应用场景与数据集
- 67.上采样的实现方式
- 68.FCN网络架构的由来
- 69.FCN构建细节
- 70.DeepLabv1
- 71.CRF
- 72.DeepLabv2
- 73.DeepLabv3
- 74.特定的医学影像分割任务
- 75.U-Net
- 76.3D U-Net
- 77.V-Net
- 78.DenseNet
- 79.病理切片分析任务及数据集
- 80.病理切片分析
- 81.图说任务及其传统处理方法
- 82.深度语言模型与RNN
- 83.LSTM及其变种
- 84.NIC模型
- 85.SAT模型
- 86.图说的性能指标
- 87.判别模型与生成模型
- 88.KL散度与JS散度
- 89.VAE
- 90.GAN的基本原理
- 91.DCGAN与CGAN
- 92.Wasserstein GAN
- 93.SRGAN
图像分割应用场景与数据集
小象实战讲义 · 基于深度学习的计算机视觉
从本节开始,我们将正式进入计算机视觉领域一个极具挑战且应用广泛的方向——基于深度学习的图像语义分割。在此之前,我们学习过如何识别图像中的物体(分类),如何定位并框出它们(检测)。现在,我们要更进一步,在像素级别上理解图像:图像中的每一个像素点,到底属于哪个语义类别?是天空、道路、行人,还是建筑物?这种精细的理解能力,是自动驾驶汽车识别可行驶区域、医疗影像分析病灶边界、以及机器人理解复杂环境的基础。本节作为语义分割篇章的开篇,将首先厘清基本概念,并介绍支撑这一领域发展的关键数据集。
💡 核心导读
- 传统分割 vs. 语义分割:理解从基于颜色/纹理的“区域划分”到基于语义理解的“像素分类”的本质区别。
- 语义分割的定义与目标:明确其输入是原始图像,输出是同尺寸的像素级类别标签图。
- 核心应用场景:认识语义分割在自动驾驶、医疗影像分析和机器人视觉等领域的核心价值。
- 三大经典数据集:熟悉Pascal VOC、MS COCO和Cityscapes这三个推动语义分割研究的关键数据集及其特点。
从图像分割到语义分割
在深入学习基于深度学习的语义分割之前,我们有必要回顾一下“图像分割”这个概念本身。在课程更早的传统方法部分,我们介绍过诸如分水岭、Grab Cut、Graph Cut等算法——它们都属于深度学习兴起之前、依赖手工设计特征的做法。
所谓图像分割,指的是根据灰度、颜色、纹理和形状等初级视觉特征,把图像划分成若干互不交叠的区域。其核心特点是:同一区域内的这些特征会呈现出某种相似性,而不同区域之间则呈现出明显的差异性。
例如,基于颜色相似性,我们可以把一幅风景照中的蓝色天空区域分割出来。然而,这种分割结果只告诉我们“这是一块颜色相近的区域”,并没有告诉我们“这块区域是天空”。计算机并不理解区域的语义。
这正是语义分割(Semantic Segmentation) 要解决的问题。语义分割的目标是让计算机像人一样,真正理解图像的内容。它不再是简单地根据颜色或纹理聚类像素,而是要从像素水平(pixel-level) 上识别出每个像素所属的语义类别。
让我们通过两个例子来感受这种区别:
- 街景理解:在一幅街景图中,传统方法可能根据颜色将紫色的路面、绿色的树木、深灰色的建筑物分割成不同区域。语义分割则更进一步,它会为每个像素打上标签:紫色区域是“道路”,绿色区域是“植被”,红色小块是“行人”,深灰色区域是“建筑”。即便同是“道路”的像素在颜色、亮度上有所差异(如树荫下的路面明显更暗),语义分割模型也应将其归为同一类。
- 医疗影像:在一张牙齿的X光灰度图中,不同组织(牙釉质、牙本质、牙髓腔)的灰度差异可能非常细微。传统分割方法难以准确区分。语义分割模型则能学习这些细微差异背后的语义信息,精确分割出不同组织,帮助医生判断例如某处灰度异常是否意味着病变。
因此,我们可以为语义分割下一个更精确的定义:
- 目标:从像素水平上理解、识别图像的内容,并根据语义信息进行分割。
- 输入:原始图像(如RGB三通道图片)。
- 输出:一张与输入图像尺寸相同的分割标记图。这张图的每个像素位置不再存储颜色值,而是存储一个代表类别的整数(或one-hot向量),明确指出“这个像素属于哪一类”。
语义分割是许多高级视觉任务的基础,其应用场景主要包括:
- 自动驾驶:车辆需要精确理解道路、车道线、行人、车辆、交通标志等,以规划安全路径。
- 医疗影像分析:自动分割肿瘤、器官、血管等,辅助诊断和手术规划。
- 机器人视觉与场景理解:让机器人识别可操作物体、可通行区域及障碍物。
语义分割经典数据集
深度学习的进步离不开大规模高质量的数据集。在语义分割领域,有几个数据集起到了奠基和推动的关键作用。
Pascal VOC数据集
Pascal VOC(Visual Object Classes)是视觉识别领域的鼻祖级竞赛数据集,挑战赛于 2005–2012 年举办。它涵盖了图像分类、目标检测和图像分割等多个核心任务。后续许多数据集(如ImageNet)的任务设置都深受其影响。
对于语义分割任务,Pascal VOC 2012版本是最常用的基准。它包含20个常见的物体类别(分割标注再加上1个背景类,共21类):
- 人物:person
- 动物:bird, cat, cow, dog, horse, sheep
- 交通工具:aeroplane, bicycle, boat, bus, car, motorbike, train
- 室内物品:bottle, chair, dining table, potted plant, sofa, tv/monitor
数据集提供了像素级的精细标注:VOC2012 的分割子集共 2,913 张带标注图像(1,464 张训练 + 1,449 张验证),另有 1,456 张测试图像,其标注由官方服务器保管,需在线提交结果才能评测。Pascal VOC数据集规模适中,类别定义清晰,长期以来都是衡量语义分割模型性能的“试金石”。
MS COCO数据集
MS COCO(Microsoft Common Objects in Context)于 2014 年发布,是一个规模更大、场景更复杂的数据集。它主要包含80个物体类别,涵盖了更丰富的日常场景。
除了基本的80个物体类别外,COCO还提供了一个名为 COCO-stuff 的扩展集。这个扩展集增加了91个“stuff”类别(如天空、草地、墙壁等背景或材质类别),与原有的80个“thing”类别合计 171 个类别(80 + 91)。此外还有 1 个“unlabeled”标签,它不计入评测类别,因此主流实现(如 mmsegmentation、Mask2Former)的 num_classes 均为 171。“stuff”类别的引入,使得模型需要理解更广泛的场景内容。
MS COCO数据集不仅用于语义分割,还广泛用于实例分割(Instance-level Segmentation)(区分同一类别的不同个体)和图像描述(Image Captioning) 任务。其标注质量高、场景复杂,对模型的泛化能力提出了更高要求。
Cityscapes数据集
Cityscapes 于 2016 年发布,是一个专注于城市街道场景的语义分割数据集,主要服务于自动驾驶领域。它的视频采集自 50 座城市(德国及周边欧洲国家)的街道,拍摄时段为白天,天气为良好或中等,覆盖春、夏、秋三个季节,非常贴近真实的驾驶环境。
该数据集的标注体系共划分 30 个语义类别,但并非全部参与评测:文献和公开排行榜上通用的精度指标,是在其中 19 个评测类别上计算的 mIoU,其余类别(如 parking 停车场、rail track 铁轨、guard rail 护栏、bridge 桥、tunnel 隧道)虽然也有标注,却不计入该指标,此外还有 unlabeled、ego vehicle(自车)等忽略标签。这 19 个评测类别按属性可归纳为:
- 平坦表面:road(道路)、sidewalk(人行道)
- 建筑与交通设施:building(建筑)、wall(墙)、fence(栅栏)、pole(杆)、traffic light(交通灯)、traffic sign(交通标志)
- 自然物体:vegetation(植被)、terrain(地形)、sky(天空)
- 动态物体:person(人)、rider(骑行者)、car(汽车)、truck(卡车)、bus(巴士)、train(列车)、motorcycle(摩托车)、bicycle(自行车)
Cityscapes提供了两种精度的标注:
- 精细标注(Fine Annotation):5,000 张图像(2,975 张训练、500 张验证、1,525 张测试),提供逐像素的精确标注。
- 粗糙标注(Coarse Annotation):20,000 张图像,只给出多边形的粗粒度类别标注,边界并不精确,常用于预训练。
Cityscapes 的官方样例通常这样排布:从左到右依次是原始街景图像、人工标注的像素级语义图(不同颜色代表不同类别),以及两种分割算法的输出结果,用来直观对比算法效果的好坏。
[原始街景] -> [人工语义标注] -> [算法A输出] -> [算法B输出]
(真实城市街景照片) -> (彩色分割图:道路紫、天空蓝、建筑灰…) -> (分割结果) -> (分割结果)通过在这些数据集上的训练和评估,研究者们不断推动着语义分割模型在精度、速度和泛化性上的进步。从后续几节开始,我们会先补上“上采样”这一关键实现,再深入探讨实现像素级理解的核心模型——全卷积网络(FCN)。
📝 动手练一练
- 概念辨析:假设你用传统的分水岭算法对一张有多只猫的图片进行分割,得到了一些区域。随后,你用语义分割模型对同一张图片进行处理。请描述这两种方法输出结果的根本区别。
- 数据集理解:如果你要开发一个用于室内服务机器人的视觉系统,需要它能识别椅子、桌子、人、盆栽等物体,并理解地板、墙壁等背景。在Pascal VOC、MS COCO和Cityscapes三个数据集中,哪个或哪几个最适合用于训练你的模型?为什么?
👉 点击查看参考答案
根本区别:
- 分水岭算法:输出是若干个“区域”。每个区域由一系列颜色、纹理等特征相似的像素组成,但算法本身并不赋予这些区域任何语义标签。它无法告诉你某个区域是“猫”、“背景”还是“阴影”,只能告诉你这些像素彼此相似。
- 语义分割模型:输出是一张“像素级类别标签图”。每个像素都被分配了一个明确的语义类别标签(如“猫”、“背景”)。因此,模型不仅能区分出不同的物体和背景,还能知道它们“是什么”。对于多只猫,语义分割可能会将所有猫的像素都标记为“猫”这一类(但不区分个体),而分水岭则可能因为颜色差异将一只猫分割成多个不相关的区域。
数据集选择:
- Pascal VOC:部分适合。它包含
chair,dining table,person,potted plant这几个需要的类别,但缺少对floor、wall这类“stuff”背景类别的标注。对于识别室内特定物体是一个不错的起点。 - MS COCO (及 COCO-stuff):非常合适。其80个物体类别包含了
person,chair,dining table,potted plant。更重要的是,其 COCO-stuff扩展集 明确提供了wall、floor等大量的背景和材质类别,完美契合室内场景理解的需求。 - Cityscapes:不太适合。这是一个专注于户外城市街道场景的数据集,其类别(如
road,car,traffic light)与室内机器人所需识别的物体和背景差异很大,直接使用会导致严重的领域适配问题。 结论:MS COCO(特别是带有stuff标注的版本)是最佳选择,因为它同时提供了所需的物体类别和丰富的背景类别。Pascal VOC可作为补充或初步实验的数据集。
- Pascal VOC:部分适合。它包含
本章小结
本节作为语义分割篇章的引言,我们明确了学习的目标和起点。我们首先区分了传统图像分割与语义分割的本质不同:前者是基于低级特征的区域划分,后者是基于高级语义的像素分类。语义分割要求模型在像素级别上理解图像内容,输出每个像素的类别标签,这在自动驾驶、医疗影像等领域具有不可替代的价值。接着,我们介绍了支撑该领域发展的三大基石数据集:奠定基准的Pascal VOC(挑战赛 2005–2012 年)、规模与场景更复杂的MS COCO(2014 年)以及专注于自动驾驶城市场景的Cityscapes(2016 年)。理解这些数据集的特点,是后续选择模型、进行训练和评估的基础。
需要说明的是,本节回顾的分水岭、GrabCut 等传统方法,以及这三大数据集,都属于 2019 年之前形成的技术与评测体系:它们奠定了今天语义分割的术语、类别体系和评测口径(例如 Pascal VOC 的 20 类物体、Cityscapes 的 19 类 mIoU),至今仍是公开论文最常用的对比基准;但现代研究已在更大规模、更多类别的数据集上训练与评测,并普遍借助大规模预训练模型,本节先把这套“共同语言”建立起来,具体模型留到后续小节展开。
📋 行动清单
- 在脑海中构建“语义分割”的清晰定义:输入是什么?输出是什么?核心目标是什么?
- 访问Pascal VOC、MS COCO、Cityscapes的官方网站,浏览其数据样例和标注格式,建立直观感受。
- 思考一个你感兴趣的、可能用到语义分割技术的应用场景(如智能农业中的作物分割、视频会议中的虚拟背景分割),并尝试分析它需要识别哪些语义类别。
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。