如何修复'Deeplab tensorflow model training own dataset '输出空白图像



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

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

https://user-images.githubusercontent.com/23016323/52344967-fb472600-2a13-11e9-8841-0d0c5c7dde72.png

这些是我尝试过的配置和我使用的样本标签图像

我预计输出是分段的,但得到了空白图像

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

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

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

2) 如果你的网络总是预测"前景",那么你的权重因子500可能太高了。您的网络可能会不惜一切代价避免前景的FN预测,从而产生全前景图像。

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

4) 确保你提供给网络的基本事实确实有两个有效的标签,0和1。如果你将所附的图像作为地面实况输入网络,标签0将被学习,"白色"对象将被忽略,因为255是被忽略的标签

5) 如果是deeplab,请确保您使用的是经过预训练的主干初始化!此外,您使用的主干网会很有趣吗?我希望使用小型/紧凑型网络(带有移动网络的deeplab、inception等)将有利于基于250张图像的训练。

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

相关内容

  • 没有找到相关文章

最新更新