You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

叶片病害分割模型预测掩膜绘图异常代码排查请求

叶片病害分割项目绘图代码问题排查

我正在开展叶片病害分割深度学习项目,已完成50轮模型训练,得到以下精度与损失指标:

  • 训练损失:19.4736,训练精度:0.9395
  • 验证损失:19.6197,验证精度:0.9100
  • 测试损失:19.6148,测试精度:0.9123

但绘制预测掩膜时结果不准确,怀疑绘图代码存在问题,绘图代码如下:

def plot_predictions(model, images, masks, num_samples=5):
    predictions = model.predict(images[:num_samples])
    for i in range(num_samples):
        plt.figure(figsize=(15, 5))
        plt.subplot(1, 3, 1)
        plt.title('Real Image')
        plt.imshow(images[i])
        plt.subplot(1, 3, 2)
        plt.title('Ground Truth Mask')
        plt.imshow(masks[i], cmap='gray')  # Assuming masks are already binary
        plt.subplot(1, 3, 3)
        plt.title('Predicted Mask')
        plt.imshow(predictions[i][:, :, 0], cmap='gray')  # Convert predicted mask to binary
        plt.show()

plot_predictions(model, test_images.numpy(), test_masks_L, num_samples=5)

绘制出的预测掩膜与真实掩码差异明显(示例图呈现原始图像、真实掩码与预测掩码的对比)。以下是可能的错误点:

  • 未对预测结果做二值化处理:代码注释标注要转成二值掩码,但实际仅提取了预测结果的单通道,没有进行阈值分割。分割模型的输出通常是0-1之间的概率值(如sigmoid激活输出),需要设定阈值(如0.5)将概率转换为0/1的二值掩码,否则imshow会将连续的概率值当作灰度图显示,导致视觉上与真实掩码差异较大。
  • 掩码数据格式不匹配:检查test_masks_L的数据类型、形状是否与预测结果一致。例如真实掩码是整数类型(0/1),而预测结果是浮点型;或者两者通道数不匹配,都可能导致显示异常。
  • 图像归一化未反处理:如果输入模型的test_images做过归一化(如除以255),虽此处显示原始图像无问题,但如果预测结果的输出范围与真实掩码不一致(如真实掩码是0-255,预测结果是0-1),也会导致显示效果不符预期。
  • 通道维度处理错误:若模型输出为多通道(如二分类任务输出2通道),直接取[:, :, 0]可能不是目标病害类别的概率,应选择对应类别通道,或用argmax获取类别索引后再显示。

内容的提问来源于stack exchange,提问作者Urwa Shanza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 00:22:07