我使用最新版本的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一起工作如何?
答案 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)
有关更多详细信息,请访问前面提供的讨论的链接。