3

我使用最新版本的 deeplab(v3+) 来训练我自己的包含 6 个类的数据集。我能够训练我的数据集,但由于我的标签非常不平衡,我想用一个类特定的值对每个类进行加权。

以下是我使用 SegNet 实现这一点的方法

loss_weight = np.array([0.975644, 1.025603, 0.601745, 6.600600, 1.328684, 0.454776])    

cross_entropy = -tf.reduce_sum(tf.multiply(labels * tf.log(softmax + epsilon), head), axis=[1])

这将如何与 deeplab 网络一起工作?

4

1 回答 1

2

根据讨论,您可以在 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)

有关更多详细信息,请点击前面提供的讨论链接。

于 2018-08-16T10:39:56.313 回答