Keras 尽管训练和验证的精度和召回值较高,但ResUNet分割输出较差

Keras 尽管训练和验证的精度和召回值较高,但ResUNet分割输出较差,keras,conv-neural-network,image-segmentation,sigmoid,semantic-segmentation,Keras,Conv Neural Network,Image Segmentation,Sigmoid,Semantic Segmentation,我最近在血液样本图像上实现了寄生虫分割的RESUNET。本文描述了模型,下面是代码。分割输出为二值图像。我用加权的二进制交叉熵损失训练模型,因为我的图像中存在类的不平衡,所以赋予寄生虫类更多的权重。最后一个输出层有一个S形激活 我计算精度、召回率和骰子系数值,以验证训练中的分割效果有多好。在培训和验证中,我得到了良好的数值结果: 训练 骰子系数:6895,f2:0.8611,精度:0.6320,召回率:0.9563 验证 val_骰子系数:.6433,val_f2:0.7752,val_精度:0

我最近在血液样本图像上实现了寄生虫分割的RESUNET。本文描述了模型,下面是代码。分割输出为二值图像。我用加权的二进制交叉熵损失训练模型,因为我的图像中存在类的不平衡,所以赋予寄生虫类更多的权重。最后一个输出层有一个S形激活

我计算精度、召回率和骰子系数值,以验证训练中的分割效果有多好。在培训和验证中,我得到了良好的数值结果:

训练 骰子系数:6895,f2:0.8611,精度:0.6320,召回率:0.9563

验证 val_骰子系数:.6433,val_f2:0.7752,val_精度:0.6052,val_召回率:0.8499

然而,当我试图直观地看到验证集的分段时,我的算法输出全黑。分析模型返回的预测后,几乎所有值都接近于零,因此无法正确区分背景和前景。问题是:为什么我的指标显示了良好的数值,而分割输出却没有? 我的意思是,这些指标没有给我好的信息?为什么即使输出全黑,召回值也更高?
我训练了大约50个时代,我的训练曲线显示我在不断学习。这是因为消失梯度问题吗?

不,您没有消失梯度问题

我几乎100%确信这个问题与你的测试方式有关

培训/验证中的数字不存在

确保对测试数据集使用完全相同的预处理,与培训期间应用的预处理完全相同

例如:如果在Keras
ImageDataGenerator()
中使用“
rescale=1/255.0
”参数,请确保在加载测试图像时,先将其除以255.0,然后再对其进行预测


注意,上述是一个纯粹的例子;您在训练/测试预处理中的不一致性可能是由其他原因造成的。

谢谢。是的,你说得对。我的问题在于测试方法。我使用opencv读取输入图像,我对通道顺序有错误,所以我得到了黑色输出分段。欢迎您,如果我的回答引导您解决问题,请接受。