24 语义分割与实例分割
系列进度
计算机视觉网络教程 · 第 24 / 31 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
语义分割回答每个像素属于哪一类,实例分割还要区分同类里的不同个体。两者输出不同,训练数据也不同。
我会先看标签到底有没有实例 ID。只有类别 mask,就不能直接当实例分割数据用。
在图像分割的领域中,语义分割和实例分割是两个重要的概念。本篇教程将在上篇关于分割任务与技术概述的基础上,进一步深入这两个分割任务的具体内容、应用场景、模型以及相关案例,为后续的常用分割模型与评估指标做一个良好的铺垫。
语义分割
定义
语义分割是指将图像中的每一个像素点分配到特定的类别,而不区分同一类别的不同实例。这意味着在语义分割中,所有属于同一类的像素都有相同的标签,具体任务是将图像中的每个像素分类。
读这篇时,可以把「语义分割 -> 定义 -> 应用场景 -> 示例」当成一条检查线:先分清主题、路径和验证点,再回到案例、代码或指标里复查。
应用场景
语义分割广泛应用于以下几个领域:
- 自动驾驶:用于识别交通标志、行人、车道等。
- 医学图像:如肿瘤检测,帮助医生更好地识别病变区域。
- 遥感图像分析:用于土地覆盖分类、环境监测等。
示例
以下是一个进行语义分割的简单案例,使用 OpenCV 和 TensorFlow 进行图像预处理和模型推理。
import cv2
import numpy as np
import tensorflow as tf
# 加载预训练的语义分割模型
model = tf.keras.models.load_model('path_to_saved_model')
# 读入图像并进行预处理
image = cv2.imread('path_to_image')
input_image = cv2.resize(image, (1280, 720)) / 255.0 # 归一化
input_image = np.expand_dims(input_image, axis=0) # 增加批次维度
# 进行语义分割预测
prediction = model.predict(input_image)
segmentation_map = np.argmax(prediction, axis=-1)[0] # 取最大概率的类别
# 可视化结果
cv2.imshow('Segmentation Map', segmentation_map.astype(np.uint8))
cv2.waitKey(0)
实例分割
定义
实例分割不仅要对图像中的每个像素进行分类,还需要区分同一类别中的不同实例。这意味着在实例分割中,每个实例的像素具有不同的标签,因此可以实现对相同类别中不同对象的区分。
看《语义分割与实例分割》时,先把图中的问题、关键词、操作和验收标准对上,再读正文会更省力。读完后,最好能用自己的项目重新讲一遍。
应用场景
实例分割的应用场景相对更为复杂,适用范围包括:
- 人物分割:在图像中区分同一个场景中的不同人物。
- 物品检测:比如在零售场景中检测不同商品的具体实例。
- 生物医学:对细胞图像中的不同细胞进行精确的标记和分析。
示例
以下是使用 Mask R-CNN 进行实例分割的简单代码示例:
import cv2
import numpy as np
from mrcnn import utils, config, model as mrcnn
# 模型配置
class InferenceConfig(config.Config):
NAME = "coco_inference"
GPU_COUNT = 1
IMAGES_PER_GPU = 1
config = InferenceConfig()
model = mrcnn.MaskRCNN(mode="inference", model_dir='./logs', config=config)
model.load_weights('mask_rcnn_coco.h5', by_name=True)
# 读入图像并进行实例分割预测
image = cv2.imread('path_to_image')
results = model.detect([image], verbose=0)
r = results[0]
# 可视化实例分割结果
for i in range(len(r['rois'])):
cv2.imshow(f'Instance {i}', r['masks'][:, :, i])
cv2.waitKey(0)
语义分割与实例分割的区别对比
| 特性 | 语义分割 | 实例分割 |
|---|---|---|
| 输出形式 | 每个像素属于某一类别 | 每个像素属于某一实例 |
| 标签 | 所有同一类的像素共享标签 | 不同实例有不同标签 |
| 应用场景 | 场景分析,某一类的像素整体分析 | 物体检测,个别实例分离 |
读完《语义分割与实例分割》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。
读到这里,可以把《语义分割与实例分割》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。
在后续的教程中,我们将探讨一些常用的分割模型与评估指标,以便对以上的语义分割与实例分割任务进行深入的研究与应用指导。希望本篇能帮助你更好地理解这两个关键概念,以及它们在实际应用中的特殊性和重要性。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
语义分割与实例分割适合谁读?
这是 计算机视觉网络教程 系列第 24 / 31 篇,适合正在学习计算机视觉网络教程,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇计算机视觉网络教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读