我想为 Deeplab v3 添加自定义损失,它不仅适用于一个热编码标签,而且适用于显着性预测。因此,您在下面看到的不是 Deeplab 损失实现:
label = tf.to_int32(label > 0.2)
one_hot_labels = slim.one_hot_encoding(label, num_classes, on_value=1.0, off_value=0.0)
tf.losses.softmax_cross_entropy(one_hot_labels, logits)
我使用了这个实现:
softmax = tf.log(tf.nn.softmax(logits))
cross_entropy = -tf.reduce_sum(label*softmax, reduction_indices=[1])
tf.losses.add_loss(tf.reduce_mean(cross_entropy))
用 5 张图像训练了大约 1000 个 epoch,得到了以下结果:
- 输入带有填充的简化图像 - https://i.stack.imgur.com/07GsL.png
- 地面实况标签 - https://i.stack.imgur.com/ttEZi.png
- 自定义损失结果]( https://i.stack.imgur.com/cNooX.png
- 使用一种热编码结果的交叉熵 - https://i.stack.imgur.com/LEhl3.png
此外,尝试了几种学习率,但它不会改变自定义损失的结果。