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

训练语义分割模型的理解

训练语义分割模型的理解


一、 核心概念:什么是语义分割?

简单来说,图像分类是给整张图片打一个标签(比如“这是一只猫”),而语义分割是给图片中的每一个像素点打标签(比如“这个像素属于猫,那个像素属于背景”)。这就决定了网络的输出必须是一张和原图大小一致的“特征图”。


二、 单类别(二分类)分割:非黑即白

场景:只提取一种目标,比如你的“Unet分割肝脏”。类别只有两个:肝脏(前景,标签为1)和非肝脏(背景,标签为0)。

  • 1. 网络的输入 (Input)
    • 格式:RGB彩图或灰度图。
    • 维度Batch_size * 3 * H * W(3代表RGB三个通道,H和W是高和宽)。
  • 2. 网络的输出 (Output/Logits)
    • 格式:单通道的特征图。
    • 维度Batch_size * 1 * H * W
    • 含义:输出的数值是实数(可正可负),代表每个像素是前景的“倾向程度”。
  • 3. 真实标签 (Ground Truth / Label)
    • 格式:单通道灰度图(只包含0和1)。
    • 维度Batch_size * 1 * H * W
  • 4. 损失函数 (Loss)
    • 最优解nn.BCEWithLogitsLoss()
    • 为什么不用nn.BCELossBCEWithLogitsLoss内部自动包含了Sigmoid激活层,不仅代码更简洁,而且在计算梯度时底层做了优化,能有效防止数值溢出(也就是防止Loss变成NaN)。因此,网络最后一层千万不要再加Sigmoid了!

三、 多类别(多分类)分割:五颜六色的世界

场景:同时提取多个目标,比如自动驾驶中的“道路、车辆、行人、天空”。假设一共有NNN个类别。

  • 1. 网络的输入 (Input)
    • 维度Batch_size * 3 * H * W
  • 2. 网络的输出 (Output/Logits)
    • 格式:多通道的特征图。
    • 维度Batch_size * N * H * W注意:输出的通道数等于类别数NNN)。
    • 含义:你可以把它理解为NNN张单通道图叠在一起,第iii张图代表了图片中每个像素属于第iii类的“得分”。
  • 3. 真实标签 (Ground Truth / Label)
    • 格式:单通道的索引图。
    • 维度Batch_size * H * W(**注意:这里没有通道维度了!**或者通道为1)。
    • 含义:图上的像素值不再是0到255,而是0,1,2,...,N−10, 1, 2, ..., N-10,1,2,...,N1这样的类别索引(比如0代表背景,1代表车,2代表树)。
  • 4. 损失函数 (Loss)
    • 最优解nn.CrossEntropyLoss()
    • 小白最容易踩坑的点:PyTorch的交叉熵损失函数非常智能,它不需要你手动把标签转换成One-hot编码格式。你直接把Batch_size∗H∗WBatch\_size * H * WBatch_sizeHW的标签丢给它,它内部会自动帮你和Batch_size∗N∗H∗WBatch\_size * N * H * WBatch_sizeNHW的输出进行对齐计算。此外,它内部已经自带了Softmax运算,所以网络最后一层千万不要加Softmax**。

四、 评价指标与 mIoU 计算

训练完模型,怎么知道它到底厉不厉害?我们不看Loss,而是看评价指标。在说明指标前,先了解四个基本概念(基于二分类说明):

  • TP (True Positive):预测是正类,实际也是正类(预测对了)。
  • TN (True Negative):预测是负类,实际也是负类(预测对了)。
  • FP (False Positive):预测是正类,实际是负类(假报警,比如把背景识别成了肝脏)。
  • FN (False Negative):预测是负类,实际是正类(漏报了,比如真正的肝脏没识别出来)。

1. PA (Pixel Accuracy,像素准确率)

  • 含义:预测正确的像素占总像素的比例。
  • 公式PA=TP+TNTP+TN+FP+FNPA = \frac{TP + TN}{TP + TN + FP + FN}PA=TP+TN+FP+FNTP+TN
  • 缺点:如果背景占了图片的99%,网络只要无脑预测全都是背景,PA也能高达99%,但这模型是个废物。所以PA在医学图像或目标很小的场景下不靠谱。

2. IoU (Intersection over Union,交并比)

  • 含义:预测出的区域和真实区域的重合程度。它是评价分割模型最核心的黄金指标
  • 公式IoU=TPTP+FP+FNIoU = \frac{TP}{TP + FP + FN}IoU=TP+FP+FNTP(即:交集面积 / 并集面积)
  • 直观理解:IoU越接近1,说明你预测的形状和真实的形状贴合得越完美。

3. mIoU (Mean IoU,平均交并比)

  • 含义:多分类时,分别计算每一个类别的 IoU,然后把所有类别的 IoU 加起来求平均值。
  • 计算流程
    1. 计算“背景”的 IoU。
    2. 计算“车”的 IoU。
    3. 计算“树”的 IoU。
    4. mIoU=(IoU背景+IoU车+IoU树)/3mIoU = (IoU_{背景} + IoU_{车} + IoU_{树}) / 3mIoU=(IoU背景+IoU+IoU)/3

五、 如何进行预测出图 (Inference & Post-processing)

模型输出了一堆杂乱无章的张量,我怎么把它变成人类能看懂的彩色图片?

对于二分类(单类别)的预测流程:

  1. 取概率:模型输出维度1 * H * W,对其使用torch.sigmoid(),将其变为0∼10 \sim 101之间的概率图。
  2. 卡阈值 (Threshold):设定一个阈值(通常是0.5)。预测图 = (概率图 > 0.5),大于0.5的像素变成1,小于等于的变成0。
  3. 转图片:把这全是0和1的矩阵乘以255,就变成了一张标准的黑白二值图像(255是纯白,0是纯黑),保存即可。

对于多分类的预测流程:

  1. 取最大索引 (Argmax):模型输出维度N * H * W(例如4分类就是4 * H * W)。使用torch.argmax(dim=1)
    • 这一步非常神奇:它会像一根针一样穿过这NNN个通道,看哪个通道在同一个像素点上的得分最高,就把那个通道的索引值0,1,2,...0, 1, 2, ...0,1,2,...)留下来。
    • 经过argmax后,维度变成了1 * H * W,里面的数值都是类别的索引(不再是得分或概率了)。
  2. 调色板映射 (Color Palette/伪彩色)
    • 你现在得到了一张由0,1,2...0, 1, 2...0,1,2...组成的矩阵。这时候你需要定义一个“调色板字典”。
    • 比如:{0: [0,0,0], 1: [255,0,0], 2: [0,255,0]}(0画黑色,1画红色,2画绿色)。
    • 通过代码遍历这个矩阵,把对应的索引替换成 RGB 的三通道颜色值,最终生成一张彩色的分割图用于展示。
http://www.jsqmd.com/news/524417/

相关文章:

  • Benders分解
  • CF538H Summer Dichotomy
  • 数据库如何表达M:N关系结合python结合SQLAlchemy
  • PaddleOCR模型跨平台部署实战:从PaddlePaddle到ONNXRuntime的完整指南
  • IOS历史版本下载
  • 基于深度学习的麦穗计数系统演示与介绍(YOLOv12/v11/v8/v5模型+Pyqt5界面+训练代码+数据集)
  • MMDetection3D多GPU训练报错ChildFailedError?一个find_unused_parameters参数就能搞定
  • 2026年艺术玻璃厂家推荐排行榜:手工彩绘/热熔琉璃/雕刻镶嵌/夹丝夹胶等艺术玻璃品牌深度解析与选购指南 - 品牌企业推荐师(官方)
  • 实测对比:Qwen QwQ-32B-AWQ在RTX 4090上的量化效果与原生模型差异(附显存占用监控技巧)
  • ESP32与DS18B20的高精度温度监测方案
  • Dify离线部署实战:无网环境下的插件打包与依赖整合
  • 20243222 实验一《Python程序设计》实验报告
  • 2026年 锂电池设备厂家推荐榜单:自动分选机/PACK组装线/激光焊接机/储能产线,新能源制造全流程自动化解决方案精选 - 品牌企业推荐师(官方)
  • 经典复现】COMSOL 仿真模拟激光熔覆
  • 杭州企业老板必读:GEO 到底是什么?为何 AI 时代本地获客离不开 GEO 推广?
  • 2026年3月海口钢管出租供应商最新推荐:轮扣出租、方管出租、挂板出租、方柱扣出租、梁夹具出租、扣件出租、顶托出租供应商选择指南 - 海棠依旧大
  • 手把手教你用CRT和TFTP升级锐捷RG-S2900G-E交换机到11.4(1)B74P1
  • 2026年薪酬服务优质推荐榜降本提效控风险:薪酬服务外包公司、薪酬服务平台、薪酬服务解决方案、薪酬服务代发、薪酬服务公司选择指南 - 优质品牌商家
  • IntelliJ插件开发实战:5分钟搞定Action类库配置(附常见问题排查)
  • SEO_从零到一构建可持续增长的自然搜索流量
  • 2026绝缘靴手套耐压装置推荐榜精准合规高效:智能绝缘靴手套耐压试验装置/电缆局放测试仪/绝缘手套工频耐压试验测试仪/选择指南 - 优质品牌商家
  • BERT文本分割模型在中文小说网站内容结构化中的应用
  • WebRTC+H265实战:用WASM和WebGL打造浏览器端高清解码方案(附性能优化技巧)
  • “20252410 实验一《Python程序设计》实验报告
  • 抽象之力:现代计算机科学的“银弹”
  • 开源统一消息中心:轻松实现多业务系统的消息分发与管理
  • 2026/3/23
  • Day20 | 二叉搜索树的最近公共祖先、二叉搜索树中的插入操作、删除二叉搜索树中的节点
  • 大模型API中转推荐:A8 AI 600+模型统一路由与高可用部署,code编程、生图、视频大模型聚合应用
  • Python3.23第一次实验