使用Deeplabv3+ keras进行二进制语义分割(专为多类语义分割而设计)

hrirmatl  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(160)

我是新来的,所以很抱歉,如果这个问题是愚蠢的。
我在这里找到了https://keras.io/examples/vision/deeplabv3_plus/ deeplabv3+模型来执行多类语义分割。我需要将这段代码用于其他目的,因为我需要对医学图像执行二值语义分割。从
类数= 20
到NUM_CLASSES = 1?
如果我输入NUM_CLASSES = 2,我会得到一个关于logit和label不匹配的错误。
关于损失函数,代码行是loss = keras. loss.SparseCategoricalCrossentropy(from_logits=True)
我想把它改成
损失=角动量.损失.二元交叉熵(from_logits=True)
但是损失变成了负数,我应该加点别的吗
谢谢你,谢谢你
编辑:deeplabv3+在最后一层使用keras.activations.linear(x)进行多类语义分割。为了我的目的,我是否应该使用softmax而不是keras.activations.linear(x),并使用BinaryCrossEntropy和put from_logits=False?

wsxa1bj1

wsxa1bj11#

我解决了这个问题,如果有人需要答案的话:...“对于二进制分段,最好保持NUM_CLASS = 1,因为您尝试预测代表背景中单个类的二进制掩码。如果您希望预测单热编码分段掩码,(在当前上下文中,设置NUM_CLASS = 2),只有这样,才使用softmax激活沿着稀疏分类交叉熵损失,否则使用S形激活以及二元交叉熵。
https://github.com/keras-team/keras-io/issues/648

相关问题