如何修复';Deeplab tensorflow模型培训自有数据集';输出空白图像

如何修复';Deeplab tensorflow模型培训自有数据集';输出空白图像,tensorflow,image-segmentation,deeplab,Tensorflow,Image Segmentation,Deeplab,我正试图像你的实验一样训练我自己的数据集(2个类包括背景),但我得到了空白输出标签图像是一个PNG格式的图像,有2种颜色(0表示背景,1表示前景) ! 这些是我尝试的配置和我使用的示例标签图像 我希望输出是分段的,但得到的是空白图像,因此数据集的一般定义对我来说很好。不过,250张训练图像并不多。我从未使用过这种大小的数据集,因此我不能保证以下内容对您有帮助 我有一些建议/问题,可能会有所帮助: 1) 你的网络预测哪个标签(=你所说的“空白”图像是什么意思?)?。您是指原始预测标签(在两种情况下

我正试图像你的实验一样训练我自己的数据集(2个类包括背景),但我得到了空白输出标签图像是一个PNG格式的图像,有2种颜色(0表示背景,1表示前景)

!

这些是我尝试的配置和我使用的示例标签图像


我希望输出是分段的,但得到的是空白图像

,因此数据集的一般定义对我来说很好。不过,250张训练图像并不多。我从未使用过这种大小的数据集,因此我不能保证以下内容对您有帮助

我有一些建议/问题,可能会有所帮助:

1) 你的网络预测哪个标签(=你所说的“空白”图像是什么意思?)?。您是指原始预测标签(在两种情况下都应为“黑色”,因为0和1都是非常黑色的灰度值)还是彩色图像,那么您使用的是哪种颜色贴图(Pascal?)以及这两个标签中的哪一个由黑色表示很有意思

2) 如果你的人际网络总是预测“前景”,那么你的权重系数500可能太高了。您的网络可能会不惜一切代价避免FN预测前景,从而生成一幅全前景图像

3) 出于调试目的:请尝试您的网络是否能够记住一些培训图像(使用相同的图像进行测试和培训)。如果您的标签和培训设置正确,您的网络可能会过度适合某些培训示例

4) 确保你提供给网络的groundtruth确实有两个有效标签,0和1。如果将附加图像作为groundtruth馈送到网络中,则标签0将被学习,“白色”对象将被忽略,因为255是被忽略的标签

5) 如果是deeplab,请确保对主干使用经过预培训的初始化!此外,您使用的是哪种主干网也很有趣?我希望使用小型/紧凑型网络(deeplab与mobilenet、inception等)将有利于基于250张图像的培训

我希望其中一条建议能对你有所帮助。干杯;)

SEG_INFORMATION = DatasetDescriptor(
splits_to_sizes={
    'train': 250, # number of file in the train folder
     'trainval': 255,
     'val': 5,
},
     num_classes=2, # number of classes in your dataset

ignore_label=255, # white edges that will be ignored to be class

not_ignore_mask = tf.to_float(tf.equal(scaled_labels, 0)) * 1 + tf.to_float(tf. equal(scaled_labels, 1)) * 500 + tf.to_float(tf.equal(scaled_labels, ignore_label)) * 0