想象你面前有一幅用成千上万块小瓷砖拼成的城市风景画,每块瓷砖就是一个像素。语义分割不是给整幅画起一个名字,而是俯下身去,给每一块瓷砖贴上“天空”“高楼”“绿树”“马路”的标签。当所有瓷砖都被贴好标签,这幅画就变成了一张“像素级地图”,计算机也就真正理解了画面中每一个角落属于什么。本文将用这座“瓷砖城”作为主线,带你从基本概念走进经典算法,再看到工程实践中的评估、优化和落地场景。

岗位关联

对 AI 从业者而言,语义分割是连接计算机视觉理论与自动驾驶、医学影像等产业落地的关键技能,掌握它能帮助你构建“像素级理解”的工程能力。

目录
  1. 可视化演示
  2. 1. 概念与任务
  3. 2. 传统分割方法
  4. 3. 深度学习基础
  5. 4. 经典分割模型
  6. 5. 关键技术细节
  7. 6. 评估与性能
  8. 7. 优化与挑战
  9. 8. 应用实践
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

1. 概念与任务

想象你面前有一幅由成千上万块小瓷砖拼成的城市风景画,每块瓷砖就是一个像素。语义分割不是让你给整幅画起个名字,而是蹲下去给每一块瓷砖贴上“天空”“高楼”“绿树”“马路”的标签。当所有瓷砖都被贴上正确标签,这幅画就变成了一张“像素级地图”,计算机也真正理解了画面中每一个角落属于什么。

从技术角度说,语义分割的输入是一张 H×W×C 的彩色图像,输出是一张同样尺寸的标签图,标签图中每个位置存放一个类别编号。它不区分同一个类别里的不同个体:画面里有三辆汽车,它们都会被贴上同一个“汽车”标签,而不会像实例分割那样编号为汽车1、汽车2、汽车3。

模型要如何决定每一块瓷砖的标签?最常用的方法是为每个像素计算它属于各个类别的概率,然后选出概率最大的那个类别:

当所有瓷砖都贴好标签后,计算机不仅能说“图里有天空和汽车”,还能精确指出天空占了哪几块瓷砖、汽车占了哪几块瓷砖。这种像素级理解,正是自动驾驶、医学影像等场景最需要的底层能力。

yi,j=arg⁡max⁡c p(c∣xi,j)y_{i,j} = \mathop{\arg\max}_{c} \, p(c \mid x_{i,j})
通俗地说,模型对每个像素做“类别投票”,哪个类别得票最高,就把票数最高的标签贴上去。
  1. 像素坐标$(i,j)$ 是图像中的位置,代表第 $i$ 行第 $j$ 列的那块小瓷砖。
    (i,j)(i,j)
  2. 输入像素$x_{i,j}$ 是这个像素的原始值,对彩色图来说通常是 RGB 三个通道。
    xi,j∈R3x_{i,j} \in \mathbb{R}^3
  3. 类别概率$p(c \mid x_{i,j})$ 是模型预测该像素属于类别 $c$ 的概率,数值在 0 到 1 之间。
    p(c∣xi,j)∈[0,1]p(c \mid x_{i,j}) \in [0,1]
  4. 选出最大概率$\arg\max$ 表示在所有类别中挑出概率最大的那个 $c$,作为该像素的标签 $y_{i,j}$。
    yi,j=arg⁡max⁡cp(c∣xi,j)y_{i,j} = \mathop{\arg\max}_{c} p(c \mid x_{i,j})

2. 传统分割方法

在没有深度学习师傅的年代,人们只能用最简单的办法给瓷砖城贴标签:直接看颜色分堆。阈值分割就像给灰度图设一条“亮度分数线”,超过线的瓷砖算目标,没有超过的算背景;边缘检测则像寻找瓷砖之间的缝隙,认为缝隙围起来的区域就是同一个物体。

这些方法的共同点是依赖人手工设计的规则,而不是从数据中学习规则。区域生长会从几颗“种子瓷砖”开始,把相邻且颜色相近的瓷砖慢慢吸收进来;聚类方法如 K-Means,则把所有颜色相近的瓷砖自动归成几堆。它们做起来直观,但遇到阴影、纹理或光照变化时,很容易把颜色接近但语义不同的区域搞混。

最简单的阈值分割可以写成:

瓷砖城一旦遇到阴影或光照变化,固定分数线就会失效。这也预示着:想让机器真正理解“哪些瓷砖属于同一语义”,必须让模型自己从大量例子中学习判断规则。

g(i,j)={1,I(i,j)>T0,otherwiseg(i,j) = \begin{cases} 1, & I(i,j) > T \\ 0, & \text{otherwise} \end{cases}
简单说,给灰度图设一条分数线,超过线的涂成目标,没超过的归为背景。
  1. 输入灰度值$I(i,j)$ 表示坐标 $(i,j)$ 处像素的亮度,范围通常是 0 到 255。
    I(i,j)∈[0,255]I(i,j) \in [0,255]
  2. 阈值$T$ 是人为设定的亮度分界线。
    T>0T > 0
  3. 比较判断如果 $I(i,j)>T$,则 $g=1$(目标);否则 $g=0$(背景)。
    I(i,j)>T⇒g(i,j)=1I(i,j) > T \Rightarrow g(i,j)=1
  4. 输出标签$g(i,j)$ 就是这一像素的分割结果。
    g(i,j)∈{0,1}g(i,j) \in \{0,1\}

3. 深度学习基础

真正让语义分割起飞的是深度学习。你可以把卷积神经网络想象成一队受过大量训练的师傅:他们见过成千上万座瓷砖城,知道“有玻璃反光的大块区域通常是高楼”“绿色小颗粒集中的地方通常是树冠”。

卷积核就像师傅手里的小放大镜,在图像上滑来滑去,提取边缘、纹理、颜色块等底层特征。随着网络层数加深,底层特征逐步组合成“H一边有窗户的平面”“由四个轮子支撑的盒子”等高层语义。为了让师傅既能看清全局,又能找回细节,现代分割模型普遍采用编码器-解码器结构:

编码器师傅先远看全局,把“这里有一片天空,那边有一排楼”写进笔记;解码器师傅再对着笔记,把每一块瓷砖的标签铺满整张画布。两者配合,才能在保留语义的同时不丢位置信息。

F=fenc(I),Y=fdec(F)F = f_{\text{enc}}(I), \quad Y = f_{\text{dec}}(F)
编码器师傅把原图压成一摞特征笔记,解码器师傅照着笔记把标签图重新铺开。
  1. 原始图像$I$ 是输入的高分辨率 RGB 图。
    I∈RH×W×3I \in \mathbb{R}^{H \times W \times 3}
  2. 编码器$f_{\text{enc}}$ 由卷积和池化组成,逐步缩小尺寸、提炼语义。
    F=fenc(I)F = f_{\text{enc}}(I)
  3. 特征图$F$ 是浓缩后的特征图,通道多但空间分辨率低。
    F∈Rh×w×CF \in \mathbb{R}^{h \times w \times C}
  4. 解码器$f_{\text{dec}}$ 负责把 $F$ 上采样回原尺寸,输出逐像素标签 $Y$。
    Y=fdec(F)Y = f_{\text{dec}}(F)

4. 经典分割模型

到了经典模型时代,瓷砖城里出现了几支风格不同的师傅流派。FCN 是第一个端到端的全卷积师傅,它把分类网络里的全连接层扔掉,改用卷积层输出逐像素标签图,从此分割网络不再受固定输入尺寸限制。U-Net 则像一位细腻的外科医生,它在编码器和解码器之间加上跳跃连接,把浅层的边缘细节直接传给深层,特别擅长医学影像这种需要精细边界的任务。

DeepLab 系列走的是“戴望远镜”路线,用空洞卷积在不大幅增加参数的前提下扩大感受野,再配合空间金字塔池化(ASPP)从多个尺度观察瓷砖城。SegNet 则是另一种思路:编码器下采样时记住池化位置,解码器上采样时把特征放回原来的位置,让边界更干净。

所有模型最后都要把特征变成每个像素的类别概率,这个环节通常用 softmax 完成:

这几支流派目标一致:让标签贴得更准、边界更干净。它们不是互相取代,而是分别在不同场景下发光,比如 U-Net 常见于医学,DeepLab 常见于自动驾驶和遥感。

pi(c)=ezi(c)∑c′=1Cezi(c′)p_i(c) = \frac{e^{z_i(c)}}{\sum_{c'=1}^{C} e^{z_i(c')}}
这是把网络最后一层的分数转换成 0 到 1 概率的“翻译器”。
  1. 位置 $i$$i$ 表示一个像素位置,所有像素共享同一套翻译规则。
    i∈{1,…,H×W}i \in \{1,\dots,H \times W\}
  2. 原始分数$z_i(c)$ 是网络对位置 $i$ 属于类别 $c$ 的打分,越高越有把握。
    zi(c)z_i(c)
  3. 指数化用 $e^{z_i(c)}$ 把分数变成正数,放大差异。
    ezi(c)>0e^{z_i(c)} > 0
  4. 归一化除以所有类别的指数和,使各类概率加起来等于 1。
    ∑c′=1Cpi(c′)=1\sum_{c'=1}^{C} p_i(c') = 1

5. 关键技术细节

贴标签不能只靠蛮力,还需要一些精细动作。上采样就是其中关键一步:解码器要把缩小的特征图放大回原图尺寸,最简单的办法是双线性插值,另一种可学习的方式是转置卷积,相当于让师傅拿着“可训练的放大镜”一边放大一边补细节。

跳跃连接则像师傅们之间传递的便利贴。编码器前几层保存着大量边缘、纹理信息,但这些信息在层层下采样中会被冲淡;跳跃连接把浅层特征直接送到解码器对应层,让后期师傅能重新看到细节。空洞卷积又是另一种技巧,它像在放大镜里故意留出空洞,让师傅用同样的镜片看到更远范围:

多尺度融合则像同时用近景照片和远景照片做判断:小物体在浅层特征更清晰,大物体在深层语义更明确。把这些技巧组合起来,师傅才能在各种复杂的瓷砖城里都贴得又快又稳。

y[i]=∑k=0K−1x[i+r⋅k] w[k]y[i] = \sum_{k=0}^{K-1} x[i + r \cdot k] \, w[k]
空洞卷积像带洞的放大镜,跳过相邻位置去采样,用同样的镜片看到更远范围。
  1. 输入序列$x[i]$ 是特征图在第 $i$ 个位置上的值。
    x[i]x[i]
  2. 卷积核权重$w[k]$ 是卷积核第 $k$ 个位置的权重,总共有 $K$ 个。
    k∈{0,…,K−1}k \in \{0,\dots,K-1\}
  3. 膨胀率$r$ 是空洞间隔;$r=1$ 是普通卷积,$r=2$ 表示每隔一个位置采样一次。
    r≥1r \geq 1
  4. 加权求和把间隔采样到的输入与对应权重相乘再累加,得到输出 $y[i]$。
    y[i]=∑k=0K−1x[i+r⋅k] w[k]y[i] = \sum_{k=0}^{K-1} x[i + r \cdot k] \, w[k]

6. 评估与性能

标签贴完,不能空口说“挺好”,需要一把尺子来打分。语义分割最常用的尺子是 IoU(交并比)。你可以把预测结果和标准答案分别想象成两张同尺寸的贴纸:一张是模型贴出来的标签区,一张是真实标签区。两张贴纸重叠越多,说明贴得越准:

只看一个类别的 IoU 还不够公平,因为瓷砖城里可能有 99% 是路、1% 是井盖。因此工程上更常看 mIoU,也就是所有类别 IoU 的平均值。此外,像素准确率 PA 表示“贴对的瓷砖数占总瓷砖数的比例”,但它容易被常见类拉高;推理速度和参数量则决定了模型能否跑在自动驾驶车或手机上。

IoU(A,B)=∣A∩B∣∣A∪B∣\text{IoU}(A,B) = \frac{|A \cap B|}{|A \cup B|}
两张同样大小的贴纸,交叠越多,IoU 越接近 1。
  1. 预测集合$A$ 是模型判断为某类别的像素集合。
    A={(i,j)∣y^i,j=c}A = \{(i,j) \mid \hat{y}_{i,j}=c\}
  2. 真实集合$B$ 是标准答案中属于该类别的像素集合。
    B={(i,j)∣yi,j=c}B = \{(i,j) \mid y_{i,j}=c\}
  3. 交集$A \cap B$ 是两个集合中都出现的像素,即预测正确的那部分。
    A∩BA \cap B
  4. 并集$A \cup B$ 是至少一边认为是该类的像素总数,用于惩罚漏检和误检。
    A∪BA \cup B
  5. 比值交集大小除以并集大小,结果越接近 1 越好。
    IoU=∣A∩B∣∣A∪B∣∈[0,1]\text{IoU} = \frac{|A \cap B|}{|A \cup B|} \in [0,1]

7. 优化与挑战

师傅再厉害,也会遇到难缠的瓷砖城。最典型的问题是类别不平衡:如果一座城里 99% 的瓷砖都是“墙”,只有 1% 是“猫”,师傅把所有瓷砖都贴成“墙”,整体准确率也会很高,但猫完全被忽略了。这时候需要给损失函数加上类别权重,把“贴对猫标签”的积分调高:

数据增强也很重要:把瓷砖城旋转、翻转、调亮度,相当于让师傅在更多环境下见习。边缘精度则是另一个痛点,许多模型在大块区域上很准,却在物体的细长边缘上出错,于是研究者会用更精细的损失权重,或者用条件随机场做后处理来把边缘“捋直”。

L=−1N∑i=1N∑c=1Cwc yi,c log⁡pi,cL = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} w_c \, y_{i,c} \, \log p_{i,c}
少数类样本少,就给它更高的权重,相当于把“贴对猫标签”的积分调高,防止师傅只顾着贴墙。
  1. 样本数$N$ 是图像中像素的总数。
    N=H×WN = H \times W
  2. 真实标签$y_{i,c}$ 是 one-hot 编码;当第 $i$ 个像素真实类别是 $c$ 时取 1,否则为 0。
    yi,c∈{0,1}y_{i,c} \in \{0,1\}
  3. 预测概率$p_{i,c}$ 是模型预测第 $i$ 个像素属于类别 $c$ 的概率。
    pi,c∈[0,1]p_{i,c} \in [0,1]
  4. 类别权重$w_c$ 是给类别 $c$ 的权重,少数类可以得到更大权重。
    wc>0w_c > 0
  5. 求和与平均对所有像素和类别求带权对数损失,取负号并除以 $N$,得到平均损失 $L$。
    L=−1N∑i=1N∑c=1Cwc yi,c log⁡pi,cL = -\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C} w_c \, y_{i,c} \, \log p_{i,c}

8. 应用实践

学完贴标签的手艺,师傅们终于被派往不同的城市。在自动驾驶城,相机拍下前方画面后,语义分割模型必须实时把道路、车辆、行人、天空逐像素分开;汽车只有知道哪里是“可行驶区域”,才敢放心往前开。在医学影像城,医生给出一张 CT 切片,U-Net 模型把肿瘤区域逐像素标出来,帮助医生快速测量病灶大小和位置。

在遥感城里,卫星拍下大片农田、水体和建筑,语义分割模型生成地物标签图,再进一步估算各类地物的面积。面积计算本质上就是统计标签图中某类像素的数量:

从城市道路到细胞切片,从卫星照片到工厂传送带上的零件,语义分割已经把“像素级理解”带进真实世界。掌握这套方法,你就能让机器不只是“看见”,而是真正“看懂”每一块瓷砖。

Ak=∑i=1H∑j=1W1[ yi,j=k ]A_k = \sum_{i=1}^{H}\sum_{j=1}^{W} \mathbb{1}[\,y_{i,j} = k\,]
把标签图中所有属于第 k 类的像素数出来,再乘以每个像素代表的实际面积,就能估算出农田或水体面积。
  1. 标签图$y_{i,j}$ 是语义分割输出的像素标签,取值是类别编号。
    yi,j∈{0,1,…,K−1}y_{i,j} \in \{0,1,\dots,K-1\}
  2. 指示函数$\mathbb{1}[\,y_{i,j}=k\,]$ 在条件成立时等于 1,否则等于 0。
    1[ yi,j=k ]\mathbb{1}[\,y_{i,j}=k\,]
  3. 逐像素累加遍历整张 $H \times W$ 的标签图,统计第 $k$ 类出现的次数 $A_k$。
    Ak=∑i=1H∑j=1W1[ yi,j=k ]A_k = \sum_{i=1}^{H}\sum_{j=1}^{W} \mathbb{1}[\,y_{i,j}=k\,]

AI 应用场景

自动驾驶感知

阶段:感知层的图像分割与数据标注

解决的问题:传统视觉算法在复杂路口难以区分可行驶区域和路沿;语义分割能逐像素区分道路、车辆、行人,为规划控制提供可靠依据。

具体案例:车载摄像头拍下前方画面,语义分割模型实时输出标签图:道路涂上绿色,车辆涂上蓝色,行人涂上红色。自动驾驶系统据此判断哪些区域可以安全通行,哪些障碍物需要刹车避让。

医学影像辅助诊断

阶段:医学影像的模型训练与病灶量化分析

解决的问题:CT/MRI 中病灶边界模糊,医生手工勾画耗时且主观性强;U-Net 等语义分割模型可自动把肿瘤或器官逐像素分割出来。

具体案例:在肺结节 CT 数据集中,模型为每个像素标注“肺实质”“结节”“背景”。医生直接在分割结果上测量结节体积、评估良恶性,大幅缩短阅片时间。

遥感图像解译

阶段:遥感数据的像素级地物分类

解决的问题:高分辨率卫星图中农田、水体、建筑混杂,传统目视解译效率低;语义分割可快速生成地物分类图并估算面积。

具体案例:农业管理部门用遥感分割图统计某区域小麦种植面积。模型输出标签图后,再统计第 k 类像素数量乘以单像素代表的实际面积,辅助补贴发放和产量预估。

Python 演示

python38 行
import numpy as np  def compute_iou(pred, label, class_id):    pred_mask = (pred == class_id)    label_mask = (label == class_id)    intersection = np.logical_and(pred_mask, label_mask).sum()    union = np.logical_or(pred_mask, label_mask).sum()    if union == 0:        return float('nan')    return intersection / union  def compute_miou(pred, label, num_classes):    ious = []    for c in range(num_classes):        iou = compute_iou(pred, label, c)        if not np.isnan(iou):            ious.append(iou)    return np.mean(ious), ious  def compute_pa(pred, label):    return (pred == label).mean()  if __name__ == "__main__":    np.random.seed(42)    H, W = 32, 32    label = np.random.randint(0, 4, size=(H, W))    pred = label.copy()    pred[10:20, 10:20] = 1     mIoU, per_class = compute_miou(pred, label, 4)    pa = compute_pa(pred, label)    print('mIoU:', round(mIoU, 4))    print('per-class IoU:', [round(v, 4) for v in per_class])    print('PA:', round(pa, 4))
目的:实现了语义分割最常用的评估指标 mIoU 和像素准确率 PA,用于衡量“贴标签”预测结果与标准答案的重合程度。
  1. pred_mask = (pred == class_id)找出预测图中被贴为 class_id 的像素集合,相当于预测贴纸。
  2. label_mask = (label == class_id)找出标准答案中同类别的像素集合,相当于真实贴纸。
  3. intersection / union计算 IoU,即两张贴纸重叠区域占总共出现的比例。
  4. np.mean(ious)对所有类别的 IoU 取平均,得到 mIoU。
  5. (pred == label).mean()计算像素准确率,即所有贴对标签的瓷砖占比。
  6. pred[10:20, 10:20] = 1模拟一小块标签贴错,让演示出现非满分结果。

常见误区

误区初学者看到“分割”就以为它会把两只猫分开,给每只猫一个单独编号。

正解语义分割只关心“像素属于哪一类”,两只猫的所有像素都得到同一个“猫”标签。区分个体是实例分割的任务。用瓷砖城比喻:语义分割只把属于“墙”的瓷砖都贴成“墙”,不会管这些瓷砖来自东墙还是西墙。

为何常见:“分割”一词在日常生活中天然暗含“分开个体”的意思,容易与实例分割混淆。

误区听见 FCN 就以为它和传统分类 CNN 一样,必须把输入图片缩放到固定大小才能运行。

正解FCN 把全连接层换成卷积层,因此可以处理任意尺寸输入,只是输出标签图的尺寸会随之变化。就像师傅贴标签时不管瓷砖城多大,都能按同样的规则逐块贴。

为何常见:大多数分类网络用全连接层,大家默认网络输入尺寸固定,忽略了结构改造带来的变化。

误区有人认为为了提取更抽象的语义,应该拼命堆池化层,最后靠上采样恢复尺寸就行。

正解池化会丢失空间细节,过度下采样会让边缘和小目标难以恢复。好模型要平衡语义抽象与空间细节,常配合跳跃连接或空洞卷积,而不是一味池化。

为何常见:看到编码器-解码器结构,误以为“压缩得越狠,语义越强”是免费的。

误区模型 mIoU 达到 0.9,就认为输出结果可以不加检查直接上线。

正解全局指标高不代表每个类别、每个边缘都好;小目标、大类别不平衡、边界模糊都需要单独观察。就像瓷砖城整体贴得不错,但下水道井盖可能一直被贴成“道路”。

为何常见:单一数值指标最容易让人忽略具体的失败样本,而语义分割的失败往往集中在稀有类别和边界区域。

面试题

Q1. 语义分割模型的输出是什么?

单选题 · easy

  • A.每个像素的类别标签← 正确答案
  • B.整张图一个类别
  • C.每个物体的矩形框
  • D.每个物体的独立编号

答案:A。语义分割的输出是一张与输入同尺寸的标签图,每个像素对应一个类别。整图一个类别是图像分类,矩形框是目标检测,独立编号是实例分割。

Q2. 语义分割与实例分割的主要区别是什么?

单选题 · easy

  • A.只需区分物体类别
  • B.还需区分不同个体← 正确答案
  • C.两者没有任何区别
  • D.只处理灰度图像

答案:B。语义分割只给像素贴“类别”标签,所有同类别物体共享同一个标签;实例分割才需要区分同一类中的不同个体,所以选 B。

Q3. FCN 中全连接层被替换成了什么?

单选题 · easy

  • A.1×1 卷积层替代← 正确答案
  • B.3×3 池化层替代
  • C.保留原始全连接层
  • D.全局平均池化层

答案:A。FCN 用 1×1 卷积层替代全连接层,使网络可以接收任意尺寸输入并输出空间标签图。池化层用于下采样而非替代全连接,保留全连接会限制输入尺寸。

Q4. U-Net 中跳跃连接的主要作用是什么?

单选题 · mid

  • A.融合浅层与深层信息← 正确答案
  • B.减少网络的总层数
  • C.替代空洞卷积的作用
  • D.加速训练时收敛速度

答案:A。U-Net 的跳跃连接把编码器下采样前的浅层特征拼接到解码器对应层,补充边缘和纹理细节,融合浅层信息与深层语义。它不会减少层数、替代空洞卷积或直接加速收敛。

Q5. 传统阈值分割的核心假设是什么?

单选题 · mid

  • A.目标与背景灰度差异明显← 正确答案
  • B.图像包含大量复杂纹理
  • C.目标与背景颜色完全相同
  • D.图像分辨率一定要足够大

答案:A。阈值分割假设目标和背景在灰度值上可分,因此设一个阈值就能切分。纹理复杂、颜色相同、分辨率大都会让简单阈值失效,不是成立的前提。

Q6. 空洞卷积膨胀率 r=2 的主要特点是什么?

单选题 · hard

  • A.参数不变但感受野扩大← 正确答案
  • B.参数翻倍且感受野扩大
  • C.输出分辨率直接减半
  • D.感受野范围明显缩小

答案:A。空洞卷积通过在卷积核中插入空洞,在不增加参数和计算量的前提下扩大采样范围,从而增大感受野。输出分辨率通常保持,参数不会翻倍,感受野也不会缩小。

Q7. 计算某类别的 IoU 时,得到 NaN 通常是因为什么?

单选题 · hard

  • A.该类别真实与预测都为空← 正确答案
  • B.该类别预测像素数量过多
  • C.数据集类别数量不足
  • D.图像输入尺寸过大

答案:A。当某个类别在预测图和标签图中都没有出现时,交集和并集都为 0,IoU 是 0/0,因此常用 NaN 表示。预测过多、类别数量不足、图像尺寸大都不会导致 NaN。

Q8. 下列哪些是语义分割常用的优化策略?

多选题 · mid

  • A.使用类别加权损失← 正确答案
  • B.增加数据增强策略← 正确答案
  • C.增加全连接层结构
  • D.采用多尺度特征融合← 正确答案

答案:ABD。加权损失缓解类别不平衡,数据增强提高泛化能力,多尺度融合提升不同大小物体的分割效果。增加全连接层不是语义分割的典型优化方式,反而会破坏空间信息。

Q9. 关于 DeepLab 系列,下列说法正确的是?

多选题 · hard

  • A.使用空洞卷积扩大感受野← 正确答案
  • B.用ASPP实现多尺度特征← 正确答案
  • C.完全放弃卷积神经网络
  • D.无需任何像素标签训练

答案:AB。DeepLab 系列的核心是空洞卷积和 ASPP,能在保持分辨率的同时扩大感受野。它没有放弃卷积,也必须用带标签数据监督训练,所以 C 和 D 错误。

Q10. 关于语义分割评估指标,下列说法正确的有?

多选题 · extreme

  • A.IoU越高通常分割越准← 正确答案
  • B.mIoU是各类IoU均值← 正确答案
  • C.某类都为空时IoU为0
  • D.PA更容易偏向常见类← 正确答案

答案:ABD。IoU 越高通常分割质量越好;mIoU 是各类 IoU 的平均;像素准确率 PA 容易被常见类拉高,对类别不平衡敏感。当某类真实和预测都为空时,IoU 应记为 NaN 而非 0,所以 C 错误。