如何修复'Deeplab张量流模型训练自己的数据集'输出空白图像

时间:2019-02-08 13:25:25

标签: tensorflow image-segmentation deeplab

我正尝试训练自己的数据集,就像您的实验一样(2 CLASS包括backgroud),但输出为空标签图像是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

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

我希望将输出分段,但图像空白

1 个答案:

答案 0 :(得分:0)

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

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

1)您的网络预测哪个标签(==“空白”图像是什么意思)?您是指原始预测标签(在两种情况下都应为“黑色”,因为0和1都是相当黑的灰度值)或彩色图像,那么您正在使用哪种颜色图(帕斯卡?)以及这两种颜色都很有趣标签用黑色表示。

2)如果您的网络始终预测“前景”,则您的加权系数500可能太高。您的网络可能会不惜一切代价避免对前景进行FN预测,从而得到全部前景的图像。

3)出于调试目的:尝试使您的网络能够真正学习一些训练图像(使用相同的图像进行测试和训练)。如果标签和培训设置正确无误,则您的网络可能会适合某些培训示例。

4)确保您馈入网络的groundtruth确实具有两个有效标签:0和1。如果您将附加图像作为groundtruth馈入网络,则将学习标签0,并且将“白色”对象被忽略,因为255是被忽略的标签

5)如果使用deeplab,请确保对骨干网使用了预先训练的初始化!另外,您正在使用哪个骨干网会很有趣?我希望使用小型/紧凑型网络(带有移动网络的Deeplab,初始网络等)对基于250张图像的培训会有所帮助。

我希望其中一项建议对您有所帮助。干杯;)