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

如何将Keras版Deeplabv3+多分类语义分割适配为医疗图像二分类任务

问题1:NUM_CLASSES参数修改是否正确

将NUM_CLASSES = 20改为NUM_CLASSES = 1是正确的。二分类语义分割采用单通道输出时,每个像素仅需输出1个值判断属于前景/背景,完全匹配医疗分割的二分类需求。
你设置NUM_CLASSES = 2出现logits与标签不匹配的报错,核心原因是参数配置和标签格式不兼容:如果要保留2通道输出,需要将标签转换为2通道的one-hot格式,同时损失函数继续使用SparseCategoricalCrossentropy,但二分类场景下单通道+二分类损失的配置计算效率更高,没必要额外开2通道。

问题2:BinaryCrossentropy损失为负数的修复

损失为负数是输出与标签的取值范围不匹配导致的,你需要做两处检查:

  • 确认标签张量的取值仅为0和1:如果你的标注是原始的灰度png图,需要先将像素值大于0的所有标签统一转为1,禁止出现0~1之间的浮点值或大于1的整数,否则会导致损失计算异常。
  • 确认模型最后一层的输出通道数和NUM_CLASSES = 1保持一致,不要误保留原代码的20通道或错设为2通道。
问题3:最后一层激活函数的配置

不需要将激活函数更换为softmax,有两种可行的配置方案,推荐选择第一种:

  • 方案1(训练数值稳定性更高):最后一层保持原代码的keras.activations.linear,损失函数保持BinaryCrossentropy(from_logits=True),推理阶段给输出结果套一层sigmoid激活,再按阈值(通常设为0.5)做二值化即可。
  • 方案2:最后一层激活更换为keras.activations.sigmoid,损失函数设为BinaryCrossentropy(from_logits=False),该方案推理时不需要额外加激活,但训练过程的数值稳定性略低于方案1。

注意:softmax是多分类场景的激活函数,仅适配输出通道数≥2的分类场景,和你当前的单通道二分类配置不兼容,不要混用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:57:02