Unet多类别分割中最后一层Softmax激活函数的工作机制疑问
Unet多类别分割:Softmax工作机制与Sigmoid效果差的原因
Softmax的实际工作方式
- 你提到的第二种情况是对的:Softmax是**按深度维度(即每个像素的21个类别通道)**进行计算的。具体来说,输出特征图上的每一个像素点,它的21个通道数值会被送入Softmax函数,计算后得到21个概率值——这21个值的总和为1,每个值代表该像素属于对应类别的概率。
- 在推理阶段,我们只需要取每个像素概率最高的那个通道对应的类别,作为该像素的最终分割结果,这就实现了你需要的“对应类别存在的位置输出1”(实际操作中一般是取
argmax得到类别索引,再转成独热编码或者直接用索引表示分割结果)。
为什么Sigmoid效果不好
- Sigmoid是对每个通道单独计算的,它会把每个通道的输出映射到0-1区间,但不同通道的输出之间没有任何约束(总和不一定为1)。这种激活函数天生适合多标签分割任务——也就是一个像素可能同时属于多个类别的场景,比如一张图里的某个像素既属于“树木”又属于“植被”。
- 而你的任务是单标签多类别分割,每个像素只能属于21类中的一个。这时候用Sigmoid的话,模型没法学到类别间的互斥性,很容易出现多个类别概率同时偏高的情况,导致分割边界模糊、类别混淆,自然效果就不如Softmax了。
内容的提问来源于stack exchange,提问作者JAGADEESHA R G
相关产品推荐
相关产品推荐

