大数跨境

图像分割(上):详解图像分割原理与图像分割模型

图像分割(上):详解图像分割原理与图像分割模型 知识代码AI
2026-09-08
8
导读:图像分割(上):详解图像分割原理与图像分割模型一、课程背景上节课我们完成了图像分类项目,这节课开始进入图像分割

图像分割(上):详解图像分割原理与图像分割模型


一、课程背景

上节课我们完成了图像分类项目,这节课开始进入图像分割的学习。图像分割在实际生产中的应用非常广泛,例如:

  • 腾讯会议 / Zoom 的视频背景替换
  • 华为手机的人像留色功能[pdf_19]

同样用两节课的篇幅,这节课主攻分割原理,下节课再把技能点活用到实战上,从头搭建一个图像分割模型。[pdf_19]


二、图像分割与图像分类的区别

任务
说明
图像分类
将一张图片自动分成某一类别
图像分割
需要将图片中的每一个像素进行分类

三、语义分割与实例分割的区别

类型
区别
语义分割(Semantic Segmentation)
只需要把每个像素点进行分类即可,不需要区分是否来自同一个实例
实例分割(Instance Segmentation)
不仅仅需要对像素点进行分类,还需要判断来自哪个实例

本课程以语义分割来展开讲解。[pdf_19]


四、语义分割原理

语义分割原理与图像分类大致类似,主要有两点区别:[pdf_19]

  1. 分类端不同
  2. 网络结构有所不同

五、区别一:分类端的不同

图像分类的分类端

输入图片 → 卷积层提取特征 → 若干特征图 → 全连接层(神经元)→ Softmax → 各类别概率
  • 全连接层中的节点数对应要将图片分为几类
  • 将全连接层的输出送入 softmax,获得每个类别的概率

图像分割的分类端

输入图片 → 卷积层提取特征 → 若干特征图(数目 = 分割类别数)→ 每个像素判断类别
  • 最后生成的特征图的数目对应着要分割成的类别数
  • 每个特征图代表对应类别的判断

示例:小猫分割

假设要将输入图片中的小猫分割出来,有 2 个类别:小猫背景

通道
含义
位置(0,0)输出值
Softmax后概率
通道 1
小猫的信息
2
≈ 0
通道 2
背景的信息
30
≈ 1

经过 softmax 转为概率后,通道 1(0,0)概率为 0,通道 2(0,0)概率为 1,因此判断(0,0)位置是背景而非小猫。[pdf_19]


六、区别二:网络结构的不同

图像分类网络

  • 经过多层特征提取后,最后生成的特征图都很小
  • 特征图 → 全连接层 → 输出

图像分割网络

  • 最终输出的特征图大小要么与输入原图相同,要么接近输入
  • 原因:需要对原图中的每个像素进行判断 
    • 输出特征图与原图尺寸相同时,可直接进行分割判断
    • 输出特征图与原图尺寸不同时,需将输出特征图 resize 到原图大小
  • 从较小的特征图 resize 到较大尺寸会丢失部分信息,因此输出特征图的大小不能太小[pdf_19]

Encoder-Decoder 结构

输入图片 → [Encoder] 卷积提取特征,特征图尺寸减小 → [Decoder] 上采样还原尺寸 → 输出
阶段
作用
Encoder(编码器)
通过卷积提取特征,特征图尺寸减小
Decoder(解码器)
对特征图尺寸进行还原,还原到比较大的尺寸

Decoder 中的上采样操作,最常使用的是 转置卷积(Transposed Convolution)。[pdf_19]


七、转置卷积(Transposed Convolution)

核心理解

转置卷积从逻辑上是卷积的一个逆过程,但不是卷积的逆运算。 [pdf_19]

  • 普通卷积是多对一的运算:输出中的每一个 y 都与输入中的多个 x 有关
  • 转置卷积并不是使用输出 Y 与卷积核 Kernel 来还原输入 X
  • 转置卷积只能还原出一个与输入特征图尺寸相同的特征图,内容并不相同

计算步骤

  1. 对输入特征图进行补零操作
  2. 将转置卷积的卷积核上下、左右变换作为新的卷积核(即翻转)
  3. 利用新的卷积核在步骤 1 的基础上进行步长为 1、padding 为 0 的卷积操作

补零规则

补零类型
规则
stride 补零
在输入特征图的行与列之间补 stride - 1 个行与列的零
padding 补零
在输入特征图的周围补 dilation × (kernel_size - 1) - padding 圈零

输出特征图尺寸计算公式

h_out = (h_in - 1) × stride[0] - padding[0] + kernel_size[0]
w_out = (w_in - 1) × stride[1] - padding[1] + kernel_size[1]

PyTorch 中的转置卷积

class torch.nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride, padding, groups, bias=True, dilation)

计算示例

输入特征图(2×2):

[[1, 2],
 [3, 4]]

卷积核 k(2×2):

[[1, 0],
 [1, 1]]

stride=1, padding=0 的转置卷积:

第一步:补零后的输入(stride=1 无需在行间补零,padding=0 在周围补 dilation×(2-1)-0=1 圈零):

[[0, 0, 0, 0],
 [0, 1, 2, 0],
 [0, 3, 4, 0],
 [0, 0, 0, 0]]

第二步:卷积核上下、左右翻转:

原核:[[1,0], [1,1]]  → 翻转后:[[1,1], [0,1]]

第三步:用翻转后的卷积核在补零后的输入上做步长=1、padding=0 的卷积,得到输出(3×3):

[[1, 2, 0],
 [4, 7, 2],
 [3, 7, 4]]

代码验证输出结果一致。[pdf_19]


八、损失函数

交叉熵损失

  • 图像分割中依然可以使用图像分类中经常使用的交叉熵损失
  • 图像分类:一张图片有一个预测结果,与真实值计算出一个 Loss
  • 图像分割: 
    • 真实的标签是一张二维特征图,记录着每个像素的真实分类结果
    • 含有像素类别的特征图称为 Mask
    • GT(Ground Truth):在图像分割中指每个像素的真实分类结果
    • 模型预测的 Mask 中每个位置都会有一个预测结果,与 GT 中的 Mask 做比较,生成一个 Loss[pdf_19]

Dice Loss

  • 图像分割中还可以使用更有针对性的 Dice Loss
  • 下节课会展开讲解[pdf_19]

九、公开数据集

数据集
说明
COCO
最著名的图像分割数据集
类别数
共 80 个类别
规模
超过 2 万张图片
地址
https://cocodataset.org/#detection-2016

十、每课一练

问题:对于小猫分割问题,最终只输出 1 个特征图是否可以?[pdf_19]

解答

思路
说明
思路一
可以。因为小猫分割是二分类问题,可以将输出的特征图使用 sigmoid 函数将输出的数值转换为概率,从而进行判断
思路二
输出主体——猫,剩下的部分即为背景;或者输出背景,剩下的部分即是猫
思路三
使用 sigmoid 处理后,把大于 0.5 的像素认为是小猫,小于 0.5 的像素认为是背景

十一、核心要点总结

知识点
要点
图像分类 vs 图像分割
分类:整张图归一类;分割:每个像素分类
语义分割 vs 实例分割
语义:不区分实例;实例:需区分实例
分类端区别
分类:全连接层(神经元);分割:特征图(数目=类别数)
网络结构区别
分类:只有 Encoder(特征图变小);分割:Encoder + Decoder(上采样恢复尺寸)
转置卷积
上采样最常用方法,不是卷积的逆运算,只是还原尺寸
损失函数
交叉熵损失 + Dice Loss(下节展开)
GT(Ground Truth)
图像分割中指每个像素的真实分类结果,即 Mask
公开数据集
COCO(80类,2万+图片)

十二、小结

  1. 语义分割要解决的问题:对图像中的每个像素进行分类。
  2. 与图像分类主要有两个不同点: 
    • 分类端不同:图像分类以若干个神经元作为输出;语义分割输出若干特征图。
    • 网络结构不同:语义分割有 Decoder 这一步,将特征图放大。
  3. 转置卷积:实现 Decoder 上采样的方式。不是卷积的逆运算,只是能将特征图大小进行放大的一种卷积运算。
  4. 损失函数:交叉熵损失 + Dice Loss。

下节课预告

实践一个图像分割项目,从头搭建一个图像分割模型,学习 UNet 网络结构、Dice Loss 以及 mIoU 评估指标。[pdf_19]



【声明】内容源于网络
0
0
知识代码AI
技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
内容 404
粉丝 0
知识代码AI 技术基底 机器视觉全栈 × 光学成像 × 图像处理算法 编程栈 C++/C#工业开发 | Python智能建模 工具链 Halcon/VisionPro工业部署 | PyTorch/TensorFlow模型炼金术 | 模型压缩&嵌入式移植
总阅读6.8k
粉丝0
内容404