DeepLab我的自定义数据集的重量的标准是什么?



我正在培训 deeplab v3 通过在三个类中制作自定义数据集,包括背景

然后,我的班级是背景,熊猫,瓶子,有1949年的图片。

我正在使用 moblienetv2 模型

segmentation_dataset.py 已修改如下。

_MYDATA_INFORMATION = DatasetDescriptor(
        splits_to_sizes={
            'train': 975,  # num of samples in images/training
            'trainval': 1949,
            'val': 974,  # num of samples in images/validation
        },

        num_classes=3,
        ignore_label=0,
)

train.py 已修改如下。

flags.DEFINE_boolean('initialize_last_layer', False,
                 'Initialize the last layer.')
flags.DEFINE_boolean('last_layers_contain_logits_only', True,
                 'Only consider logits as last layers or not.')

train_utils.py 尚未修改。

not_ignore_mask = tf.to_float(tf.not_equal(scaled_labels, ignore_label)) * loss_weight

我得到了一些结果,但没有完美的结果。

例如,熊猫和瓶子的口罩颜色相同或不是不同的

我想要的结果是红色和绿色瓶的熊猫

所以,我判断体重有问题。

基于其他人的问题, train_utils.py 被配置为如下

irgore_weight = 0
label0_weight =1
label1_weight = 10
label2_weight = 15
not_ignore_mask = 
    tf.to_float(tf.equal(scaled_labels, 0)) * label0_weight +
    tf.to_float(tf.equal(scaled_labels, 1)) * label1_weight +
    tf.to_float(tf.equal(scaled_labels, 2)) * label2_weight +
    tf.to_float(tf.equal(scaled_labels, ignore_label)) * irgore_weight 
tf.losses.softmax_cross_entropy(
    one_hot_labels,
    tf.reshape(logits, shape=[-1, num_classes]),
    weights=not_ignore_mask,
    scope=loss_scope)

我在这里有一个问题。

重量的标准是什么?

我的数据集包括以下内容。

在此处输入图像描述

它是自动生成的,所以我不知道哪个是更多,但这是类似的数量。

还有另一件事,我正在使用Pascal的颜色地图类型。

这是第一个黑色背景,第二个红色第三绿色。

我想确切地将大熊猫指定为红色和瓶子。我该怎么办?

我认为您可能已经混合了标签定义。也许我可以为您提供帮助。请再次检查您的 semengeation_dataset.py 。在这里,您将" 0"定义为被忽略的标签。这意味着所有标记为" 0"的像素都被排除在训练过程之外(更具体地说,在计算损耗函数的计算中排除,因此对权重的更新没有影响)。鉴于这种情况,至关重要的是不要"忽略"背景类,因为它也是您要正确预测的类。在 train_utils.py 中,您将加权因素分配给忽略的班级,该班级没有效果 - ->确保您不将三个培训课程(背景,panada,瓶子)与"忽略"标签。

在您的情况下 num_classes = 3应该是正确的必须用第四个标签类注释它们(只需选择一个数字> 2),然后将此标签分配给bighored_label。它不会影响您的培训;)

相关内容

  • 没有找到相关文章

最新更新