Deep learning 二值交叉熵损失用于图像分割

Deep learning 二值交叉熵损失用于图像分割,deep-learning,keras,image-segmentation,unet,Deep Learning,Keras,Image Segmentation,Unet,我在Keras中使用CNN(U-Net)来分割一幅8位图像,得到一个二值掩模。尽管达到了0.9999的精度,我仍然得到一些介于0和255之间的值,但我希望完全删除这些值,使其只有0或255。到目前为止,我一直在使用二元交叉熵损失函数,结合最后一个卷积层的sigmoid激活函数。有人能告诉我是否有其他损失函数可以解决这个问题吗 最好使用0-1之间的值 NN在0-255时要获得好的结果要困难得多,这样二进制交叉熵的效果会更好您可以设置阈值,只获得您想要的两个值。例如: y = model.predi

我在Keras中使用CNN(U-Net)来分割一幅8位图像,得到一个二值掩模。尽管达到了0.9999的精度,我仍然得到一些介于0和255之间的值,但我希望完全删除这些值,使其只有0或255。到目前为止,我一直在使用二元交叉熵损失函数,结合最后一个卷积层的sigmoid激活函数。有人能告诉我是否有其他损失函数可以解决这个问题吗

最好使用0-1之间的值


NN在0-255时要获得好的结果要困难得多,这样二进制交叉熵的效果会更好

您可以设置阈值,只获得您想要的两个值。例如:

y = model.predict(input_image) # your result image
y = 255 * (y > 128)

你能再解释一下你的网速吗?输出的形状是什么?你们的标签是什么?你的二进制掩码有标签吗,哪一个看起来不是你当前的输出?我对这一点感到非常困惑,因为他说他已经使用了sigmoid激活函数,它可以产生0到1之间的输出。你的输出将在0到1之间,但是你的输入将保持在0到255之间,这在图像识别和这类领域会产生很多问题。如果不进行规范化,节点上会有一个很大的值,只有在最后它才会变成0或1,因此模型很难产生真正的结果,但输出似乎在0到255之间,如果他使用sigmoid,这是没有意义的。关于标准化,您是对的(类似于等频率装箱可能会更好)我的输入图像像素值对于背景来说确实是0,对于感兴趣的信号来说是255,但在加载训练数据之前,我将所有像素值除以255。我考虑过这一点,但我只是想知道是否还有其他选择。谢谢您可以使用dice loss,它可以生成几乎完全相同的二进制图像或阈值,正如在本工作中所观察到的()