基于深度学习的多光谱图像语义分割 —— 从原理到实践第六节·完结篇经过前五节我们完成了数据准备、分块处理、模型推理、应用分析以及网络训练。最后一节我们将对训练好的模型进行量化评估用客观指标衡量它的分割性能。同时我们会回顾整个流程给出总结和扩展建议。6. 模型评估与性能分析6.1 为什么需要评估训练完成后我们需要回答几个关键问题模型在未见过的数据上表现如何哪些类别分割得更好哪些容易混淆模型是否达到了实际应用所需的精度定量评估不仅帮助我们判断模型优劣还能指导后续调优如调整网络结构、数据增强策略、损失权重等。6.2 评估流程概览我们将验证集图像输入训练好的网络得到预测分割图然后与真实标签labelsVal进行逐像素比较计算出多个指标。主要步骤如下对验证集图像进行分块推理与测试相同。拼接预测结果并应用掩膜。使用evaluateSemanticSegmentation函数自动计算全局准确率、类别准确率、IoU 等。输出和解读评估结果。6.3 对验证集执行分块分割验证集图像尺寸8833×6918同样采用分块推理块大小与测试时一致1024×1024patchSize[10241024];bimValblockedImage(val_data(:,:,1:6),BlockSizepatchSize);bimSegapply(bimVal,(bs)semanticseg(bs.Data,net,Outputtypeuint8),...PadPartialBlockstrue,PadMethod0);segmentedImagegather(bimSeg);应用掩膜验证集掩膜maskValmaskValval_data(:,:,7);segmentedImagesegmentedImage.*uint8(maskVal~0);然后将预测结果保存为 PNG 文件与真实标签格式一致imwrite(segmentedImage,results.png);6.4 加载真实标签与预测结果真实标签labelsVal我们已在第二节保存为gtruth.png。使用pixelLabelDatastore分别加载预测和真实标签并指定类别名称和 IDclassNames[NotVegetation,Vegetation];pixelLabelIDs[12];pxdsResultspixelLabelDatastore(results.png,classNames,pixelLabelIDs);pxdsTruthpixelLabelDatastore(gtruth.png,classNames,pixelLabelIDs);6.5 计算语义分割指标使用evaluateSemanticSegmentation函数一键计算多项指标ssmevaluateSemanticSegmentation(pxdsResults,pxdsTruth);输出示例Evaluating semantic segmentation results ---------------------------------------- * Selected metrics: global accuracy, class accuracy, IoU, weighted IoU, BF score. * Processed 1 images. * Finalizing... Done. * Data set metrics: GlobalAccuracy MeanAccuracy MeanIoU WeightedIoU MeanBFScore ______________ ____________ _______ ___________ ___________ 0.9694 0.9704 0.9406 0.94064 0.794746.6 各项指标解读指标值示例含义GlobalAccuracy0.9694所有像素中正确分类的比例整体准确率 96.94%非常不错。MeanAccuracy0.9704每一类准确率的平均值不受类别不均衡影响。MeanIoU0.9406平均交并比Intersection over Union是语义分割最常用的指标之一。它计算每个类别的预测区域与真实区域的重叠程度平均后得到。0.94 表示预测与真实重叠度很高。WeightedIoU0.94064按类别像素数加权后的 IoU反映了整体重叠程度。MeanBFScore0.7947边界 F1 分数评估分割边界的完整性。数值低于前几项说明边界处仍有改进空间。这些指标表明U‑Net 在多光谱数据上表现优异能够可靠地用于植被/非植被分类。6.7 进一步分析可选如果你需要更细粒度的信息可以查看每个类别的 IoU 和准确率% 显示每个类别的 IoUdisp(ssm.Metrics.IoU)或者绘制混淆矩阵cmconfusionmat(pxdsTruth,pxdsResults);% 可进一步可视化这有助于发现哪些类别容易被误分从而调整模型或训练策略。6.8 模型保存与部署建议评估满意后你的模型可以用于实际生产环境。MATLAB 支持将dlnetwork导出为 ONNX 格式用于跨平台部署。使用 GPU Coder 生成 CUDA 代码实现高性能推理。集成到 App Designer 或 Web 应用中提供在线分割服务。6.9 本节完整代码以下是验证评估的完整代码段% 1. 验证集分块推理patchSize[10241024];bimValblockedImage(val_data(:,:,1:6),BlockSizepatchSize);bimSegapply(bimVal,(bs)semanticseg(bs.Data,net,Outputtypeuint8),...PadPartialBlockstrue,PadMethod0);segmentedImagegather(bimSeg);% 2. 应用掩膜maskValval_data(:,:,7);segmentedImagesegmentedImage.*uint8(maskVal~0);% 3. 保存预测结果imwrite(segmentedImage,results.png);% 4. 加载真实标签和预测标签classNames[NotVegetation,Vegetation];pixelLabelIDs[12];pxdsResultspixelLabelDatastore(results.png,classNames,pixelLabelIDs);pxdsTruthpixelLabelDatastore(gtruth.png,classNames,pixelLabelIDs);% 5. 评估ssmevaluateSemanticSegmentation(pxdsResults,pxdsTruth);disp(ssm.Metrics);7. 全文总结与拓展方向7.1 系列回顾本系列博客从零开始系统讲解了如何使用 MATLAB 和 U‑Net 对多光谱遥感图像进行语义分割。我们走过了以下环节基础认知语义分割的任务定义、多光谱数据的优势、U‑Net 的原理。数据准备下载预训练模型和数据集维度转换多通道可视化标签二分类。分块策略利用blockedImage和blockedImageDatastore处理超大图像构建训练数据流水线。模型推理对测试图像进行分块预测、去噪、叠加可视化并计算植被覆盖率。模型训练自定义损失函数设置超参数从头训练 U‑Net可选。性能评估使用多种指标量化模型精度验证其实际应用价值。7.2 拓展建议如果你希望进一步提升模型能力或拓展应用场景可以考虑以下方向多类别分割将二分类扩展为原始 18 类实现更精细的地物分类。更先进的主干网络尝试 DeepLabv3、Swin Transformer 等结合注意力机制提升边界精度。数据增强在线随机旋转、翻转、色彩抖动、弹性变形等增强泛化性。时间序列分析利用多时相影像监测植被变化预测生态趋势。轻量化部署使用 MobileNet、EfficientNet 等轻量级编码器适配边缘设备。7.3 资源与参考资料MATLAB 官方文档Semantic Segmentation Using Deep Learning原论文Ronneberger et al., “U‑Net: Convolutional Networks for Biomedical Image Segmentation”数据集Kemker et al., “High‑Resolution Multispectral Dataset for Semantic Segmentation”8. 致谢与结语感谢你跟随本系列教程从原理到实践完整走了一遍多光谱图像语义分割的全流程。希望这些内容能够帮助你在自己的研究或项目中快速落地。如有任何疑问或建议欢迎在评论区交流讨论。深度学习与遥感结合的前景广阔让我们共同探索更多可能本系列博客完