当前位置: 首页 > news >正文

动手学深度学习——语义分割

1. 前言

在前面的内容中,我们学习了物体检测相关知识,比如:

  • 边界框

  • 锚框

  • 多尺度锚框

  • SSD

物体检测的目标是:

找出图像中的目标,并用边界框把它们圈出来。

但是边界框只能给出一个大致的位置范围,它并不能精确到目标的每一个像素。

例如,一张图中有一只狗。
物体检测可以告诉我们:

  • 这是一只狗

  • 它大概在这个矩形框里

但它并不能精确区分:

  • 哪些像素属于狗

  • 哪些像素属于背景

  • 哪些像素其实是框中的其他物体

于是,就引出了一个更细粒度的视觉任务:

语义分割(Semantic Segmentation)


2. 什么是语义分割

语义分割的核心目标是:

为图像中的每一个像素分配一个类别标签。

也就是说,不再是给整张图一个类别,也不是给目标画一个矩形框,
而是要逐像素地判断:

  • 这个像素属于人

  • 这个像素属于汽车

  • 这个像素属于道路

  • 这个像素属于天空

  • 这个像素属于背景

所以语义分割本质上是一个:

像素级分类问题


3. 语义分割和图像分类、物体检测的区别

这是这一节最基础也最重要的对比。

3.1 图像分类

图像分类回答的是:

这张图主要是什么?

输出通常是一个类别标签,例如“猫”或“狗”。

它不关心目标具体在哪里。


3.2 物体检测

物体检测回答的是:

图中有什么目标?它们大概在哪里?

输出通常是:

  • 类别

  • 边界框坐标

它能定位目标,但定位方式是矩形框,仍然比较粗糙。


3.3 语义分割

语义分割回答的是:

图中每个像素分别属于哪一类?

也就是说,它不是框出一个大概区域,而是精确到每个像素。

所以从粒度上看:

图像分类 < 物体检测 < 语义分割

任务粒度越来越细,难度也越来越大。


4. 为什么需要语义分割

很多场景中,仅仅知道目标的边界框是不够的。

4.1 自动驾驶

自动驾驶系统不仅要知道前方有车、有行人,
还要知道:

  • 哪些区域是道路

  • 哪些区域是人行道

  • 哪些区域是可通行区域

  • 哪些区域是障碍物

这时候语义分割就非常重要。


4.2 医学图像分析

在医学影像中,医生往往更关心:

  • 病灶到底占据哪些区域

  • 肿瘤边缘在哪里

  • 哪些组织属于异常区域

这要求模型给出精确的像素级分割结果,而不仅仅是一个矩形框。


4.3 遥感图像分析

在遥感图像中,常常需要识别:

  • 建筑区域

  • 河流区域

  • 森林区域

  • 道路区域

这类任务本质上也更适合用语义分割完成。


5. 语义分割中的“语义”是什么意思

这里的“语义”两个字,很容易让初学者疑惑。

所谓“语义分割”,强调的是:

同一类别的所有像素,都被赋予相同的语义标签。

比如:

  • 所有“汽车”像素都标成汽车

  • 所有“人”像素都标成人

  • 所有“天空”像素都标成天空

注意一点:

语义分割不区分同类目标的不同实例。

也就是说,如果图中有三辆车,语义分割只会把它们都标成“车”,
但不会区分“这是第1辆车,那是第2辆车”。

这一点和后面的**实例分割(Instance Segmentation)**不同。


6. 语义分割的输出是什么样的

语义分割的输出通常可以理解为:

一张与原图大小对应的标签图

假设输入图像大小是:

H × W

那么输出通常也是一个H × W的结果图。

只不过这个结果图中的每个位置,不再是 RGB 像素值,而是一个类别编号,例如:

  • 0:背景

  • 1:狗

  • 2:猫

  • 3:道路

  • 4:天空

也就是说,输出图中的每个像素位置,都表示这个位置属于哪个类别。


7. 语义分割任务怎么理解

可以把语义分割理解成这样一个过程:

输入

一张普通图片。

输出

给这张图的每个像素打标签。

例如,对于一张街景图:

  • 道路部分 → 标成“道路”

  • 汽车部分 → 标成“汽车”

  • 行人部分 → 标成“行人”

  • 天空部分 → 标成“天空”

  • 其他区域 → 标成“背景”

这样模型最终得到的就不是几个框,而是一张逐像素标注图。


8. 语义分割为什么比检测更细致

边界框只能给出一个矩形区域。
但现实中的目标往往不是规则矩形。

比如一只猫蜷缩在地上,一个矩形框只能把它大致包住,
可这个框里面往往还会包含:

  • 地板

  • 阴影

  • 背景

  • 其他物体的一部分

所以边界框本质上是粗定位。
而语义分割则更进一步,它希望回答:

到底哪些像素真正属于这个目标?

因此,语义分割能提供更精确的空间信息。


9. 语义分割中的标签表示

语义分割的数据标签通常不是一个单独的类别数字,
而是一张“标注图”。

这张标注图与原图大小对应,每个像素位置上都有一个类别标记。

例如,原图大小为:

320 × 480

那么对应的分割标签图通常也是:

320 × 480

只不过标签图里的像素值不是颜色本身,而是类别信息。

有时为了方便可视化,不同类别会映射成不同颜色,例如:

  • 背景 → 黑色

  • 人 → 红色

  • 汽车 → 蓝色

  • 道路 → 灰色

  • 草地 → 绿色

这样看起来就像一张彩色分区图。


10. 语义分割和实例分割的区别

虽然这一节主要讲语义分割,但这里顺带提一下很有必要。

10.1 语义分割

语义分割只关心:

这个像素属于什么类别

不关心同类目标之间的区别。

例如图中有三个人,语义分割只会把三个人都标成“人”。


10.2 实例分割

实例分割不仅要知道像素类别,还要区分:

  • 这是第一个人

  • 这是第二个人

  • 这是第三个人

所以实例分割比语义分割更进一步。

你可以简单理解为:

语义分割关注“类别”,实例分割关注“类别 + 个体”。


11. 语义分割的难点

语义分割虽然很直观,但并不容易。

11.1 需要像素级标注

相比分类和检测,语义分割的数据标注成本更高。
因为不是标一个框就行,而是要细致标出每个像素所属类别。


11.2 既要分类,又要保留空间信息

深度网络越往后,特征图分辨率通常越低。
这虽然有利于提取高级语义信息,但会损失空间细节。

而语义分割恰恰要求:

  • 语义信息强

  • 位置细节也要保留

所以这类任务对网络结构要求更高。


11.3 目标边缘处理困难

在目标边界处,像素类别常常变化很快。
比如人和背景交界处、道路和草地区域交界处,都很容易分错。


12. 语义分割和卷积神经网络的关系

卷积神经网络本来就非常适合处理图像数据。
但标准 CNN 多用于分类,最终通常会把空间维度压缩掉,只输出一个类别。

而语义分割要求输出整张像素级预测图,
因此模型必须做到:

  • 输入是图像

  • 输出仍然是二维空间结构

这就意味着:

语义分割模型通常需要把下采样后的特征图再恢复到原图大小附近

这也正是在后面会学到:

  • 转置卷积

  • FCN(全卷积网络)

这些内容的原因。


13. 李沐这一节的重点是什么

李沐这里讲“语义分割”,重点不是立刻上特别复杂的模型,
而是先帮你建立以下认识:

第一,语义分割是像素级分类任务

不是整图分类,也不是框级检测。

第二,语义分割任务输出的是一张标签图

输出大小通常和输入图像空间结构对应。

第三,它和检测不同

检测是框,分割是像素。

第四,为后面的分割数据集、转置卷积、FCN 铺路

这节更像是整个分割模块的总引子。


14. 一个直观例子

假设一张图中有:

  • 天空

  • 草地

  • 一只狗

如果是图像分类,输出可能只是:

  • “狗”

如果是物体检测,输出可能是:

  • “狗” + 一个边界框

如果是语义分割,输出则会是:

  • 天空区域的每个像素都标为“天空”

  • 草地区域的每个像素都标为“草地”

  • 狗区域的每个像素都标为“狗”

所以三者的输出粒度完全不同。


15. 本节总结

这一节我们初步认识了语义分割,核心内容可以总结为以下几点。

15.1 语义分割是像素级分类任务

它要为图像中的每一个像素分配类别标签。

15.2 语义分割比物体检测更细粒度

检测只给边界框,分割要精确到像素。

15.3 输出通常是一张标签图

标签图与原图空间结构对应,每个像素位置表示一个类别。

15.4 语义分割不区分同类实例

它只关心类别,不区分同类目标之间的不同个体。

15.5 这一节是在为后面的 FCN 等模型铺路

后续会进一步学习:

  • 语义分割数据集

  • 转置卷积

  • FCN


16. 学习感悟

如果说图像分类是在回答:

“这张图是什么?”

物体检测是在回答:

“图中有什么,它们在哪里?”

那么语义分割回答的则是:

“图中的每一个像素分别属于什么?”

这说明计算机视觉任务正在变得越来越精细。
而这种“从整图到目标,再到像素”的递进关系,其实也是理解视觉任务体系的一个很好线索。

http://www.jsqmd.com/news/630965/

相关文章:

  • C++模板元编程理论基础简介
  • 为什么92%的AI平台租户隔离形同虚设?2026奇点大会首席架构师亲授内存级隔离内核原理
  • 不用装软件!这款MicroPython浏览器 IDE :让你在手机上也能调试树莓派 Pico伪
  • 情感粒度从“喜怒哀惧”粗分类→“羞耻性犹豫”“制度性疲惫”等37维亚情绪谱系:2026奇点大会定义下一代情感分析黄金标准
  • 2026 天津复读教育服务行业天津辅仁学校白皮书 - 外贸老黄
  • 电容滤波在电源设计中的关键作用与优化策略
  • 从零搭建多租户大模型计费中台:基于Prometheus+OpenTelemetry+Apache Calcite的实时分账系统实战
  • 动手学深度学习——语义分割数据集
  • 苹果CMS10搭建电视直播站点的3个隐藏技巧(含M3U8格式处理)
  • ROS图像传输优化:如何用CompressedImage减少80%带宽消耗(附代码对比)
  • 【大模型公平性工程化落地指南】:20年AI架构师亲授3大可量化评估框架与5个避坑实战案例
  • Python网络爬虫实战
  • 2026 天津复读学校实测评测:天津辅仁学校办学全维度体验报告 - 外贸老黄
  • test 10
  • 【绝密白皮书节选】某千亿参数大模型量产项目中,如何将评估周期从14天压缩至22分钟——自动化评估引擎架构图首次解密
  • 给肿瘤学研一新生的SEER数据库‘生存指南’:从零申请账号到完成你的第一个趋势分析图表
  • 免费查AI率发现超标怎么办?这份免费降AI率攻略请收好
  • Python3.10镜像使用全解析:Jupyter和SSH两种方式,满足不同开发需求
  • 我用 AI 辅助开发了一系列小工具():文件提取工具账
  • ESP居然能当 DNS 服务器用?内含NCSI欺骗和DNS劫持实现毖
  • Linux内核中的内存分配器详解
  • 专业的东莞geo优化哪个好推荐 - 企业推荐官【官方】
  • SolidWorks2020安装与破解全流程详解
  • Win11Debloat终极指南:免费Windows系统优化工具完整教程
  • Dify平台快速部署Qwen3-ASR-1.7B语音识别模型指南
  • 告别硬编码!用Go的expr表达式引擎5分钟搞定电商促销规则动态配置
  • Spring Cloud进阶--分布式权限校验OAuth写
  • VideoCaptioner:开源AI字幕工具架构解析与技术实现指南
  • VCSA 8.0.3部署后必做的5件事:从SFTP自动备份到关闭密码策略
  • 记一次综合型流量分析 | 添柴不加火滦