tensorflow deeplabv3 +类权重

时间:2018-06-26 19:02:46

标签: tensorflow loss-function semantic-segmentation

我使用最新版本的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 net一起工作如何?

1 个答案:

答案 0 :(得分:0)

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

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