想象你接了一个大活:给城市的一面巨型壁画墙涂色。这面墙上有房子、树木、行人和天空,每个物体都要涂上对应的颜色。这其实就是“语义分割”——计算机拿到一张照片,要判断每一个像素属于哪个物体类别,然后给它们“涂上”类别颜色,就像给黑白画填色一样。 传统做法很费劲:得先把照片切成许多小碎片,让模型逐一判断每块是什么,再拼回去,像画家先画很多小样再拼到墙上——又慢又容易在接缝处出错。FCN(全卷积网络)改变了这一切。它像一个“大刷子画家”,不再切碎图片,直接整面墙开刷——用卷积网络端到端地逐像素分类,一气呵成。可惜刷子太粗,物体边缘像毛边锯齿。 U-Net则像一支“精装修团队”:先搭架子把画面压缩到最小(编码器),再一步步放大还原(解码器),每放大一步还要对照原始草图(跳跃连接),最后精雕细琢。虽然费功夫,但边缘边界漂亮清晰。这两个“涂色大师”各怀绝技,是如今图像分割领域最经典的两大门派,也是医学影像、自动驾驶等AI应用的基石。
掌握FCN与U-Net,你就拿到了图像分割领域的“双钥匙”——既能理解端到端分割的开山思路,又能掌握落地最广的U-Net架构,这是从事医学影像分析、自动驾驶感知、遥感解译等方向的核心技能。
可视化演示
动态演示FCN与U-Net语义分割的核心机制,通过输入/处理/存储/输出四种模式展示关键概念与交互流程。
本节配有交互动效(进入视口后自动加载,约 3KB)。
FCN与U-Net语义分割:语义分割 语义分割任务定义与FCN全卷积 FCN网络架构与转置卷积上采样 核心机制可视化 FCN与U-Net语义分割整体架构与关键组件
语义分割基础
刚接到涂色任务时,你面对的是整面灰墙。要动笔,首先得有个共识:墙上哪些区域算“房子”,哪些算“树”。同样,计算机在做语义分割前,必须先定义好“标签”——每个类别对应一种颜色。所谓语义分割,就是把图片里的每一个像素都归类到预定义的物体类别中,相当于逐像素地“涂上对应颜色”。
这和图像分类、目标检测有本质区别。分类只回答“这幅图里有什么”,像看一眼整面墙说“有房子有树”;检测要框出物体位置,像画个椭圆圈住房子再写个标签;而分割要精细到每个像素,像把墙上的每一块砖都判定归属。正因为分割输出的是像素级“涂色图”,它能为自动驾驶标注可行驶区域、为医生圈出病灶轮廓,是理解场景细节的关键技术。
要衡量涂色精度,最常用的是 mIoU(平均交并比)。它计算每个类别预测区域与真实标注区域的重叠程度。IoU 像两个涂色区域的“重合率”——你涂的房子轮廓和标准答案重叠越多,IoU 越高;把所有类别的 IoU 平均,就是 mIoU。
有了这把“评分尺”,接下来就能衡量两个涂色团队的功力高下了。
- TP_c 定义类别 c 中,模型预测正确且真实标注也是该类别的像素数,即墙面上“房子”区域被你涂对的部分。
- FP_c 定义类别 c 中,模型预测为 c 但真实不是 c 的像素数,相当于把树枝误涂成了房子颜色。
- FN_c 定义类别 c 中,真实是 c 但模型没预测出来的像素数,相当于漏涂了一部分墙体。
- 单类 IoU 计算用交集比并集,即 TP 除以 TP、FP、FN 三者之和,得到该类别的重合率。
- 所有类别平均把每一类的 IoU 累加后除以类别总数 C,得到模型在整个分割任务上的综合评分。
FCN设计思想
在 FCN 出现之前,给壁画涂色得先切成小碎片,一片片分类再拼回去。那时主流 CNN 结构末尾都有“全连接层”,它像一位只会写总结报告的助手:你把整幅画的像素数据给它,它只告诉你“这画里有房子”,却说不清房子在哪、有多少像素。因为全连接层把二维特征图压成了一维向量,空间位置信息全部丢光——这对分类足够,对分割是致命伤。
FCN 的“大刷子画家”提出了关键改革:把全连接层统统替换成卷积层。卷积操作天然在二维空间里滑动,输出仍然是带位置信息的特征图,就像画家不再写总结,而是直接拎着刷子在墙面上逐块涂刷。这一改造让网络能接收任意尺寸的输入,并输出同样尺寸的“涂色图”——实现了端到端的逐像素预测,这就是“全卷积网络”名字的由来。
不过问题也随之而来:网络经过多次池化下采样后,特征图变得又小又粗,像画家眯着眼只看得到大色块,细节全模糊了。于是 FCN 引入两步补救:一是用上采样把小特征图放大回原图尺寸,相当于把草图放大了再描边;二是用跳跃连接把浅层的高分辨率特征与深层的语义特征融合,相当于描边时不停对照原始线稿。这一“大刷子 + 对照原稿”的设计思想,为后来的 U-Net 铺平了道路。
卷积化的另一个额外好处是计算高效。全连接层参数动辄上亿,换成卷积后参数量骤减,训练和推理都快了不少。正是这一“简化却更聪明”的思路,让墙面涂色从“切碎拼接”进化成“一幅画直接画完”。
- W_in 输入尺寸进入卷积层的特征图宽度,相当于墙面当前的横向长度。
- P 填充量在特征图边缘补零的圈数。像在墙四周加一圈白边,防止边缘像素被刷掉。
- K 卷积核大小刷子本身的宽度。刷子越大,一次覆盖的墙面越宽。
- S 步长刷子每次移动的间距。步长越大,刷得越稀疏,输出越小。
- 整体运算流程输入加上两侧填充,减去刷子宽度,除以步长,向下取整后再加 1。
FCN网络结构
理解了思想,再看具体作品。FCN 有两个“刷子版本”要区分:基础版是 FCN-32s,融合版是 FCN-16s 和 FCN-8s。名字里的数字代表“最终预测相对于原图缩小的倍数”:32s 表示把 32 倍缩小的特征图直接放大 32 倍回到原图,8s 则从 8 倍缩小的特征图放大回来。
FCN-32s 的思路很直接:用 VGG16 作为骨干网络,经过 5 次池化后特征图缩小为原来的 1/32,此时用反卷积一次放大 32 倍,得到密集预测。这就像画家站在远处,用大刷子把墙面刷完——速度快,但边缘的细节全丢了,锯齿感严重。
FCN-16s 不甘心,决定中途停下来对照一下草图:把 1/32 的特征图上采样 2 倍,再与第 4 次池化得到的 1/16 特征图逐元素相加融合,然后整体放大 16 倍。FCN-8s 更进一步,在 16s 的基础上,再把融合结果上采样 2 倍,与第 3 次池化的 1/8 特征图相加,最终放大 8 倍。每多融合一次浅层特征,就相当于多对照了一版更精细的原始线稿,边缘自然更清晰。
除了跳跃连接,上采样方法也值得关注。FCN 中常用的反卷积(转置卷积)可以学习上采样参数,而线性插值则是固定规则的放大。反卷积像“能学习刷法的画笔”,插值像“按比例机械放大”,前者更灵活,后者更省心。实践中两者常搭配使用。
- f_16s(x) 深层预测FCN-16s 阶段输出的特征图,携带丰富的语义信息但分辨率较粗。
- Up 上采样放大用反卷积将特征图尺寸翻倍,相当于把草图放大一版。
- pool_4 浅层特征第 4 个池化层的输出,分辨率更高、边缘纹理信息更丰富。
- 逐元素相加两个特征图同一位置的数值直接相加,实现语义与细节的互补融合。
U-Net架构
如果说 FCN 是单枪匹马的大刷子画家,U-Net 就是一支分工明确的精装修团队。它的名字来自网络结构的"U"形:左边一路下采样收缩,右边一路上采样扩张,左右对称,像字母 U 的两条边。这个结构专为医学图像等小样本场景设计,2015 年提出后至今仍是医学分割的首选基线。
左边的编码器像搭脚手架:每次用两层卷积提取特征,再用最大池化把特征图缩小一半,如同从近距离观察一步步退到远距离俯瞰。随着“后退”,网络看到更宏观的语义,但牺牲了细节——第 4 层时特征图只有原图的 1/16,像站在楼顶看壁画,只能看清大致分区。最底部的瓶颈层则将信息压缩到最精华的语义表达。
右边的解码器是“下楼精修”:每一步先用转置卷积把特征图放大一倍,再与左边对应层“跳跃连接”过来的特征在通道维拼接,然后通过两层卷积融合提纯。关键是跳跃连接:它把编码器在对应尺度下的高分辨率细节直接“快递”到解码器,像装修师傅每修复一层墙面,就翻开原始设计图对照一次。这正是 U-Net 比 FCN 边缘更精细的根本原因。
U 形设计的精妙还在于对称性:编码器每一次下采样丢失的细节,解码器都能通过跳跃连接找回来;而 FCN 只做了深层的少数几次融合,相当于只在最后几步对照草图。另外,由于拼接后通道数翻倍,U-Net 参数量不小,但医学图像通常分辨率有限(如 512×512),训练依然可行——这也是它适合医疗场景的底气所在。
- e_i 编码器特征编码器路径第 i 层保存的高分辨率细节特征,等会要“快递”给解码器。
- Up(d_{i+1}) 上采样将解码器上一层的粗特征放大一倍,向原图分辨率靠近。
- Concat 通道拼接在通道维度把两个特征图拼在一起,一个提供语义、一个提供细节。
- Conv 双卷积融合连续两次卷积将拼接后的冗余通道压缩,提取出更精炼的特征。
训练与优化
模型结构只是“画笔”,要让画笔听话地涂出漂亮壁画,还得靠训练。语义分割的损失函数最常用的是交叉熵损失——它逐像素比较模型预测的类别概率与真实标签,像老师逐个像素批改作业:预测错了就记一笔,错得越离谱惩罚越大。
对医学图像这类前景占比极小的场景,普通交叉熵会被大面积背景“淹没”;这时常用 Dice 损失或加权的交叉熵。Dice 损失直接衡量预测区域与真实区域的面积重叠程度,像校对两块涂色区域的重合面积,即使前景再小也能敏感捕捉。第 1 节讲的 mIoU 是评测指标,而 Dice 损失是训练目标,两者思路相近、各司其职。
数据增强是第二件法宝。医学图像样本常只有几十上百张,容易过拟合。通过随机旋转、翻转、缩放、弹性形变等手段,相当于把有限的几张草图变换出无穷多个练习版本,让画家见多识广。弹性形变尤其适合医学图像,因为器官组织天然有柔韧变形,增强后模型更抗造。
第三个技巧是迁移学习:用 ImageNet 上预训练好的权重初始化编码器,相当于让画家先跟着大师学配色构图,再回来刷你指定的墙。由于编码器提取的是通用边缘、纹理特征,迁移后只需训练解码器即可快速收敛。U-Net 在小数据集上的成功,正是“预训练 + 强增强 + 对称结构”三者合力的结果。
- N 与 C 的含义N 是图像中像素总数,C 是类别总数。每个像素都要参与评分。
- y_i,c 真实标签若像素 i 的真实类别是 c 则取 1,否则取 0(one-hot 编码)。
- ŷ_i,c 预测概率模型输出像素 i 属于类别 c 的概率,介于 0 到 1 之间。
- 对数惩罚项真实类别对应的概率越接近 1,log 值越接近 0,损失越小;越接近 0,惩罚越大。
- 取负号求平均加上负号使损失为正数,再对所有像素和类别求和取平均。
效果对比实战
两种团队各有拥趸,实战中怎么选?先看数据量:FCN 像依赖大量练习的速写师,需要充足标注才能发挥威力;U-Net 凭借跳跃连接和对称结构,几十张训练图也能练出可用模型,因此在医学图像这种小样本场景几乎是无冕之王。
再看精度需求:FCN-8s 虽然融合了三层特征,但边缘仍不如 U-Net 细腻。医学上圈定肿瘤边界,差几个像素可能影响手术方案,U-Net 的精细定位优势就成刚需。而自动驾驶需要实时感知,FCN 结构简单、推理快,配合轻量骨干网络能跑出更高帧率,在 Cityscapes 等场景理解任务中留下了浓墨重彩的一笔。
最后是工程权衡:U-Net 因为大量特征拼接,显存占用高于同深度的 FCN;FCN 则因代码简洁、部署方便而受工程派喜爱。如果资源有限又想要 U-Net 的效果,可以考虑 U-Net 的轻量变体,或者只在深层使用跳跃连接。没有绝对的好坏,只有“哪把刷子配哪面墙”。
想验证 Dice 损失的实际效果,下一篇的 Python 小节会给出一个可运行的 U-Net 骨架,让你亲手搭建一支“精装修小队”。
- X 预测区域模型输出的阳性像素集合,即涂出的目标区域。
- Y 真实区域人工标注的目标像素集合,即标准答案的涂色区域。
- 交集计算两个区域重合的像素数量,乘 2 是为了平衡分子分母的量级。
- 并集近似用两区域面积之和近似并集,分母越大说明误涂越多,Dice 越低。
AI 应用场景
医学图像病灶分割
阶段:模型选型与训练调优
解决的问题:传统 CT/MRI 影像诊断依赖医生手工标注病灶轮廓,费时费力且不同医生间差异大。U-Net 凭借跳跃连接精确恢复边缘,结合配对的编码器-解码器结构,能从少量标注样本中学会自动圈定肿瘤、器官边界,将数小时的标注工作压缩到秒级。
具体案例:某三甲医院用 U-Net 对肝部 CT 影像做肿瘤分割,使用约 200 例标注数据训练,配合弹性形变增强,mIoU 达到 0.87。医生在 AI 预分割结果上只需微调,阅片效率提升 3 倍,且不同医生的标注一致性大幅提高。
自动驾驶场景理解
阶段:感知模块开发与部署
解决的问题:无人车需要实时分辨路面、车辆、行人、建筑等要素。传统检测只给框,无法精细到像素。基于 FCN 的语义分割网络为图像中的每个像素赋予语义标签,生成稠密的“可行驶区域”地图,让规划模块知道哪里能开、哪里有障碍。
具体案例:某自动驾驶公司采用轻量化 FCN 作为夜间前视分割模型,在嵌入式芯片上以 25ms 处理一帧 1280×720 图像,可行驶区域 IoU 达 0.91,同时利用 FCN-8s 的跳跃连接融合浅层细节,在雨夜低对比度条件下仍能稳定识别车道边缘。
遥感图像地物分类
阶段:数据处理与模型推理
解决的问题:卫星遥感影像中建筑、水体、植被、农田的边界模糊,人工矢量化费时费力。语义分割可自动完成地物像素级分类,用于城市规划、农业监测和灾害评估。U-Net 对细长地物(如道路、河流)的分割效果显著优于普通 FCN。
具体案例:某测绘院利用 U-Net 对高分辨率遥感影像进行水体提取,结合 NDWI 指数作为辅助通道,水体 IoU 从 0.72 提升至 0.88,在河道监测项目中自动生成的水系图与人工矢量化结果误差在 1.5 米以内。
Python 演示
import torchimport torch.nn as nn class DoubleConv(nn.Module): def __init__(self, in_ch, out_ch): super().__init__() self.conv = nn.Sequential( nn.Conv2d(in_ch, out_ch, 3, padding=1), nn.BatchNorm2d(out_ch), nn.ReLU(inplace=True), nn.Conv2d(out_ch, out_ch, 3, padding=1), nn.BatchNorm2d(out_ch), nn.ReLU(inplace=True) ) def forward(self, x): return self.conv(x) class UNet(nn.Module): def __init__(self, in_ch=3, out_ch=1, features=64): super().__init__() self.enc1 = DoubleConv(in_ch, features) self.enc2 = DoubleConv(features, features * 2) self.enc3 = DoubleConv(features * 2, features * 4) self.enc4 = DoubleConv(features * 4, features * 8) self.pool = nn.MaxPool2d(2) self.bottleneck = DoubleConv(features * 8, features * 16) self.up4 = nn.ConvTranspose2d(features * 16, features * 8, 2, stride=2) self.dec4 = DoubleConv(features * 16, features * 8) self.up3 = nn.ConvTranspose2d(features * 8, features * 4, 2, stride=2) self.dec3 = DoubleConv(features * 8, features * 4) self.up2 = nn.ConvTranspose2d(features * 4, features * 2, 2, stride=2) self.dec2 = DoubleConv(features * 4, features * 2) self.up1 = nn.ConvTranspose2d(features * 2, features, 2, stride=2) self.dec1 = DoubleConv(features * 2, features) self.out_conv = nn.Conv2d(features, out_ch, 1) def forward(self, x): e1 = self.enc1(x) e2 = self.enc2(self.pool(e1)) e3 = self.enc3(self.pool(e2)) e4 = self.enc4(self.pool(e3)) b = self.bottleneck(self.pool(e4)) d4 = self.dec4(torch.cat([self.up4(b), e4], dim=1)) d3 = self.dec3(torch.cat([self.up3(d4), e3], dim=1)) d2 = self.dec2(torch.cat([self.up2(d3), e2], dim=1)) d1 = self.dec1(torch.cat([self.up1(d2), e1], dim=1)) return self.out_conv(d1) if __name__ == '__main__': model = UNet(in_ch=3, out_ch=1) x = torch.randn(2, 3, 128, 128) y = model(x) print('input:', tuple(x.shape), 'output:', tuple(y.shape))
class DoubleConv(nn.Module):定义“双卷积”积木块,先卷积+归一化+激活,再来一遍,是 U-Net 的基础单元。nn.Sequential(...)把两层卷积串成流水线,让特征逐层提炼。self.enc1 = DoubleConv(in_ch, features)编码器第一层,提取原始输入的浅层边缘纹理。self.pool = nn.MaxPool2d(2)最大池化下采样,尺寸减半,像退后一步看全局。self.bottleneck = DoubleConv(features * 16, features * 16)最底部的瓶颈层,压缩语义精华。self.up4 = nn.ConvTranspose2d(...)转置卷积上采样,让特征图尺寸翻倍。torch.cat([self.up4(b), e4], dim=1)跳跃连接:把上采样结果和编码器 e4 在通道维拼接。self.out_conv = nn.Conv2d(features, out_ch, 1)1×1 卷积输出每个像素的类别分数。
常见误区
误区我理解 FCN 的核心改动就是把最后的全连接层替换成卷积层,替换完就自动完成语义分割了,其他什么都不用管。
正解卷积化确实是最关键的第一步,但 FCN 能有效分割还依赖两件事:一是用反卷积或插值把粗糙的特征图上采样回原图尺寸,二是设计不同深度(32s/16s/8s)的跳跃连接来融合浅层细节。只替换全连接层而不做上采样和特征融合,输出的仍是小尺寸的“色块地图”,根本没法直接当分割结果用。就像画家换了把大刷子,还得知道怎么收边、怎么对照原稿才行。
为何常见:学习时往往抓住“全卷积”这个词,以为名字里的核心就是全部,忽略了上采样和跳跃连接这些配套设计的作用。
误区U-Net 与 FCN 的差别就在于用了跳跃连接,FCN 没有这个结构,所以 U-Net 边缘更精细。
正解其实 FCN 也有跳跃连接(FCN-16s、FCN-8s 都做了跨层融合),两者真正的区别在融合方式和整体结构:FCN 是“逐元素相加”的浅层融合,U-Net 是“通道维拼接 + 对称编码解码”的密集融合。U-Net 编码器每一步下采样都有对应解码器上采样,左右严格对称,形成 U 字形;而 FCN 是在单一 VGG 骨干上做末端补救。U-Net 的细节还原能力来自这种“每一步都对照原稿”的系统设计,而非某单点技巧。
为何常见:只看到结构图上 FCN 和 U-Net 都有 skip 箭头,就把差异简单归因为“有无”,忽略了融合方式和架构对称性的本质差别。
误区反卷积能学习,双线性插值是固定算法,所以语义分割的上采样必须用反卷积才专业,用插值的都是偷懒。
正解反卷积虽好,但容易产生棋盘格噪声,且参数量大、训练不稳定。双线性插值零参数、计算快、结果平滑,在许多工程实践中性能并不比反卷积差。现代分割模型常采用“插值 + 卷积”的组合:先用插值放大到目标尺寸,再接卷积精炼,既避免棋盘伪影又控制成本。选择上采样方式应看任务对细节和速度的要求,不能一刀切。
为何常见:教材总是重点讲反卷积推导,让人误以为“能学习的就比固定的好”,忽略了实际工程里稳定性和效率同样重要。
误区U-Net 精度更高,是当前主流,那我直接学 U-Net 不就行了?FCN 已经过时了,没必要浪费时间。
正解模型好坏取决于场景。FCN 结构轻、推理快,在自动驾驶、视频实时分割等场景仍有不可替代的价值;U-Net 参数量大、显存占用高,训练小目标数据集时优势明显,但处理大尺寸遥感影像可能吃不消。而且 FCN 提出的“卷积化 + 上采样 + 跳跃连接”三大思想是理解所有现代分割模型(包括 U-Net、DeepLab)的理论基石,跳过它等于没学语义分割的建筑地基。
为何常见:初学者习惯按“好坏”而非“适用边界”来学习,加上 U-Net 效果惊艳、论文引用多,容易形成刻板印象。
面试题
Q1. FCN 最核心的创新点是什么?
- A.引入注意力机制模块
- B.全连接层改造成卷积层← 正确答案
- C.使用残差网络作骨干
- D.增加数据增强策略
答案:B。FCN 的核心创新是将传统 CNN 末尾的全连接层替换为卷积层,使网络能够接受任意尺寸输入并输出像素级预测图,实现端到端语义分割。注意力机制是后人的改进,残差骨干是后续工作的选择,数据增强是通用训练技巧,它们都不是 FCN 的开创性贡献。
Q2. FCN-32s 与 FCN-8s 的主要区别是什么?
- A.输入图像尺寸大小不同
- B.使用的激活函数不同
- C.融合浅层特征的层数不同← 正确答案
- D.训练数据集的规模不同
答案:C。FCN-16s 融合了 pool4 特征,FCN-8s 在 16s 基础上再融合 pool3 特征,因此两者的本质区别是“融合浅层特征的层数不同”。输入尺寸、激活函数、数据集规模都不是两者的结构性差异。
Q3. 关于 U-Net 的跳跃连接,下列说法正确的是?
- A.拼接编码器同一层的特征← 正确答案
- B.只在最后一个输出层使用
- C.帮助解码器恢复边缘细节← 正确答案
- D.减少模型前向推理耗时
答案:AC。U-Net 的跳跃连接将编码器每一层的特征在通道维拼接给对应的解码器层,为解码器补充高分辨率细节,显著改善边缘恢复(A、C 正确)。跳跃连接遍布每个尺度而非只在输出层(B 错);拼接会增加通道数,反而增加计算量和显存占用,不会减少推理耗时(D 错)。
Q4. 在 mIoU 的公式中,FP 代表的含义是什么?
- A.模型预测为正的像素总数
- B.被模型误判为本类的像素数← 正确答案
- C.真实标注为正的像素总数
- D.本类真实但漏检的像素数
答案:B。FP(False Positive)指模型把不属于类别 c 的像素预测成了 c,即“误涂”的像素,比如把背景当成了目标。TP 是正确预测,FN 是真实为本类却漏检的像素,A 是 TP+FP,C 是 TP+FN,都不准确。
Q5. FCN-8s 的最终预测融合了哪些层次的特征?
- A.pool3 加 pool4 加 pool5← 正确答案
- B.conv1 加 conv2 加 conv3
- C.pool1 加 pool2 加 pool3
- D.conv3 加 conv4 加 conv5
答案:A。FCN-8s 以 VGG16 为骨干,将 pool5 的 1/32 特征上采样 2 倍后与 pool4(1/16)相加,再上采样 2 倍与 pool3(1/8)相加,最终上采样 8 倍得到预测。因此它融合的是 pool3、pool4、pool5 三个池化层的特征,conv 层特征没有直接参与融合。
Q6. 以下哪些是语义分割中常用的上采样方法?
- A.双线性插值← 正确答案
- B.转置卷积← 正确答案
- C.最大池化
- D.全连接映射
答案:AB。双线性插值通过周围像素加权计算新像素值,零参数速度快;转置卷积通过学习卷积核参数实现上采样,是 FCN、U-Net 的常用选择。最大池化是下采样操作,作用相反;全连接映射只适用于向量,与特征图的上采样无关。
Q7. 语义分割任务的核心目标是什么?
- A.预测整个图像的类别标签
- B.框出目标物体的坐标位置
- C.对每个像素做逐点分类← 正确答案
- D.生成物体的边缘轮廓线框
答案:C。语义分割要求对图像中的每一个像素进行分类,输出密集的像素级标签图。A 描述的是图像分类,B 描述的是目标检测,D 描述的是边缘检测,三者都不是逐像素级的语义理解任务。
Q8. 医学图像分割偏爱 U-Net 的原因有哪些?
- A.训练样本少也能收敛好← 正确答案
- B.病灶边缘定位更加精细← 正确答案
- C.完全不需要任何标注数据
- D.模型参数量一定更少
答案:AB。U-Net 的对称结构配合跳跃连接,能从有限样本中高效学习,且解码器逐层恢复细节,边缘定位细腻,特别适合标注困难的医学图像(A、B 正确)。医学分割仍需要标注数据(C 错);U-Net 因大量特征拼接,参数量通常比同深度 FCN 更多而非更少(D 错)。
Q9. 交叉熵损失在语义分割训练中的作用是什么?
- A.衡量每个像素的分类差异← 正确答案
- B.加速卷积层的计算速度
- C.自动生成训练标注数据
- D.降低网络对内存的需求
答案:A。交叉熵损失逐个像素比较预测概率与 one-hot 真实标签,计算差异并反向传播更新权重,让模型越训越准。它不改变计算速度、不能生成标注、也不影响内存占用,那些都是工程优化层面的问题。
Q10. 与传统全连接 CNN 相比,FCN 在输入尺寸上的优势是什么?
- A.可以接受任意尺寸的图片← 正确答案
- B.只能使用固定尺寸输入
- C.要求输入必须为正方形
- D.输入尺寸必须为 2 的幂
答案:A。全连接层要求输入特征数固定,因此传统 CNN 必须固定输入尺寸;FCN 将全连接替换为卷积后,特征图是空间共享的,网络可以处理任意分辨率的输入,只需在最后上采样到原图尺寸即可。B、C、D 描述的都是固定尺寸限制,正好与 FCN 的特性相反。